chief-clancy 0.8.11 → 0.8.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/bundle/clancy-once.js +17 -17
- package/dist/installer/install.js +2 -39
- package/dist/installer/install.js.map +1 -1
- package/dist/installer/role-filter/role-filter.d.ts +15 -0
- package/dist/installer/role-filter/role-filter.d.ts.map +1 -0
- package/dist/installer/role-filter/role-filter.js +48 -0
- package/dist/installer/role-filter/role-filter.js.map +1 -0
- package/package.json +1 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
var wf=Object.defineProperty;var ve=(e,t)=>{for(var r in t)wf(e,r,{get:t[r],enumerable:!0})};import{resolve as
|
|
2
|
-
... (truncated)`:r:void 0}catch{return}}function et(e){try{return pe("git",["push","-u","origin",e],{encoding:"utf8",stdio:["pipe","pipe","pipe"]}),!0}catch{return!1}}var $=e=>`\x1B[2m${e}\x1B[0m`,Ne=e=>`\x1B[1m${e}\x1B[0m`;var N=e=>`\x1B[32m${e}\x1B[0m`,Oe=e=>`\x1B[31m${e}\x1B[0m`,v=e=>`\x1B[33m${e}\x1B[0m`;function Ha(e){return{argv:e,dryRun:e.includes("--dry-run"),skipFeasibility:e.includes("--skip-feasibility"),startTime:Date.now(),cwd:process.cwd(),isAfk:process.env.CLANCY_AFK_MODE==="1"}}import{mkdirSync as $f,readFileSync as kf,unlinkSync as qa,writeFileSync as xf}from"node:fs";import{dirname as Sf,join as Bt}from"node:path";function Ja(e,t){let r=Bt(e,".clancy","lock.json");$f(Sf(r),{recursive:!0}),xf(r,JSON.stringify(t,null,2),"utf8")}function Ut(e){let t=Bt(e,".clancy","lock.json");try{let r=kf(t,"utf8");return JSON.parse(r)}catch{return}}function Ft(e){let t=Bt(e,".clancy","lock.json");try{qa(t)}catch{}}function Ht(e){let t=Bt(e,".clancy","verify-attempt.txt");try{qa(t)}catch{}}function vf(e){try{return process.kill(e,0),!0}catch(t){return t instanceof Error&&"code"in t&&t.code==="EPERM"}}function Ka(e){if(!vf(e.pid))return!0;let t=Date.now()-new Date(e.startedAt).getTime();if(Number.isNaN(t))return!0;let r=1440*60*1e3;return t>r}import{execFileSync as gl}from"node:child_process";import{readFileSync as Jg}from"node:fs";import{join as Kg}from"node:path";var c={};ve(c,{$brand:()=>Wr,$input:()=>As,$output:()=>Ps,NEVER:()=>Gr,TimePrecision:()=>ti,ZodMiniAny:()=>eu,ZodMiniArray:()=>su,ZodMiniBase64:()=>Jc,ZodMiniBase64URL:()=>Kc,ZodMiniBigInt:()=>xt,ZodMiniBigIntFormat:()=>sa,ZodMiniBoolean:()=>kt,ZodMiniCIDRv4:()=>Fc,ZodMiniCIDRv6:()=>Hc,ZodMiniCUID:()=>Lc,ZodMiniCUID2:()=>Zc,ZodMiniCatch:()=>Su,ZodMiniCodec:()=>pa,ZodMiniCustom:()=>fa,ZodMiniCustomStringFormat:()=>wt,ZodMiniDate:()=>$r,ZodMiniDefault:()=>$u,ZodMiniDiscriminatedUnion:()=>cu,ZodMiniE164:()=>Yc,ZodMiniEmail:()=>Rc,ZodMiniEmoji:()=>Nc,ZodMiniEnum:()=>aa,ZodMiniExactOptional:()=>_u,ZodMiniFile:()=>yu,ZodMiniFunction:()=>Ru,ZodMiniGUID:()=>Cc,ZodMiniIPv4:()=>Bc,ZodMiniIPv6:()=>Uc,ZodMiniISODate:()=>zr,ZodMiniISODateTime:()=>vr,ZodMiniISODuration:()=>Ir,ZodMiniISOTime:()=>Tr,ZodMiniIntersection:()=>uu,ZodMiniJWT:()=>Gc,ZodMiniKSUID:()=>Mc,ZodMiniLazy:()=>Iu,ZodMiniLiteral:()=>gu,ZodMiniMAC:()=>qc,ZodMiniMap:()=>du,ZodMiniNaN:()=>vu,ZodMiniNanoID:()=>Oc,ZodMiniNever:()=>ru,ZodMiniNonOptional:()=>ua,ZodMiniNull:()=>Qc,ZodMiniNullable:()=>wu,ZodMiniNumber:()=>$t,ZodMiniNumberFormat:()=>qe,ZodMiniObject:()=>kr,ZodMiniOptional:()=>ca,ZodMiniPipe:()=>la,ZodMiniPrefault:()=>ku,ZodMiniPromise:()=>Au,ZodMiniReadonly:()=>zu,ZodMiniRecord:()=>xr,ZodMiniSet:()=>mu,ZodMiniString:()=>He,ZodMiniStringFormat:()=>E,ZodMiniSuccess:()=>xu,ZodMiniSymbol:()=>Wc,ZodMiniTemplateLiteral:()=>Tu,ZodMiniTransform:()=>bu,ZodMiniTuple:()=>lu,ZodMiniType:()=>S,ZodMiniULID:()=>jc,ZodMiniURL:()=>oa,ZodMiniUUID:()=>_t,ZodMiniUndefined:()=>Vc,ZodMiniUnion:()=>ia,ZodMiniUnknown:()=>tu,ZodMiniVoid:()=>ou,ZodMiniXID:()=>Dc,ZodMiniXor:()=>au,_default:()=>Yh,_function:()=>dg,any:()=>kh,array:()=>K,base64:()=>oh,base64url:()=>sh,bigint:()=>yh,boolean:()=>Je,catch:()=>Qh,catchall:()=>Nh,check:()=>sg,cidrv4:()=>th,cidrv6:()=>rh,clone:()=>q,codec:()=>tg,coerce:()=>ma,config:()=>B,core:()=>Fe,cuid:()=>Ym,cuid2:()=>Gm,custom:()=>Eu,date:()=>Sh,decode:()=>_n,decodeAsync:()=>$n,describe:()=>cg,discriminatedUnion:()=>Lh,e164:()=>ih,email:()=>jm,emoji:()=>Jm,encode:()=>bn,encodeAsync:()=>wn,endsWith:()=>Fi,enum:()=>hu,exactOptional:()=>Jh,extend:()=>xe,file:()=>Hh,flattenError:()=>mn,float32:()=>dh,float64:()=>mh,formatError:()=>hn,function:()=>dg,globalRegistry:()=>ae,gt:()=>gr,gte:()=>gt,guid:()=>Dm,hash:()=>ph,hex:()=>lh,hostname:()=>uh,httpUrl:()=>qm,includes:()=>Bi,instanceof:()=>lg,int:()=>fh,int32:()=>hh,int64:()=>bh,intersection:()=>Zh,ipv4:()=>Xm,ipv6:()=>eh,iso:()=>da,json:()=>fg,jwt:()=>ah,keyof:()=>vh,ksuid:()=>Qm,lazy:()=>Pu,length:()=>ji,literal:()=>Fh,locales:()=>mt,looseObject:()=>Th,looseRecord:()=>Dh,lowercase:()=>Di,lt:()=>hr,lte:()=>ht,mac:()=>nh,map:()=>Mh,maxLength:()=>Zi,maxSize:()=>Ni,maximum:()=>ht,merge:()=>Ph,meta:()=>ug,mime:()=>qi,minLength:()=>yt,minSize:()=>Oi,minimum:()=>gt,multipleOf:()=>Ci,nan:()=>Xh,nanoid:()=>Km,nativeEnum:()=>Uh,negative:()=>Ai,never:()=>nu,nonnegative:()=>Ri,nonoptional:()=>Wh,nonpositive:()=>Ei,normalize:()=>Ji,null:()=>Xc,nullable:()=>Sr,nullish:()=>Kh,number:()=>ke,object:()=>I,omit:()=>Eh,optional:()=>w,overwrite:()=>be,parse:()=>ge,parseAsync:()=>ye,partial:()=>Rh,partialRecord:()=>jh,pick:()=>Ah,pipe:()=>eg,positive:()=>Pi,prefault:()=>Gh,prettifyError:()=>yn,promise:()=>og,property:()=>Hi,readonly:()=>rg,record:()=>fu,refine:()=>ig,regex:()=>bt,regexes:()=>re,registry:()=>dr,required:()=>Ch,safeDecode:()=>xn,safeDecodeAsync:()=>vn,safeEncode:()=>kn,safeEncodeAsync:()=>Sn,safeExtend:()=>Ih,safeParse:()=>Te,safeParseAsync:()=>Ie,set:()=>Bh,size:()=>Li,startsWith:()=>Ui,strictObject:()=>zh,string:()=>_,stringFormat:()=>ch,stringbool:()=>pg,success:()=>Vh,superRefine:()=>ag,symbol:()=>wh,templateLiteral:()=>ng,toJSONSchema:()=>br,toLowerCase:()=>Yi,toUpperCase:()=>Gi,transform:()=>qh,treeifyError:()=>gn,trim:()=>Ki,tuple:()=>pu,uint32:()=>gh,uint64:()=>_h,ulid:()=>Wm,undefined:()=>$h,union:()=>iu,unknown:()=>wr,uppercase:()=>Mi,url:()=>Hm,util:()=>te,uuid:()=>Mm,uuidv4:()=>Bm,uuidv6:()=>Um,uuidv7:()=>Fm,void:()=>xh,xid:()=>Vm,xor:()=>Oh});var Fe={};ve(Fe,{$ZodAny:()=>Qo,$ZodArray:()=>ns,$ZodAsyncError:()=>se,$ZodBase64:()=>Uo,$ZodBase64URL:()=>Fo,$ZodBigInt:()=>cr,$ZodBigIntFormat:()=>Yo,$ZodBoolean:()=>pt,$ZodCIDRv4:()=>Do,$ZodCIDRv6:()=>Mo,$ZodCUID:()=>To,$ZodCUID2:()=>Io,$ZodCatch:()=>ws,$ZodCheck:()=>A,$ZodCheckBigIntFormat:()=>ro,$ZodCheckEndsWith:()=>ho,$ZodCheckGreaterThan:()=>tr,$ZodCheckIncludes:()=>fo,$ZodCheckLengthEquals:()=>co,$ZodCheckLessThan:()=>er,$ZodCheckLowerCase:()=>lo,$ZodCheckMaxLength:()=>io,$ZodCheckMaxSize:()=>no,$ZodCheckMimeType:()=>yo,$ZodCheckMinLength:()=>ao,$ZodCheckMinSize:()=>oo,$ZodCheckMultipleOf:()=>eo,$ZodCheckNumberFormat:()=>to,$ZodCheckOverwrite:()=>bo,$ZodCheckProperty:()=>go,$ZodCheckRegex:()=>uo,$ZodCheckSizeEquals:()=>so,$ZodCheckStartsWith:()=>mo,$ZodCheckStringFormat:()=>Me,$ZodCheckUpperCase:()=>po,$ZodCodec:()=>dt,$ZodCustom:()=>Is,$ZodCustomStringFormat:()=>Jo,$ZodDate:()=>rs,$ZodDefault:()=>gs,$ZodDiscriminatedUnion:()=>ss,$ZodE164:()=>Ho,$ZodEmail:()=>xo,$ZodEmoji:()=>vo,$ZodEncodeError:()=>Le,$ZodEnum:()=>ls,$ZodError:()=>dn,$ZodExactOptional:()=>ms,$ZodFile:()=>fs,$ZodFunction:()=>vs,$ZodGUID:()=>$o,$ZodIPv4:()=>Lo,$ZodIPv6:()=>Zo,$ZodISODate:()=>Co,$ZodISODateTime:()=>Ro,$ZodISODuration:()=>Oo,$ZodISOTime:()=>No,$ZodIntersection:()=>is,$ZodJWT:()=>qo,$ZodKSUID:()=>Eo,$ZodLazy:()=>Ts,$ZodLiteral:()=>ps,$ZodMAC:()=>jo,$ZodMap:()=>cs,$ZodNaN:()=>$s,$ZodNanoID:()=>zo,$ZodNever:()=>es,$ZodNonOptional:()=>bs,$ZodNull:()=>Vo,$ZodNullable:()=>hs,$ZodNumber:()=>ar,$ZodNumberFormat:()=>Ko,$ZodObject:()=>ur,$ZodObjectJIT:()=>$d,$ZodOptional:()=>pr,$ZodPipe:()=>ks,$ZodPrefault:()=>ys,$ZodPromise:()=>zs,$ZodReadonly:()=>xs,$ZodRealError:()=>W,$ZodRecord:()=>as,$ZodRegistry:()=>fr,$ZodSet:()=>us,$ZodString:()=>Be,$ZodStringFormat:()=>P,$ZodSuccess:()=>_s,$ZodSymbol:()=>Go,$ZodTemplateLiteral:()=>Ss,$ZodTransform:()=>ds,$ZodTuple:()=>lr,$ZodType:()=>k,$ZodULID:()=>Po,$ZodURL:()=>So,$ZodUUID:()=>ko,$ZodUndefined:()=>Wo,$ZodUnion:()=>ft,$ZodUnknown:()=>Xo,$ZodVoid:()=>ts,$ZodXID:()=>Ao,$ZodXor:()=>os,$brand:()=>Wr,$constructor:()=>d,$input:()=>As,$output:()=>Ps,Doc:()=>lt,JSONSchema:()=>Ec,JSONSchemaGenerator:()=>_r,NEVER:()=>Gr,TimePrecision:()=>ti,_any:()=>ki,_array:()=>zd,_base64:()=>Vs,_base64url:()=>Qs,_bigint:()=>hi,_boolean:()=>di,_catch:()=>Hd,_check:()=>Ac,_cidrv4:()=>Gs,_cidrv6:()=>Ws,_coercedBigint:()=>gi,_coercedBoolean:()=>mi,_coercedDate:()=>Ti,_coercedNumber:()=>ai,_coercedString:()=>Rs,_cuid:()=>Bs,_cuid2:()=>Us,_custom:()=>Vi,_date:()=>zi,_decode:()=>tc,_decodeAsync:()=>nc,_default:()=>Bd,_discriminatedUnion:()=>Pd,_e164:()=>Xs,_email:()=>Cs,_emoji:()=>Ds,_encode:()=>ec,_encodeAsync:()=>rc,_endsWith:()=>Fi,_enum:()=>Od,_file:()=>Wi,_float32:()=>ui,_float64:()=>li,_gt:()=>gr,_gte:()=>gt,_guid:()=>Ns,_includes:()=>Bi,_int:()=>ci,_int32:()=>pi,_int64:()=>yi,_intersection:()=>Ad,_ipv4:()=>Js,_ipv6:()=>Ks,_isoDate:()=>ni,_isoDateTime:()=>ri,_isoDuration:()=>si,_isoTime:()=>oi,_jwt:()=>ei,_ksuid:()=>qs,_lazy:()=>Yd,_length:()=>ji,_literal:()=>Zd,_lowercase:()=>Di,_lt:()=>hr,_lte:()=>ht,_mac:()=>Ys,_map:()=>Cd,_max:()=>ht,_maxLength:()=>Zi,_maxSize:()=>Ni,_mime:()=>qi,_min:()=>gt,_minLength:()=>yt,_minSize:()=>Oi,_multipleOf:()=>Ci,_nan:()=>Ii,_nanoid:()=>Ms,_nativeEnum:()=>Ld,_negative:()=>Ai,_never:()=>Si,_nonnegative:()=>Ri,_nonoptional:()=>Ud,_nonpositive:()=>Ei,_normalize:()=>Ji,_null:()=>$i,_nullable:()=>Md,_number:()=>ii,_optional:()=>Dd,_overwrite:()=>be,_parse:()=>Yt,_parseAsync:()=>Gt,_pipe:()=>qd,_positive:()=>Pi,_promise:()=>Gd,_property:()=>Hi,_readonly:()=>Jd,_record:()=>Rd,_refine:()=>Qi,_regex:()=>bt,_safeDecode:()=>sc,_safeDecodeAsync:()=>ac,_safeEncode:()=>oc,_safeEncodeAsync:()=>ic,_safeParse:()=>Wt,_safeParseAsync:()=>Vt,_set:()=>Nd,_size:()=>Li,_slugify:()=>vd,_startsWith:()=>Ui,_string:()=>Es,_stringFormat:()=>Ue,_stringbool:()=>ra,_success:()=>Fd,_superRefine:()=>Xi,_symbol:()=>_i,_templateLiteral:()=>Kd,_toLowerCase:()=>Yi,_toUpperCase:()=>Gi,_transform:()=>jd,_trim:()=>Ki,_tuple:()=>Ed,_uint32:()=>fi,_uint64:()=>bi,_ulid:()=>Fs,_undefined:()=>wi,_union:()=>Td,_unknown:()=>xi,_uppercase:()=>Mi,_url:()=>mr,_uuid:()=>Os,_uuidv4:()=>Ls,_uuidv6:()=>Zs,_uuidv7:()=>js,_void:()=>vi,_xid:()=>Hs,_xor:()=>Id,clone:()=>q,config:()=>B,createStandardJSONSchemaMethod:()=>na,createToJSONSchemaMethod:()=>Wd,decode:()=>_n,decodeAsync:()=>$n,describe:()=>ea,encode:()=>bn,encodeAsync:()=>wn,extractDefs:()=>we,finalize:()=>$e,flattenError:()=>mn,formatError:()=>hn,globalConfig:()=>tt,globalRegistry:()=>ae,initializeContext:()=>_e,isValidBase64:()=>Bo,isValidBase64URL:()=>vc,isValidJWT:()=>zc,locales:()=>mt,meta:()=>ta,parse:()=>ge,parseAsync:()=>ye,prettifyError:()=>yn,process:()=>T,regexes:()=>re,registry:()=>dr,safeDecode:()=>xn,safeDecodeAsync:()=>vn,safeEncode:()=>kn,safeEncodeAsync:()=>Sn,safeParse:()=>Te,safeParseAsync:()=>Ie,toDotPath:()=>Xa,toJSONSchema:()=>br,treeifyError:()=>gn,util:()=>te,version:()=>_o});var Gr=Object.freeze({status:"aborted"});function d(e,t,r){function n(a,u){if(a._zod||Object.defineProperty(a,"_zod",{value:{def:u,constr:i,traits:new Set},enumerable:!1}),a._zod.traits.has(e))return;a._zod.traits.add(e),t(a,u);let l=i.prototype,p=Object.keys(l);for(let f=0;f<p.length;f++){let m=p[f];m in a||(a[m]=l[m].bind(a))}}let o=r?.Parent??Object;class s extends o{}Object.defineProperty(s,"name",{value:e});function i(a){var u;let l=r?.Parent?new s:this;n(l,a),(u=l._zod).deferred??(u.deferred=[]);for(let p of l._zod.deferred)p();return l}return Object.defineProperty(i,"init",{value:n}),Object.defineProperty(i,Symbol.hasInstance,{value:a=>r?.Parent&&a instanceof r.Parent?!0:a?._zod?.traits?.has(e)}),Object.defineProperty(i,"name",{value:e}),i}var Wr=Symbol("zod_brand"),se=class extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}},Le=class extends Error{constructor(t){super(`Encountered unidirectional transform during encode: ${t}`),this.name="ZodEncodeError"}},tt={};function B(e){return e&&Object.assign(tt,e),tt}var te={};ve(te,{BIGINT_FORMAT_RANGES:()=>an,Class:()=>Qr,NUMBER_FORMAT_RANGES:()=>sn,aborted:()=>he,allowsEval:()=>rn,assert:()=>Af,assertEqual:()=>zf,assertIs:()=>If,assertNever:()=>Pf,assertNotEqual:()=>Tf,assignProp:()=>de,base64ToUint8Array:()=>Wa,base64urlToUint8Array:()=>Ff,cached:()=>Ze,captureStackTrace:()=>Jt,cleanEnum:()=>Uf,cleanRegex:()=>ot,clone:()=>q,cloneDef:()=>Cf,createTransparentProxy:()=>Df,defineLazy:()=>x,esc:()=>qt,escapeRegex:()=>ee,extend:()=>Kt,finalizeIssue:()=>G,floatSafeRemainder:()=>en,getElementAtPath:()=>Nf,getEnumValues:()=>nt,getLengthableOrigin:()=>at,getParsedType:()=>jf,getSizableOrigin:()=>it,hexToUint8Array:()=>qf,isObject:()=>ze,isPlainObject:()=>me,issue:()=>De,joinValues:()=>Ef,jsonStringifyReplacer:()=>Xr,merge:()=>Mf,mergeDefs:()=>ue,normalizeParams:()=>g,nullish:()=>fe,numKeys:()=>Zf,objectClone:()=>Rf,omit:()=>un,optionalKeys:()=>on,parsedType:()=>Bf,partial:()=>pn,pick:()=>cn,prefixIssues:()=>Q,primitiveTypes:()=>nn,promiseAllObject:()=>Of,propertyKeyTypes:()=>st,randomString:()=>Lf,required:()=>fn,safeExtend:()=>ln,shallowClone:()=>je,slugify:()=>tn,stringifyPrimitive:()=>Ga,uint8ArrayToBase64:()=>Va,uint8ArrayToBase64url:()=>Hf,uint8ArrayToHex:()=>Jf,unwrapMessage:()=>rt});function zf(e){return e}function Tf(e){return e}function If(e){}function Pf(e){throw new Error("Unexpected value in exhaustive check")}function Af(e){}function nt(e){let t=Object.values(e).filter(n=>typeof n=="number");return Object.entries(e).filter(([n,o])=>t.indexOf(+n)===-1).map(([n,o])=>o)}function Ef(e,t="|"){return e.map(r=>Ga(r)).join(t)}function Xr(e,t){return typeof t=="bigint"?t.toString():t}function Ze(e){return{get value(){{let r=e();return Object.defineProperty(this,"value",{value:r}),r}throw new Error("cached value already set")}}}function fe(e){return e==null}function ot(e){let t=e.startsWith("^")?1:0,r=e.endsWith("$")?e.length-1:e.length;return e.slice(t,r)}function en(e,t){let r=(e.toString().split(".")[1]||"").length,n=t.toString(),o=(n.split(".")[1]||"").length;if(o===0&&/\d?e-\d?/.test(n)){let u=n.match(/\d?e-(\d?)/);u?.[1]&&(o=Number.parseInt(u[1]))}let s=r>o?r:o,i=Number.parseInt(e.toFixed(s).replace(".","")),a=Number.parseInt(t.toFixed(s).replace(".",""));return i%a/10**s}var Ya=Symbol("evaluating");function x(e,t,r){let n;Object.defineProperty(e,t,{get(){if(n!==Ya)return n===void 0&&(n=Ya,n=r()),n},set(o){Object.defineProperty(e,t,{value:o})},configurable:!0})}function Rf(e){return Object.create(Object.getPrototypeOf(e),Object.getOwnPropertyDescriptors(e))}function de(e,t,r){Object.defineProperty(e,t,{value:r,writable:!0,enumerable:!0,configurable:!0})}function ue(...e){let t={};for(let r of e){let n=Object.getOwnPropertyDescriptors(r);Object.assign(t,n)}return Object.defineProperties({},t)}function Cf(e){return ue(e._zod.def)}function Nf(e,t){return t?t.reduce((r,n)=>r?.[n],e):e}function Of(e){let t=Object.keys(e),r=t.map(n=>e[n]);return Promise.all(r).then(n=>{let o={};for(let s=0;s<t.length;s++)o[t[s]]=n[s];return o})}function Lf(e=10){let t="abcdefghijklmnopqrstuvwxyz",r="";for(let n=0;n<e;n++)r+=t[Math.floor(Math.random()*t.length)];return r}function qt(e){return JSON.stringify(e)}function tn(e){return e.toLowerCase().trim().replace(/[^\w\s-]/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")}var Jt="captureStackTrace"in Error?Error.captureStackTrace:(...e)=>{};function ze(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var rn=Ze(()=>{if(typeof navigator<"u"&&navigator?.userAgent?.includes("Cloudflare"))return!1;try{let e=Function;return new e(""),!0}catch{return!1}});function me(e){if(ze(e)===!1)return!1;let t=e.constructor;if(t===void 0||typeof t!="function")return!0;let r=t.prototype;return!(ze(r)===!1||Object.prototype.hasOwnProperty.call(r,"isPrototypeOf")===!1)}function je(e){return me(e)?{...e}:Array.isArray(e)?[...e]:e}function Zf(e){let t=0;for(let r in e)Object.prototype.hasOwnProperty.call(e,r)&&t++;return t}var jf=e=>{let t=typeof e;switch(t){case"undefined":return"undefined";case"string":return"string";case"number":return Number.isNaN(e)?"nan":"number";case"boolean":return"boolean";case"function":return"function";case"bigint":return"bigint";case"symbol":return"symbol";case"object":return Array.isArray(e)?"array":e===null?"null":e.then&&typeof e.then=="function"&&e.catch&&typeof e.catch=="function"?"promise":typeof Map<"u"&&e instanceof Map?"map":typeof Set<"u"&&e instanceof Set?"set":typeof Date<"u"&&e instanceof Date?"date":typeof File<"u"&&e instanceof File?"file":"object";default:throw new Error(`Unknown data type: ${t}`)}},st=new Set(["string","number","symbol"]),nn=new Set(["string","number","bigint","boolean","symbol","undefined"]);function ee(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function q(e,t,r){let n=new e._zod.constr(t??e._zod.def);return(!t||r?.parent)&&(n._zod.parent=e),n}function g(e){let t=e;if(!t)return{};if(typeof t=="string")return{error:()=>t};if(t?.message!==void 0){if(t?.error!==void 0)throw new Error("Cannot specify both `message` and `error` params");t.error=t.message}return delete t.message,typeof t.error=="string"?{...t,error:()=>t.error}:t}function Df(e){let t;return new Proxy({},{get(r,n,o){return t??(t=e()),Reflect.get(t,n,o)},set(r,n,o,s){return t??(t=e()),Reflect.set(t,n,o,s)},has(r,n){return t??(t=e()),Reflect.has(t,n)},deleteProperty(r,n){return t??(t=e()),Reflect.deleteProperty(t,n)},ownKeys(r){return t??(t=e()),Reflect.ownKeys(t)},getOwnPropertyDescriptor(r,n){return t??(t=e()),Reflect.getOwnPropertyDescriptor(t,n)},defineProperty(r,n,o){return t??(t=e()),Reflect.defineProperty(t,n,o)}})}function Ga(e){return typeof e=="bigint"?e.toString()+"n":typeof e=="string"?`"${e}"`:`${e}`}function on(e){return Object.keys(e).filter(t=>e[t]._zod.optin==="optional"&&e[t]._zod.optout==="optional")}var sn={safeint:[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]},an={int64:[BigInt("-9223372036854775808"),BigInt("9223372036854775807")],uint64:[BigInt(0),BigInt("18446744073709551615")]};function cn(e,t){let r=e._zod.def,n=r.checks;if(n&&n.length>0)throw new Error(".pick() cannot be used on object schemas containing refinements");let s=ue(e._zod.def,{get shape(){let i={};for(let a in t){if(!(a in r.shape))throw new Error(`Unrecognized key: "${a}"`);t[a]&&(i[a]=r.shape[a])}return de(this,"shape",i),i},checks:[]});return q(e,s)}function un(e,t){let r=e._zod.def,n=r.checks;if(n&&n.length>0)throw new Error(".omit() cannot be used on object schemas containing refinements");let s=ue(e._zod.def,{get shape(){let i={...e._zod.def.shape};for(let a in t){if(!(a in r.shape))throw new Error(`Unrecognized key: "${a}"`);t[a]&&delete i[a]}return de(this,"shape",i),i},checks:[]});return q(e,s)}function Kt(e,t){if(!me(t))throw new Error("Invalid input to extend: expected a plain object");let r=e._zod.def.checks;if(r&&r.length>0){let s=e._zod.def.shape;for(let i in t)if(Object.getOwnPropertyDescriptor(s,i)!==void 0)throw new Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}let o=ue(e._zod.def,{get shape(){let s={...e._zod.def.shape,...t};return de(this,"shape",s),s}});return q(e,o)}function ln(e,t){if(!me(t))throw new Error("Invalid input to safeExtend: expected a plain object");let r=ue(e._zod.def,{get shape(){let n={...e._zod.def.shape,...t};return de(this,"shape",n),n}});return q(e,r)}function Mf(e,t){let r=ue(e._zod.def,{get shape(){let n={...e._zod.def.shape,...t._zod.def.shape};return de(this,"shape",n),n},get catchall(){return t._zod.def.catchall},checks:[]});return q(e,r)}function pn(e,t,r){let o=t._zod.def.checks;if(o&&o.length>0)throw new Error(".partial() cannot be used on object schemas containing refinements");let i=ue(t._zod.def,{get shape(){let a=t._zod.def.shape,u={...a};if(r)for(let l in r){if(!(l in a))throw new Error(`Unrecognized key: "${l}"`);r[l]&&(u[l]=e?new e({type:"optional",innerType:a[l]}):a[l])}else for(let l in a)u[l]=e?new e({type:"optional",innerType:a[l]}):a[l];return de(this,"shape",u),u},checks:[]});return q(t,i)}function fn(e,t,r){let n=ue(t._zod.def,{get shape(){let o=t._zod.def.shape,s={...o};if(r)for(let i in r){if(!(i in s))throw new Error(`Unrecognized key: "${i}"`);r[i]&&(s[i]=new e({type:"nonoptional",innerType:o[i]}))}else for(let i in o)s[i]=new e({type:"nonoptional",innerType:o[i]});return de(this,"shape",s),s}});return q(t,n)}function he(e,t=0){if(e.aborted===!0)return!0;for(let r=t;r<e.issues.length;r++)if(e.issues[r]?.continue!==!0)return!0;return!1}function Q(e,t){return t.map(r=>{var n;return(n=r).path??(n.path=[]),r.path.unshift(e),r})}function rt(e){return typeof e=="string"?e:e?.message}function G(e,t,r){let n={...e,path:e.path??[]};if(!e.message){let o=rt(e.inst?._zod.def?.error?.(e))??rt(t?.error?.(e))??rt(r.customError?.(e))??rt(r.localeError?.(e))??"Invalid input";n.message=o}return delete n.inst,delete n.continue,t?.reportInput||delete n.input,n}function it(e){return e instanceof Set?"set":e instanceof Map?"map":e instanceof File?"file":"unknown"}function at(e){return Array.isArray(e)?"array":typeof e=="string"?"string":"unknown"}function Bf(e){let t=typeof e;switch(t){case"number":return Number.isNaN(e)?"nan":"number";case"object":{if(e===null)return"null";if(Array.isArray(e))return"array";let r=e;if(r&&Object.getPrototypeOf(r)!==Object.prototype&&"constructor"in r&&r.constructor)return r.constructor.name}}return t}function De(...e){let[t,r,n]=e;return typeof t=="string"?{message:t,code:"custom",input:r,inst:n}:{...t}}function Uf(e){return Object.entries(e).filter(([t,r])=>Number.isNaN(Number.parseInt(t,10))).map(t=>t[1])}function Wa(e){let t=atob(e),r=new Uint8Array(t.length);for(let n=0;n<t.length;n++)r[n]=t.charCodeAt(n);return r}function Va(e){let t="";for(let r=0;r<e.length;r++)t+=String.fromCharCode(e[r]);return btoa(t)}function Ff(e){let t=e.replace(/-/g,"+").replace(/_/g,"/"),r="=".repeat((4-t.length%4)%4);return Wa(t+r)}function Hf(e){return Va(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}function qf(e){let t=e.replace(/^0x/,"");if(t.length%2!==0)throw new Error("Invalid hex string length");let r=new Uint8Array(t.length/2);for(let n=0;n<t.length;n+=2)r[n/2]=Number.parseInt(t.slice(n,n+2),16);return r}function Jf(e){return Array.from(e).map(t=>t.toString(16).padStart(2,"0")).join("")}var Qr=class{constructor(...t){}};var Qa=(e,t)=>{e.name="$ZodError",Object.defineProperty(e,"_zod",{value:e._zod,enumerable:!1}),Object.defineProperty(e,"issues",{value:t,enumerable:!1}),e.message=JSON.stringify(t,Xr,2),Object.defineProperty(e,"toString",{value:()=>e.message,enumerable:!1})},dn=d("$ZodError",Qa),W=d("$ZodError",Qa,{Parent:Error});function mn(e,t=r=>r.message){let r={},n=[];for(let o of e.issues)o.path.length>0?(r[o.path[0]]=r[o.path[0]]||[],r[o.path[0]].push(t(o))):n.push(t(o));return{formErrors:n,fieldErrors:r}}function hn(e,t=r=>r.message){let r={_errors:[]},n=o=>{for(let s of o.issues)if(s.code==="invalid_union"&&s.errors.length)s.errors.map(i=>n({issues:i}));else if(s.code==="invalid_key")n({issues:s.issues});else if(s.code==="invalid_element")n({issues:s.issues});else if(s.path.length===0)r._errors.push(t(s));else{let i=r,a=0;for(;a<s.path.length;){let u=s.path[a];a===s.path.length-1?(i[u]=i[u]||{_errors:[]},i[u]._errors.push(t(s))):i[u]=i[u]||{_errors:[]},i=i[u],a++}}};return n(e),r}function gn(e,t=r=>r.message){let r={errors:[]},n=(o,s=[])=>{var i,a;for(let u of o.issues)if(u.code==="invalid_union"&&u.errors.length)u.errors.map(l=>n({issues:l},u.path));else if(u.code==="invalid_key")n({issues:u.issues},u.path);else if(u.code==="invalid_element")n({issues:u.issues},u.path);else{let l=[...s,...u.path];if(l.length===0){r.errors.push(t(u));continue}let p=r,f=0;for(;f<l.length;){let m=l[f],h=f===l.length-1;typeof m=="string"?(p.properties??(p.properties={}),(i=p.properties)[m]??(i[m]={errors:[]}),p=p.properties[m]):(p.items??(p.items=[]),(a=p.items)[m]??(a[m]={errors:[]}),p=p.items[m]),h&&p.errors.push(t(u)),f++}}};return n(e),r}function Xa(e){let t=[],r=e.map(n=>typeof n=="object"?n.key:n);for(let n of r)typeof n=="number"?t.push(`[${n}]`):typeof n=="symbol"?t.push(`[${JSON.stringify(String(n))}]`):/[^\w$]/.test(n)?t.push(`[${JSON.stringify(n)}]`):(t.length&&t.push("."),t.push(n));return t.join("")}function yn(e){let t=[],r=[...e.issues].sort((n,o)=>(n.path??[]).length-(o.path??[]).length);for(let n of r)t.push(`\u2716 ${n.message}`),n.path?.length&&t.push(` \u2192 at ${Xa(n.path)}`);return t.join(`
|
|
3
|
-
`)}var Yt=e=>(t,r,n,o)=>{let s=n?Object.assign(n,{async:!1}):{async:!1},i=t._zod.run({value:r,issues:[]},s);if(i instanceof Promise)throw new se;if(i.issues.length){let a=new(o?.Err??e)(i.issues.map(u=>G(u,s,B())));throw Jt(a,o?.callee),a}return i.value},ge=Yt(W),Gt=e=>async(t,r,n,o)=>{let s=n?Object.assign(n,{async:!0}):{async:!0},i=t._zod.run({value:r,issues:[]},s);if(i instanceof Promise&&(i=await i),i.issues.length){let a=new(o?.Err??e)(i.issues.map(u=>G(u,s,B())));throw Jt(a,o?.callee),a}return i.value},ye=Gt(W),Wt=e=>(t,r,n)=>{let o=n?{...n,async:!1}:{async:!1},s=t._zod.run({value:r,issues:[]},o);if(s instanceof Promise)throw new se;return s.issues.length?{success:!1,error:new(e??dn)(s.issues.map(i=>G(i,o,B())))}:{success:!0,data:s.value}},Te=Wt(W),Vt=e=>async(t,r,n)=>{let o=n?Object.assign(n,{async:!0}):{async:!0},s=t._zod.run({value:r,issues:[]},o);return s instanceof Promise&&(s=await s),s.issues.length?{success:!1,error:new e(s.issues.map(i=>G(i,o,B())))}:{success:!0,data:s.value}},Ie=Vt(W),ec=e=>(t,r,n)=>{let o=n?Object.assign(n,{direction:"backward"}):{direction:"backward"};return Yt(e)(t,r,o)},bn=ec(W),tc=e=>(t,r,n)=>Yt(e)(t,r,n),_n=tc(W),rc=e=>async(t,r,n)=>{let o=n?Object.assign(n,{direction:"backward"}):{direction:"backward"};return Gt(e)(t,r,o)},wn=rc(W),nc=e=>async(t,r,n)=>Gt(e)(t,r,n),$n=nc(W),oc=e=>(t,r,n)=>{let o=n?Object.assign(n,{direction:"backward"}):{direction:"backward"};return Wt(e)(t,r,o)},kn=oc(W),sc=e=>(t,r,n)=>Wt(e)(t,r,n),xn=sc(W),ic=e=>async(t,r,n)=>{let o=n?Object.assign(n,{direction:"backward"}):{direction:"backward"};return Vt(e)(t,r,o)},Sn=ic(W),ac=e=>async(t,r,n)=>Vt(e)(t,r,n),vn=ac(W);var re={};ve(re,{base64:()=>Bn,base64url:()=>Qt,bigint:()=>Kn,boolean:()=>Gn,browserEmail:()=>td,cidrv4:()=>Dn,cidrv6:()=>Mn,cuid:()=>zn,cuid2:()=>Tn,date:()=>Fn,datetime:()=>qn,domain:()=>od,duration:()=>Rn,e164:()=>Un,email:()=>Nn,emoji:()=>On,extendedDuration:()=>Yf,guid:()=>Cn,hex:()=>sd,hostname:()=>nd,html5Email:()=>Qf,idnEmail:()=>ed,integer:()=>Yn,ipv4:()=>Ln,ipv6:()=>Zn,ksuid:()=>An,lowercase:()=>Qn,mac:()=>jn,md5_base64:()=>ad,md5_base64url:()=>cd,md5_hex:()=>id,nanoid:()=>En,null:()=>Wn,number:()=>Xt,rfc5322Email:()=>Xf,sha1_base64:()=>ld,sha1_base64url:()=>pd,sha1_hex:()=>ud,sha256_base64:()=>dd,sha256_base64url:()=>md,sha256_hex:()=>fd,sha384_base64:()=>gd,sha384_base64url:()=>yd,sha384_hex:()=>hd,sha512_base64:()=>_d,sha512_base64url:()=>wd,sha512_hex:()=>bd,string:()=>Jn,time:()=>Hn,ulid:()=>In,undefined:()=>Vn,unicodeEmail:()=>cc,uppercase:()=>Xn,uuid:()=>Pe,uuid4:()=>Gf,uuid6:()=>Wf,uuid7:()=>Vf,xid:()=>Pn});var zn=/^[cC][^\s-]{8,}$/,Tn=/^[0-9a-z]+$/,In=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,Pn=/^[0-9a-vA-V]{20}$/,An=/^[A-Za-z0-9]{27}$/,En=/^[a-zA-Z0-9_-]{21}$/,Rn=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,Yf=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,Cn=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,Pe=e=>e?new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${e}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`):/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/,Gf=Pe(4),Wf=Pe(6),Vf=Pe(7),Nn=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,Qf=/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/,Xf=/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/,cc=/^[^\s@"]{1,64}@[^\s@]{1,255}$/u,ed=cc,td=/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/,rd="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$";function On(){return new RegExp(rd,"u")}var Ln=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,Zn=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/,jn=e=>{let t=ee(e??":");return new RegExp(`^(?:[0-9A-F]{2}${t}){5}[0-9A-F]{2}$|^(?:[0-9a-f]{2}${t}){5}[0-9a-f]{2}$`)},Dn=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,Mn=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,Bn=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,Qt=/^[A-Za-z0-9_-]*$/,nd=/^(?=.{1,253}\.?$)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[-0-9a-zA-Z]{0,61}[0-9a-zA-Z])?)*\.?$/,od=/^([a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/,Un=/^\+[1-9]\d{6,14}$/,uc="(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))",Fn=new RegExp(`^${uc}$`);function lc(e){let t="(?:[01]\\d|2[0-3]):[0-5]\\d";return typeof e.precision=="number"?e.precision===-1?`${t}`:e.precision===0?`${t}:[0-5]\\d`:`${t}:[0-5]\\d\\.\\d{${e.precision}}`:`${t}(?::[0-5]\\d(?:\\.\\d+)?)?`}function Hn(e){return new RegExp(`^${lc(e)}$`)}function qn(e){let t=lc({precision:e.precision}),r=["Z"];e.local&&r.push(""),e.offset&&r.push("([+-](?:[01]\\d|2[0-3]):[0-5]\\d)");let n=`${t}(?:${r.join("|")})`;return new RegExp(`^${uc}T(?:${n})$`)}var Jn=e=>{let t=e?`[\\s\\S]{${e?.minimum??0},${e?.maximum??""}}`:"[\\s\\S]*";return new RegExp(`^${t}$`)},Kn=/^-?\d+n?$/,Yn=/^-?\d+$/,Xt=/^-?\d+(?:\.\d+)?$/,Gn=/^(?:true|false)$/i,Wn=/^null$/i;var Vn=/^undefined$/i;var Qn=/^[^A-Z]*$/,Xn=/^[^a-z]*$/,sd=/^[0-9a-fA-F]*$/;function ct(e,t){return new RegExp(`^[A-Za-z0-9+/]{${e}}${t}$`)}function ut(e){return new RegExp(`^[A-Za-z0-9_-]{${e}}$`)}var id=/^[0-9a-fA-F]{32}$/,ad=ct(22,"=="),cd=ut(22),ud=/^[0-9a-fA-F]{40}$/,ld=ct(27,"="),pd=ut(27),fd=/^[0-9a-fA-F]{64}$/,dd=ct(43,"="),md=ut(43),hd=/^[0-9a-fA-F]{96}$/,gd=ct(64,""),yd=ut(64),bd=/^[0-9a-fA-F]{128}$/,_d=ct(86,"=="),wd=ut(86);var A=d("$ZodCheck",(e,t)=>{var r;e._zod??(e._zod={}),e._zod.def=t,(r=e._zod).onattach??(r.onattach=[])}),fc={number:"number",bigint:"bigint",object:"date"},er=d("$ZodCheckLessThan",(e,t)=>{A.init(e,t);let r=fc[typeof t.value];e._zod.onattach.push(n=>{let o=n._zod.bag,s=(t.inclusive?o.maximum:o.exclusiveMaximum)??Number.POSITIVE_INFINITY;t.value<s&&(t.inclusive?o.maximum=t.value:o.exclusiveMaximum=t.value)}),e._zod.check=n=>{(t.inclusive?n.value<=t.value:n.value<t.value)||n.issues.push({origin:r,code:"too_big",maximum:typeof t.value=="object"?t.value.getTime():t.value,input:n.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),tr=d("$ZodCheckGreaterThan",(e,t)=>{A.init(e,t);let r=fc[typeof t.value];e._zod.onattach.push(n=>{let o=n._zod.bag,s=(t.inclusive?o.minimum:o.exclusiveMinimum)??Number.NEGATIVE_INFINITY;t.value>s&&(t.inclusive?o.minimum=t.value:o.exclusiveMinimum=t.value)}),e._zod.check=n=>{(t.inclusive?n.value>=t.value:n.value>t.value)||n.issues.push({origin:r,code:"too_small",minimum:typeof t.value=="object"?t.value.getTime():t.value,input:n.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),eo=d("$ZodCheckMultipleOf",(e,t)=>{A.init(e,t),e._zod.onattach.push(r=>{var n;(n=r._zod.bag).multipleOf??(n.multipleOf=t.value)}),e._zod.check=r=>{if(typeof r.value!=typeof t.value)throw new Error("Cannot mix number and bigint in multiple_of check.");(typeof r.value=="bigint"?r.value%t.value===BigInt(0):en(r.value,t.value)===0)||r.issues.push({origin:typeof r.value,code:"not_multiple_of",divisor:t.value,input:r.value,inst:e,continue:!t.abort})}}),to=d("$ZodCheckNumberFormat",(e,t)=>{A.init(e,t),t.format=t.format||"float64";let r=t.format?.includes("int"),n=r?"int":"number",[o,s]=sn[t.format];e._zod.onattach.push(i=>{let a=i._zod.bag;a.format=t.format,a.minimum=o,a.maximum=s,r&&(a.pattern=Yn)}),e._zod.check=i=>{let a=i.value;if(r){if(!Number.isInteger(a)){i.issues.push({expected:n,format:t.format,code:"invalid_type",continue:!1,input:a,inst:e});return}if(!Number.isSafeInteger(a)){a>0?i.issues.push({input:a,code:"too_big",maximum:Number.MAX_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:n,inclusive:!0,continue:!t.abort}):i.issues.push({input:a,code:"too_small",minimum:Number.MIN_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:n,inclusive:!0,continue:!t.abort});return}}a<o&&i.issues.push({origin:"number",input:a,code:"too_small",minimum:o,inclusive:!0,inst:e,continue:!t.abort}),a>s&&i.issues.push({origin:"number",input:a,code:"too_big",maximum:s,inclusive:!0,inst:e,continue:!t.abort})}}),ro=d("$ZodCheckBigIntFormat",(e,t)=>{A.init(e,t);let[r,n]=an[t.format];e._zod.onattach.push(o=>{let s=o._zod.bag;s.format=t.format,s.minimum=r,s.maximum=n}),e._zod.check=o=>{let s=o.value;s<r&&o.issues.push({origin:"bigint",input:s,code:"too_small",minimum:r,inclusive:!0,inst:e,continue:!t.abort}),s>n&&o.issues.push({origin:"bigint",input:s,code:"too_big",maximum:n,inclusive:!0,inst:e,continue:!t.abort})}}),no=d("$ZodCheckMaxSize",(e,t)=>{var r;A.init(e,t),(r=e._zod.def).when??(r.when=n=>{let o=n.value;return!fe(o)&&o.size!==void 0}),e._zod.onattach.push(n=>{let o=n._zod.bag.maximum??Number.POSITIVE_INFINITY;t.maximum<o&&(n._zod.bag.maximum=t.maximum)}),e._zod.check=n=>{let o=n.value;o.size<=t.maximum||n.issues.push({origin:it(o),code:"too_big",maximum:t.maximum,inclusive:!0,input:o,inst:e,continue:!t.abort})}}),oo=d("$ZodCheckMinSize",(e,t)=>{var r;A.init(e,t),(r=e._zod.def).when??(r.when=n=>{let o=n.value;return!fe(o)&&o.size!==void 0}),e._zod.onattach.push(n=>{let o=n._zod.bag.minimum??Number.NEGATIVE_INFINITY;t.minimum>o&&(n._zod.bag.minimum=t.minimum)}),e._zod.check=n=>{let o=n.value;o.size>=t.minimum||n.issues.push({origin:it(o),code:"too_small",minimum:t.minimum,inclusive:!0,input:o,inst:e,continue:!t.abort})}}),so=d("$ZodCheckSizeEquals",(e,t)=>{var r;A.init(e,t),(r=e._zod.def).when??(r.when=n=>{let o=n.value;return!fe(o)&&o.size!==void 0}),e._zod.onattach.push(n=>{let o=n._zod.bag;o.minimum=t.size,o.maximum=t.size,o.size=t.size}),e._zod.check=n=>{let o=n.value,s=o.size;if(s===t.size)return;let i=s>t.size;n.issues.push({origin:it(o),...i?{code:"too_big",maximum:t.size}:{code:"too_small",minimum:t.size},inclusive:!0,exact:!0,input:n.value,inst:e,continue:!t.abort})}}),io=d("$ZodCheckMaxLength",(e,t)=>{var r;A.init(e,t),(r=e._zod.def).when??(r.when=n=>{let o=n.value;return!fe(o)&&o.length!==void 0}),e._zod.onattach.push(n=>{let o=n._zod.bag.maximum??Number.POSITIVE_INFINITY;t.maximum<o&&(n._zod.bag.maximum=t.maximum)}),e._zod.check=n=>{let o=n.value;if(o.length<=t.maximum)return;let i=at(o);n.issues.push({origin:i,code:"too_big",maximum:t.maximum,inclusive:!0,input:o,inst:e,continue:!t.abort})}}),ao=d("$ZodCheckMinLength",(e,t)=>{var r;A.init(e,t),(r=e._zod.def).when??(r.when=n=>{let o=n.value;return!fe(o)&&o.length!==void 0}),e._zod.onattach.push(n=>{let o=n._zod.bag.minimum??Number.NEGATIVE_INFINITY;t.minimum>o&&(n._zod.bag.minimum=t.minimum)}),e._zod.check=n=>{let o=n.value;if(o.length>=t.minimum)return;let i=at(o);n.issues.push({origin:i,code:"too_small",minimum:t.minimum,inclusive:!0,input:o,inst:e,continue:!t.abort})}}),co=d("$ZodCheckLengthEquals",(e,t)=>{var r;A.init(e,t),(r=e._zod.def).when??(r.when=n=>{let o=n.value;return!fe(o)&&o.length!==void 0}),e._zod.onattach.push(n=>{let o=n._zod.bag;o.minimum=t.length,o.maximum=t.length,o.length=t.length}),e._zod.check=n=>{let o=n.value,s=o.length;if(s===t.length)return;let i=at(o),a=s>t.length;n.issues.push({origin:i,...a?{code:"too_big",maximum:t.length}:{code:"too_small",minimum:t.length},inclusive:!0,exact:!0,input:n.value,inst:e,continue:!t.abort})}}),Me=d("$ZodCheckStringFormat",(e,t)=>{var r,n;A.init(e,t),e._zod.onattach.push(o=>{let s=o._zod.bag;s.format=t.format,t.pattern&&(s.patterns??(s.patterns=new Set),s.patterns.add(t.pattern))}),t.pattern?(r=e._zod).check??(r.check=o=>{t.pattern.lastIndex=0,!t.pattern.test(o.value)&&o.issues.push({origin:"string",code:"invalid_format",format:t.format,input:o.value,...t.pattern?{pattern:t.pattern.toString()}:{},inst:e,continue:!t.abort})}):(n=e._zod).check??(n.check=()=>{})}),uo=d("$ZodCheckRegex",(e,t)=>{Me.init(e,t),e._zod.check=r=>{t.pattern.lastIndex=0,!t.pattern.test(r.value)&&r.issues.push({origin:"string",code:"invalid_format",format:"regex",input:r.value,pattern:t.pattern.toString(),inst:e,continue:!t.abort})}}),lo=d("$ZodCheckLowerCase",(e,t)=>{t.pattern??(t.pattern=Qn),Me.init(e,t)}),po=d("$ZodCheckUpperCase",(e,t)=>{t.pattern??(t.pattern=Xn),Me.init(e,t)}),fo=d("$ZodCheckIncludes",(e,t)=>{A.init(e,t);let r=ee(t.includes),n=new RegExp(typeof t.position=="number"?`^.{${t.position}}${r}`:r);t.pattern=n,e._zod.onattach.push(o=>{let s=o._zod.bag;s.patterns??(s.patterns=new Set),s.patterns.add(n)}),e._zod.check=o=>{o.value.includes(t.includes,t.position)||o.issues.push({origin:"string",code:"invalid_format",format:"includes",includes:t.includes,input:o.value,inst:e,continue:!t.abort})}}),mo=d("$ZodCheckStartsWith",(e,t)=>{A.init(e,t);let r=new RegExp(`^${ee(t.prefix)}.*`);t.pattern??(t.pattern=r),e._zod.onattach.push(n=>{let o=n._zod.bag;o.patterns??(o.patterns=new Set),o.patterns.add(r)}),e._zod.check=n=>{n.value.startsWith(t.prefix)||n.issues.push({origin:"string",code:"invalid_format",format:"starts_with",prefix:t.prefix,input:n.value,inst:e,continue:!t.abort})}}),ho=d("$ZodCheckEndsWith",(e,t)=>{A.init(e,t);let r=new RegExp(`.*${ee(t.suffix)}$`);t.pattern??(t.pattern=r),e._zod.onattach.push(n=>{let o=n._zod.bag;o.patterns??(o.patterns=new Set),o.patterns.add(r)}),e._zod.check=n=>{n.value.endsWith(t.suffix)||n.issues.push({origin:"string",code:"invalid_format",format:"ends_with",suffix:t.suffix,input:n.value,inst:e,continue:!t.abort})}});function pc(e,t,r){e.issues.length&&t.issues.push(...Q(r,e.issues))}var go=d("$ZodCheckProperty",(e,t)=>{A.init(e,t),e._zod.check=r=>{let n=t.schema._zod.run({value:r.value[t.property],issues:[]},{});if(n instanceof Promise)return n.then(o=>pc(o,r,t.property));pc(n,r,t.property)}}),yo=d("$ZodCheckMimeType",(e,t)=>{A.init(e,t);let r=new Set(t.mime);e._zod.onattach.push(n=>{n._zod.bag.mime=t.mime}),e._zod.check=n=>{r.has(n.value.type)||n.issues.push({code:"invalid_value",values:t.mime,input:n.value.type,inst:e,continue:!t.abort})}}),bo=d("$ZodCheckOverwrite",(e,t)=>{A.init(e,t),e._zod.check=r=>{r.value=t.tx(r.value)}});var lt=class{constructor(t=[]){this.content=[],this.indent=0,this&&(this.args=t)}indented(t){this.indent+=1,t(this),this.indent-=1}write(t){if(typeof t=="function"){t(this,{execution:"sync"}),t(this,{execution:"async"});return}let n=t.split(`
|
|
1
|
+
var wf=Object.defineProperty;var ve=(e,t)=>{for(var r in t)wf(e,r,{get:t[r],enumerable:!0})};import{resolve as wb}from"node:path";import{fileURLToPath as $b}from"node:url";function Ce(e){let t=Math.floor(e/1e3);if(t<60)return`${t}s`;let r=Math.floor(t/60),n=t%60;if(r<60)return n>0?`${r}m ${n}s`:`${r}m`;let o=Math.floor(r/60),s=r%60;return s>0?`${o}h ${s}m`:`${o}h`}import{execFileSync as pe}from"node:child_process";function Kr(...e){return pe("git",e,{encoding:"utf8"}).trim()}function Ba(){return Kr("rev-parse","--abbrev-ref","HEAD")}function Dt(){try{return pe("git",["diff","--quiet"],{stdio:"ignore"}),pe("git",["diff","--cached","--quiet"],{stdio:"ignore"}),!1}catch{return!0}}function Xe(e){try{return pe("git",["show-ref","--verify","--quiet",`refs/heads/${e}`],{stdio:"ignore"}),!0}catch{return!1}}function Yr(e,t){Xe(e)||Kr("checkout","-b",e,t)}function L(e,t=!1){Kr("checkout",...t?["-B"]:[],e)}function Ua(e){try{return pe("git",["ls-remote","--heads","origin",e],{encoding:"utf8",timeout:15e3}).trim().length>0}catch{return!1}}function Mt(e){try{return pe("git",["fetch","origin",`${e}:${e}`],{encoding:"utf8",stdio:["pipe","pipe","pipe"]}),!0}catch{return!1}}function Fa(e,t=8e3){try{let r=pe("git",["diff",`${e}...HEAD`,"--stat"],{encoding:"utf8",timeout:1e4}).trim();return r?r.length>t?r.slice(0,t)+`
|
|
2
|
+
... (truncated)`:r:void 0}catch{return}}function et(e){try{return pe("git",["push","-u","origin",e],{encoding:"utf8",stdio:["pipe","pipe","pipe"]}),!0}catch{return!1}}var $=e=>`\x1B[2m${e}\x1B[0m`,Ne=e=>`\x1B[1m${e}\x1B[0m`;var N=e=>`\x1B[32m${e}\x1B[0m`,Oe=e=>`\x1B[31m${e}\x1B[0m`,v=e=>`\x1B[33m${e}\x1B[0m`;function Ha(e){return{argv:e,dryRun:e.includes("--dry-run"),skipFeasibility:e.includes("--skip-feasibility"),startTime:Date.now(),cwd:process.cwd(),isAfk:process.env.CLANCY_AFK_MODE==="1"}}import{mkdirSync as $f,readFileSync as xf,unlinkSync as qa,writeFileSync as kf}from"node:fs";import{dirname as Sf,join as Bt}from"node:path";function Ja(e,t){let r=Bt(e,".clancy","lock.json");$f(Sf(r),{recursive:!0}),kf(r,JSON.stringify(t,null,2),"utf8")}function Ut(e){let t=Bt(e,".clancy","lock.json");try{let r=xf(t,"utf8");return JSON.parse(r)}catch{return}}function Ft(e){let t=Bt(e,".clancy","lock.json");try{qa(t)}catch{}}function Ht(e){let t=Bt(e,".clancy","verify-attempt.txt");try{qa(t)}catch{}}function vf(e){try{return process.kill(e,0),!0}catch(t){return t instanceof Error&&"code"in t&&t.code==="EPERM"}}function Ka(e){if(!vf(e.pid))return!0;let t=Date.now()-new Date(e.startedAt).getTime();if(Number.isNaN(t))return!0;let r=1440*60*1e3;return t>r}import{execFileSync as gl}from"node:child_process";import{readFileSync as Jg}from"node:fs";import{join as Kg}from"node:path";var c={};ve(c,{$brand:()=>Wr,$input:()=>As,$output:()=>Ps,NEVER:()=>Gr,TimePrecision:()=>ti,ZodMiniAny:()=>eu,ZodMiniArray:()=>su,ZodMiniBase64:()=>Jc,ZodMiniBase64URL:()=>Kc,ZodMiniBigInt:()=>kt,ZodMiniBigIntFormat:()=>sa,ZodMiniBoolean:()=>xt,ZodMiniCIDRv4:()=>Fc,ZodMiniCIDRv6:()=>Hc,ZodMiniCUID:()=>Lc,ZodMiniCUID2:()=>Zc,ZodMiniCatch:()=>Su,ZodMiniCodec:()=>pa,ZodMiniCustom:()=>fa,ZodMiniCustomStringFormat:()=>wt,ZodMiniDate:()=>$r,ZodMiniDefault:()=>$u,ZodMiniDiscriminatedUnion:()=>cu,ZodMiniE164:()=>Yc,ZodMiniEmail:()=>Rc,ZodMiniEmoji:()=>Nc,ZodMiniEnum:()=>aa,ZodMiniExactOptional:()=>_u,ZodMiniFile:()=>yu,ZodMiniFunction:()=>Ru,ZodMiniGUID:()=>Cc,ZodMiniIPv4:()=>Bc,ZodMiniIPv6:()=>Uc,ZodMiniISODate:()=>zr,ZodMiniISODateTime:()=>vr,ZodMiniISODuration:()=>Ir,ZodMiniISOTime:()=>Tr,ZodMiniIntersection:()=>uu,ZodMiniJWT:()=>Gc,ZodMiniKSUID:()=>Mc,ZodMiniLazy:()=>Iu,ZodMiniLiteral:()=>gu,ZodMiniMAC:()=>qc,ZodMiniMap:()=>du,ZodMiniNaN:()=>vu,ZodMiniNanoID:()=>Oc,ZodMiniNever:()=>ru,ZodMiniNonOptional:()=>ua,ZodMiniNull:()=>Qc,ZodMiniNullable:()=>wu,ZodMiniNumber:()=>$t,ZodMiniNumberFormat:()=>qe,ZodMiniObject:()=>xr,ZodMiniOptional:()=>ca,ZodMiniPipe:()=>la,ZodMiniPrefault:()=>xu,ZodMiniPromise:()=>Au,ZodMiniReadonly:()=>zu,ZodMiniRecord:()=>kr,ZodMiniSet:()=>mu,ZodMiniString:()=>He,ZodMiniStringFormat:()=>E,ZodMiniSuccess:()=>ku,ZodMiniSymbol:()=>Wc,ZodMiniTemplateLiteral:()=>Tu,ZodMiniTransform:()=>bu,ZodMiniTuple:()=>lu,ZodMiniType:()=>S,ZodMiniULID:()=>jc,ZodMiniURL:()=>oa,ZodMiniUUID:()=>_t,ZodMiniUndefined:()=>Vc,ZodMiniUnion:()=>ia,ZodMiniUnknown:()=>tu,ZodMiniVoid:()=>ou,ZodMiniXID:()=>Dc,ZodMiniXor:()=>au,_default:()=>Yh,_function:()=>dg,any:()=>xh,array:()=>K,base64:()=>oh,base64url:()=>sh,bigint:()=>yh,boolean:()=>Je,catch:()=>Qh,catchall:()=>Nh,check:()=>sg,cidrv4:()=>th,cidrv6:()=>rh,clone:()=>q,codec:()=>tg,coerce:()=>ma,config:()=>B,core:()=>Fe,cuid:()=>Ym,cuid2:()=>Gm,custom:()=>Eu,date:()=>Sh,decode:()=>_n,decodeAsync:()=>$n,describe:()=>cg,discriminatedUnion:()=>Lh,e164:()=>ih,email:()=>jm,emoji:()=>Jm,encode:()=>bn,encodeAsync:()=>wn,endsWith:()=>Fi,enum:()=>hu,exactOptional:()=>Jh,extend:()=>ke,file:()=>Hh,flattenError:()=>mn,float32:()=>dh,float64:()=>mh,formatError:()=>hn,function:()=>dg,globalRegistry:()=>ae,gt:()=>gr,gte:()=>gt,guid:()=>Dm,hash:()=>ph,hex:()=>lh,hostname:()=>uh,httpUrl:()=>qm,includes:()=>Bi,instanceof:()=>lg,int:()=>fh,int32:()=>hh,int64:()=>bh,intersection:()=>Zh,ipv4:()=>Xm,ipv6:()=>eh,iso:()=>da,json:()=>fg,jwt:()=>ah,keyof:()=>vh,ksuid:()=>Qm,lazy:()=>Pu,length:()=>ji,literal:()=>Fh,locales:()=>mt,looseObject:()=>Th,looseRecord:()=>Dh,lowercase:()=>Di,lt:()=>hr,lte:()=>ht,mac:()=>nh,map:()=>Mh,maxLength:()=>Zi,maxSize:()=>Ni,maximum:()=>ht,merge:()=>Ph,meta:()=>ug,mime:()=>qi,minLength:()=>yt,minSize:()=>Oi,minimum:()=>gt,multipleOf:()=>Ci,nan:()=>Xh,nanoid:()=>Km,nativeEnum:()=>Uh,negative:()=>Ai,never:()=>nu,nonnegative:()=>Ri,nonoptional:()=>Wh,nonpositive:()=>Ei,normalize:()=>Ji,null:()=>Xc,nullable:()=>Sr,nullish:()=>Kh,number:()=>xe,object:()=>I,omit:()=>Eh,optional:()=>w,overwrite:()=>be,parse:()=>ge,parseAsync:()=>ye,partial:()=>Rh,partialRecord:()=>jh,pick:()=>Ah,pipe:()=>eg,positive:()=>Pi,prefault:()=>Gh,prettifyError:()=>yn,promise:()=>og,property:()=>Hi,readonly:()=>rg,record:()=>fu,refine:()=>ig,regex:()=>bt,regexes:()=>re,registry:()=>dr,required:()=>Ch,safeDecode:()=>kn,safeDecodeAsync:()=>vn,safeEncode:()=>xn,safeEncodeAsync:()=>Sn,safeExtend:()=>Ih,safeParse:()=>Te,safeParseAsync:()=>Ie,set:()=>Bh,size:()=>Li,startsWith:()=>Ui,strictObject:()=>zh,string:()=>_,stringFormat:()=>ch,stringbool:()=>pg,success:()=>Vh,superRefine:()=>ag,symbol:()=>wh,templateLiteral:()=>ng,toJSONSchema:()=>br,toLowerCase:()=>Yi,toUpperCase:()=>Gi,transform:()=>qh,treeifyError:()=>gn,trim:()=>Ki,tuple:()=>pu,uint32:()=>gh,uint64:()=>_h,ulid:()=>Wm,undefined:()=>$h,union:()=>iu,unknown:()=>wr,uppercase:()=>Mi,url:()=>Hm,util:()=>te,uuid:()=>Mm,uuidv4:()=>Bm,uuidv6:()=>Um,uuidv7:()=>Fm,void:()=>kh,xid:()=>Vm,xor:()=>Oh});var Fe={};ve(Fe,{$ZodAny:()=>Qo,$ZodArray:()=>ns,$ZodAsyncError:()=>se,$ZodBase64:()=>Uo,$ZodBase64URL:()=>Fo,$ZodBigInt:()=>cr,$ZodBigIntFormat:()=>Yo,$ZodBoolean:()=>pt,$ZodCIDRv4:()=>Do,$ZodCIDRv6:()=>Mo,$ZodCUID:()=>To,$ZodCUID2:()=>Io,$ZodCatch:()=>ws,$ZodCheck:()=>A,$ZodCheckBigIntFormat:()=>ro,$ZodCheckEndsWith:()=>ho,$ZodCheckGreaterThan:()=>tr,$ZodCheckIncludes:()=>fo,$ZodCheckLengthEquals:()=>co,$ZodCheckLessThan:()=>er,$ZodCheckLowerCase:()=>lo,$ZodCheckMaxLength:()=>io,$ZodCheckMaxSize:()=>no,$ZodCheckMimeType:()=>yo,$ZodCheckMinLength:()=>ao,$ZodCheckMinSize:()=>oo,$ZodCheckMultipleOf:()=>eo,$ZodCheckNumberFormat:()=>to,$ZodCheckOverwrite:()=>bo,$ZodCheckProperty:()=>go,$ZodCheckRegex:()=>uo,$ZodCheckSizeEquals:()=>so,$ZodCheckStartsWith:()=>mo,$ZodCheckStringFormat:()=>Me,$ZodCheckUpperCase:()=>po,$ZodCodec:()=>dt,$ZodCustom:()=>Is,$ZodCustomStringFormat:()=>Jo,$ZodDate:()=>rs,$ZodDefault:()=>gs,$ZodDiscriminatedUnion:()=>ss,$ZodE164:()=>Ho,$ZodEmail:()=>ko,$ZodEmoji:()=>vo,$ZodEncodeError:()=>Le,$ZodEnum:()=>ls,$ZodError:()=>dn,$ZodExactOptional:()=>ms,$ZodFile:()=>fs,$ZodFunction:()=>vs,$ZodGUID:()=>$o,$ZodIPv4:()=>Lo,$ZodIPv6:()=>Zo,$ZodISODate:()=>Co,$ZodISODateTime:()=>Ro,$ZodISODuration:()=>Oo,$ZodISOTime:()=>No,$ZodIntersection:()=>is,$ZodJWT:()=>qo,$ZodKSUID:()=>Eo,$ZodLazy:()=>Ts,$ZodLiteral:()=>ps,$ZodMAC:()=>jo,$ZodMap:()=>cs,$ZodNaN:()=>$s,$ZodNanoID:()=>zo,$ZodNever:()=>es,$ZodNonOptional:()=>bs,$ZodNull:()=>Vo,$ZodNullable:()=>hs,$ZodNumber:()=>ar,$ZodNumberFormat:()=>Ko,$ZodObject:()=>ur,$ZodObjectJIT:()=>$d,$ZodOptional:()=>pr,$ZodPipe:()=>xs,$ZodPrefault:()=>ys,$ZodPromise:()=>zs,$ZodReadonly:()=>ks,$ZodRealError:()=>W,$ZodRecord:()=>as,$ZodRegistry:()=>fr,$ZodSet:()=>us,$ZodString:()=>Be,$ZodStringFormat:()=>P,$ZodSuccess:()=>_s,$ZodSymbol:()=>Go,$ZodTemplateLiteral:()=>Ss,$ZodTransform:()=>ds,$ZodTuple:()=>lr,$ZodType:()=>x,$ZodULID:()=>Po,$ZodURL:()=>So,$ZodUUID:()=>xo,$ZodUndefined:()=>Wo,$ZodUnion:()=>ft,$ZodUnknown:()=>Xo,$ZodVoid:()=>ts,$ZodXID:()=>Ao,$ZodXor:()=>os,$brand:()=>Wr,$constructor:()=>d,$input:()=>As,$output:()=>Ps,Doc:()=>lt,JSONSchema:()=>Ec,JSONSchemaGenerator:()=>_r,NEVER:()=>Gr,TimePrecision:()=>ti,_any:()=>xi,_array:()=>zd,_base64:()=>Vs,_base64url:()=>Qs,_bigint:()=>hi,_boolean:()=>di,_catch:()=>Hd,_check:()=>Ac,_cidrv4:()=>Gs,_cidrv6:()=>Ws,_coercedBigint:()=>gi,_coercedBoolean:()=>mi,_coercedDate:()=>Ti,_coercedNumber:()=>ai,_coercedString:()=>Rs,_cuid:()=>Bs,_cuid2:()=>Us,_custom:()=>Vi,_date:()=>zi,_decode:()=>tc,_decodeAsync:()=>nc,_default:()=>Bd,_discriminatedUnion:()=>Pd,_e164:()=>Xs,_email:()=>Cs,_emoji:()=>Ds,_encode:()=>ec,_encodeAsync:()=>rc,_endsWith:()=>Fi,_enum:()=>Od,_file:()=>Wi,_float32:()=>ui,_float64:()=>li,_gt:()=>gr,_gte:()=>gt,_guid:()=>Ns,_includes:()=>Bi,_int:()=>ci,_int32:()=>pi,_int64:()=>yi,_intersection:()=>Ad,_ipv4:()=>Js,_ipv6:()=>Ks,_isoDate:()=>ni,_isoDateTime:()=>ri,_isoDuration:()=>si,_isoTime:()=>oi,_jwt:()=>ei,_ksuid:()=>qs,_lazy:()=>Yd,_length:()=>ji,_literal:()=>Zd,_lowercase:()=>Di,_lt:()=>hr,_lte:()=>ht,_mac:()=>Ys,_map:()=>Cd,_max:()=>ht,_maxLength:()=>Zi,_maxSize:()=>Ni,_mime:()=>qi,_min:()=>gt,_minLength:()=>yt,_minSize:()=>Oi,_multipleOf:()=>Ci,_nan:()=>Ii,_nanoid:()=>Ms,_nativeEnum:()=>Ld,_negative:()=>Ai,_never:()=>Si,_nonnegative:()=>Ri,_nonoptional:()=>Ud,_nonpositive:()=>Ei,_normalize:()=>Ji,_null:()=>$i,_nullable:()=>Md,_number:()=>ii,_optional:()=>Dd,_overwrite:()=>be,_parse:()=>Yt,_parseAsync:()=>Gt,_pipe:()=>qd,_positive:()=>Pi,_promise:()=>Gd,_property:()=>Hi,_readonly:()=>Jd,_record:()=>Rd,_refine:()=>Qi,_regex:()=>bt,_safeDecode:()=>sc,_safeDecodeAsync:()=>ac,_safeEncode:()=>oc,_safeEncodeAsync:()=>ic,_safeParse:()=>Wt,_safeParseAsync:()=>Vt,_set:()=>Nd,_size:()=>Li,_slugify:()=>vd,_startsWith:()=>Ui,_string:()=>Es,_stringFormat:()=>Ue,_stringbool:()=>ra,_success:()=>Fd,_superRefine:()=>Xi,_symbol:()=>_i,_templateLiteral:()=>Kd,_toLowerCase:()=>Yi,_toUpperCase:()=>Gi,_transform:()=>jd,_trim:()=>Ki,_tuple:()=>Ed,_uint32:()=>fi,_uint64:()=>bi,_ulid:()=>Fs,_undefined:()=>wi,_union:()=>Td,_unknown:()=>ki,_uppercase:()=>Mi,_url:()=>mr,_uuid:()=>Os,_uuidv4:()=>Ls,_uuidv6:()=>Zs,_uuidv7:()=>js,_void:()=>vi,_xid:()=>Hs,_xor:()=>Id,clone:()=>q,config:()=>B,createStandardJSONSchemaMethod:()=>na,createToJSONSchemaMethod:()=>Wd,decode:()=>_n,decodeAsync:()=>$n,describe:()=>ea,encode:()=>bn,encodeAsync:()=>wn,extractDefs:()=>we,finalize:()=>$e,flattenError:()=>mn,formatError:()=>hn,globalConfig:()=>tt,globalRegistry:()=>ae,initializeContext:()=>_e,isValidBase64:()=>Bo,isValidBase64URL:()=>vc,isValidJWT:()=>zc,locales:()=>mt,meta:()=>ta,parse:()=>ge,parseAsync:()=>ye,prettifyError:()=>yn,process:()=>T,regexes:()=>re,registry:()=>dr,safeDecode:()=>kn,safeDecodeAsync:()=>vn,safeEncode:()=>xn,safeEncodeAsync:()=>Sn,safeParse:()=>Te,safeParseAsync:()=>Ie,toDotPath:()=>Xa,toJSONSchema:()=>br,treeifyError:()=>gn,util:()=>te,version:()=>_o});var Gr=Object.freeze({status:"aborted"});function d(e,t,r){function n(a,u){if(a._zod||Object.defineProperty(a,"_zod",{value:{def:u,constr:i,traits:new Set},enumerable:!1}),a._zod.traits.has(e))return;a._zod.traits.add(e),t(a,u);let l=i.prototype,p=Object.keys(l);for(let f=0;f<p.length;f++){let m=p[f];m in a||(a[m]=l[m].bind(a))}}let o=r?.Parent??Object;class s extends o{}Object.defineProperty(s,"name",{value:e});function i(a){var u;let l=r?.Parent?new s:this;n(l,a),(u=l._zod).deferred??(u.deferred=[]);for(let p of l._zod.deferred)p();return l}return Object.defineProperty(i,"init",{value:n}),Object.defineProperty(i,Symbol.hasInstance,{value:a=>r?.Parent&&a instanceof r.Parent?!0:a?._zod?.traits?.has(e)}),Object.defineProperty(i,"name",{value:e}),i}var Wr=Symbol("zod_brand"),se=class extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}},Le=class extends Error{constructor(t){super(`Encountered unidirectional transform during encode: ${t}`),this.name="ZodEncodeError"}},tt={};function B(e){return e&&Object.assign(tt,e),tt}var te={};ve(te,{BIGINT_FORMAT_RANGES:()=>an,Class:()=>Qr,NUMBER_FORMAT_RANGES:()=>sn,aborted:()=>he,allowsEval:()=>rn,assert:()=>Af,assertEqual:()=>zf,assertIs:()=>If,assertNever:()=>Pf,assertNotEqual:()=>Tf,assignProp:()=>de,base64ToUint8Array:()=>Wa,base64urlToUint8Array:()=>Ff,cached:()=>Ze,captureStackTrace:()=>Jt,cleanEnum:()=>Uf,cleanRegex:()=>ot,clone:()=>q,cloneDef:()=>Cf,createTransparentProxy:()=>Df,defineLazy:()=>k,esc:()=>qt,escapeRegex:()=>ee,extend:()=>Kt,finalizeIssue:()=>G,floatSafeRemainder:()=>en,getElementAtPath:()=>Nf,getEnumValues:()=>nt,getLengthableOrigin:()=>at,getParsedType:()=>jf,getSizableOrigin:()=>it,hexToUint8Array:()=>qf,isObject:()=>ze,isPlainObject:()=>me,issue:()=>De,joinValues:()=>Ef,jsonStringifyReplacer:()=>Xr,merge:()=>Mf,mergeDefs:()=>ue,normalizeParams:()=>g,nullish:()=>fe,numKeys:()=>Zf,objectClone:()=>Rf,omit:()=>un,optionalKeys:()=>on,parsedType:()=>Bf,partial:()=>pn,pick:()=>cn,prefixIssues:()=>Q,primitiveTypes:()=>nn,promiseAllObject:()=>Of,propertyKeyTypes:()=>st,randomString:()=>Lf,required:()=>fn,safeExtend:()=>ln,shallowClone:()=>je,slugify:()=>tn,stringifyPrimitive:()=>Ga,uint8ArrayToBase64:()=>Va,uint8ArrayToBase64url:()=>Hf,uint8ArrayToHex:()=>Jf,unwrapMessage:()=>rt});function zf(e){return e}function Tf(e){return e}function If(e){}function Pf(e){throw new Error("Unexpected value in exhaustive check")}function Af(e){}function nt(e){let t=Object.values(e).filter(n=>typeof n=="number");return Object.entries(e).filter(([n,o])=>t.indexOf(+n)===-1).map(([n,o])=>o)}function Ef(e,t="|"){return e.map(r=>Ga(r)).join(t)}function Xr(e,t){return typeof t=="bigint"?t.toString():t}function Ze(e){return{get value(){{let r=e();return Object.defineProperty(this,"value",{value:r}),r}throw new Error("cached value already set")}}}function fe(e){return e==null}function ot(e){let t=e.startsWith("^")?1:0,r=e.endsWith("$")?e.length-1:e.length;return e.slice(t,r)}function en(e,t){let r=(e.toString().split(".")[1]||"").length,n=t.toString(),o=(n.split(".")[1]||"").length;if(o===0&&/\d?e-\d?/.test(n)){let u=n.match(/\d?e-(\d?)/);u?.[1]&&(o=Number.parseInt(u[1]))}let s=r>o?r:o,i=Number.parseInt(e.toFixed(s).replace(".","")),a=Number.parseInt(t.toFixed(s).replace(".",""));return i%a/10**s}var Ya=Symbol("evaluating");function k(e,t,r){let n;Object.defineProperty(e,t,{get(){if(n!==Ya)return n===void 0&&(n=Ya,n=r()),n},set(o){Object.defineProperty(e,t,{value:o})},configurable:!0})}function Rf(e){return Object.create(Object.getPrototypeOf(e),Object.getOwnPropertyDescriptors(e))}function de(e,t,r){Object.defineProperty(e,t,{value:r,writable:!0,enumerable:!0,configurable:!0})}function ue(...e){let t={};for(let r of e){let n=Object.getOwnPropertyDescriptors(r);Object.assign(t,n)}return Object.defineProperties({},t)}function Cf(e){return ue(e._zod.def)}function Nf(e,t){return t?t.reduce((r,n)=>r?.[n],e):e}function Of(e){let t=Object.keys(e),r=t.map(n=>e[n]);return Promise.all(r).then(n=>{let o={};for(let s=0;s<t.length;s++)o[t[s]]=n[s];return o})}function Lf(e=10){let t="abcdefghijklmnopqrstuvwxyz",r="";for(let n=0;n<e;n++)r+=t[Math.floor(Math.random()*t.length)];return r}function qt(e){return JSON.stringify(e)}function tn(e){return e.toLowerCase().trim().replace(/[^\w\s-]/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")}var Jt="captureStackTrace"in Error?Error.captureStackTrace:(...e)=>{};function ze(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var rn=Ze(()=>{if(typeof navigator<"u"&&navigator?.userAgent?.includes("Cloudflare"))return!1;try{let e=Function;return new e(""),!0}catch{return!1}});function me(e){if(ze(e)===!1)return!1;let t=e.constructor;if(t===void 0||typeof t!="function")return!0;let r=t.prototype;return!(ze(r)===!1||Object.prototype.hasOwnProperty.call(r,"isPrototypeOf")===!1)}function je(e){return me(e)?{...e}:Array.isArray(e)?[...e]:e}function Zf(e){let t=0;for(let r in e)Object.prototype.hasOwnProperty.call(e,r)&&t++;return t}var jf=e=>{let t=typeof e;switch(t){case"undefined":return"undefined";case"string":return"string";case"number":return Number.isNaN(e)?"nan":"number";case"boolean":return"boolean";case"function":return"function";case"bigint":return"bigint";case"symbol":return"symbol";case"object":return Array.isArray(e)?"array":e===null?"null":e.then&&typeof e.then=="function"&&e.catch&&typeof e.catch=="function"?"promise":typeof Map<"u"&&e instanceof Map?"map":typeof Set<"u"&&e instanceof Set?"set":typeof Date<"u"&&e instanceof Date?"date":typeof File<"u"&&e instanceof File?"file":"object";default:throw new Error(`Unknown data type: ${t}`)}},st=new Set(["string","number","symbol"]),nn=new Set(["string","number","bigint","boolean","symbol","undefined"]);function ee(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function q(e,t,r){let n=new e._zod.constr(t??e._zod.def);return(!t||r?.parent)&&(n._zod.parent=e),n}function g(e){let t=e;if(!t)return{};if(typeof t=="string")return{error:()=>t};if(t?.message!==void 0){if(t?.error!==void 0)throw new Error("Cannot specify both `message` and `error` params");t.error=t.message}return delete t.message,typeof t.error=="string"?{...t,error:()=>t.error}:t}function Df(e){let t;return new Proxy({},{get(r,n,o){return t??(t=e()),Reflect.get(t,n,o)},set(r,n,o,s){return t??(t=e()),Reflect.set(t,n,o,s)},has(r,n){return t??(t=e()),Reflect.has(t,n)},deleteProperty(r,n){return t??(t=e()),Reflect.deleteProperty(t,n)},ownKeys(r){return t??(t=e()),Reflect.ownKeys(t)},getOwnPropertyDescriptor(r,n){return t??(t=e()),Reflect.getOwnPropertyDescriptor(t,n)},defineProperty(r,n,o){return t??(t=e()),Reflect.defineProperty(t,n,o)}})}function Ga(e){return typeof e=="bigint"?e.toString()+"n":typeof e=="string"?`"${e}"`:`${e}`}function on(e){return Object.keys(e).filter(t=>e[t]._zod.optin==="optional"&&e[t]._zod.optout==="optional")}var sn={safeint:[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]},an={int64:[BigInt("-9223372036854775808"),BigInt("9223372036854775807")],uint64:[BigInt(0),BigInt("18446744073709551615")]};function cn(e,t){let r=e._zod.def,n=r.checks;if(n&&n.length>0)throw new Error(".pick() cannot be used on object schemas containing refinements");let s=ue(e._zod.def,{get shape(){let i={};for(let a in t){if(!(a in r.shape))throw new Error(`Unrecognized key: "${a}"`);t[a]&&(i[a]=r.shape[a])}return de(this,"shape",i),i},checks:[]});return q(e,s)}function un(e,t){let r=e._zod.def,n=r.checks;if(n&&n.length>0)throw new Error(".omit() cannot be used on object schemas containing refinements");let s=ue(e._zod.def,{get shape(){let i={...e._zod.def.shape};for(let a in t){if(!(a in r.shape))throw new Error(`Unrecognized key: "${a}"`);t[a]&&delete i[a]}return de(this,"shape",i),i},checks:[]});return q(e,s)}function Kt(e,t){if(!me(t))throw new Error("Invalid input to extend: expected a plain object");let r=e._zod.def.checks;if(r&&r.length>0){let s=e._zod.def.shape;for(let i in t)if(Object.getOwnPropertyDescriptor(s,i)!==void 0)throw new Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}let o=ue(e._zod.def,{get shape(){let s={...e._zod.def.shape,...t};return de(this,"shape",s),s}});return q(e,o)}function ln(e,t){if(!me(t))throw new Error("Invalid input to safeExtend: expected a plain object");let r=ue(e._zod.def,{get shape(){let n={...e._zod.def.shape,...t};return de(this,"shape",n),n}});return q(e,r)}function Mf(e,t){let r=ue(e._zod.def,{get shape(){let n={...e._zod.def.shape,...t._zod.def.shape};return de(this,"shape",n),n},get catchall(){return t._zod.def.catchall},checks:[]});return q(e,r)}function pn(e,t,r){let o=t._zod.def.checks;if(o&&o.length>0)throw new Error(".partial() cannot be used on object schemas containing refinements");let i=ue(t._zod.def,{get shape(){let a=t._zod.def.shape,u={...a};if(r)for(let l in r){if(!(l in a))throw new Error(`Unrecognized key: "${l}"`);r[l]&&(u[l]=e?new e({type:"optional",innerType:a[l]}):a[l])}else for(let l in a)u[l]=e?new e({type:"optional",innerType:a[l]}):a[l];return de(this,"shape",u),u},checks:[]});return q(t,i)}function fn(e,t,r){let n=ue(t._zod.def,{get shape(){let o=t._zod.def.shape,s={...o};if(r)for(let i in r){if(!(i in s))throw new Error(`Unrecognized key: "${i}"`);r[i]&&(s[i]=new e({type:"nonoptional",innerType:o[i]}))}else for(let i in o)s[i]=new e({type:"nonoptional",innerType:o[i]});return de(this,"shape",s),s}});return q(t,n)}function he(e,t=0){if(e.aborted===!0)return!0;for(let r=t;r<e.issues.length;r++)if(e.issues[r]?.continue!==!0)return!0;return!1}function Q(e,t){return t.map(r=>{var n;return(n=r).path??(n.path=[]),r.path.unshift(e),r})}function rt(e){return typeof e=="string"?e:e?.message}function G(e,t,r){let n={...e,path:e.path??[]};if(!e.message){let o=rt(e.inst?._zod.def?.error?.(e))??rt(t?.error?.(e))??rt(r.customError?.(e))??rt(r.localeError?.(e))??"Invalid input";n.message=o}return delete n.inst,delete n.continue,t?.reportInput||delete n.input,n}function it(e){return e instanceof Set?"set":e instanceof Map?"map":e instanceof File?"file":"unknown"}function at(e){return Array.isArray(e)?"array":typeof e=="string"?"string":"unknown"}function Bf(e){let t=typeof e;switch(t){case"number":return Number.isNaN(e)?"nan":"number";case"object":{if(e===null)return"null";if(Array.isArray(e))return"array";let r=e;if(r&&Object.getPrototypeOf(r)!==Object.prototype&&"constructor"in r&&r.constructor)return r.constructor.name}}return t}function De(...e){let[t,r,n]=e;return typeof t=="string"?{message:t,code:"custom",input:r,inst:n}:{...t}}function Uf(e){return Object.entries(e).filter(([t,r])=>Number.isNaN(Number.parseInt(t,10))).map(t=>t[1])}function Wa(e){let t=atob(e),r=new Uint8Array(t.length);for(let n=0;n<t.length;n++)r[n]=t.charCodeAt(n);return r}function Va(e){let t="";for(let r=0;r<e.length;r++)t+=String.fromCharCode(e[r]);return btoa(t)}function Ff(e){let t=e.replace(/-/g,"+").replace(/_/g,"/"),r="=".repeat((4-t.length%4)%4);return Wa(t+r)}function Hf(e){return Va(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}function qf(e){let t=e.replace(/^0x/,"");if(t.length%2!==0)throw new Error("Invalid hex string length");let r=new Uint8Array(t.length/2);for(let n=0;n<t.length;n+=2)r[n/2]=Number.parseInt(t.slice(n,n+2),16);return r}function Jf(e){return Array.from(e).map(t=>t.toString(16).padStart(2,"0")).join("")}var Qr=class{constructor(...t){}};var Qa=(e,t)=>{e.name="$ZodError",Object.defineProperty(e,"_zod",{value:e._zod,enumerable:!1}),Object.defineProperty(e,"issues",{value:t,enumerable:!1}),e.message=JSON.stringify(t,Xr,2),Object.defineProperty(e,"toString",{value:()=>e.message,enumerable:!1})},dn=d("$ZodError",Qa),W=d("$ZodError",Qa,{Parent:Error});function mn(e,t=r=>r.message){let r={},n=[];for(let o of e.issues)o.path.length>0?(r[o.path[0]]=r[o.path[0]]||[],r[o.path[0]].push(t(o))):n.push(t(o));return{formErrors:n,fieldErrors:r}}function hn(e,t=r=>r.message){let r={_errors:[]},n=o=>{for(let s of o.issues)if(s.code==="invalid_union"&&s.errors.length)s.errors.map(i=>n({issues:i}));else if(s.code==="invalid_key")n({issues:s.issues});else if(s.code==="invalid_element")n({issues:s.issues});else if(s.path.length===0)r._errors.push(t(s));else{let i=r,a=0;for(;a<s.path.length;){let u=s.path[a];a===s.path.length-1?(i[u]=i[u]||{_errors:[]},i[u]._errors.push(t(s))):i[u]=i[u]||{_errors:[]},i=i[u],a++}}};return n(e),r}function gn(e,t=r=>r.message){let r={errors:[]},n=(o,s=[])=>{var i,a;for(let u of o.issues)if(u.code==="invalid_union"&&u.errors.length)u.errors.map(l=>n({issues:l},u.path));else if(u.code==="invalid_key")n({issues:u.issues},u.path);else if(u.code==="invalid_element")n({issues:u.issues},u.path);else{let l=[...s,...u.path];if(l.length===0){r.errors.push(t(u));continue}let p=r,f=0;for(;f<l.length;){let m=l[f],h=f===l.length-1;typeof m=="string"?(p.properties??(p.properties={}),(i=p.properties)[m]??(i[m]={errors:[]}),p=p.properties[m]):(p.items??(p.items=[]),(a=p.items)[m]??(a[m]={errors:[]}),p=p.items[m]),h&&p.errors.push(t(u)),f++}}};return n(e),r}function Xa(e){let t=[],r=e.map(n=>typeof n=="object"?n.key:n);for(let n of r)typeof n=="number"?t.push(`[${n}]`):typeof n=="symbol"?t.push(`[${JSON.stringify(String(n))}]`):/[^\w$]/.test(n)?t.push(`[${JSON.stringify(n)}]`):(t.length&&t.push("."),t.push(n));return t.join("")}function yn(e){let t=[],r=[...e.issues].sort((n,o)=>(n.path??[]).length-(o.path??[]).length);for(let n of r)t.push(`\u2716 ${n.message}`),n.path?.length&&t.push(` \u2192 at ${Xa(n.path)}`);return t.join(`
|
|
3
|
+
`)}var Yt=e=>(t,r,n,o)=>{let s=n?Object.assign(n,{async:!1}):{async:!1},i=t._zod.run({value:r,issues:[]},s);if(i instanceof Promise)throw new se;if(i.issues.length){let a=new(o?.Err??e)(i.issues.map(u=>G(u,s,B())));throw Jt(a,o?.callee),a}return i.value},ge=Yt(W),Gt=e=>async(t,r,n,o)=>{let s=n?Object.assign(n,{async:!0}):{async:!0},i=t._zod.run({value:r,issues:[]},s);if(i instanceof Promise&&(i=await i),i.issues.length){let a=new(o?.Err??e)(i.issues.map(u=>G(u,s,B())));throw Jt(a,o?.callee),a}return i.value},ye=Gt(W),Wt=e=>(t,r,n)=>{let o=n?{...n,async:!1}:{async:!1},s=t._zod.run({value:r,issues:[]},o);if(s instanceof Promise)throw new se;return s.issues.length?{success:!1,error:new(e??dn)(s.issues.map(i=>G(i,o,B())))}:{success:!0,data:s.value}},Te=Wt(W),Vt=e=>async(t,r,n)=>{let o=n?Object.assign(n,{async:!0}):{async:!0},s=t._zod.run({value:r,issues:[]},o);return s instanceof Promise&&(s=await s),s.issues.length?{success:!1,error:new e(s.issues.map(i=>G(i,o,B())))}:{success:!0,data:s.value}},Ie=Vt(W),ec=e=>(t,r,n)=>{let o=n?Object.assign(n,{direction:"backward"}):{direction:"backward"};return Yt(e)(t,r,o)},bn=ec(W),tc=e=>(t,r,n)=>Yt(e)(t,r,n),_n=tc(W),rc=e=>async(t,r,n)=>{let o=n?Object.assign(n,{direction:"backward"}):{direction:"backward"};return Gt(e)(t,r,o)},wn=rc(W),nc=e=>async(t,r,n)=>Gt(e)(t,r,n),$n=nc(W),oc=e=>(t,r,n)=>{let o=n?Object.assign(n,{direction:"backward"}):{direction:"backward"};return Wt(e)(t,r,o)},xn=oc(W),sc=e=>(t,r,n)=>Wt(e)(t,r,n),kn=sc(W),ic=e=>async(t,r,n)=>{let o=n?Object.assign(n,{direction:"backward"}):{direction:"backward"};return Vt(e)(t,r,o)},Sn=ic(W),ac=e=>async(t,r,n)=>Vt(e)(t,r,n),vn=ac(W);var re={};ve(re,{base64:()=>Bn,base64url:()=>Qt,bigint:()=>Kn,boolean:()=>Gn,browserEmail:()=>td,cidrv4:()=>Dn,cidrv6:()=>Mn,cuid:()=>zn,cuid2:()=>Tn,date:()=>Fn,datetime:()=>qn,domain:()=>od,duration:()=>Rn,e164:()=>Un,email:()=>Nn,emoji:()=>On,extendedDuration:()=>Yf,guid:()=>Cn,hex:()=>sd,hostname:()=>nd,html5Email:()=>Qf,idnEmail:()=>ed,integer:()=>Yn,ipv4:()=>Ln,ipv6:()=>Zn,ksuid:()=>An,lowercase:()=>Qn,mac:()=>jn,md5_base64:()=>ad,md5_base64url:()=>cd,md5_hex:()=>id,nanoid:()=>En,null:()=>Wn,number:()=>Xt,rfc5322Email:()=>Xf,sha1_base64:()=>ld,sha1_base64url:()=>pd,sha1_hex:()=>ud,sha256_base64:()=>dd,sha256_base64url:()=>md,sha256_hex:()=>fd,sha384_base64:()=>gd,sha384_base64url:()=>yd,sha384_hex:()=>hd,sha512_base64:()=>_d,sha512_base64url:()=>wd,sha512_hex:()=>bd,string:()=>Jn,time:()=>Hn,ulid:()=>In,undefined:()=>Vn,unicodeEmail:()=>cc,uppercase:()=>Xn,uuid:()=>Pe,uuid4:()=>Gf,uuid6:()=>Wf,uuid7:()=>Vf,xid:()=>Pn});var zn=/^[cC][^\s-]{8,}$/,Tn=/^[0-9a-z]+$/,In=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,Pn=/^[0-9a-vA-V]{20}$/,An=/^[A-Za-z0-9]{27}$/,En=/^[a-zA-Z0-9_-]{21}$/,Rn=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,Yf=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,Cn=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,Pe=e=>e?new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${e}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`):/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/,Gf=Pe(4),Wf=Pe(6),Vf=Pe(7),Nn=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,Qf=/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/,Xf=/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/,cc=/^[^\s@"]{1,64}@[^\s@]{1,255}$/u,ed=cc,td=/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/,rd="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$";function On(){return new RegExp(rd,"u")}var Ln=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,Zn=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/,jn=e=>{let t=ee(e??":");return new RegExp(`^(?:[0-9A-F]{2}${t}){5}[0-9A-F]{2}$|^(?:[0-9a-f]{2}${t}){5}[0-9a-f]{2}$`)},Dn=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,Mn=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,Bn=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,Qt=/^[A-Za-z0-9_-]*$/,nd=/^(?=.{1,253}\.?$)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[-0-9a-zA-Z]{0,61}[0-9a-zA-Z])?)*\.?$/,od=/^([a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/,Un=/^\+[1-9]\d{6,14}$/,uc="(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))",Fn=new RegExp(`^${uc}$`);function lc(e){let t="(?:[01]\\d|2[0-3]):[0-5]\\d";return typeof e.precision=="number"?e.precision===-1?`${t}`:e.precision===0?`${t}:[0-5]\\d`:`${t}:[0-5]\\d\\.\\d{${e.precision}}`:`${t}(?::[0-5]\\d(?:\\.\\d+)?)?`}function Hn(e){return new RegExp(`^${lc(e)}$`)}function qn(e){let t=lc({precision:e.precision}),r=["Z"];e.local&&r.push(""),e.offset&&r.push("([+-](?:[01]\\d|2[0-3]):[0-5]\\d)");let n=`${t}(?:${r.join("|")})`;return new RegExp(`^${uc}T(?:${n})$`)}var Jn=e=>{let t=e?`[\\s\\S]{${e?.minimum??0},${e?.maximum??""}}`:"[\\s\\S]*";return new RegExp(`^${t}$`)},Kn=/^-?\d+n?$/,Yn=/^-?\d+$/,Xt=/^-?\d+(?:\.\d+)?$/,Gn=/^(?:true|false)$/i,Wn=/^null$/i;var Vn=/^undefined$/i;var Qn=/^[^A-Z]*$/,Xn=/^[^a-z]*$/,sd=/^[0-9a-fA-F]*$/;function ct(e,t){return new RegExp(`^[A-Za-z0-9+/]{${e}}${t}$`)}function ut(e){return new RegExp(`^[A-Za-z0-9_-]{${e}}$`)}var id=/^[0-9a-fA-F]{32}$/,ad=ct(22,"=="),cd=ut(22),ud=/^[0-9a-fA-F]{40}$/,ld=ct(27,"="),pd=ut(27),fd=/^[0-9a-fA-F]{64}$/,dd=ct(43,"="),md=ut(43),hd=/^[0-9a-fA-F]{96}$/,gd=ct(64,""),yd=ut(64),bd=/^[0-9a-fA-F]{128}$/,_d=ct(86,"=="),wd=ut(86);var A=d("$ZodCheck",(e,t)=>{var r;e._zod??(e._zod={}),e._zod.def=t,(r=e._zod).onattach??(r.onattach=[])}),fc={number:"number",bigint:"bigint",object:"date"},er=d("$ZodCheckLessThan",(e,t)=>{A.init(e,t);let r=fc[typeof t.value];e._zod.onattach.push(n=>{let o=n._zod.bag,s=(t.inclusive?o.maximum:o.exclusiveMaximum)??Number.POSITIVE_INFINITY;t.value<s&&(t.inclusive?o.maximum=t.value:o.exclusiveMaximum=t.value)}),e._zod.check=n=>{(t.inclusive?n.value<=t.value:n.value<t.value)||n.issues.push({origin:r,code:"too_big",maximum:typeof t.value=="object"?t.value.getTime():t.value,input:n.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),tr=d("$ZodCheckGreaterThan",(e,t)=>{A.init(e,t);let r=fc[typeof t.value];e._zod.onattach.push(n=>{let o=n._zod.bag,s=(t.inclusive?o.minimum:o.exclusiveMinimum)??Number.NEGATIVE_INFINITY;t.value>s&&(t.inclusive?o.minimum=t.value:o.exclusiveMinimum=t.value)}),e._zod.check=n=>{(t.inclusive?n.value>=t.value:n.value>t.value)||n.issues.push({origin:r,code:"too_small",minimum:typeof t.value=="object"?t.value.getTime():t.value,input:n.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),eo=d("$ZodCheckMultipleOf",(e,t)=>{A.init(e,t),e._zod.onattach.push(r=>{var n;(n=r._zod.bag).multipleOf??(n.multipleOf=t.value)}),e._zod.check=r=>{if(typeof r.value!=typeof t.value)throw new Error("Cannot mix number and bigint in multiple_of check.");(typeof r.value=="bigint"?r.value%t.value===BigInt(0):en(r.value,t.value)===0)||r.issues.push({origin:typeof r.value,code:"not_multiple_of",divisor:t.value,input:r.value,inst:e,continue:!t.abort})}}),to=d("$ZodCheckNumberFormat",(e,t)=>{A.init(e,t),t.format=t.format||"float64";let r=t.format?.includes("int"),n=r?"int":"number",[o,s]=sn[t.format];e._zod.onattach.push(i=>{let a=i._zod.bag;a.format=t.format,a.minimum=o,a.maximum=s,r&&(a.pattern=Yn)}),e._zod.check=i=>{let a=i.value;if(r){if(!Number.isInteger(a)){i.issues.push({expected:n,format:t.format,code:"invalid_type",continue:!1,input:a,inst:e});return}if(!Number.isSafeInteger(a)){a>0?i.issues.push({input:a,code:"too_big",maximum:Number.MAX_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:n,inclusive:!0,continue:!t.abort}):i.issues.push({input:a,code:"too_small",minimum:Number.MIN_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:n,inclusive:!0,continue:!t.abort});return}}a<o&&i.issues.push({origin:"number",input:a,code:"too_small",minimum:o,inclusive:!0,inst:e,continue:!t.abort}),a>s&&i.issues.push({origin:"number",input:a,code:"too_big",maximum:s,inclusive:!0,inst:e,continue:!t.abort})}}),ro=d("$ZodCheckBigIntFormat",(e,t)=>{A.init(e,t);let[r,n]=an[t.format];e._zod.onattach.push(o=>{let s=o._zod.bag;s.format=t.format,s.minimum=r,s.maximum=n}),e._zod.check=o=>{let s=o.value;s<r&&o.issues.push({origin:"bigint",input:s,code:"too_small",minimum:r,inclusive:!0,inst:e,continue:!t.abort}),s>n&&o.issues.push({origin:"bigint",input:s,code:"too_big",maximum:n,inclusive:!0,inst:e,continue:!t.abort})}}),no=d("$ZodCheckMaxSize",(e,t)=>{var r;A.init(e,t),(r=e._zod.def).when??(r.when=n=>{let o=n.value;return!fe(o)&&o.size!==void 0}),e._zod.onattach.push(n=>{let o=n._zod.bag.maximum??Number.POSITIVE_INFINITY;t.maximum<o&&(n._zod.bag.maximum=t.maximum)}),e._zod.check=n=>{let o=n.value;o.size<=t.maximum||n.issues.push({origin:it(o),code:"too_big",maximum:t.maximum,inclusive:!0,input:o,inst:e,continue:!t.abort})}}),oo=d("$ZodCheckMinSize",(e,t)=>{var r;A.init(e,t),(r=e._zod.def).when??(r.when=n=>{let o=n.value;return!fe(o)&&o.size!==void 0}),e._zod.onattach.push(n=>{let o=n._zod.bag.minimum??Number.NEGATIVE_INFINITY;t.minimum>o&&(n._zod.bag.minimum=t.minimum)}),e._zod.check=n=>{let o=n.value;o.size>=t.minimum||n.issues.push({origin:it(o),code:"too_small",minimum:t.minimum,inclusive:!0,input:o,inst:e,continue:!t.abort})}}),so=d("$ZodCheckSizeEquals",(e,t)=>{var r;A.init(e,t),(r=e._zod.def).when??(r.when=n=>{let o=n.value;return!fe(o)&&o.size!==void 0}),e._zod.onattach.push(n=>{let o=n._zod.bag;o.minimum=t.size,o.maximum=t.size,o.size=t.size}),e._zod.check=n=>{let o=n.value,s=o.size;if(s===t.size)return;let i=s>t.size;n.issues.push({origin:it(o),...i?{code:"too_big",maximum:t.size}:{code:"too_small",minimum:t.size},inclusive:!0,exact:!0,input:n.value,inst:e,continue:!t.abort})}}),io=d("$ZodCheckMaxLength",(e,t)=>{var r;A.init(e,t),(r=e._zod.def).when??(r.when=n=>{let o=n.value;return!fe(o)&&o.length!==void 0}),e._zod.onattach.push(n=>{let o=n._zod.bag.maximum??Number.POSITIVE_INFINITY;t.maximum<o&&(n._zod.bag.maximum=t.maximum)}),e._zod.check=n=>{let o=n.value;if(o.length<=t.maximum)return;let i=at(o);n.issues.push({origin:i,code:"too_big",maximum:t.maximum,inclusive:!0,input:o,inst:e,continue:!t.abort})}}),ao=d("$ZodCheckMinLength",(e,t)=>{var r;A.init(e,t),(r=e._zod.def).when??(r.when=n=>{let o=n.value;return!fe(o)&&o.length!==void 0}),e._zod.onattach.push(n=>{let o=n._zod.bag.minimum??Number.NEGATIVE_INFINITY;t.minimum>o&&(n._zod.bag.minimum=t.minimum)}),e._zod.check=n=>{let o=n.value;if(o.length>=t.minimum)return;let i=at(o);n.issues.push({origin:i,code:"too_small",minimum:t.minimum,inclusive:!0,input:o,inst:e,continue:!t.abort})}}),co=d("$ZodCheckLengthEquals",(e,t)=>{var r;A.init(e,t),(r=e._zod.def).when??(r.when=n=>{let o=n.value;return!fe(o)&&o.length!==void 0}),e._zod.onattach.push(n=>{let o=n._zod.bag;o.minimum=t.length,o.maximum=t.length,o.length=t.length}),e._zod.check=n=>{let o=n.value,s=o.length;if(s===t.length)return;let i=at(o),a=s>t.length;n.issues.push({origin:i,...a?{code:"too_big",maximum:t.length}:{code:"too_small",minimum:t.length},inclusive:!0,exact:!0,input:n.value,inst:e,continue:!t.abort})}}),Me=d("$ZodCheckStringFormat",(e,t)=>{var r,n;A.init(e,t),e._zod.onattach.push(o=>{let s=o._zod.bag;s.format=t.format,t.pattern&&(s.patterns??(s.patterns=new Set),s.patterns.add(t.pattern))}),t.pattern?(r=e._zod).check??(r.check=o=>{t.pattern.lastIndex=0,!t.pattern.test(o.value)&&o.issues.push({origin:"string",code:"invalid_format",format:t.format,input:o.value,...t.pattern?{pattern:t.pattern.toString()}:{},inst:e,continue:!t.abort})}):(n=e._zod).check??(n.check=()=>{})}),uo=d("$ZodCheckRegex",(e,t)=>{Me.init(e,t),e._zod.check=r=>{t.pattern.lastIndex=0,!t.pattern.test(r.value)&&r.issues.push({origin:"string",code:"invalid_format",format:"regex",input:r.value,pattern:t.pattern.toString(),inst:e,continue:!t.abort})}}),lo=d("$ZodCheckLowerCase",(e,t)=>{t.pattern??(t.pattern=Qn),Me.init(e,t)}),po=d("$ZodCheckUpperCase",(e,t)=>{t.pattern??(t.pattern=Xn),Me.init(e,t)}),fo=d("$ZodCheckIncludes",(e,t)=>{A.init(e,t);let r=ee(t.includes),n=new RegExp(typeof t.position=="number"?`^.{${t.position}}${r}`:r);t.pattern=n,e._zod.onattach.push(o=>{let s=o._zod.bag;s.patterns??(s.patterns=new Set),s.patterns.add(n)}),e._zod.check=o=>{o.value.includes(t.includes,t.position)||o.issues.push({origin:"string",code:"invalid_format",format:"includes",includes:t.includes,input:o.value,inst:e,continue:!t.abort})}}),mo=d("$ZodCheckStartsWith",(e,t)=>{A.init(e,t);let r=new RegExp(`^${ee(t.prefix)}.*`);t.pattern??(t.pattern=r),e._zod.onattach.push(n=>{let o=n._zod.bag;o.patterns??(o.patterns=new Set),o.patterns.add(r)}),e._zod.check=n=>{n.value.startsWith(t.prefix)||n.issues.push({origin:"string",code:"invalid_format",format:"starts_with",prefix:t.prefix,input:n.value,inst:e,continue:!t.abort})}}),ho=d("$ZodCheckEndsWith",(e,t)=>{A.init(e,t);let r=new RegExp(`.*${ee(t.suffix)}$`);t.pattern??(t.pattern=r),e._zod.onattach.push(n=>{let o=n._zod.bag;o.patterns??(o.patterns=new Set),o.patterns.add(r)}),e._zod.check=n=>{n.value.endsWith(t.suffix)||n.issues.push({origin:"string",code:"invalid_format",format:"ends_with",suffix:t.suffix,input:n.value,inst:e,continue:!t.abort})}});function pc(e,t,r){e.issues.length&&t.issues.push(...Q(r,e.issues))}var go=d("$ZodCheckProperty",(e,t)=>{A.init(e,t),e._zod.check=r=>{let n=t.schema._zod.run({value:r.value[t.property],issues:[]},{});if(n instanceof Promise)return n.then(o=>pc(o,r,t.property));pc(n,r,t.property)}}),yo=d("$ZodCheckMimeType",(e,t)=>{A.init(e,t);let r=new Set(t.mime);e._zod.onattach.push(n=>{n._zod.bag.mime=t.mime}),e._zod.check=n=>{r.has(n.value.type)||n.issues.push({code:"invalid_value",values:t.mime,input:n.value.type,inst:e,continue:!t.abort})}}),bo=d("$ZodCheckOverwrite",(e,t)=>{A.init(e,t),e._zod.check=r=>{r.value=t.tx(r.value)}});var lt=class{constructor(t=[]){this.content=[],this.indent=0,this&&(this.args=t)}indented(t){this.indent+=1,t(this),this.indent-=1}write(t){if(typeof t=="function"){t(this,{execution:"sync"}),t(this,{execution:"async"});return}let n=t.split(`
|
|
4
4
|
`).filter(i=>i),o=Math.min(...n.map(i=>i.length-i.trimStart().length)),s=n.map(i=>i.slice(o)).map(i=>" ".repeat(this.indent*2)+i);for(let i of s)this.content.push(i)}compile(){let t=Function,r=this?.args,o=[...(this?.content??[""]).map(s=>` ${s}`)];return new t(...r,o.join(`
|
|
5
|
-
`))}};var _o={major:4,minor:3,patch:6};var k=d("$ZodType",(e,t)=>{var r;e??(e={}),e._zod.def=t,e._zod.bag=e._zod.bag||{},e._zod.version=_o;let n=[...e._zod.def.checks??[]];e._zod.traits.has("$ZodCheck")&&n.unshift(e);for(let o of n)for(let s of o._zod.onattach)s(e);if(n.length===0)(r=e._zod).deferred??(r.deferred=[]),e._zod.deferred?.push(()=>{e._zod.run=e._zod.parse});else{let o=(i,a,u)=>{let l=he(i),p;for(let f of a){if(f._zod.def.when){if(!f._zod.def.when(i))continue}else if(l)continue;let m=i.issues.length,h=f._zod.check(i);if(h instanceof Promise&&u?.async===!1)throw new se;if(p||h instanceof Promise)p=(p??Promise.resolve()).then(async()=>{await h,i.issues.length!==m&&(l||(l=he(i,m)))});else{if(i.issues.length===m)continue;l||(l=he(i,m))}}return p?p.then(()=>i):i},s=(i,a,u)=>{if(he(i))return i.aborted=!0,i;let l=o(a,n,u);if(l instanceof Promise){if(u.async===!1)throw new se;return l.then(p=>e._zod.parse(p,u))}return e._zod.parse(l,u)};e._zod.run=(i,a)=>{if(a.skipChecks)return e._zod.parse(i,a);if(a.direction==="backward"){let l=e._zod.parse({value:i.value,issues:[]},{...a,skipChecks:!0});return l instanceof Promise?l.then(p=>s(p,i,a)):s(l,i,a)}let u=e._zod.parse(i,a);if(u instanceof Promise){if(a.async===!1)throw new se;return u.then(l=>o(l,n,a))}return o(u,n,a)}}x(e,"~standard",()=>({validate:o=>{try{let s=Te(e,o);return s.success?{value:s.data}:{issues:s.error?.issues}}catch{return Ie(e,o).then(i=>i.success?{value:i.data}:{issues:i.error?.issues})}},vendor:"zod",version:1}))}),Be=d("$ZodString",(e,t)=>{k.init(e,t),e._zod.pattern=[...e?._zod.bag?.patterns??[]].pop()??Jn(e._zod.bag),e._zod.parse=(r,n)=>{if(t.coerce)try{r.value=String(r.value)}catch{}return typeof r.value=="string"||r.issues.push({expected:"string",code:"invalid_type",input:r.value,inst:e}),r}}),P=d("$ZodStringFormat",(e,t)=>{Me.init(e,t),Be.init(e,t)}),$o=d("$ZodGUID",(e,t)=>{t.pattern??(t.pattern=Cn),P.init(e,t)}),ko=d("$ZodUUID",(e,t)=>{if(t.version){let n={v1:1,v2:2,v3:3,v4:4,v5:5,v6:6,v7:7,v8:8}[t.version];if(n===void 0)throw new Error(`Invalid UUID version: "${t.version}"`);t.pattern??(t.pattern=Pe(n))}else t.pattern??(t.pattern=Pe());P.init(e,t)}),xo=d("$ZodEmail",(e,t)=>{t.pattern??(t.pattern=Nn),P.init(e,t)}),So=d("$ZodURL",(e,t)=>{P.init(e,t),e._zod.check=r=>{try{let n=r.value.trim(),o=new URL(n);t.hostname&&(t.hostname.lastIndex=0,t.hostname.test(o.hostname)||r.issues.push({code:"invalid_format",format:"url",note:"Invalid hostname",pattern:t.hostname.source,input:r.value,inst:e,continue:!t.abort})),t.protocol&&(t.protocol.lastIndex=0,t.protocol.test(o.protocol.endsWith(":")?o.protocol.slice(0,-1):o.protocol)||r.issues.push({code:"invalid_format",format:"url",note:"Invalid protocol",pattern:t.protocol.source,input:r.value,inst:e,continue:!t.abort})),t.normalize?r.value=o.href:r.value=n;return}catch{r.issues.push({code:"invalid_format",format:"url",input:r.value,inst:e,continue:!t.abort})}}}),vo=d("$ZodEmoji",(e,t)=>{t.pattern??(t.pattern=On()),P.init(e,t)}),zo=d("$ZodNanoID",(e,t)=>{t.pattern??(t.pattern=En),P.init(e,t)}),To=d("$ZodCUID",(e,t)=>{t.pattern??(t.pattern=zn),P.init(e,t)}),Io=d("$ZodCUID2",(e,t)=>{t.pattern??(t.pattern=Tn),P.init(e,t)}),Po=d("$ZodULID",(e,t)=>{t.pattern??(t.pattern=In),P.init(e,t)}),Ao=d("$ZodXID",(e,t)=>{t.pattern??(t.pattern=Pn),P.init(e,t)}),Eo=d("$ZodKSUID",(e,t)=>{t.pattern??(t.pattern=An),P.init(e,t)}),Ro=d("$ZodISODateTime",(e,t)=>{t.pattern??(t.pattern=qn(t)),P.init(e,t)}),Co=d("$ZodISODate",(e,t)=>{t.pattern??(t.pattern=Fn),P.init(e,t)}),No=d("$ZodISOTime",(e,t)=>{t.pattern??(t.pattern=Hn(t)),P.init(e,t)}),Oo=d("$ZodISODuration",(e,t)=>{t.pattern??(t.pattern=Rn),P.init(e,t)}),Lo=d("$ZodIPv4",(e,t)=>{t.pattern??(t.pattern=Ln),P.init(e,t),e._zod.bag.format="ipv4"}),Zo=d("$ZodIPv6",(e,t)=>{t.pattern??(t.pattern=Zn),P.init(e,t),e._zod.bag.format="ipv6",e._zod.check=r=>{try{new URL(`http://[${r.value}]`)}catch{r.issues.push({code:"invalid_format",format:"ipv6",input:r.value,inst:e,continue:!t.abort})}}}),jo=d("$ZodMAC",(e,t)=>{t.pattern??(t.pattern=jn(t.delimiter)),P.init(e,t),e._zod.bag.format="mac"}),Do=d("$ZodCIDRv4",(e,t)=>{t.pattern??(t.pattern=Dn),P.init(e,t)}),Mo=d("$ZodCIDRv6",(e,t)=>{t.pattern??(t.pattern=Mn),P.init(e,t),e._zod.check=r=>{let n=r.value.split("/");try{if(n.length!==2)throw new Error;let[o,s]=n;if(!s)throw new Error;let i=Number(s);if(`${i}`!==s)throw new Error;if(i<0||i>128)throw new Error;new URL(`http://[${o}]`)}catch{r.issues.push({code:"invalid_format",format:"cidrv6",input:r.value,inst:e,continue:!t.abort})}}});function Bo(e){if(e==="")return!0;if(e.length%4!==0)return!1;try{return atob(e),!0}catch{return!1}}var Uo=d("$ZodBase64",(e,t)=>{t.pattern??(t.pattern=Bn),P.init(e,t),e._zod.bag.contentEncoding="base64",e._zod.check=r=>{Bo(r.value)||r.issues.push({code:"invalid_format",format:"base64",input:r.value,inst:e,continue:!t.abort})}});function vc(e){if(!Qt.test(e))return!1;let t=e.replace(/[-_]/g,n=>n==="-"?"+":"/"),r=t.padEnd(Math.ceil(t.length/4)*4,"=");return Bo(r)}var Fo=d("$ZodBase64URL",(e,t)=>{t.pattern??(t.pattern=Qt),P.init(e,t),e._zod.bag.contentEncoding="base64url",e._zod.check=r=>{vc(r.value)||r.issues.push({code:"invalid_format",format:"base64url",input:r.value,inst:e,continue:!t.abort})}}),Ho=d("$ZodE164",(e,t)=>{t.pattern??(t.pattern=Un),P.init(e,t)});function zc(e,t=null){try{let r=e.split(".");if(r.length!==3)return!1;let[n]=r;if(!n)return!1;let o=JSON.parse(atob(n));return!("typ"in o&&o?.typ!=="JWT"||!o.alg||t&&(!("alg"in o)||o.alg!==t))}catch{return!1}}var qo=d("$ZodJWT",(e,t)=>{P.init(e,t),e._zod.check=r=>{zc(r.value,t.alg)||r.issues.push({code:"invalid_format",format:"jwt",input:r.value,inst:e,continue:!t.abort})}}),Jo=d("$ZodCustomStringFormat",(e,t)=>{P.init(e,t),e._zod.check=r=>{t.fn(r.value)||r.issues.push({code:"invalid_format",format:t.format,input:r.value,inst:e,continue:!t.abort})}}),ar=d("$ZodNumber",(e,t)=>{k.init(e,t),e._zod.pattern=e._zod.bag.pattern??Xt,e._zod.parse=(r,n)=>{if(t.coerce)try{r.value=Number(r.value)}catch{}let o=r.value;if(typeof o=="number"&&!Number.isNaN(o)&&Number.isFinite(o))return r;let s=typeof o=="number"?Number.isNaN(o)?"NaN":Number.isFinite(o)?void 0:"Infinity":void 0;return r.issues.push({expected:"number",code:"invalid_type",input:o,inst:e,...s?{received:s}:{}}),r}}),Ko=d("$ZodNumberFormat",(e,t)=>{to.init(e,t),ar.init(e,t)}),pt=d("$ZodBoolean",(e,t)=>{k.init(e,t),e._zod.pattern=Gn,e._zod.parse=(r,n)=>{if(t.coerce)try{r.value=!!r.value}catch{}let o=r.value;return typeof o=="boolean"||r.issues.push({expected:"boolean",code:"invalid_type",input:o,inst:e}),r}}),cr=d("$ZodBigInt",(e,t)=>{k.init(e,t),e._zod.pattern=Kn,e._zod.parse=(r,n)=>{if(t.coerce)try{r.value=BigInt(r.value)}catch{}return typeof r.value=="bigint"||r.issues.push({expected:"bigint",code:"invalid_type",input:r.value,inst:e}),r}}),Yo=d("$ZodBigIntFormat",(e,t)=>{ro.init(e,t),cr.init(e,t)}),Go=d("$ZodSymbol",(e,t)=>{k.init(e,t),e._zod.parse=(r,n)=>{let o=r.value;return typeof o=="symbol"||r.issues.push({expected:"symbol",code:"invalid_type",input:o,inst:e}),r}}),Wo=d("$ZodUndefined",(e,t)=>{k.init(e,t),e._zod.pattern=Vn,e._zod.values=new Set([void 0]),e._zod.optin="optional",e._zod.optout="optional",e._zod.parse=(r,n)=>{let o=r.value;return typeof o>"u"||r.issues.push({expected:"undefined",code:"invalid_type",input:o,inst:e}),r}}),Vo=d("$ZodNull",(e,t)=>{k.init(e,t),e._zod.pattern=Wn,e._zod.values=new Set([null]),e._zod.parse=(r,n)=>{let o=r.value;return o===null||r.issues.push({expected:"null",code:"invalid_type",input:o,inst:e}),r}}),Qo=d("$ZodAny",(e,t)=>{k.init(e,t),e._zod.parse=r=>r}),Xo=d("$ZodUnknown",(e,t)=>{k.init(e,t),e._zod.parse=r=>r}),es=d("$ZodNever",(e,t)=>{k.init(e,t),e._zod.parse=(r,n)=>(r.issues.push({expected:"never",code:"invalid_type",input:r.value,inst:e}),r)}),ts=d("$ZodVoid",(e,t)=>{k.init(e,t),e._zod.parse=(r,n)=>{let o=r.value;return typeof o>"u"||r.issues.push({expected:"void",code:"invalid_type",input:o,inst:e}),r}}),rs=d("$ZodDate",(e,t)=>{k.init(e,t),e._zod.parse=(r,n)=>{if(t.coerce)try{r.value=new Date(r.value)}catch{}let o=r.value,s=o instanceof Date;return s&&!Number.isNaN(o.getTime())||r.issues.push({expected:"date",code:"invalid_type",input:o,...s?{received:"Invalid Date"}:{},inst:e}),r}});function mc(e,t,r){e.issues.length&&t.issues.push(...Q(r,e.issues)),t.value[r]=e.value}var ns=d("$ZodArray",(e,t)=>{k.init(e,t),e._zod.parse=(r,n)=>{let o=r.value;if(!Array.isArray(o))return r.issues.push({expected:"array",code:"invalid_type",input:o,inst:e}),r;r.value=Array(o.length);let s=[];for(let i=0;i<o.length;i++){let a=o[i],u=t.element._zod.run({value:a,issues:[]},n);u instanceof Promise?s.push(u.then(l=>mc(l,r,i))):mc(u,r,i)}return s.length?Promise.all(s).then(()=>r):r}});function ir(e,t,r,n,o){if(e.issues.length){if(o&&!(r in n))return;t.issues.push(...Q(r,e.issues))}e.value===void 0?r in n&&(t.value[r]=void 0):t.value[r]=e.value}function Tc(e){let t=Object.keys(e.shape);for(let n of t)if(!e.shape?.[n]?._zod?.traits?.has("$ZodType"))throw new Error(`Invalid element at key "${n}": expected a Zod schema`);let r=on(e.shape);return{...e,keys:t,keySet:new Set(t),numKeys:t.length,optionalKeys:new Set(r)}}function Ic(e,t,r,n,o,s){let i=[],a=o.keySet,u=o.catchall._zod,l=u.def.type,p=u.optout==="optional";for(let f in t){if(a.has(f))continue;if(l==="never"){i.push(f);continue}let m=u.run({value:t[f],issues:[]},n);m instanceof Promise?e.push(m.then(h=>ir(h,r,f,t,p))):ir(m,r,f,t,p)}return i.length&&r.issues.push({code:"unrecognized_keys",keys:i,input:t,inst:s}),e.length?Promise.all(e).then(()=>r):r}var ur=d("$ZodObject",(e,t)=>{if(k.init(e,t),!Object.getOwnPropertyDescriptor(t,"shape")?.get){let a=t.shape;Object.defineProperty(t,"shape",{get:()=>{let u={...a};return Object.defineProperty(t,"shape",{value:u}),u}})}let n=Ze(()=>Tc(t));x(e._zod,"propValues",()=>{let a=t.shape,u={};for(let l in a){let p=a[l]._zod;if(p.values){u[l]??(u[l]=new Set);for(let f of p.values)u[l].add(f)}}return u});let o=ze,s=t.catchall,i;e._zod.parse=(a,u)=>{i??(i=n.value);let l=a.value;if(!o(l))return a.issues.push({expected:"object",code:"invalid_type",input:l,inst:e}),a;a.value={};let p=[],f=i.shape;for(let m of i.keys){let h=f[m],b=h._zod.optout==="optional",y=h._zod.run({value:l[m],issues:[]},u);y instanceof Promise?p.push(y.then(z=>ir(z,a,m,l,b))):ir(y,a,m,l,b)}return s?Ic(p,l,a,u,n.value,e):p.length?Promise.all(p).then(()=>a):a}}),$d=d("$ZodObjectJIT",(e,t)=>{ur.init(e,t);let r=e._zod.parse,n=Ze(()=>Tc(t)),o=m=>{let h=new lt(["shape","payload","ctx"]),b=n.value,y=C=>{let M=qt(C);return`shape[${M}]._zod.run({ value: input[${M}], issues: [] }, ctx)`};h.write("const input = payload.value;");let z=Object.create(null),H=0;for(let C of b.keys)z[C]=`key_${H++}`;h.write("const newResult = {};");for(let C of b.keys){let M=z[C],O=qt(C),jt=m[C]?._zod?.optout==="optional";h.write(`const ${M} = ${y(C)};`),jt?h.write(`
|
|
5
|
+
`))}};var _o={major:4,minor:3,patch:6};var x=d("$ZodType",(e,t)=>{var r;e??(e={}),e._zod.def=t,e._zod.bag=e._zod.bag||{},e._zod.version=_o;let n=[...e._zod.def.checks??[]];e._zod.traits.has("$ZodCheck")&&n.unshift(e);for(let o of n)for(let s of o._zod.onattach)s(e);if(n.length===0)(r=e._zod).deferred??(r.deferred=[]),e._zod.deferred?.push(()=>{e._zod.run=e._zod.parse});else{let o=(i,a,u)=>{let l=he(i),p;for(let f of a){if(f._zod.def.when){if(!f._zod.def.when(i))continue}else if(l)continue;let m=i.issues.length,h=f._zod.check(i);if(h instanceof Promise&&u?.async===!1)throw new se;if(p||h instanceof Promise)p=(p??Promise.resolve()).then(async()=>{await h,i.issues.length!==m&&(l||(l=he(i,m)))});else{if(i.issues.length===m)continue;l||(l=he(i,m))}}return p?p.then(()=>i):i},s=(i,a,u)=>{if(he(i))return i.aborted=!0,i;let l=o(a,n,u);if(l instanceof Promise){if(u.async===!1)throw new se;return l.then(p=>e._zod.parse(p,u))}return e._zod.parse(l,u)};e._zod.run=(i,a)=>{if(a.skipChecks)return e._zod.parse(i,a);if(a.direction==="backward"){let l=e._zod.parse({value:i.value,issues:[]},{...a,skipChecks:!0});return l instanceof Promise?l.then(p=>s(p,i,a)):s(l,i,a)}let u=e._zod.parse(i,a);if(u instanceof Promise){if(a.async===!1)throw new se;return u.then(l=>o(l,n,a))}return o(u,n,a)}}k(e,"~standard",()=>({validate:o=>{try{let s=Te(e,o);return s.success?{value:s.data}:{issues:s.error?.issues}}catch{return Ie(e,o).then(i=>i.success?{value:i.data}:{issues:i.error?.issues})}},vendor:"zod",version:1}))}),Be=d("$ZodString",(e,t)=>{x.init(e,t),e._zod.pattern=[...e?._zod.bag?.patterns??[]].pop()??Jn(e._zod.bag),e._zod.parse=(r,n)=>{if(t.coerce)try{r.value=String(r.value)}catch{}return typeof r.value=="string"||r.issues.push({expected:"string",code:"invalid_type",input:r.value,inst:e}),r}}),P=d("$ZodStringFormat",(e,t)=>{Me.init(e,t),Be.init(e,t)}),$o=d("$ZodGUID",(e,t)=>{t.pattern??(t.pattern=Cn),P.init(e,t)}),xo=d("$ZodUUID",(e,t)=>{if(t.version){let n={v1:1,v2:2,v3:3,v4:4,v5:5,v6:6,v7:7,v8:8}[t.version];if(n===void 0)throw new Error(`Invalid UUID version: "${t.version}"`);t.pattern??(t.pattern=Pe(n))}else t.pattern??(t.pattern=Pe());P.init(e,t)}),ko=d("$ZodEmail",(e,t)=>{t.pattern??(t.pattern=Nn),P.init(e,t)}),So=d("$ZodURL",(e,t)=>{P.init(e,t),e._zod.check=r=>{try{let n=r.value.trim(),o=new URL(n);t.hostname&&(t.hostname.lastIndex=0,t.hostname.test(o.hostname)||r.issues.push({code:"invalid_format",format:"url",note:"Invalid hostname",pattern:t.hostname.source,input:r.value,inst:e,continue:!t.abort})),t.protocol&&(t.protocol.lastIndex=0,t.protocol.test(o.protocol.endsWith(":")?o.protocol.slice(0,-1):o.protocol)||r.issues.push({code:"invalid_format",format:"url",note:"Invalid protocol",pattern:t.protocol.source,input:r.value,inst:e,continue:!t.abort})),t.normalize?r.value=o.href:r.value=n;return}catch{r.issues.push({code:"invalid_format",format:"url",input:r.value,inst:e,continue:!t.abort})}}}),vo=d("$ZodEmoji",(e,t)=>{t.pattern??(t.pattern=On()),P.init(e,t)}),zo=d("$ZodNanoID",(e,t)=>{t.pattern??(t.pattern=En),P.init(e,t)}),To=d("$ZodCUID",(e,t)=>{t.pattern??(t.pattern=zn),P.init(e,t)}),Io=d("$ZodCUID2",(e,t)=>{t.pattern??(t.pattern=Tn),P.init(e,t)}),Po=d("$ZodULID",(e,t)=>{t.pattern??(t.pattern=In),P.init(e,t)}),Ao=d("$ZodXID",(e,t)=>{t.pattern??(t.pattern=Pn),P.init(e,t)}),Eo=d("$ZodKSUID",(e,t)=>{t.pattern??(t.pattern=An),P.init(e,t)}),Ro=d("$ZodISODateTime",(e,t)=>{t.pattern??(t.pattern=qn(t)),P.init(e,t)}),Co=d("$ZodISODate",(e,t)=>{t.pattern??(t.pattern=Fn),P.init(e,t)}),No=d("$ZodISOTime",(e,t)=>{t.pattern??(t.pattern=Hn(t)),P.init(e,t)}),Oo=d("$ZodISODuration",(e,t)=>{t.pattern??(t.pattern=Rn),P.init(e,t)}),Lo=d("$ZodIPv4",(e,t)=>{t.pattern??(t.pattern=Ln),P.init(e,t),e._zod.bag.format="ipv4"}),Zo=d("$ZodIPv6",(e,t)=>{t.pattern??(t.pattern=Zn),P.init(e,t),e._zod.bag.format="ipv6",e._zod.check=r=>{try{new URL(`http://[${r.value}]`)}catch{r.issues.push({code:"invalid_format",format:"ipv6",input:r.value,inst:e,continue:!t.abort})}}}),jo=d("$ZodMAC",(e,t)=>{t.pattern??(t.pattern=jn(t.delimiter)),P.init(e,t),e._zod.bag.format="mac"}),Do=d("$ZodCIDRv4",(e,t)=>{t.pattern??(t.pattern=Dn),P.init(e,t)}),Mo=d("$ZodCIDRv6",(e,t)=>{t.pattern??(t.pattern=Mn),P.init(e,t),e._zod.check=r=>{let n=r.value.split("/");try{if(n.length!==2)throw new Error;let[o,s]=n;if(!s)throw new Error;let i=Number(s);if(`${i}`!==s)throw new Error;if(i<0||i>128)throw new Error;new URL(`http://[${o}]`)}catch{r.issues.push({code:"invalid_format",format:"cidrv6",input:r.value,inst:e,continue:!t.abort})}}});function Bo(e){if(e==="")return!0;if(e.length%4!==0)return!1;try{return atob(e),!0}catch{return!1}}var Uo=d("$ZodBase64",(e,t)=>{t.pattern??(t.pattern=Bn),P.init(e,t),e._zod.bag.contentEncoding="base64",e._zod.check=r=>{Bo(r.value)||r.issues.push({code:"invalid_format",format:"base64",input:r.value,inst:e,continue:!t.abort})}});function vc(e){if(!Qt.test(e))return!1;let t=e.replace(/[-_]/g,n=>n==="-"?"+":"/"),r=t.padEnd(Math.ceil(t.length/4)*4,"=");return Bo(r)}var Fo=d("$ZodBase64URL",(e,t)=>{t.pattern??(t.pattern=Qt),P.init(e,t),e._zod.bag.contentEncoding="base64url",e._zod.check=r=>{vc(r.value)||r.issues.push({code:"invalid_format",format:"base64url",input:r.value,inst:e,continue:!t.abort})}}),Ho=d("$ZodE164",(e,t)=>{t.pattern??(t.pattern=Un),P.init(e,t)});function zc(e,t=null){try{let r=e.split(".");if(r.length!==3)return!1;let[n]=r;if(!n)return!1;let o=JSON.parse(atob(n));return!("typ"in o&&o?.typ!=="JWT"||!o.alg||t&&(!("alg"in o)||o.alg!==t))}catch{return!1}}var qo=d("$ZodJWT",(e,t)=>{P.init(e,t),e._zod.check=r=>{zc(r.value,t.alg)||r.issues.push({code:"invalid_format",format:"jwt",input:r.value,inst:e,continue:!t.abort})}}),Jo=d("$ZodCustomStringFormat",(e,t)=>{P.init(e,t),e._zod.check=r=>{t.fn(r.value)||r.issues.push({code:"invalid_format",format:t.format,input:r.value,inst:e,continue:!t.abort})}}),ar=d("$ZodNumber",(e,t)=>{x.init(e,t),e._zod.pattern=e._zod.bag.pattern??Xt,e._zod.parse=(r,n)=>{if(t.coerce)try{r.value=Number(r.value)}catch{}let o=r.value;if(typeof o=="number"&&!Number.isNaN(o)&&Number.isFinite(o))return r;let s=typeof o=="number"?Number.isNaN(o)?"NaN":Number.isFinite(o)?void 0:"Infinity":void 0;return r.issues.push({expected:"number",code:"invalid_type",input:o,inst:e,...s?{received:s}:{}}),r}}),Ko=d("$ZodNumberFormat",(e,t)=>{to.init(e,t),ar.init(e,t)}),pt=d("$ZodBoolean",(e,t)=>{x.init(e,t),e._zod.pattern=Gn,e._zod.parse=(r,n)=>{if(t.coerce)try{r.value=!!r.value}catch{}let o=r.value;return typeof o=="boolean"||r.issues.push({expected:"boolean",code:"invalid_type",input:o,inst:e}),r}}),cr=d("$ZodBigInt",(e,t)=>{x.init(e,t),e._zod.pattern=Kn,e._zod.parse=(r,n)=>{if(t.coerce)try{r.value=BigInt(r.value)}catch{}return typeof r.value=="bigint"||r.issues.push({expected:"bigint",code:"invalid_type",input:r.value,inst:e}),r}}),Yo=d("$ZodBigIntFormat",(e,t)=>{ro.init(e,t),cr.init(e,t)}),Go=d("$ZodSymbol",(e,t)=>{x.init(e,t),e._zod.parse=(r,n)=>{let o=r.value;return typeof o=="symbol"||r.issues.push({expected:"symbol",code:"invalid_type",input:o,inst:e}),r}}),Wo=d("$ZodUndefined",(e,t)=>{x.init(e,t),e._zod.pattern=Vn,e._zod.values=new Set([void 0]),e._zod.optin="optional",e._zod.optout="optional",e._zod.parse=(r,n)=>{let o=r.value;return typeof o>"u"||r.issues.push({expected:"undefined",code:"invalid_type",input:o,inst:e}),r}}),Vo=d("$ZodNull",(e,t)=>{x.init(e,t),e._zod.pattern=Wn,e._zod.values=new Set([null]),e._zod.parse=(r,n)=>{let o=r.value;return o===null||r.issues.push({expected:"null",code:"invalid_type",input:o,inst:e}),r}}),Qo=d("$ZodAny",(e,t)=>{x.init(e,t),e._zod.parse=r=>r}),Xo=d("$ZodUnknown",(e,t)=>{x.init(e,t),e._zod.parse=r=>r}),es=d("$ZodNever",(e,t)=>{x.init(e,t),e._zod.parse=(r,n)=>(r.issues.push({expected:"never",code:"invalid_type",input:r.value,inst:e}),r)}),ts=d("$ZodVoid",(e,t)=>{x.init(e,t),e._zod.parse=(r,n)=>{let o=r.value;return typeof o>"u"||r.issues.push({expected:"void",code:"invalid_type",input:o,inst:e}),r}}),rs=d("$ZodDate",(e,t)=>{x.init(e,t),e._zod.parse=(r,n)=>{if(t.coerce)try{r.value=new Date(r.value)}catch{}let o=r.value,s=o instanceof Date;return s&&!Number.isNaN(o.getTime())||r.issues.push({expected:"date",code:"invalid_type",input:o,...s?{received:"Invalid Date"}:{},inst:e}),r}});function mc(e,t,r){e.issues.length&&t.issues.push(...Q(r,e.issues)),t.value[r]=e.value}var ns=d("$ZodArray",(e,t)=>{x.init(e,t),e._zod.parse=(r,n)=>{let o=r.value;if(!Array.isArray(o))return r.issues.push({expected:"array",code:"invalid_type",input:o,inst:e}),r;r.value=Array(o.length);let s=[];for(let i=0;i<o.length;i++){let a=o[i],u=t.element._zod.run({value:a,issues:[]},n);u instanceof Promise?s.push(u.then(l=>mc(l,r,i))):mc(u,r,i)}return s.length?Promise.all(s).then(()=>r):r}});function ir(e,t,r,n,o){if(e.issues.length){if(o&&!(r in n))return;t.issues.push(...Q(r,e.issues))}e.value===void 0?r in n&&(t.value[r]=void 0):t.value[r]=e.value}function Tc(e){let t=Object.keys(e.shape);for(let n of t)if(!e.shape?.[n]?._zod?.traits?.has("$ZodType"))throw new Error(`Invalid element at key "${n}": expected a Zod schema`);let r=on(e.shape);return{...e,keys:t,keySet:new Set(t),numKeys:t.length,optionalKeys:new Set(r)}}function Ic(e,t,r,n,o,s){let i=[],a=o.keySet,u=o.catchall._zod,l=u.def.type,p=u.optout==="optional";for(let f in t){if(a.has(f))continue;if(l==="never"){i.push(f);continue}let m=u.run({value:t[f],issues:[]},n);m instanceof Promise?e.push(m.then(h=>ir(h,r,f,t,p))):ir(m,r,f,t,p)}return i.length&&r.issues.push({code:"unrecognized_keys",keys:i,input:t,inst:s}),e.length?Promise.all(e).then(()=>r):r}var ur=d("$ZodObject",(e,t)=>{if(x.init(e,t),!Object.getOwnPropertyDescriptor(t,"shape")?.get){let a=t.shape;Object.defineProperty(t,"shape",{get:()=>{let u={...a};return Object.defineProperty(t,"shape",{value:u}),u}})}let n=Ze(()=>Tc(t));k(e._zod,"propValues",()=>{let a=t.shape,u={};for(let l in a){let p=a[l]._zod;if(p.values){u[l]??(u[l]=new Set);for(let f of p.values)u[l].add(f)}}return u});let o=ze,s=t.catchall,i;e._zod.parse=(a,u)=>{i??(i=n.value);let l=a.value;if(!o(l))return a.issues.push({expected:"object",code:"invalid_type",input:l,inst:e}),a;a.value={};let p=[],f=i.shape;for(let m of i.keys){let h=f[m],b=h._zod.optout==="optional",y=h._zod.run({value:l[m],issues:[]},u);y instanceof Promise?p.push(y.then(z=>ir(z,a,m,l,b))):ir(y,a,m,l,b)}return s?Ic(p,l,a,u,n.value,e):p.length?Promise.all(p).then(()=>a):a}}),$d=d("$ZodObjectJIT",(e,t)=>{ur.init(e,t);let r=e._zod.parse,n=Ze(()=>Tc(t)),o=m=>{let h=new lt(["shape","payload","ctx"]),b=n.value,y=C=>{let M=qt(C);return`shape[${M}]._zod.run({ value: input[${M}], issues: [] }, ctx)`};h.write("const input = payload.value;");let z=Object.create(null),H=0;for(let C of b.keys)z[C]=`key_${H++}`;h.write("const newResult = {};");for(let C of b.keys){let M=z[C],O=qt(C),jt=m[C]?._zod?.optout==="optional";h.write(`const ${M} = ${y(C)};`),jt?h.write(`
|
|
6
6
|
if (${M}.issues.length) {
|
|
7
7
|
if (${O} in input) {
|
|
8
8
|
payload.issues = payload.issues.concat(${M}.issues.map(iss => ({
|
|
@@ -36,20 +36,20 @@ var wf=Object.defineProperty;var ve=(e,t)=>{for(var r in t)wf(e,r,{get:t[r],enum
|
|
|
36
36
|
newResult[${O}] = ${M}.value;
|
|
37
37
|
}
|
|
38
38
|
|
|
39
|
-
`)}h.write("payload.value = newResult;"),h.write("return payload;");let Y=h.compile();return(C,M)=>Y(m,C,M)},s,i=ze,a=!tt.jitless,l=a&&rn.value,p=t.catchall,f;e._zod.parse=(m,h)=>{f??(f=n.value);let b=m.value;return i(b)?a&&l&&h?.async===!1&&h.jitless!==!0?(s||(s=o(t.shape)),m=s(m,h),p?Ic([],b,m,h,f,e):m):r(m,h):(m.issues.push({expected:"object",code:"invalid_type",input:b,inst:e}),m)}});function hc(e,t,r,n){for(let s of e)if(s.issues.length===0)return t.value=s.value,t;let o=e.filter(s=>!he(s));return o.length===1?(t.value=o[0].value,o[0]):(t.issues.push({code:"invalid_union",input:t.value,inst:r,errors:e.map(s=>s.issues.map(i=>G(i,n,B())))}),t)}var ft=d("$ZodUnion",(e,t)=>{k.init(e,t),x(e._zod,"optin",()=>t.options.some(o=>o._zod.optin==="optional")?"optional":void 0),x(e._zod,"optout",()=>t.options.some(o=>o._zod.optout==="optional")?"optional":void 0),x(e._zod,"values",()=>{if(t.options.every(o=>o._zod.values))return new Set(t.options.flatMap(o=>Array.from(o._zod.values)))}),x(e._zod,"pattern",()=>{if(t.options.every(o=>o._zod.pattern)){let o=t.options.map(s=>s._zod.pattern);return new RegExp(`^(${o.map(s=>ot(s.source)).join("|")})$`)}});let r=t.options.length===1,n=t.options[0]._zod.run;e._zod.parse=(o,s)=>{if(r)return n(o,s);let i=!1,a=[];for(let u of t.options){let l=u._zod.run({value:o.value,issues:[]},s);if(l instanceof Promise)a.push(l),i=!0;else{if(l.issues.length===0)return l;a.push(l)}}return i?Promise.all(a).then(u=>hc(u,o,e,s)):hc(a,o,e,s)}});function gc(e,t,r,n){let o=e.filter(s=>s.issues.length===0);return o.length===1?(t.value=o[0].value,t):(o.length===0?t.issues.push({code:"invalid_union",input:t.value,inst:r,errors:e.map(s=>s.issues.map(i=>G(i,n,B())))}):t.issues.push({code:"invalid_union",input:t.value,inst:r,errors:[],inclusive:!1}),t)}var os=d("$ZodXor",(e,t)=>{ft.init(e,t),t.inclusive=!1;let r=t.options.length===1,n=t.options[0]._zod.run;e._zod.parse=(o,s)=>{if(r)return n(o,s);let i=!1,a=[];for(let u of t.options){let l=u._zod.run({value:o.value,issues:[]},s);l instanceof Promise?(a.push(l),i=!0):a.push(l)}return i?Promise.all(a).then(u=>gc(u,o,e,s)):gc(a,o,e,s)}}),ss=d("$ZodDiscriminatedUnion",(e,t)=>{t.inclusive=!1,ft.init(e,t);let r=e._zod.parse;x(e._zod,"propValues",()=>{let o={};for(let s of t.options){let i=s._zod.propValues;if(!i||Object.keys(i).length===0)throw new Error(`Invalid discriminated union option at index "${t.options.indexOf(s)}"`);for(let[a,u]of Object.entries(i)){o[a]||(o[a]=new Set);for(let l of u)o[a].add(l)}}return o});let n=Ze(()=>{let o=t.options,s=new Map;for(let i of o){let a=i._zod.propValues?.[t.discriminator];if(!a||a.size===0)throw new Error(`Invalid discriminated union option at index "${t.options.indexOf(i)}"`);for(let u of a){if(s.has(u))throw new Error(`Duplicate discriminator value "${String(u)}"`);s.set(u,i)}}return s});e._zod.parse=(o,s)=>{let i=o.value;if(!ze(i))return o.issues.push({code:"invalid_type",expected:"object",input:i,inst:e}),o;let a=n.value.get(i?.[t.discriminator]);return a?a._zod.run(o,s):t.unionFallback?r(o,s):(o.issues.push({code:"invalid_union",errors:[],note:"No matching discriminator",discriminator:t.discriminator,input:i,path:[t.discriminator],inst:e}),o)}}),is=d("$ZodIntersection",(e,t)=>{k.init(e,t),e._zod.parse=(r,n)=>{let o=r.value,s=t.left._zod.run({value:o,issues:[]},n),i=t.right._zod.run({value:o,issues:[]},n);return s instanceof Promise||i instanceof Promise?Promise.all([s,i]).then(([u,l])=>yc(r,u,l)):yc(r,s,i)}});function wo(e,t){if(e===t)return{valid:!0,data:e};if(e instanceof Date&&t instanceof Date&&+e==+t)return{valid:!0,data:e};if(me(e)&&me(t)){let r=Object.keys(t),n=Object.keys(e).filter(s=>r.indexOf(s)!==-1),o={...e,...t};for(let s of n){let i=wo(e[s],t[s]);if(!i.valid)return{valid:!1,mergeErrorPath:[s,...i.mergeErrorPath]};o[s]=i.data}return{valid:!0,data:o}}if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return{valid:!1,mergeErrorPath:[]};let r=[];for(let n=0;n<e.length;n++){let o=e[n],s=t[n],i=wo(o,s);if(!i.valid)return{valid:!1,mergeErrorPath:[n,...i.mergeErrorPath]};r.push(i.data)}return{valid:!0,data:r}}return{valid:!1,mergeErrorPath:[]}}function yc(e,t,r){let n=new Map,o;for(let a of t.issues)if(a.code==="unrecognized_keys"){o??(o=a);for(let u of a.keys)n.has(u)||n.set(u,{}),n.get(u).l=!0}else e.issues.push(a);for(let a of r.issues)if(a.code==="unrecognized_keys")for(let u of a.keys)n.has(u)||n.set(u,{}),n.get(u).r=!0;else e.issues.push(a);let s=[...n].filter(([,a])=>a.l&&a.r).map(([a])=>a);if(s.length&&o&&e.issues.push({...o,keys:s}),he(e))return e;let i=wo(t.value,r.value);if(!i.valid)throw new Error(`Unmergable intersection. Error path: ${JSON.stringify(i.mergeErrorPath)}`);return e.value=i.data,e}var lr=d("$ZodTuple",(e,t)=>{k.init(e,t);let r=t.items;e._zod.parse=(n,o)=>{let s=n.value;if(!Array.isArray(s))return n.issues.push({input:s,inst:e,expected:"tuple",code:"invalid_type"}),n;n.value=[];let i=[],a=[...r].reverse().findIndex(p=>p._zod.optin!=="optional"),u=a===-1?0:r.length-a;if(!t.rest){let p=s.length>r.length,f=s.length<u-1;if(p||f)return n.issues.push({...p?{code:"too_big",maximum:r.length,inclusive:!0}:{code:"too_small",minimum:r.length},input:s,inst:e,origin:"array"}),n}let l=-1;for(let p of r){if(l++,l>=s.length&&l>=u)continue;let f=p._zod.run({value:s[l],issues:[]},o);f instanceof Promise?i.push(f.then(m=>rr(m,n,l))):rr(f,n,l)}if(t.rest){let p=s.slice(r.length);for(let f of p){l++;let m=t.rest._zod.run({value:f,issues:[]},o);m instanceof Promise?i.push(m.then(h=>rr(h,n,l))):rr(m,n,l)}}return i.length?Promise.all(i).then(()=>n):n}});function rr(e,t,r){e.issues.length&&t.issues.push(...Q(r,e.issues)),t.value[r]=e.value}var as=d("$ZodRecord",(e,t)=>{k.init(e,t),e._zod.parse=(r,n)=>{let o=r.value;if(!me(o))return r.issues.push({expected:"record",code:"invalid_type",input:o,inst:e}),r;let s=[],i=t.keyType._zod.values;if(i){r.value={};let a=new Set;for(let l of i)if(typeof l=="string"||typeof l=="number"||typeof l=="symbol"){a.add(typeof l=="number"?l.toString():l);let p=t.valueType._zod.run({value:o[l],issues:[]},n);p instanceof Promise?s.push(p.then(f=>{f.issues.length&&r.issues.push(...Q(l,f.issues)),r.value[l]=f.value})):(p.issues.length&&r.issues.push(...Q(l,p.issues)),r.value[l]=p.value)}let u;for(let l in o)a.has(l)||(u=u??[],u.push(l));u&&u.length>0&&r.issues.push({code:"unrecognized_keys",input:o,inst:e,keys:u})}else{r.value={};for(let a of Reflect.ownKeys(o)){if(a==="__proto__")continue;let u=t.keyType._zod.run({value:a,issues:[]},n);if(u instanceof Promise)throw new Error("Async schemas not supported in object keys currently");if(typeof a=="string"&&Xt.test(a)&&u.issues.length){let f=t.keyType._zod.run({value:Number(a),issues:[]},n);if(f instanceof Promise)throw new Error("Async schemas not supported in object keys currently");f.issues.length===0&&(u=f)}if(u.issues.length){t.mode==="loose"?r.value[a]=o[a]:r.issues.push({code:"invalid_key",origin:"record",issues:u.issues.map(f=>G(f,n,B())),input:a,path:[a],inst:e});continue}let p=t.valueType._zod.run({value:o[a],issues:[]},n);p instanceof Promise?s.push(p.then(f=>{f.issues.length&&r.issues.push(...Q(a,f.issues)),r.value[u.value]=f.value})):(p.issues.length&&r.issues.push(...Q(a,p.issues)),r.value[u.value]=p.value)}}return s.length?Promise.all(s).then(()=>r):r}}),cs=d("$ZodMap",(e,t)=>{k.init(e,t),e._zod.parse=(r,n)=>{let o=r.value;if(!(o instanceof Map))return r.issues.push({expected:"map",code:"invalid_type",input:o,inst:e}),r;let s=[];r.value=new Map;for(let[i,a]of o){let u=t.keyType._zod.run({value:i,issues:[]},n),l=t.valueType._zod.run({value:a,issues:[]},n);u instanceof Promise||l instanceof Promise?s.push(Promise.all([u,l]).then(([p,f])=>{bc(p,f,r,i,o,e,n)})):bc(u,l,r,i,o,e,n)}return s.length?Promise.all(s).then(()=>r):r}});function bc(e,t,r,n,o,s,i){e.issues.length&&(st.has(typeof n)?r.issues.push(...Q(n,e.issues)):r.issues.push({code:"invalid_key",origin:"map",input:o,inst:s,issues:e.issues.map(a=>G(a,i,B()))})),t.issues.length&&(st.has(typeof n)?r.issues.push(...Q(n,t.issues)):r.issues.push({origin:"map",code:"invalid_element",input:o,inst:s,key:n,issues:t.issues.map(a=>G(a,i,B()))})),r.value.set(e.value,t.value)}var us=d("$ZodSet",(e,t)=>{k.init(e,t),e._zod.parse=(r,n)=>{let o=r.value;if(!(o instanceof Set))return r.issues.push({input:o,inst:e,expected:"set",code:"invalid_type"}),r;let s=[];r.value=new Set;for(let i of o){let a=t.valueType._zod.run({value:i,issues:[]},n);a instanceof Promise?s.push(a.then(u=>_c(u,r))):_c(a,r)}return s.length?Promise.all(s).then(()=>r):r}});function _c(e,t){e.issues.length&&t.issues.push(...e.issues),t.value.add(e.value)}var ls=d("$ZodEnum",(e,t)=>{k.init(e,t);let r=nt(t.entries),n=new Set(r);e._zod.values=n,e._zod.pattern=new RegExp(`^(${r.filter(o=>st.has(typeof o)).map(o=>typeof o=="string"?ee(o):o.toString()).join("|")})$`),e._zod.parse=(o,s)=>{let i=o.value;return n.has(i)||o.issues.push({code:"invalid_value",values:r,input:i,inst:e}),o}}),ps=d("$ZodLiteral",(e,t)=>{if(k.init(e,t),t.values.length===0)throw new Error("Cannot create literal schema with no valid values");let r=new Set(t.values);e._zod.values=r,e._zod.pattern=new RegExp(`^(${t.values.map(n=>typeof n=="string"?ee(n):n?ee(n.toString()):String(n)).join("|")})$`),e._zod.parse=(n,o)=>{let s=n.value;return r.has(s)||n.issues.push({code:"invalid_value",values:t.values,input:s,inst:e}),n}}),fs=d("$ZodFile",(e,t)=>{k.init(e,t),e._zod.parse=(r,n)=>{let o=r.value;return o instanceof File||r.issues.push({expected:"file",code:"invalid_type",input:o,inst:e}),r}}),ds=d("$ZodTransform",(e,t)=>{k.init(e,t),e._zod.parse=(r,n)=>{if(n.direction==="backward")throw new Le(e.constructor.name);let o=t.transform(r.value,r);if(n.async)return(o instanceof Promise?o:Promise.resolve(o)).then(i=>(r.value=i,r));if(o instanceof Promise)throw new se;return r.value=o,r}});function wc(e,t){return e.issues.length&&t===void 0?{issues:[],value:void 0}:e}var pr=d("$ZodOptional",(e,t)=>{k.init(e,t),e._zod.optin="optional",e._zod.optout="optional",x(e._zod,"values",()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,void 0]):void 0),x(e._zod,"pattern",()=>{let r=t.innerType._zod.pattern;return r?new RegExp(`^(${ot(r.source)})?$`):void 0}),e._zod.parse=(r,n)=>{if(t.innerType._zod.optin==="optional"){let o=t.innerType._zod.run(r,n);return o instanceof Promise?o.then(s=>wc(s,r.value)):wc(o,r.value)}return r.value===void 0?r:t.innerType._zod.run(r,n)}}),ms=d("$ZodExactOptional",(e,t)=>{pr.init(e,t),x(e._zod,"values",()=>t.innerType._zod.values),x(e._zod,"pattern",()=>t.innerType._zod.pattern),e._zod.parse=(r,n)=>t.innerType._zod.run(r,n)}),hs=d("$ZodNullable",(e,t)=>{k.init(e,t),x(e._zod,"optin",()=>t.innerType._zod.optin),x(e._zod,"optout",()=>t.innerType._zod.optout),x(e._zod,"pattern",()=>{let r=t.innerType._zod.pattern;return r?new RegExp(`^(${ot(r.source)}|null)$`):void 0}),x(e._zod,"values",()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,null]):void 0),e._zod.parse=(r,n)=>r.value===null?r:t.innerType._zod.run(r,n)}),gs=d("$ZodDefault",(e,t)=>{k.init(e,t),e._zod.optin="optional",x(e._zod,"values",()=>t.innerType._zod.values),e._zod.parse=(r,n)=>{if(n.direction==="backward")return t.innerType._zod.run(r,n);if(r.value===void 0)return r.value=t.defaultValue,r;let o=t.innerType._zod.run(r,n);return o instanceof Promise?o.then(s=>$c(s,t)):$c(o,t)}});function $c(e,t){return e.value===void 0&&(e.value=t.defaultValue),e}var ys=d("$ZodPrefault",(e,t)=>{k.init(e,t),e._zod.optin="optional",x(e._zod,"values",()=>t.innerType._zod.values),e._zod.parse=(r,n)=>(n.direction==="backward"||r.value===void 0&&(r.value=t.defaultValue),t.innerType._zod.run(r,n))}),bs=d("$ZodNonOptional",(e,t)=>{k.init(e,t),x(e._zod,"values",()=>{let r=t.innerType._zod.values;return r?new Set([...r].filter(n=>n!==void 0)):void 0}),e._zod.parse=(r,n)=>{let o=t.innerType._zod.run(r,n);return o instanceof Promise?o.then(s=>kc(s,e)):kc(o,e)}});function kc(e,t){return!e.issues.length&&e.value===void 0&&e.issues.push({code:"invalid_type",expected:"nonoptional",input:e.value,inst:t}),e}var _s=d("$ZodSuccess",(e,t)=>{k.init(e,t),e._zod.parse=(r,n)=>{if(n.direction==="backward")throw new Le("ZodSuccess");let o=t.innerType._zod.run(r,n);return o instanceof Promise?o.then(s=>(r.value=s.issues.length===0,r)):(r.value=o.issues.length===0,r)}}),ws=d("$ZodCatch",(e,t)=>{k.init(e,t),x(e._zod,"optin",()=>t.innerType._zod.optin),x(e._zod,"optout",()=>t.innerType._zod.optout),x(e._zod,"values",()=>t.innerType._zod.values),e._zod.parse=(r,n)=>{if(n.direction==="backward")return t.innerType._zod.run(r,n);let o=t.innerType._zod.run(r,n);return o instanceof Promise?o.then(s=>(r.value=s.value,s.issues.length&&(r.value=t.catchValue({...r,error:{issues:s.issues.map(i=>G(i,n,B()))},input:r.value}),r.issues=[]),r)):(r.value=o.value,o.issues.length&&(r.value=t.catchValue({...r,error:{issues:o.issues.map(s=>G(s,n,B()))},input:r.value}),r.issues=[]),r)}}),$s=d("$ZodNaN",(e,t)=>{k.init(e,t),e._zod.parse=(r,n)=>((typeof r.value!="number"||!Number.isNaN(r.value))&&r.issues.push({input:r.value,inst:e,expected:"nan",code:"invalid_type"}),r)}),ks=d("$ZodPipe",(e,t)=>{k.init(e,t),x(e._zod,"values",()=>t.in._zod.values),x(e._zod,"optin",()=>t.in._zod.optin),x(e._zod,"optout",()=>t.out._zod.optout),x(e._zod,"propValues",()=>t.in._zod.propValues),e._zod.parse=(r,n)=>{if(n.direction==="backward"){let s=t.out._zod.run(r,n);return s instanceof Promise?s.then(i=>nr(i,t.in,n)):nr(s,t.in,n)}let o=t.in._zod.run(r,n);return o instanceof Promise?o.then(s=>nr(s,t.out,n)):nr(o,t.out,n)}});function nr(e,t,r){return e.issues.length?(e.aborted=!0,e):t._zod.run({value:e.value,issues:e.issues},r)}var dt=d("$ZodCodec",(e,t)=>{k.init(e,t),x(e._zod,"values",()=>t.in._zod.values),x(e._zod,"optin",()=>t.in._zod.optin),x(e._zod,"optout",()=>t.out._zod.optout),x(e._zod,"propValues",()=>t.in._zod.propValues),e._zod.parse=(r,n)=>{if((n.direction||"forward")==="forward"){let s=t.in._zod.run(r,n);return s instanceof Promise?s.then(i=>or(i,t,n)):or(s,t,n)}else{let s=t.out._zod.run(r,n);return s instanceof Promise?s.then(i=>or(i,t,n)):or(s,t,n)}}});function or(e,t,r){if(e.issues.length)return e.aborted=!0,e;if((r.direction||"forward")==="forward"){let o=t.transform(e.value,e);return o instanceof Promise?o.then(s=>sr(e,s,t.out,r)):sr(e,o,t.out,r)}else{let o=t.reverseTransform(e.value,e);return o instanceof Promise?o.then(s=>sr(e,s,t.in,r)):sr(e,o,t.in,r)}}function sr(e,t,r,n){return e.issues.length?(e.aborted=!0,e):r._zod.run({value:t,issues:e.issues},n)}var xs=d("$ZodReadonly",(e,t)=>{k.init(e,t),x(e._zod,"propValues",()=>t.innerType._zod.propValues),x(e._zod,"values",()=>t.innerType._zod.values),x(e._zod,"optin",()=>t.innerType?._zod?.optin),x(e._zod,"optout",()=>t.innerType?._zod?.optout),e._zod.parse=(r,n)=>{if(n.direction==="backward")return t.innerType._zod.run(r,n);let o=t.innerType._zod.run(r,n);return o instanceof Promise?o.then(xc):xc(o)}});function xc(e){return e.value=Object.freeze(e.value),e}var Ss=d("$ZodTemplateLiteral",(e,t)=>{k.init(e,t);let r=[];for(let n of t.parts)if(typeof n=="object"&&n!==null){if(!n._zod.pattern)throw new Error(`Invalid template literal part, no pattern found: ${[...n._zod.traits].shift()}`);let o=n._zod.pattern instanceof RegExp?n._zod.pattern.source:n._zod.pattern;if(!o)throw new Error(`Invalid template literal part: ${n._zod.traits}`);let s=o.startsWith("^")?1:0,i=o.endsWith("$")?o.length-1:o.length;r.push(o.slice(s,i))}else if(n===null||nn.has(typeof n))r.push(ee(`${n}`));else throw new Error(`Invalid template literal part: ${n}`);e._zod.pattern=new RegExp(`^${r.join("")}$`),e._zod.parse=(n,o)=>typeof n.value!="string"?(n.issues.push({input:n.value,inst:e,expected:"string",code:"invalid_type"}),n):(e._zod.pattern.lastIndex=0,e._zod.pattern.test(n.value)||n.issues.push({input:n.value,inst:e,code:"invalid_format",format:t.format??"template_literal",pattern:e._zod.pattern.source}),n)}),vs=d("$ZodFunction",(e,t)=>(k.init(e,t),e._def=t,e._zod.def=t,e.implement=r=>{if(typeof r!="function")throw new Error("implement() must be called with a function");return function(...n){let o=e._def.input?ge(e._def.input,n):n,s=Reflect.apply(r,this,o);return e._def.output?ge(e._def.output,s):s}},e.implementAsync=r=>{if(typeof r!="function")throw new Error("implementAsync() must be called with a function");return async function(...n){let o=e._def.input?await ye(e._def.input,n):n,s=await Reflect.apply(r,this,o);return e._def.output?await ye(e._def.output,s):s}},e._zod.parse=(r,n)=>typeof r.value!="function"?(r.issues.push({code:"invalid_type",expected:"function",input:r.value,inst:e}),r):(e._def.output&&e._def.output._zod.def.type==="promise"?r.value=e.implementAsync(r.value):r.value=e.implement(r.value),r),e.input=(...r)=>{let n=e.constructor;return Array.isArray(r[0])?new n({type:"function",input:new lr({type:"tuple",items:r[0],rest:r[1]}),output:e._def.output}):new n({type:"function",input:r[0],output:e._def.output})},e.output=r=>{let n=e.constructor;return new n({type:"function",input:e._def.input,output:r})},e)),zs=d("$ZodPromise",(e,t)=>{k.init(e,t),e._zod.parse=(r,n)=>Promise.resolve(r.value).then(o=>t.innerType._zod.run({value:o,issues:[]},n))}),Ts=d("$ZodLazy",(e,t)=>{k.init(e,t),x(e._zod,"innerType",()=>t.getter()),x(e._zod,"pattern",()=>e._zod.innerType?._zod?.pattern),x(e._zod,"propValues",()=>e._zod.innerType?._zod?.propValues),x(e._zod,"optin",()=>e._zod.innerType?._zod?.optin??void 0),x(e._zod,"optout",()=>e._zod.innerType?._zod?.optout??void 0),e._zod.parse=(r,n)=>e._zod.innerType._zod.run(r,n)}),Is=d("$ZodCustom",(e,t)=>{A.init(e,t),k.init(e,t),e._zod.parse=(r,n)=>r,e._zod.check=r=>{let n=r.value,o=t.fn(n);if(o instanceof Promise)return o.then(s=>Sc(s,r,n,e));Sc(o,r,n,e)}});function Sc(e,t,r,n){if(!e){let o={code:"custom",input:r,inst:n,path:[...n._zod.def.path??[]],continue:!n._zod.def.abort};n._zod.def.params&&(o.params=n._zod.def.params),t.issues.push(De(o))}}var mt={};ve(mt,{default:()=>xd});var xd={};var Pc,Ps=Symbol("ZodOutput"),As=Symbol("ZodInput"),fr=class{constructor(){this._map=new WeakMap,this._idmap=new Map}add(t,...r){let n=r[0];return this._map.set(t,n),n&&typeof n=="object"&&"id"in n&&this._idmap.set(n.id,t),this}clear(){return this._map=new WeakMap,this._idmap=new Map,this}remove(t){let r=this._map.get(t);return r&&typeof r=="object"&&"id"in r&&this._idmap.delete(r.id),this._map.delete(t),this}get(t){let r=t._zod.parent;if(r){let n={...this.get(r)??{}};delete n.id;let o={...n,...this._map.get(t)};return Object.keys(o).length?o:void 0}return this._map.get(t)}has(t){return this._map.has(t)}};function dr(){return new fr}(Pc=globalThis).__zod_globalRegistry??(Pc.__zod_globalRegistry=dr());var ae=globalThis.__zod_globalRegistry;function Es(e,t){return new e({type:"string",...g(t)})}function Rs(e,t){return new e({type:"string",coerce:!0,...g(t)})}function Cs(e,t){return new e({type:"string",format:"email",check:"string_format",abort:!1,...g(t)})}function Ns(e,t){return new e({type:"string",format:"guid",check:"string_format",abort:!1,...g(t)})}function Os(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,...g(t)})}function Ls(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v4",...g(t)})}function Zs(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v6",...g(t)})}function js(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v7",...g(t)})}function mr(e,t){return new e({type:"string",format:"url",check:"string_format",abort:!1,...g(t)})}function Ds(e,t){return new e({type:"string",format:"emoji",check:"string_format",abort:!1,...g(t)})}function Ms(e,t){return new e({type:"string",format:"nanoid",check:"string_format",abort:!1,...g(t)})}function Bs(e,t){return new e({type:"string",format:"cuid",check:"string_format",abort:!1,...g(t)})}function Us(e,t){return new e({type:"string",format:"cuid2",check:"string_format",abort:!1,...g(t)})}function Fs(e,t){return new e({type:"string",format:"ulid",check:"string_format",abort:!1,...g(t)})}function Hs(e,t){return new e({type:"string",format:"xid",check:"string_format",abort:!1,...g(t)})}function qs(e,t){return new e({type:"string",format:"ksuid",check:"string_format",abort:!1,...g(t)})}function Js(e,t){return new e({type:"string",format:"ipv4",check:"string_format",abort:!1,...g(t)})}function Ks(e,t){return new e({type:"string",format:"ipv6",check:"string_format",abort:!1,...g(t)})}function Ys(e,t){return new e({type:"string",format:"mac",check:"string_format",abort:!1,...g(t)})}function Gs(e,t){return new e({type:"string",format:"cidrv4",check:"string_format",abort:!1,...g(t)})}function Ws(e,t){return new e({type:"string",format:"cidrv6",check:"string_format",abort:!1,...g(t)})}function Vs(e,t){return new e({type:"string",format:"base64",check:"string_format",abort:!1,...g(t)})}function Qs(e,t){return new e({type:"string",format:"base64url",check:"string_format",abort:!1,...g(t)})}function Xs(e,t){return new e({type:"string",format:"e164",check:"string_format",abort:!1,...g(t)})}function ei(e,t){return new e({type:"string",format:"jwt",check:"string_format",abort:!1,...g(t)})}var ti={Any:null,Minute:-1,Second:0,Millisecond:3,Microsecond:6};function ri(e,t){return new e({type:"string",format:"datetime",check:"string_format",offset:!1,local:!1,precision:null,...g(t)})}function ni(e,t){return new e({type:"string",format:"date",check:"string_format",...g(t)})}function oi(e,t){return new e({type:"string",format:"time",check:"string_format",precision:null,...g(t)})}function si(e,t){return new e({type:"string",format:"duration",check:"string_format",...g(t)})}function ii(e,t){return new e({type:"number",checks:[],...g(t)})}function ai(e,t){return new e({type:"number",coerce:!0,checks:[],...g(t)})}function ci(e,t){return new e({type:"number",check:"number_format",abort:!1,format:"safeint",...g(t)})}function ui(e,t){return new e({type:"number",check:"number_format",abort:!1,format:"float32",...g(t)})}function li(e,t){return new e({type:"number",check:"number_format",abort:!1,format:"float64",...g(t)})}function pi(e,t){return new e({type:"number",check:"number_format",abort:!1,format:"int32",...g(t)})}function fi(e,t){return new e({type:"number",check:"number_format",abort:!1,format:"uint32",...g(t)})}function di(e,t){return new e({type:"boolean",...g(t)})}function mi(e,t){return new e({type:"boolean",coerce:!0,...g(t)})}function hi(e,t){return new e({type:"bigint",...g(t)})}function gi(e,t){return new e({type:"bigint",coerce:!0,...g(t)})}function yi(e,t){return new e({type:"bigint",check:"bigint_format",abort:!1,format:"int64",...g(t)})}function bi(e,t){return new e({type:"bigint",check:"bigint_format",abort:!1,format:"uint64",...g(t)})}function _i(e,t){return new e({type:"symbol",...g(t)})}function wi(e,t){return new e({type:"undefined",...g(t)})}function $i(e,t){return new e({type:"null",...g(t)})}function ki(e){return new e({type:"any"})}function xi(e){return new e({type:"unknown"})}function Si(e,t){return new e({type:"never",...g(t)})}function vi(e,t){return new e({type:"void",...g(t)})}function zi(e,t){return new e({type:"date",...g(t)})}function Ti(e,t){return new e({type:"date",coerce:!0,...g(t)})}function Ii(e,t){return new e({type:"nan",...g(t)})}function hr(e,t){return new er({check:"less_than",...g(t),value:e,inclusive:!1})}function ht(e,t){return new er({check:"less_than",...g(t),value:e,inclusive:!0})}function gr(e,t){return new tr({check:"greater_than",...g(t),value:e,inclusive:!1})}function gt(e,t){return new tr({check:"greater_than",...g(t),value:e,inclusive:!0})}function Pi(e){return gr(0,e)}function Ai(e){return hr(0,e)}function Ei(e){return ht(0,e)}function Ri(e){return gt(0,e)}function Ci(e,t){return new eo({check:"multiple_of",...g(t),value:e})}function Ni(e,t){return new no({check:"max_size",...g(t),maximum:e})}function Oi(e,t){return new oo({check:"min_size",...g(t),minimum:e})}function Li(e,t){return new so({check:"size_equals",...g(t),size:e})}function Zi(e,t){return new io({check:"max_length",...g(t),maximum:e})}function yt(e,t){return new ao({check:"min_length",...g(t),minimum:e})}function ji(e,t){return new co({check:"length_equals",...g(t),length:e})}function bt(e,t){return new uo({check:"string_format",format:"regex",...g(t),pattern:e})}function Di(e){return new lo({check:"string_format",format:"lowercase",...g(e)})}function Mi(e){return new po({check:"string_format",format:"uppercase",...g(e)})}function Bi(e,t){return new fo({check:"string_format",format:"includes",...g(t),includes:e})}function Ui(e,t){return new mo({check:"string_format",format:"starts_with",...g(t),prefix:e})}function Fi(e,t){return new ho({check:"string_format",format:"ends_with",...g(t),suffix:e})}function Hi(e,t,r){return new go({check:"property",property:e,schema:t,...g(r)})}function qi(e,t){return new yo({check:"mime_type",mime:e,...g(t)})}function be(e){return new bo({check:"overwrite",tx:e})}function Ji(e){return be(t=>t.normalize(e))}function Ki(){return be(e=>e.trim())}function Yi(){return be(e=>e.toLowerCase())}function Gi(){return be(e=>e.toUpperCase())}function vd(){return be(e=>tn(e))}function zd(e,t,r){return new e({type:"array",element:t,...g(r)})}function Td(e,t,r){return new e({type:"union",options:t,...g(r)})}function Id(e,t,r){return new e({type:"union",options:t,inclusive:!1,...g(r)})}function Pd(e,t,r,n){return new e({type:"union",options:r,discriminator:t,...g(n)})}function Ad(e,t,r){return new e({type:"intersection",left:t,right:r})}function Ed(e,t,r,n){let o=r instanceof k,s=o?n:r,i=o?r:null;return new e({type:"tuple",items:t,rest:i,...g(s)})}function Rd(e,t,r,n){return new e({type:"record",keyType:t,valueType:r,...g(n)})}function Cd(e,t,r,n){return new e({type:"map",keyType:t,valueType:r,...g(n)})}function Nd(e,t,r){return new e({type:"set",valueType:t,...g(r)})}function Od(e,t,r){let n=Array.isArray(t)?Object.fromEntries(t.map(o=>[o,o])):t;return new e({type:"enum",entries:n,...g(r)})}function Ld(e,t,r){return new e({type:"enum",entries:t,...g(r)})}function Zd(e,t,r){return new e({type:"literal",values:Array.isArray(t)?t:[t],...g(r)})}function Wi(e,t){return new e({type:"file",...g(t)})}function jd(e,t){return new e({type:"transform",transform:t})}function Dd(e,t){return new e({type:"optional",innerType:t})}function Md(e,t){return new e({type:"nullable",innerType:t})}function Bd(e,t,r){return new e({type:"default",innerType:t,get defaultValue(){return typeof r=="function"?r():je(r)}})}function Ud(e,t,r){return new e({type:"nonoptional",innerType:t,...g(r)})}function Fd(e,t){return new e({type:"success",innerType:t})}function Hd(e,t,r){return new e({type:"catch",innerType:t,catchValue:typeof r=="function"?r:()=>r})}function qd(e,t,r){return new e({type:"pipe",in:t,out:r})}function Jd(e,t){return new e({type:"readonly",innerType:t})}function Kd(e,t,r){return new e({type:"template_literal",parts:t,...g(r)})}function Yd(e,t){return new e({type:"lazy",getter:t})}function Gd(e,t){return new e({type:"promise",innerType:t})}function Vi(e,t,r){let n=g(r);return n.abort??(n.abort=!0),new e({type:"custom",check:"custom",fn:t,...n})}function Qi(e,t,r){return new e({type:"custom",check:"custom",fn:t,...g(r)})}function Xi(e){let t=Ac(r=>(r.addIssue=n=>{if(typeof n=="string")r.issues.push(De(n,r.value,t._zod.def));else{let o=n;o.fatal&&(o.continue=!1),o.code??(o.code="custom"),o.input??(o.input=r.value),o.inst??(o.inst=t),o.continue??(o.continue=!t._zod.def.abort),r.issues.push(De(o))}},e(r.value,r)));return t}function Ac(e,t){let r=new A({check:"custom",...g(t)});return r._zod.check=e,r}function ea(e){let t=new A({check:"describe"});return t._zod.onattach=[r=>{let n=ae.get(r)??{};ae.add(r,{...n,description:e})}],t._zod.check=()=>{},t}function ta(e){let t=new A({check:"meta"});return t._zod.onattach=[r=>{let n=ae.get(r)??{};ae.add(r,{...n,...e})}],t._zod.check=()=>{},t}function ra(e,t){let r=g(t),n=r.truthy??["true","1","yes","on","y","enabled"],o=r.falsy??["false","0","no","off","n","disabled"];r.case!=="sensitive"&&(n=n.map(h=>typeof h=="string"?h.toLowerCase():h),o=o.map(h=>typeof h=="string"?h.toLowerCase():h));let s=new Set(n),i=new Set(o),a=e.Codec??dt,u=e.Boolean??pt,l=e.String??Be,p=new l({type:"string",error:r.error}),f=new u({type:"boolean",error:r.error}),m=new a({type:"pipe",in:p,out:f,transform:((h,b)=>{let y=h;return r.case!=="sensitive"&&(y=y.toLowerCase()),s.has(y)?!0:i.has(y)?!1:(b.issues.push({code:"invalid_value",expected:"stringbool",values:[...s,...i],input:b.value,inst:m,continue:!1}),{})}),reverseTransform:((h,b)=>h===!0?n[0]||"true":o[0]||"false"),error:r.error});return m}function Ue(e,t,r,n={}){let o=g(n),s={...g(n),check:"string_format",type:"string",format:t,fn:typeof r=="function"?r:a=>r.test(a),...o};return r instanceof RegExp&&(s.pattern=r),new e(s)}function _e(e){let t=e?.target??"draft-2020-12";return t==="draft-4"&&(t="draft-04"),t==="draft-7"&&(t="draft-07"),{processors:e.processors??{},metadataRegistry:e?.metadata??ae,target:t,unrepresentable:e?.unrepresentable??"throw",override:e?.override??(()=>{}),io:e?.io??"output",counter:0,seen:new Map,cycles:e?.cycles??"ref",reused:e?.reused??"inline",external:e?.external??void 0}}function T(e,t,r={path:[],schemaPath:[]}){var n;let o=e._zod.def,s=t.seen.get(e);if(s)return s.count++,r.schemaPath.includes(e)&&(s.cycle=r.path),s.schema;let i={schema:{},count:1,cycle:void 0,path:r.path};t.seen.set(e,i);let a=e._zod.toJSONSchema?.();if(a)i.schema=a;else{let p={...r,schemaPath:[...r.schemaPath,e],path:r.path};if(e._zod.processJSONSchema)e._zod.processJSONSchema(t,i.schema,p);else{let m=i.schema,h=t.processors[o.type];if(!h)throw new Error(`[toJSONSchema]: Non-representable type encountered: ${o.type}`);h(e,t,m,p)}let f=e._zod.parent;f&&(i.ref||(i.ref=f),T(f,t,p),t.seen.get(f).isParent=!0)}let u=t.metadataRegistry.get(e);return u&&Object.assign(i.schema,u),t.io==="input"&&J(e)&&(delete i.schema.examples,delete i.schema.default),t.io==="input"&&i.schema._prefault&&((n=i.schema).default??(n.default=i.schema._prefault)),delete i.schema._prefault,t.seen.get(e).schema}function we(e,t){let r=e.seen.get(t);if(!r)throw new Error("Unprocessed schema. This is a bug in Zod.");let n=new Map;for(let i of e.seen.entries()){let a=e.metadataRegistry.get(i[0])?.id;if(a){let u=n.get(a);if(u&&u!==i[0])throw new Error(`Duplicate schema id "${a}" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);n.set(a,i[0])}}let o=i=>{let a=e.target==="draft-2020-12"?"$defs":"definitions";if(e.external){let f=e.external.registry.get(i[0])?.id,m=e.external.uri??(b=>b);if(f)return{ref:m(f)};let h=i[1].defId??i[1].schema.id??`schema${e.counter++}`;return i[1].defId=h,{defId:h,ref:`${m("__shared")}#/${a}/${h}`}}if(i[1]===r)return{ref:"#"};let l=`#/${a}/`,p=i[1].schema.id??`__schema${e.counter++}`;return{defId:p,ref:l+p}},s=i=>{if(i[1].schema.$ref)return;let a=i[1],{ref:u,defId:l}=o(i);a.def={...a.schema},l&&(a.defId=l);let p=a.schema;for(let f in p)delete p[f];p.$ref=u};if(e.cycles==="throw")for(let i of e.seen.entries()){let a=i[1];if(a.cycle)throw new Error(`Cycle detected: #/${a.cycle?.join("/")}/<root>
|
|
39
|
+
`)}h.write("payload.value = newResult;"),h.write("return payload;");let Y=h.compile();return(C,M)=>Y(m,C,M)},s,i=ze,a=!tt.jitless,l=a&&rn.value,p=t.catchall,f;e._zod.parse=(m,h)=>{f??(f=n.value);let b=m.value;return i(b)?a&&l&&h?.async===!1&&h.jitless!==!0?(s||(s=o(t.shape)),m=s(m,h),p?Ic([],b,m,h,f,e):m):r(m,h):(m.issues.push({expected:"object",code:"invalid_type",input:b,inst:e}),m)}});function hc(e,t,r,n){for(let s of e)if(s.issues.length===0)return t.value=s.value,t;let o=e.filter(s=>!he(s));return o.length===1?(t.value=o[0].value,o[0]):(t.issues.push({code:"invalid_union",input:t.value,inst:r,errors:e.map(s=>s.issues.map(i=>G(i,n,B())))}),t)}var ft=d("$ZodUnion",(e,t)=>{x.init(e,t),k(e._zod,"optin",()=>t.options.some(o=>o._zod.optin==="optional")?"optional":void 0),k(e._zod,"optout",()=>t.options.some(o=>o._zod.optout==="optional")?"optional":void 0),k(e._zod,"values",()=>{if(t.options.every(o=>o._zod.values))return new Set(t.options.flatMap(o=>Array.from(o._zod.values)))}),k(e._zod,"pattern",()=>{if(t.options.every(o=>o._zod.pattern)){let o=t.options.map(s=>s._zod.pattern);return new RegExp(`^(${o.map(s=>ot(s.source)).join("|")})$`)}});let r=t.options.length===1,n=t.options[0]._zod.run;e._zod.parse=(o,s)=>{if(r)return n(o,s);let i=!1,a=[];for(let u of t.options){let l=u._zod.run({value:o.value,issues:[]},s);if(l instanceof Promise)a.push(l),i=!0;else{if(l.issues.length===0)return l;a.push(l)}}return i?Promise.all(a).then(u=>hc(u,o,e,s)):hc(a,o,e,s)}});function gc(e,t,r,n){let o=e.filter(s=>s.issues.length===0);return o.length===1?(t.value=o[0].value,t):(o.length===0?t.issues.push({code:"invalid_union",input:t.value,inst:r,errors:e.map(s=>s.issues.map(i=>G(i,n,B())))}):t.issues.push({code:"invalid_union",input:t.value,inst:r,errors:[],inclusive:!1}),t)}var os=d("$ZodXor",(e,t)=>{ft.init(e,t),t.inclusive=!1;let r=t.options.length===1,n=t.options[0]._zod.run;e._zod.parse=(o,s)=>{if(r)return n(o,s);let i=!1,a=[];for(let u of t.options){let l=u._zod.run({value:o.value,issues:[]},s);l instanceof Promise?(a.push(l),i=!0):a.push(l)}return i?Promise.all(a).then(u=>gc(u,o,e,s)):gc(a,o,e,s)}}),ss=d("$ZodDiscriminatedUnion",(e,t)=>{t.inclusive=!1,ft.init(e,t);let r=e._zod.parse;k(e._zod,"propValues",()=>{let o={};for(let s of t.options){let i=s._zod.propValues;if(!i||Object.keys(i).length===0)throw new Error(`Invalid discriminated union option at index "${t.options.indexOf(s)}"`);for(let[a,u]of Object.entries(i)){o[a]||(o[a]=new Set);for(let l of u)o[a].add(l)}}return o});let n=Ze(()=>{let o=t.options,s=new Map;for(let i of o){let a=i._zod.propValues?.[t.discriminator];if(!a||a.size===0)throw new Error(`Invalid discriminated union option at index "${t.options.indexOf(i)}"`);for(let u of a){if(s.has(u))throw new Error(`Duplicate discriminator value "${String(u)}"`);s.set(u,i)}}return s});e._zod.parse=(o,s)=>{let i=o.value;if(!ze(i))return o.issues.push({code:"invalid_type",expected:"object",input:i,inst:e}),o;let a=n.value.get(i?.[t.discriminator]);return a?a._zod.run(o,s):t.unionFallback?r(o,s):(o.issues.push({code:"invalid_union",errors:[],note:"No matching discriminator",discriminator:t.discriminator,input:i,path:[t.discriminator],inst:e}),o)}}),is=d("$ZodIntersection",(e,t)=>{x.init(e,t),e._zod.parse=(r,n)=>{let o=r.value,s=t.left._zod.run({value:o,issues:[]},n),i=t.right._zod.run({value:o,issues:[]},n);return s instanceof Promise||i instanceof Promise?Promise.all([s,i]).then(([u,l])=>yc(r,u,l)):yc(r,s,i)}});function wo(e,t){if(e===t)return{valid:!0,data:e};if(e instanceof Date&&t instanceof Date&&+e==+t)return{valid:!0,data:e};if(me(e)&&me(t)){let r=Object.keys(t),n=Object.keys(e).filter(s=>r.indexOf(s)!==-1),o={...e,...t};for(let s of n){let i=wo(e[s],t[s]);if(!i.valid)return{valid:!1,mergeErrorPath:[s,...i.mergeErrorPath]};o[s]=i.data}return{valid:!0,data:o}}if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return{valid:!1,mergeErrorPath:[]};let r=[];for(let n=0;n<e.length;n++){let o=e[n],s=t[n],i=wo(o,s);if(!i.valid)return{valid:!1,mergeErrorPath:[n,...i.mergeErrorPath]};r.push(i.data)}return{valid:!0,data:r}}return{valid:!1,mergeErrorPath:[]}}function yc(e,t,r){let n=new Map,o;for(let a of t.issues)if(a.code==="unrecognized_keys"){o??(o=a);for(let u of a.keys)n.has(u)||n.set(u,{}),n.get(u).l=!0}else e.issues.push(a);for(let a of r.issues)if(a.code==="unrecognized_keys")for(let u of a.keys)n.has(u)||n.set(u,{}),n.get(u).r=!0;else e.issues.push(a);let s=[...n].filter(([,a])=>a.l&&a.r).map(([a])=>a);if(s.length&&o&&e.issues.push({...o,keys:s}),he(e))return e;let i=wo(t.value,r.value);if(!i.valid)throw new Error(`Unmergable intersection. Error path: ${JSON.stringify(i.mergeErrorPath)}`);return e.value=i.data,e}var lr=d("$ZodTuple",(e,t)=>{x.init(e,t);let r=t.items;e._zod.parse=(n,o)=>{let s=n.value;if(!Array.isArray(s))return n.issues.push({input:s,inst:e,expected:"tuple",code:"invalid_type"}),n;n.value=[];let i=[],a=[...r].reverse().findIndex(p=>p._zod.optin!=="optional"),u=a===-1?0:r.length-a;if(!t.rest){let p=s.length>r.length,f=s.length<u-1;if(p||f)return n.issues.push({...p?{code:"too_big",maximum:r.length,inclusive:!0}:{code:"too_small",minimum:r.length},input:s,inst:e,origin:"array"}),n}let l=-1;for(let p of r){if(l++,l>=s.length&&l>=u)continue;let f=p._zod.run({value:s[l],issues:[]},o);f instanceof Promise?i.push(f.then(m=>rr(m,n,l))):rr(f,n,l)}if(t.rest){let p=s.slice(r.length);for(let f of p){l++;let m=t.rest._zod.run({value:f,issues:[]},o);m instanceof Promise?i.push(m.then(h=>rr(h,n,l))):rr(m,n,l)}}return i.length?Promise.all(i).then(()=>n):n}});function rr(e,t,r){e.issues.length&&t.issues.push(...Q(r,e.issues)),t.value[r]=e.value}var as=d("$ZodRecord",(e,t)=>{x.init(e,t),e._zod.parse=(r,n)=>{let o=r.value;if(!me(o))return r.issues.push({expected:"record",code:"invalid_type",input:o,inst:e}),r;let s=[],i=t.keyType._zod.values;if(i){r.value={};let a=new Set;for(let l of i)if(typeof l=="string"||typeof l=="number"||typeof l=="symbol"){a.add(typeof l=="number"?l.toString():l);let p=t.valueType._zod.run({value:o[l],issues:[]},n);p instanceof Promise?s.push(p.then(f=>{f.issues.length&&r.issues.push(...Q(l,f.issues)),r.value[l]=f.value})):(p.issues.length&&r.issues.push(...Q(l,p.issues)),r.value[l]=p.value)}let u;for(let l in o)a.has(l)||(u=u??[],u.push(l));u&&u.length>0&&r.issues.push({code:"unrecognized_keys",input:o,inst:e,keys:u})}else{r.value={};for(let a of Reflect.ownKeys(o)){if(a==="__proto__")continue;let u=t.keyType._zod.run({value:a,issues:[]},n);if(u instanceof Promise)throw new Error("Async schemas not supported in object keys currently");if(typeof a=="string"&&Xt.test(a)&&u.issues.length){let f=t.keyType._zod.run({value:Number(a),issues:[]},n);if(f instanceof Promise)throw new Error("Async schemas not supported in object keys currently");f.issues.length===0&&(u=f)}if(u.issues.length){t.mode==="loose"?r.value[a]=o[a]:r.issues.push({code:"invalid_key",origin:"record",issues:u.issues.map(f=>G(f,n,B())),input:a,path:[a],inst:e});continue}let p=t.valueType._zod.run({value:o[a],issues:[]},n);p instanceof Promise?s.push(p.then(f=>{f.issues.length&&r.issues.push(...Q(a,f.issues)),r.value[u.value]=f.value})):(p.issues.length&&r.issues.push(...Q(a,p.issues)),r.value[u.value]=p.value)}}return s.length?Promise.all(s).then(()=>r):r}}),cs=d("$ZodMap",(e,t)=>{x.init(e,t),e._zod.parse=(r,n)=>{let o=r.value;if(!(o instanceof Map))return r.issues.push({expected:"map",code:"invalid_type",input:o,inst:e}),r;let s=[];r.value=new Map;for(let[i,a]of o){let u=t.keyType._zod.run({value:i,issues:[]},n),l=t.valueType._zod.run({value:a,issues:[]},n);u instanceof Promise||l instanceof Promise?s.push(Promise.all([u,l]).then(([p,f])=>{bc(p,f,r,i,o,e,n)})):bc(u,l,r,i,o,e,n)}return s.length?Promise.all(s).then(()=>r):r}});function bc(e,t,r,n,o,s,i){e.issues.length&&(st.has(typeof n)?r.issues.push(...Q(n,e.issues)):r.issues.push({code:"invalid_key",origin:"map",input:o,inst:s,issues:e.issues.map(a=>G(a,i,B()))})),t.issues.length&&(st.has(typeof n)?r.issues.push(...Q(n,t.issues)):r.issues.push({origin:"map",code:"invalid_element",input:o,inst:s,key:n,issues:t.issues.map(a=>G(a,i,B()))})),r.value.set(e.value,t.value)}var us=d("$ZodSet",(e,t)=>{x.init(e,t),e._zod.parse=(r,n)=>{let o=r.value;if(!(o instanceof Set))return r.issues.push({input:o,inst:e,expected:"set",code:"invalid_type"}),r;let s=[];r.value=new Set;for(let i of o){let a=t.valueType._zod.run({value:i,issues:[]},n);a instanceof Promise?s.push(a.then(u=>_c(u,r))):_c(a,r)}return s.length?Promise.all(s).then(()=>r):r}});function _c(e,t){e.issues.length&&t.issues.push(...e.issues),t.value.add(e.value)}var ls=d("$ZodEnum",(e,t)=>{x.init(e,t);let r=nt(t.entries),n=new Set(r);e._zod.values=n,e._zod.pattern=new RegExp(`^(${r.filter(o=>st.has(typeof o)).map(o=>typeof o=="string"?ee(o):o.toString()).join("|")})$`),e._zod.parse=(o,s)=>{let i=o.value;return n.has(i)||o.issues.push({code:"invalid_value",values:r,input:i,inst:e}),o}}),ps=d("$ZodLiteral",(e,t)=>{if(x.init(e,t),t.values.length===0)throw new Error("Cannot create literal schema with no valid values");let r=new Set(t.values);e._zod.values=r,e._zod.pattern=new RegExp(`^(${t.values.map(n=>typeof n=="string"?ee(n):n?ee(n.toString()):String(n)).join("|")})$`),e._zod.parse=(n,o)=>{let s=n.value;return r.has(s)||n.issues.push({code:"invalid_value",values:t.values,input:s,inst:e}),n}}),fs=d("$ZodFile",(e,t)=>{x.init(e,t),e._zod.parse=(r,n)=>{let o=r.value;return o instanceof File||r.issues.push({expected:"file",code:"invalid_type",input:o,inst:e}),r}}),ds=d("$ZodTransform",(e,t)=>{x.init(e,t),e._zod.parse=(r,n)=>{if(n.direction==="backward")throw new Le(e.constructor.name);let o=t.transform(r.value,r);if(n.async)return(o instanceof Promise?o:Promise.resolve(o)).then(i=>(r.value=i,r));if(o instanceof Promise)throw new se;return r.value=o,r}});function wc(e,t){return e.issues.length&&t===void 0?{issues:[],value:void 0}:e}var pr=d("$ZodOptional",(e,t)=>{x.init(e,t),e._zod.optin="optional",e._zod.optout="optional",k(e._zod,"values",()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,void 0]):void 0),k(e._zod,"pattern",()=>{let r=t.innerType._zod.pattern;return r?new RegExp(`^(${ot(r.source)})?$`):void 0}),e._zod.parse=(r,n)=>{if(t.innerType._zod.optin==="optional"){let o=t.innerType._zod.run(r,n);return o instanceof Promise?o.then(s=>wc(s,r.value)):wc(o,r.value)}return r.value===void 0?r:t.innerType._zod.run(r,n)}}),ms=d("$ZodExactOptional",(e,t)=>{pr.init(e,t),k(e._zod,"values",()=>t.innerType._zod.values),k(e._zod,"pattern",()=>t.innerType._zod.pattern),e._zod.parse=(r,n)=>t.innerType._zod.run(r,n)}),hs=d("$ZodNullable",(e,t)=>{x.init(e,t),k(e._zod,"optin",()=>t.innerType._zod.optin),k(e._zod,"optout",()=>t.innerType._zod.optout),k(e._zod,"pattern",()=>{let r=t.innerType._zod.pattern;return r?new RegExp(`^(${ot(r.source)}|null)$`):void 0}),k(e._zod,"values",()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,null]):void 0),e._zod.parse=(r,n)=>r.value===null?r:t.innerType._zod.run(r,n)}),gs=d("$ZodDefault",(e,t)=>{x.init(e,t),e._zod.optin="optional",k(e._zod,"values",()=>t.innerType._zod.values),e._zod.parse=(r,n)=>{if(n.direction==="backward")return t.innerType._zod.run(r,n);if(r.value===void 0)return r.value=t.defaultValue,r;let o=t.innerType._zod.run(r,n);return o instanceof Promise?o.then(s=>$c(s,t)):$c(o,t)}});function $c(e,t){return e.value===void 0&&(e.value=t.defaultValue),e}var ys=d("$ZodPrefault",(e,t)=>{x.init(e,t),e._zod.optin="optional",k(e._zod,"values",()=>t.innerType._zod.values),e._zod.parse=(r,n)=>(n.direction==="backward"||r.value===void 0&&(r.value=t.defaultValue),t.innerType._zod.run(r,n))}),bs=d("$ZodNonOptional",(e,t)=>{x.init(e,t),k(e._zod,"values",()=>{let r=t.innerType._zod.values;return r?new Set([...r].filter(n=>n!==void 0)):void 0}),e._zod.parse=(r,n)=>{let o=t.innerType._zod.run(r,n);return o instanceof Promise?o.then(s=>xc(s,e)):xc(o,e)}});function xc(e,t){return!e.issues.length&&e.value===void 0&&e.issues.push({code:"invalid_type",expected:"nonoptional",input:e.value,inst:t}),e}var _s=d("$ZodSuccess",(e,t)=>{x.init(e,t),e._zod.parse=(r,n)=>{if(n.direction==="backward")throw new Le("ZodSuccess");let o=t.innerType._zod.run(r,n);return o instanceof Promise?o.then(s=>(r.value=s.issues.length===0,r)):(r.value=o.issues.length===0,r)}}),ws=d("$ZodCatch",(e,t)=>{x.init(e,t),k(e._zod,"optin",()=>t.innerType._zod.optin),k(e._zod,"optout",()=>t.innerType._zod.optout),k(e._zod,"values",()=>t.innerType._zod.values),e._zod.parse=(r,n)=>{if(n.direction==="backward")return t.innerType._zod.run(r,n);let o=t.innerType._zod.run(r,n);return o instanceof Promise?o.then(s=>(r.value=s.value,s.issues.length&&(r.value=t.catchValue({...r,error:{issues:s.issues.map(i=>G(i,n,B()))},input:r.value}),r.issues=[]),r)):(r.value=o.value,o.issues.length&&(r.value=t.catchValue({...r,error:{issues:o.issues.map(s=>G(s,n,B()))},input:r.value}),r.issues=[]),r)}}),$s=d("$ZodNaN",(e,t)=>{x.init(e,t),e._zod.parse=(r,n)=>((typeof r.value!="number"||!Number.isNaN(r.value))&&r.issues.push({input:r.value,inst:e,expected:"nan",code:"invalid_type"}),r)}),xs=d("$ZodPipe",(e,t)=>{x.init(e,t),k(e._zod,"values",()=>t.in._zod.values),k(e._zod,"optin",()=>t.in._zod.optin),k(e._zod,"optout",()=>t.out._zod.optout),k(e._zod,"propValues",()=>t.in._zod.propValues),e._zod.parse=(r,n)=>{if(n.direction==="backward"){let s=t.out._zod.run(r,n);return s instanceof Promise?s.then(i=>nr(i,t.in,n)):nr(s,t.in,n)}let o=t.in._zod.run(r,n);return o instanceof Promise?o.then(s=>nr(s,t.out,n)):nr(o,t.out,n)}});function nr(e,t,r){return e.issues.length?(e.aborted=!0,e):t._zod.run({value:e.value,issues:e.issues},r)}var dt=d("$ZodCodec",(e,t)=>{x.init(e,t),k(e._zod,"values",()=>t.in._zod.values),k(e._zod,"optin",()=>t.in._zod.optin),k(e._zod,"optout",()=>t.out._zod.optout),k(e._zod,"propValues",()=>t.in._zod.propValues),e._zod.parse=(r,n)=>{if((n.direction||"forward")==="forward"){let s=t.in._zod.run(r,n);return s instanceof Promise?s.then(i=>or(i,t,n)):or(s,t,n)}else{let s=t.out._zod.run(r,n);return s instanceof Promise?s.then(i=>or(i,t,n)):or(s,t,n)}}});function or(e,t,r){if(e.issues.length)return e.aborted=!0,e;if((r.direction||"forward")==="forward"){let o=t.transform(e.value,e);return o instanceof Promise?o.then(s=>sr(e,s,t.out,r)):sr(e,o,t.out,r)}else{let o=t.reverseTransform(e.value,e);return o instanceof Promise?o.then(s=>sr(e,s,t.in,r)):sr(e,o,t.in,r)}}function sr(e,t,r,n){return e.issues.length?(e.aborted=!0,e):r._zod.run({value:t,issues:e.issues},n)}var ks=d("$ZodReadonly",(e,t)=>{x.init(e,t),k(e._zod,"propValues",()=>t.innerType._zod.propValues),k(e._zod,"values",()=>t.innerType._zod.values),k(e._zod,"optin",()=>t.innerType?._zod?.optin),k(e._zod,"optout",()=>t.innerType?._zod?.optout),e._zod.parse=(r,n)=>{if(n.direction==="backward")return t.innerType._zod.run(r,n);let o=t.innerType._zod.run(r,n);return o instanceof Promise?o.then(kc):kc(o)}});function kc(e){return e.value=Object.freeze(e.value),e}var Ss=d("$ZodTemplateLiteral",(e,t)=>{x.init(e,t);let r=[];for(let n of t.parts)if(typeof n=="object"&&n!==null){if(!n._zod.pattern)throw new Error(`Invalid template literal part, no pattern found: ${[...n._zod.traits].shift()}`);let o=n._zod.pattern instanceof RegExp?n._zod.pattern.source:n._zod.pattern;if(!o)throw new Error(`Invalid template literal part: ${n._zod.traits}`);let s=o.startsWith("^")?1:0,i=o.endsWith("$")?o.length-1:o.length;r.push(o.slice(s,i))}else if(n===null||nn.has(typeof n))r.push(ee(`${n}`));else throw new Error(`Invalid template literal part: ${n}`);e._zod.pattern=new RegExp(`^${r.join("")}$`),e._zod.parse=(n,o)=>typeof n.value!="string"?(n.issues.push({input:n.value,inst:e,expected:"string",code:"invalid_type"}),n):(e._zod.pattern.lastIndex=0,e._zod.pattern.test(n.value)||n.issues.push({input:n.value,inst:e,code:"invalid_format",format:t.format??"template_literal",pattern:e._zod.pattern.source}),n)}),vs=d("$ZodFunction",(e,t)=>(x.init(e,t),e._def=t,e._zod.def=t,e.implement=r=>{if(typeof r!="function")throw new Error("implement() must be called with a function");return function(...n){let o=e._def.input?ge(e._def.input,n):n,s=Reflect.apply(r,this,o);return e._def.output?ge(e._def.output,s):s}},e.implementAsync=r=>{if(typeof r!="function")throw new Error("implementAsync() must be called with a function");return async function(...n){let o=e._def.input?await ye(e._def.input,n):n,s=await Reflect.apply(r,this,o);return e._def.output?await ye(e._def.output,s):s}},e._zod.parse=(r,n)=>typeof r.value!="function"?(r.issues.push({code:"invalid_type",expected:"function",input:r.value,inst:e}),r):(e._def.output&&e._def.output._zod.def.type==="promise"?r.value=e.implementAsync(r.value):r.value=e.implement(r.value),r),e.input=(...r)=>{let n=e.constructor;return Array.isArray(r[0])?new n({type:"function",input:new lr({type:"tuple",items:r[0],rest:r[1]}),output:e._def.output}):new n({type:"function",input:r[0],output:e._def.output})},e.output=r=>{let n=e.constructor;return new n({type:"function",input:e._def.input,output:r})},e)),zs=d("$ZodPromise",(e,t)=>{x.init(e,t),e._zod.parse=(r,n)=>Promise.resolve(r.value).then(o=>t.innerType._zod.run({value:o,issues:[]},n))}),Ts=d("$ZodLazy",(e,t)=>{x.init(e,t),k(e._zod,"innerType",()=>t.getter()),k(e._zod,"pattern",()=>e._zod.innerType?._zod?.pattern),k(e._zod,"propValues",()=>e._zod.innerType?._zod?.propValues),k(e._zod,"optin",()=>e._zod.innerType?._zod?.optin??void 0),k(e._zod,"optout",()=>e._zod.innerType?._zod?.optout??void 0),e._zod.parse=(r,n)=>e._zod.innerType._zod.run(r,n)}),Is=d("$ZodCustom",(e,t)=>{A.init(e,t),x.init(e,t),e._zod.parse=(r,n)=>r,e._zod.check=r=>{let n=r.value,o=t.fn(n);if(o instanceof Promise)return o.then(s=>Sc(s,r,n,e));Sc(o,r,n,e)}});function Sc(e,t,r,n){if(!e){let o={code:"custom",input:r,inst:n,path:[...n._zod.def.path??[]],continue:!n._zod.def.abort};n._zod.def.params&&(o.params=n._zod.def.params),t.issues.push(De(o))}}var mt={};ve(mt,{default:()=>kd});var kd={};var Pc,Ps=Symbol("ZodOutput"),As=Symbol("ZodInput"),fr=class{constructor(){this._map=new WeakMap,this._idmap=new Map}add(t,...r){let n=r[0];return this._map.set(t,n),n&&typeof n=="object"&&"id"in n&&this._idmap.set(n.id,t),this}clear(){return this._map=new WeakMap,this._idmap=new Map,this}remove(t){let r=this._map.get(t);return r&&typeof r=="object"&&"id"in r&&this._idmap.delete(r.id),this._map.delete(t),this}get(t){let r=t._zod.parent;if(r){let n={...this.get(r)??{}};delete n.id;let o={...n,...this._map.get(t)};return Object.keys(o).length?o:void 0}return this._map.get(t)}has(t){return this._map.has(t)}};function dr(){return new fr}(Pc=globalThis).__zod_globalRegistry??(Pc.__zod_globalRegistry=dr());var ae=globalThis.__zod_globalRegistry;function Es(e,t){return new e({type:"string",...g(t)})}function Rs(e,t){return new e({type:"string",coerce:!0,...g(t)})}function Cs(e,t){return new e({type:"string",format:"email",check:"string_format",abort:!1,...g(t)})}function Ns(e,t){return new e({type:"string",format:"guid",check:"string_format",abort:!1,...g(t)})}function Os(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,...g(t)})}function Ls(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v4",...g(t)})}function Zs(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v6",...g(t)})}function js(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v7",...g(t)})}function mr(e,t){return new e({type:"string",format:"url",check:"string_format",abort:!1,...g(t)})}function Ds(e,t){return new e({type:"string",format:"emoji",check:"string_format",abort:!1,...g(t)})}function Ms(e,t){return new e({type:"string",format:"nanoid",check:"string_format",abort:!1,...g(t)})}function Bs(e,t){return new e({type:"string",format:"cuid",check:"string_format",abort:!1,...g(t)})}function Us(e,t){return new e({type:"string",format:"cuid2",check:"string_format",abort:!1,...g(t)})}function Fs(e,t){return new e({type:"string",format:"ulid",check:"string_format",abort:!1,...g(t)})}function Hs(e,t){return new e({type:"string",format:"xid",check:"string_format",abort:!1,...g(t)})}function qs(e,t){return new e({type:"string",format:"ksuid",check:"string_format",abort:!1,...g(t)})}function Js(e,t){return new e({type:"string",format:"ipv4",check:"string_format",abort:!1,...g(t)})}function Ks(e,t){return new e({type:"string",format:"ipv6",check:"string_format",abort:!1,...g(t)})}function Ys(e,t){return new e({type:"string",format:"mac",check:"string_format",abort:!1,...g(t)})}function Gs(e,t){return new e({type:"string",format:"cidrv4",check:"string_format",abort:!1,...g(t)})}function Ws(e,t){return new e({type:"string",format:"cidrv6",check:"string_format",abort:!1,...g(t)})}function Vs(e,t){return new e({type:"string",format:"base64",check:"string_format",abort:!1,...g(t)})}function Qs(e,t){return new e({type:"string",format:"base64url",check:"string_format",abort:!1,...g(t)})}function Xs(e,t){return new e({type:"string",format:"e164",check:"string_format",abort:!1,...g(t)})}function ei(e,t){return new e({type:"string",format:"jwt",check:"string_format",abort:!1,...g(t)})}var ti={Any:null,Minute:-1,Second:0,Millisecond:3,Microsecond:6};function ri(e,t){return new e({type:"string",format:"datetime",check:"string_format",offset:!1,local:!1,precision:null,...g(t)})}function ni(e,t){return new e({type:"string",format:"date",check:"string_format",...g(t)})}function oi(e,t){return new e({type:"string",format:"time",check:"string_format",precision:null,...g(t)})}function si(e,t){return new e({type:"string",format:"duration",check:"string_format",...g(t)})}function ii(e,t){return new e({type:"number",checks:[],...g(t)})}function ai(e,t){return new e({type:"number",coerce:!0,checks:[],...g(t)})}function ci(e,t){return new e({type:"number",check:"number_format",abort:!1,format:"safeint",...g(t)})}function ui(e,t){return new e({type:"number",check:"number_format",abort:!1,format:"float32",...g(t)})}function li(e,t){return new e({type:"number",check:"number_format",abort:!1,format:"float64",...g(t)})}function pi(e,t){return new e({type:"number",check:"number_format",abort:!1,format:"int32",...g(t)})}function fi(e,t){return new e({type:"number",check:"number_format",abort:!1,format:"uint32",...g(t)})}function di(e,t){return new e({type:"boolean",...g(t)})}function mi(e,t){return new e({type:"boolean",coerce:!0,...g(t)})}function hi(e,t){return new e({type:"bigint",...g(t)})}function gi(e,t){return new e({type:"bigint",coerce:!0,...g(t)})}function yi(e,t){return new e({type:"bigint",check:"bigint_format",abort:!1,format:"int64",...g(t)})}function bi(e,t){return new e({type:"bigint",check:"bigint_format",abort:!1,format:"uint64",...g(t)})}function _i(e,t){return new e({type:"symbol",...g(t)})}function wi(e,t){return new e({type:"undefined",...g(t)})}function $i(e,t){return new e({type:"null",...g(t)})}function xi(e){return new e({type:"any"})}function ki(e){return new e({type:"unknown"})}function Si(e,t){return new e({type:"never",...g(t)})}function vi(e,t){return new e({type:"void",...g(t)})}function zi(e,t){return new e({type:"date",...g(t)})}function Ti(e,t){return new e({type:"date",coerce:!0,...g(t)})}function Ii(e,t){return new e({type:"nan",...g(t)})}function hr(e,t){return new er({check:"less_than",...g(t),value:e,inclusive:!1})}function ht(e,t){return new er({check:"less_than",...g(t),value:e,inclusive:!0})}function gr(e,t){return new tr({check:"greater_than",...g(t),value:e,inclusive:!1})}function gt(e,t){return new tr({check:"greater_than",...g(t),value:e,inclusive:!0})}function Pi(e){return gr(0,e)}function Ai(e){return hr(0,e)}function Ei(e){return ht(0,e)}function Ri(e){return gt(0,e)}function Ci(e,t){return new eo({check:"multiple_of",...g(t),value:e})}function Ni(e,t){return new no({check:"max_size",...g(t),maximum:e})}function Oi(e,t){return new oo({check:"min_size",...g(t),minimum:e})}function Li(e,t){return new so({check:"size_equals",...g(t),size:e})}function Zi(e,t){return new io({check:"max_length",...g(t),maximum:e})}function yt(e,t){return new ao({check:"min_length",...g(t),minimum:e})}function ji(e,t){return new co({check:"length_equals",...g(t),length:e})}function bt(e,t){return new uo({check:"string_format",format:"regex",...g(t),pattern:e})}function Di(e){return new lo({check:"string_format",format:"lowercase",...g(e)})}function Mi(e){return new po({check:"string_format",format:"uppercase",...g(e)})}function Bi(e,t){return new fo({check:"string_format",format:"includes",...g(t),includes:e})}function Ui(e,t){return new mo({check:"string_format",format:"starts_with",...g(t),prefix:e})}function Fi(e,t){return new ho({check:"string_format",format:"ends_with",...g(t),suffix:e})}function Hi(e,t,r){return new go({check:"property",property:e,schema:t,...g(r)})}function qi(e,t){return new yo({check:"mime_type",mime:e,...g(t)})}function be(e){return new bo({check:"overwrite",tx:e})}function Ji(e){return be(t=>t.normalize(e))}function Ki(){return be(e=>e.trim())}function Yi(){return be(e=>e.toLowerCase())}function Gi(){return be(e=>e.toUpperCase())}function vd(){return be(e=>tn(e))}function zd(e,t,r){return new e({type:"array",element:t,...g(r)})}function Td(e,t,r){return new e({type:"union",options:t,...g(r)})}function Id(e,t,r){return new e({type:"union",options:t,inclusive:!1,...g(r)})}function Pd(e,t,r,n){return new e({type:"union",options:r,discriminator:t,...g(n)})}function Ad(e,t,r){return new e({type:"intersection",left:t,right:r})}function Ed(e,t,r,n){let o=r instanceof x,s=o?n:r,i=o?r:null;return new e({type:"tuple",items:t,rest:i,...g(s)})}function Rd(e,t,r,n){return new e({type:"record",keyType:t,valueType:r,...g(n)})}function Cd(e,t,r,n){return new e({type:"map",keyType:t,valueType:r,...g(n)})}function Nd(e,t,r){return new e({type:"set",valueType:t,...g(r)})}function Od(e,t,r){let n=Array.isArray(t)?Object.fromEntries(t.map(o=>[o,o])):t;return new e({type:"enum",entries:n,...g(r)})}function Ld(e,t,r){return new e({type:"enum",entries:t,...g(r)})}function Zd(e,t,r){return new e({type:"literal",values:Array.isArray(t)?t:[t],...g(r)})}function Wi(e,t){return new e({type:"file",...g(t)})}function jd(e,t){return new e({type:"transform",transform:t})}function Dd(e,t){return new e({type:"optional",innerType:t})}function Md(e,t){return new e({type:"nullable",innerType:t})}function Bd(e,t,r){return new e({type:"default",innerType:t,get defaultValue(){return typeof r=="function"?r():je(r)}})}function Ud(e,t,r){return new e({type:"nonoptional",innerType:t,...g(r)})}function Fd(e,t){return new e({type:"success",innerType:t})}function Hd(e,t,r){return new e({type:"catch",innerType:t,catchValue:typeof r=="function"?r:()=>r})}function qd(e,t,r){return new e({type:"pipe",in:t,out:r})}function Jd(e,t){return new e({type:"readonly",innerType:t})}function Kd(e,t,r){return new e({type:"template_literal",parts:t,...g(r)})}function Yd(e,t){return new e({type:"lazy",getter:t})}function Gd(e,t){return new e({type:"promise",innerType:t})}function Vi(e,t,r){let n=g(r);return n.abort??(n.abort=!0),new e({type:"custom",check:"custom",fn:t,...n})}function Qi(e,t,r){return new e({type:"custom",check:"custom",fn:t,...g(r)})}function Xi(e){let t=Ac(r=>(r.addIssue=n=>{if(typeof n=="string")r.issues.push(De(n,r.value,t._zod.def));else{let o=n;o.fatal&&(o.continue=!1),o.code??(o.code="custom"),o.input??(o.input=r.value),o.inst??(o.inst=t),o.continue??(o.continue=!t._zod.def.abort),r.issues.push(De(o))}},e(r.value,r)));return t}function Ac(e,t){let r=new A({check:"custom",...g(t)});return r._zod.check=e,r}function ea(e){let t=new A({check:"describe"});return t._zod.onattach=[r=>{let n=ae.get(r)??{};ae.add(r,{...n,description:e})}],t._zod.check=()=>{},t}function ta(e){let t=new A({check:"meta"});return t._zod.onattach=[r=>{let n=ae.get(r)??{};ae.add(r,{...n,...e})}],t._zod.check=()=>{},t}function ra(e,t){let r=g(t),n=r.truthy??["true","1","yes","on","y","enabled"],o=r.falsy??["false","0","no","off","n","disabled"];r.case!=="sensitive"&&(n=n.map(h=>typeof h=="string"?h.toLowerCase():h),o=o.map(h=>typeof h=="string"?h.toLowerCase():h));let s=new Set(n),i=new Set(o),a=e.Codec??dt,u=e.Boolean??pt,l=e.String??Be,p=new l({type:"string",error:r.error}),f=new u({type:"boolean",error:r.error}),m=new a({type:"pipe",in:p,out:f,transform:((h,b)=>{let y=h;return r.case!=="sensitive"&&(y=y.toLowerCase()),s.has(y)?!0:i.has(y)?!1:(b.issues.push({code:"invalid_value",expected:"stringbool",values:[...s,...i],input:b.value,inst:m,continue:!1}),{})}),reverseTransform:((h,b)=>h===!0?n[0]||"true":o[0]||"false"),error:r.error});return m}function Ue(e,t,r,n={}){let o=g(n),s={...g(n),check:"string_format",type:"string",format:t,fn:typeof r=="function"?r:a=>r.test(a),...o};return r instanceof RegExp&&(s.pattern=r),new e(s)}function _e(e){let t=e?.target??"draft-2020-12";return t==="draft-4"&&(t="draft-04"),t==="draft-7"&&(t="draft-07"),{processors:e.processors??{},metadataRegistry:e?.metadata??ae,target:t,unrepresentable:e?.unrepresentable??"throw",override:e?.override??(()=>{}),io:e?.io??"output",counter:0,seen:new Map,cycles:e?.cycles??"ref",reused:e?.reused??"inline",external:e?.external??void 0}}function T(e,t,r={path:[],schemaPath:[]}){var n;let o=e._zod.def,s=t.seen.get(e);if(s)return s.count++,r.schemaPath.includes(e)&&(s.cycle=r.path),s.schema;let i={schema:{},count:1,cycle:void 0,path:r.path};t.seen.set(e,i);let a=e._zod.toJSONSchema?.();if(a)i.schema=a;else{let p={...r,schemaPath:[...r.schemaPath,e],path:r.path};if(e._zod.processJSONSchema)e._zod.processJSONSchema(t,i.schema,p);else{let m=i.schema,h=t.processors[o.type];if(!h)throw new Error(`[toJSONSchema]: Non-representable type encountered: ${o.type}`);h(e,t,m,p)}let f=e._zod.parent;f&&(i.ref||(i.ref=f),T(f,t,p),t.seen.get(f).isParent=!0)}let u=t.metadataRegistry.get(e);return u&&Object.assign(i.schema,u),t.io==="input"&&J(e)&&(delete i.schema.examples,delete i.schema.default),t.io==="input"&&i.schema._prefault&&((n=i.schema).default??(n.default=i.schema._prefault)),delete i.schema._prefault,t.seen.get(e).schema}function we(e,t){let r=e.seen.get(t);if(!r)throw new Error("Unprocessed schema. This is a bug in Zod.");let n=new Map;for(let i of e.seen.entries()){let a=e.metadataRegistry.get(i[0])?.id;if(a){let u=n.get(a);if(u&&u!==i[0])throw new Error(`Duplicate schema id "${a}" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);n.set(a,i[0])}}let o=i=>{let a=e.target==="draft-2020-12"?"$defs":"definitions";if(e.external){let f=e.external.registry.get(i[0])?.id,m=e.external.uri??(b=>b);if(f)return{ref:m(f)};let h=i[1].defId??i[1].schema.id??`schema${e.counter++}`;return i[1].defId=h,{defId:h,ref:`${m("__shared")}#/${a}/${h}`}}if(i[1]===r)return{ref:"#"};let l=`#/${a}/`,p=i[1].schema.id??`__schema${e.counter++}`;return{defId:p,ref:l+p}},s=i=>{if(i[1].schema.$ref)return;let a=i[1],{ref:u,defId:l}=o(i);a.def={...a.schema},l&&(a.defId=l);let p=a.schema;for(let f in p)delete p[f];p.$ref=u};if(e.cycles==="throw")for(let i of e.seen.entries()){let a=i[1];if(a.cycle)throw new Error(`Cycle detected: #/${a.cycle?.join("/")}/<root>
|
|
40
40
|
|
|
41
|
-
Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(let i of e.seen.entries()){let a=i[1];if(t===i[0]){s(i);continue}if(e.external){let l=e.external.registry.get(i[0])?.id;if(t!==i[0]&&l){s(i);continue}}if(e.metadataRegistry.get(i[0])?.id){s(i);continue}if(a.cycle){s(i);continue}if(a.count>1&&e.reused==="ref"){s(i);continue}}}function $e(e,t){let r=e.seen.get(t);if(!r)throw new Error("Unprocessed schema. This is a bug in Zod.");let n=i=>{let a=e.seen.get(i);if(a.ref===null)return;let u=a.def??a.schema,l={...u},p=a.ref;if(a.ref=null,p){n(p);let m=e.seen.get(p),h=m.schema;if(h.$ref&&(e.target==="draft-07"||e.target==="draft-04"||e.target==="openapi-3.0")?(u.allOf=u.allOf??[],u.allOf.push(h)):Object.assign(u,h),Object.assign(u,l),i._zod.parent===p)for(let y in u)y==="$ref"||y==="allOf"||y in l||delete u[y];if(h.$ref&&m.def)for(let y in u)y==="$ref"||y==="allOf"||y in m.def&&JSON.stringify(u[y])===JSON.stringify(m.def[y])&&delete u[y]}let f=i._zod.parent;if(f&&f!==p){n(f);let m=e.seen.get(f);if(m?.schema.$ref&&(u.$ref=m.schema.$ref,m.def))for(let h in u)h==="$ref"||h==="allOf"||h in m.def&&JSON.stringify(u[h])===JSON.stringify(m.def[h])&&delete u[h]}e.override({zodSchema:i,jsonSchema:u,path:a.path??[]})};for(let i of[...e.seen.entries()].reverse())n(i[0]);let o={};if(e.target==="draft-2020-12"?o.$schema="https://json-schema.org/draft/2020-12/schema":e.target==="draft-07"?o.$schema="http://json-schema.org/draft-07/schema#":e.target==="draft-04"?o.$schema="http://json-schema.org/draft-04/schema#":e.target,e.external?.uri){let i=e.external.registry.get(t)?.id;if(!i)throw new Error("Schema is missing an `id` property");o.$id=e.external.uri(i)}Object.assign(o,r.def??r.schema);let s=e.external?.defs??{};for(let i of e.seen.entries()){let a=i[1];a.def&&a.defId&&(s[a.defId]=a.def)}e.external||Object.keys(s).length>0&&(e.target==="draft-2020-12"?o.$defs=s:o.definitions=s);try{let i=JSON.parse(JSON.stringify(o));return Object.defineProperty(i,"~standard",{value:{...t["~standard"],jsonSchema:{input:na(t,"input",e.processors),output:na(t,"output",e.processors)}},enumerable:!1,writable:!1}),i}catch{throw new Error("Error converting schema to JSON.")}}function J(e,t){let r=t??{seen:new Set};if(r.seen.has(e))return!1;r.seen.add(e);let n=e._zod.def;if(n.type==="transform")return!0;if(n.type==="array")return J(n.element,r);if(n.type==="set")return J(n.valueType,r);if(n.type==="lazy")return J(n.getter(),r);if(n.type==="promise"||n.type==="optional"||n.type==="nonoptional"||n.type==="nullable"||n.type==="readonly"||n.type==="default"||n.type==="prefault")return J(n.innerType,r);if(n.type==="intersection")return J(n.left,r)||J(n.right,r);if(n.type==="record"||n.type==="map")return J(n.keyType,r)||J(n.valueType,r);if(n.type==="pipe")return J(n.in,r)||J(n.out,r);if(n.type==="object"){for(let o in n.shape)if(J(n.shape[o],r))return!0;return!1}if(n.type==="union"){for(let o of n.options)if(J(o,r))return!0;return!1}if(n.type==="tuple"){for(let o of n.items)if(J(o,r))return!0;return!!(n.rest&&J(n.rest,r))}return!1}var Wd=(e,t={})=>r=>{let n=_e({...r,processors:t});return T(e,n),we(n,e),$e(n,e)},na=(e,t,r={})=>n=>{let{libraryOptions:o,target:s}=n??{},i=_e({...o??{},target:s,io:t,processors:r});return T(e,i),we(i,e),$e(i,e)};var Vd={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string",regex:""},Qd=(e,t,r,n)=>{let o=r;o.type="string";let{minimum:s,maximum:i,format:a,patterns:u,contentEncoding:l}=e._zod.bag;if(typeof s=="number"&&(o.minLength=s),typeof i=="number"&&(o.maxLength=i),a&&(o.format=Vd[a]??a,o.format===""&&delete o.format,a==="time"&&delete o.format),l&&(o.contentEncoding=l),u&&u.size>0){let p=[...u];p.length===1?o.pattern=p[0].source:p.length>1&&(o.allOf=[...p.map(f=>({...t.target==="draft-07"||t.target==="draft-04"||t.target==="openapi-3.0"?{type:"string"}:{},pattern:f.source}))])}},Xd=(e,t,r,n)=>{let o=r,{minimum:s,maximum:i,format:a,multipleOf:u,exclusiveMaximum:l,exclusiveMinimum:p}=e._zod.bag;typeof a=="string"&&a.includes("int")?o.type="integer":o.type="number",typeof p=="number"&&(t.target==="draft-04"||t.target==="openapi-3.0"?(o.minimum=p,o.exclusiveMinimum=!0):o.exclusiveMinimum=p),typeof s=="number"&&(o.minimum=s,typeof p=="number"&&t.target!=="draft-04"&&(p>=s?delete o.minimum:delete o.exclusiveMinimum)),typeof l=="number"&&(t.target==="draft-04"||t.target==="openapi-3.0"?(o.maximum=l,o.exclusiveMaximum=!0):o.exclusiveMaximum=l),typeof i=="number"&&(o.maximum=i,typeof l=="number"&&t.target!=="draft-04"&&(l<=i?delete o.maximum:delete o.exclusiveMaximum)),typeof u=="number"&&(o.multipleOf=u)},em=(e,t,r,n)=>{r.type="boolean"},tm=(e,t,r,n)=>{if(t.unrepresentable==="throw")throw new Error("BigInt cannot be represented in JSON Schema")},rm=(e,t,r,n)=>{if(t.unrepresentable==="throw")throw new Error("Symbols cannot be represented in JSON Schema")},nm=(e,t,r,n)=>{t.target==="openapi-3.0"?(r.type="string",r.nullable=!0,r.enum=[null]):r.type="null"},om=(e,t,r,n)=>{if(t.unrepresentable==="throw")throw new Error("Undefined cannot be represented in JSON Schema")},sm=(e,t,r,n)=>{if(t.unrepresentable==="throw")throw new Error("Void cannot be represented in JSON Schema")},im=(e,t,r,n)=>{r.not={}},am=(e,t,r,n)=>{},cm=(e,t,r,n)=>{},um=(e,t,r,n)=>{if(t.unrepresentable==="throw")throw new Error("Date cannot be represented in JSON Schema")},lm=(e,t,r,n)=>{let o=e._zod.def,s=nt(o.entries);s.every(i=>typeof i=="number")&&(r.type="number"),s.every(i=>typeof i=="string")&&(r.type="string"),r.enum=s},pm=(e,t,r,n)=>{let o=e._zod.def,s=[];for(let i of o.values)if(i===void 0){if(t.unrepresentable==="throw")throw new Error("Literal `undefined` cannot be represented in JSON Schema")}else if(typeof i=="bigint"){if(t.unrepresentable==="throw")throw new Error("BigInt literals cannot be represented in JSON Schema");s.push(Number(i))}else s.push(i);if(s.length!==0)if(s.length===1){let i=s[0];r.type=i===null?"null":typeof i,t.target==="draft-04"||t.target==="openapi-3.0"?r.enum=[i]:r.const=i}else s.every(i=>typeof i=="number")&&(r.type="number"),s.every(i=>typeof i=="string")&&(r.type="string"),s.every(i=>typeof i=="boolean")&&(r.type="boolean"),s.every(i=>i===null)&&(r.type="null"),r.enum=s},fm=(e,t,r,n)=>{if(t.unrepresentable==="throw")throw new Error("NaN cannot be represented in JSON Schema")},dm=(e,t,r,n)=>{let o=r,s=e._zod.pattern;if(!s)throw new Error("Pattern not found in template literal");o.type="string",o.pattern=s.source},mm=(e,t,r,n)=>{let o=r,s={type:"string",format:"binary",contentEncoding:"binary"},{minimum:i,maximum:a,mime:u}=e._zod.bag;i!==void 0&&(s.minLength=i),a!==void 0&&(s.maxLength=a),u?u.length===1?(s.contentMediaType=u[0],Object.assign(o,s)):(Object.assign(o,s),o.anyOf=u.map(l=>({contentMediaType:l}))):Object.assign(o,s)},hm=(e,t,r,n)=>{r.type="boolean"},gm=(e,t,r,n)=>{if(t.unrepresentable==="throw")throw new Error("Custom types cannot be represented in JSON Schema")},ym=(e,t,r,n)=>{if(t.unrepresentable==="throw")throw new Error("Function types cannot be represented in JSON Schema")},bm=(e,t,r,n)=>{if(t.unrepresentable==="throw")throw new Error("Transforms cannot be represented in JSON Schema")},_m=(e,t,r,n)=>{if(t.unrepresentable==="throw")throw new Error("Map cannot be represented in JSON Schema")},wm=(e,t,r,n)=>{if(t.unrepresentable==="throw")throw new Error("Set cannot be represented in JSON Schema")},$m=(e,t,r,n)=>{let o=r,s=e._zod.def,{minimum:i,maximum:a}=e._zod.bag;typeof i=="number"&&(o.minItems=i),typeof a=="number"&&(o.maxItems=a),o.type="array",o.items=T(s.element,t,{...n,path:[...n.path,"items"]})},km=(e,t,r,n)=>{let o=r,s=e._zod.def;o.type="object",o.properties={};let i=s.shape;for(let l in i)o.properties[l]=T(i[l],t,{...n,path:[...n.path,"properties",l]});let a=new Set(Object.keys(i)),u=new Set([...a].filter(l=>{let p=s.shape[l]._zod;return t.io==="input"?p.optin===void 0:p.optout===void 0}));u.size>0&&(o.required=Array.from(u)),s.catchall?._zod.def.type==="never"?o.additionalProperties=!1:s.catchall?s.catchall&&(o.additionalProperties=T(s.catchall,t,{...n,path:[...n.path,"additionalProperties"]})):t.io==="output"&&(o.additionalProperties=!1)},xm=(e,t,r,n)=>{let o=e._zod.def,s=o.inclusive===!1,i=o.options.map((a,u)=>T(a,t,{...n,path:[...n.path,s?"oneOf":"anyOf",u]}));s?r.oneOf=i:r.anyOf=i},Sm=(e,t,r,n)=>{let o=e._zod.def,s=T(o.left,t,{...n,path:[...n.path,"allOf",0]}),i=T(o.right,t,{...n,path:[...n.path,"allOf",1]}),a=l=>"allOf"in l&&Object.keys(l).length===1,u=[...a(s)?s.allOf:[s],...a(i)?i.allOf:[i]];r.allOf=u},vm=(e,t,r,n)=>{let o=r,s=e._zod.def;o.type="array";let i=t.target==="draft-2020-12"?"prefixItems":"items",a=t.target==="draft-2020-12"||t.target==="openapi-3.0"?"items":"additionalItems",u=s.items.map((m,h)=>T(m,t,{...n,path:[...n.path,i,h]})),l=s.rest?T(s.rest,t,{...n,path:[...n.path,a,...t.target==="openapi-3.0"?[s.items.length]:[]]}):null;t.target==="draft-2020-12"?(o.prefixItems=u,l&&(o.items=l)):t.target==="openapi-3.0"?(o.items={anyOf:u},l&&o.items.anyOf.push(l),o.minItems=u.length,l||(o.maxItems=u.length)):(o.items=u,l&&(o.additionalItems=l));let{minimum:p,maximum:f}=e._zod.bag;typeof p=="number"&&(o.minItems=p),typeof f=="number"&&(o.maxItems=f)},zm=(e,t,r,n)=>{let o=r,s=e._zod.def;o.type="object";let i=s.keyType,u=i._zod.bag?.patterns;if(s.mode==="loose"&&u&&u.size>0){let p=T(s.valueType,t,{...n,path:[...n.path,"patternProperties","*"]});o.patternProperties={};for(let f of u)o.patternProperties[f.source]=p}else(t.target==="draft-07"||t.target==="draft-2020-12")&&(o.propertyNames=T(s.keyType,t,{...n,path:[...n.path,"propertyNames"]})),o.additionalProperties=T(s.valueType,t,{...n,path:[...n.path,"additionalProperties"]});let l=i._zod.values;if(l){let p=[...l].filter(f=>typeof f=="string"||typeof f=="number");p.length>0&&(o.required=p)}},Tm=(e,t,r,n)=>{let o=e._zod.def,s=T(o.innerType,t,n),i=t.seen.get(e);t.target==="openapi-3.0"?(i.ref=o.innerType,r.nullable=!0):r.anyOf=[s,{type:"null"}]},Im=(e,t,r,n)=>{let o=e._zod.def;T(o.innerType,t,n);let s=t.seen.get(e);s.ref=o.innerType},Pm=(e,t,r,n)=>{let o=e._zod.def;T(o.innerType,t,n);let s=t.seen.get(e);s.ref=o.innerType,r.default=JSON.parse(JSON.stringify(o.defaultValue))},Am=(e,t,r,n)=>{let o=e._zod.def;T(o.innerType,t,n);let s=t.seen.get(e);s.ref=o.innerType,t.io==="input"&&(r._prefault=JSON.parse(JSON.stringify(o.defaultValue)))},Em=(e,t,r,n)=>{let o=e._zod.def;T(o.innerType,t,n);let s=t.seen.get(e);s.ref=o.innerType;let i;try{i=o.catchValue(void 0)}catch{throw new Error("Dynamic catch values are not supported in JSON Schema")}r.default=i},Rm=(e,t,r,n)=>{let o=e._zod.def,s=t.io==="input"?o.in._zod.def.type==="transform"?o.out:o.in:o.out;T(s,t,n);let i=t.seen.get(e);i.ref=s},Cm=(e,t,r,n)=>{let o=e._zod.def;T(o.innerType,t,n);let s=t.seen.get(e);s.ref=o.innerType,r.readOnly=!0},Nm=(e,t,r,n)=>{let o=e._zod.def;T(o.innerType,t,n);let s=t.seen.get(e);s.ref=o.innerType},Om=(e,t,r,n)=>{let o=e._zod.def;T(o.innerType,t,n);let s=t.seen.get(e);s.ref=o.innerType},Lm=(e,t,r,n)=>{let o=e._zod.innerType;T(o,t,n);let s=t.seen.get(e);s.ref=o},yr={string:Qd,number:Xd,boolean:em,bigint:tm,symbol:rm,null:nm,undefined:om,void:sm,never:im,any:am,unknown:cm,date:um,enum:lm,literal:pm,nan:fm,template_literal:dm,file:mm,success:hm,custom:gm,function:ym,transform:bm,map:_m,set:wm,array:$m,object:km,union:xm,intersection:Sm,tuple:vm,record:zm,nullable:Tm,nonoptional:Im,default:Pm,prefault:Am,catch:Em,pipe:Rm,readonly:Cm,promise:Nm,optional:Om,lazy:Lm};function br(e,t){if("_idmap"in e){let n=e,o=_e({...t,processors:yr}),s={};for(let u of n._idmap.entries()){let[l,p]=u;T(p,o)}let i={},a={registry:n,uri:t?.uri,defs:s};o.external=a;for(let u of n._idmap.entries()){let[l,p]=u;we(o,p),i[l]=$e(o,p)}if(Object.keys(s).length>0){let u=o.target==="draft-2020-12"?"$defs":"definitions";i.__shared={[u]:s}}return{schemas:i}}let r=_e({...t,processors:yr});return T(e,r),we(r,e),$e(r,e)}var _r=class{get metadataRegistry(){return this.ctx.metadataRegistry}get target(){return this.ctx.target}get unrepresentable(){return this.ctx.unrepresentable}get override(){return this.ctx.override}get io(){return this.ctx.io}get counter(){return this.ctx.counter}set counter(t){this.ctx.counter=t}get seen(){return this.ctx.seen}constructor(t){let r=t?.target??"draft-2020-12";r==="draft-4"&&(r="draft-04"),r==="draft-7"&&(r="draft-07"),this.ctx=_e({processors:yr,target:r,...t?.metadata&&{metadata:t.metadata},...t?.unrepresentable&&{unrepresentable:t.unrepresentable},...t?.override&&{override:t.override},...t?.io&&{io:t.io}})}process(t,r={path:[],schemaPath:[]}){return T(t,this.ctx,r)}emit(t,r){r&&(r.cycles&&(this.ctx.cycles=r.cycles),r.reused&&(this.ctx.reused=r.reused),r.external&&(this.ctx.external=r.external)),we(this.ctx,t);let n=$e(this.ctx,t),{"~standard":o,...s}=n;return s}};var Ec={};var S=d("ZodMiniType",(e,t)=>{if(!e._zod)throw new Error("Uninitialized schema in ZodMiniType.");k.init(e,t),e.def=t,e.type=t.type,e.parse=(r,n)=>ge(e,r,n,{callee:e.parse}),e.safeParse=(r,n)=>Te(e,r,n),e.parseAsync=async(r,n)=>ye(e,r,n,{callee:e.parseAsync}),e.safeParseAsync=async(r,n)=>Ie(e,r,n),e.check=(...r)=>e.clone({...t,checks:[...t.checks??[],...r.map(n=>typeof n=="function"?{_zod:{check:n,def:{check:"custom"},onattach:[]}}:n)]},{parent:!0}),e.with=e.check,e.clone=(r,n)=>q(e,r,n),e.brand=()=>e,e.register=((r,n)=>(r.add(e,n),e)),e.apply=r=>r(e)}),He=d("ZodMiniString",(e,t)=>{Be.init(e,t),S.init(e,t)});function _(e){return Es(He,e)}var E=d("ZodMiniStringFormat",(e,t)=>{P.init(e,t),He.init(e,t)}),Rc=d("ZodMiniEmail",(e,t)=>{xo.init(e,t),E.init(e,t)});function jm(e){return Cs(Rc,e)}var Cc=d("ZodMiniGUID",(e,t)=>{$o.init(e,t),E.init(e,t)});function Dm(e){return Ns(Cc,e)}var _t=d("ZodMiniUUID",(e,t)=>{ko.init(e,t),E.init(e,t)});function Mm(e){return Os(_t,e)}function Bm(e){return Ls(_t,e)}function Um(e){return Zs(_t,e)}function Fm(e){return js(_t,e)}var oa=d("ZodMiniURL",(e,t)=>{So.init(e,t),E.init(e,t)});function Hm(e){return mr(oa,e)}function qm(e){return mr(oa,{protocol:/^https?$/,hostname:re.domain,...g(e)})}var Nc=d("ZodMiniEmoji",(e,t)=>{vo.init(e,t),E.init(e,t)});function Jm(e){return Ds(Nc,e)}var Oc=d("ZodMiniNanoID",(e,t)=>{zo.init(e,t),E.init(e,t)});function Km(e){return Ms(Oc,e)}var Lc=d("ZodMiniCUID",(e,t)=>{To.init(e,t),E.init(e,t)});function Ym(e){return Bs(Lc,e)}var Zc=d("ZodMiniCUID2",(e,t)=>{Io.init(e,t),E.init(e,t)});function Gm(e){return Us(Zc,e)}var jc=d("ZodMiniULID",(e,t)=>{Po.init(e,t),E.init(e,t)});function Wm(e){return Fs(jc,e)}var Dc=d("ZodMiniXID",(e,t)=>{Ao.init(e,t),E.init(e,t)});function Vm(e){return Hs(Dc,e)}var Mc=d("ZodMiniKSUID",(e,t)=>{Eo.init(e,t),E.init(e,t)});function Qm(e){return qs(Mc,e)}var Bc=d("ZodMiniIPv4",(e,t)=>{Lo.init(e,t),E.init(e,t)});function Xm(e){return Js(Bc,e)}var Uc=d("ZodMiniIPv6",(e,t)=>{Zo.init(e,t),E.init(e,t)});function eh(e){return Ks(Uc,e)}var Fc=d("ZodMiniCIDRv4",(e,t)=>{Do.init(e,t),E.init(e,t)});function th(e){return Gs(Fc,e)}var Hc=d("ZodMiniCIDRv6",(e,t)=>{Mo.init(e,t),E.init(e,t)});function rh(e){return Ws(Hc,e)}var qc=d("ZodMiniMAC",(e,t)=>{jo.init(e,t),E.init(e,t)});function nh(e){return Ys(qc,e)}var Jc=d("ZodMiniBase64",(e,t)=>{Uo.init(e,t),E.init(e,t)});function oh(e){return Vs(Jc,e)}var Kc=d("ZodMiniBase64URL",(e,t)=>{Fo.init(e,t),E.init(e,t)});function sh(e){return Qs(Kc,e)}var Yc=d("ZodMiniE164",(e,t)=>{Ho.init(e,t),E.init(e,t)});function ih(e){return Xs(Yc,e)}var Gc=d("ZodMiniJWT",(e,t)=>{qo.init(e,t),E.init(e,t)});function ah(e){return ei(Gc,e)}var wt=d("ZodMiniCustomStringFormat",(e,t)=>{Jo.init(e,t),E.init(e,t)});function ch(e,t,r={}){return Ue(wt,e,t,r)}function uh(e){return Ue(wt,"hostname",re.hostname,e)}function lh(e){return Ue(wt,"hex",re.hex,e)}function ph(e,t){let r=t?.enc??"hex",n=`${e}_${r}`,o=re[n];if(!o)throw new Error(`Unrecognized hash format: ${n}`);return Ue(wt,n,o,t)}var $t=d("ZodMiniNumber",(e,t)=>{ar.init(e,t),S.init(e,t)});function ke(e){return ii($t,e)}var qe=d("ZodMiniNumberFormat",(e,t)=>{Ko.init(e,t),$t.init(e,t)});function fh(e){return ci(qe,e)}function dh(e){return ui(qe,e)}function mh(e){return li(qe,e)}function hh(e){return pi(qe,e)}function gh(e){return fi(qe,e)}var kt=d("ZodMiniBoolean",(e,t)=>{pt.init(e,t),S.init(e,t)});function Je(e){return di(kt,e)}var xt=d("ZodMiniBigInt",(e,t)=>{cr.init(e,t),S.init(e,t)});function yh(e){return hi(xt,e)}var sa=d("ZodMiniBigIntFormat",(e,t)=>{Yo.init(e,t),xt.init(e,t)});function bh(e){return yi(sa,e)}function _h(e){return bi(sa,e)}var Wc=d("ZodMiniSymbol",(e,t)=>{Go.init(e,t),S.init(e,t)});function wh(e){return _i(Wc,e)}var Vc=d("ZodMiniUndefined",(e,t)=>{Wo.init(e,t),S.init(e,t)});function $h(e){return wi(Vc,e)}var Qc=d("ZodMiniNull",(e,t)=>{Vo.init(e,t),S.init(e,t)});function Xc(e){return $i(Qc,e)}var eu=d("ZodMiniAny",(e,t)=>{Qo.init(e,t),S.init(e,t)});function kh(){return ki(eu)}var tu=d("ZodMiniUnknown",(e,t)=>{Xo.init(e,t),S.init(e,t)});function wr(){return xi(tu)}var ru=d("ZodMiniNever",(e,t)=>{es.init(e,t),S.init(e,t)});function nu(e){return Si(ru,e)}var ou=d("ZodMiniVoid",(e,t)=>{ts.init(e,t),S.init(e,t)});function xh(e){return vi(ou,e)}var $r=d("ZodMiniDate",(e,t)=>{rs.init(e,t),S.init(e,t)});function Sh(e){return zi($r,e)}var su=d("ZodMiniArray",(e,t)=>{ns.init(e,t),S.init(e,t)});function K(e,t){return new su({type:"array",element:e,...g(t)})}function vh(e){let t=e._zod.def.shape;return hu(Object.keys(t))}var kr=d("ZodMiniObject",(e,t)=>{ur.init(e,t),S.init(e,t),x(e,"shape",()=>t.shape)});function I(e,t){let r={type:"object",shape:e??{},...g(t)};return new kr(r)}function zh(e,t){return new kr({type:"object",shape:e,catchall:nu(),...g(t)})}function Th(e,t){return new kr({type:"object",shape:e,catchall:wr(),...g(t)})}function xe(e,t){return Kt(e,t)}function Ih(e,t){return ln(e,t)}function Ph(e,t){return Kt(e,t)}function Ah(e,t){return cn(e,t)}function Eh(e,t){return un(e,t)}function Rh(e,t){return pn(ca,e,t)}function Ch(e,t){return fn(ua,e,t)}function Nh(e,t){return e.clone({...e._zod.def,catchall:t})}var ia=d("ZodMiniUnion",(e,t)=>{ft.init(e,t),S.init(e,t)});function iu(e,t){return new ia({type:"union",options:e,...g(t)})}var au=d("ZodMiniXor",(e,t)=>{ia.init(e,t),os.init(e,t)});function Oh(e,t){return new au({type:"union",options:e,inclusive:!1,...g(t)})}var cu=d("ZodMiniDiscriminatedUnion",(e,t)=>{ss.init(e,t),S.init(e,t)});function Lh(e,t,r){return new cu({type:"union",options:t,discriminator:e,...g(r)})}var uu=d("ZodMiniIntersection",(e,t)=>{is.init(e,t),S.init(e,t)});function Zh(e,t){return new uu({type:"intersection",left:e,right:t})}var lu=d("ZodMiniTuple",(e,t)=>{lr.init(e,t),S.init(e,t)});function pu(e,t,r){let n=t instanceof k,o=n?r:t,s=n?t:null;return new lu({type:"tuple",items:e,rest:s,...g(o)})}var xr=d("ZodMiniRecord",(e,t)=>{as.init(e,t),S.init(e,t)});function fu(e,t,r){return new xr({type:"record",keyType:e,valueType:t,...g(r)})}function jh(e,t,r){let n=q(e);return n._zod.values=void 0,new xr({type:"record",keyType:n,valueType:t,...g(r)})}function Dh(e,t,r){return new xr({type:"record",keyType:e,valueType:t,mode:"loose",...g(r)})}var du=d("ZodMiniMap",(e,t)=>{cs.init(e,t),S.init(e,t)});function Mh(e,t,r){return new du({type:"map",keyType:e,valueType:t,...g(r)})}var mu=d("ZodMiniSet",(e,t)=>{us.init(e,t),S.init(e,t)});function Bh(e,t){return new mu({type:"set",valueType:e,...g(t)})}var aa=d("ZodMiniEnum",(e,t)=>{ls.init(e,t),S.init(e,t),e.options=Object.values(t.entries)});function hu(e,t){let r=Array.isArray(e)?Object.fromEntries(e.map(n=>[n,n])):e;return new aa({type:"enum",entries:r,...g(t)})}function Uh(e,t){return new aa({type:"enum",entries:e,...g(t)})}var gu=d("ZodMiniLiteral",(e,t)=>{ps.init(e,t),S.init(e,t)});function Fh(e,t){return new gu({type:"literal",values:Array.isArray(e)?e:[e],...g(t)})}var yu=d("ZodMiniFile",(e,t)=>{fs.init(e,t),S.init(e,t)});function Hh(e){return Wi(yu,e)}var bu=d("ZodMiniTransform",(e,t)=>{ds.init(e,t),S.init(e,t)});function qh(e){return new bu({type:"transform",transform:e})}var ca=d("ZodMiniOptional",(e,t)=>{pr.init(e,t),S.init(e,t)});function w(e){return new ca({type:"optional",innerType:e})}var _u=d("ZodMiniExactOptional",(e,t)=>{ms.init(e,t),S.init(e,t)});function Jh(e){return new _u({type:"optional",innerType:e})}var wu=d("ZodMiniNullable",(e,t)=>{hs.init(e,t),S.init(e,t)});function Sr(e){return new wu({type:"nullable",innerType:e})}function Kh(e){return w(Sr(e))}var $u=d("ZodMiniDefault",(e,t)=>{gs.init(e,t),S.init(e,t)});function Yh(e,t){return new $u({type:"default",innerType:e,get defaultValue(){return typeof t=="function"?t():je(t)}})}var ku=d("ZodMiniPrefault",(e,t)=>{ys.init(e,t),S.init(e,t)});function Gh(e,t){return new ku({type:"prefault",innerType:e,get defaultValue(){return typeof t=="function"?t():je(t)}})}var ua=d("ZodMiniNonOptional",(e,t)=>{bs.init(e,t),S.init(e,t)});function Wh(e,t){return new ua({type:"nonoptional",innerType:e,...g(t)})}var xu=d("ZodMiniSuccess",(e,t)=>{_s.init(e,t),S.init(e,t)});function Vh(e){return new xu({type:"success",innerType:e})}var Su=d("ZodMiniCatch",(e,t)=>{ws.init(e,t),S.init(e,t)});function Qh(e,t){return new Su({type:"catch",innerType:e,catchValue:typeof t=="function"?t:()=>t})}var vu=d("ZodMiniNaN",(e,t)=>{$s.init(e,t),S.init(e,t)});function Xh(e){return Ii(vu,e)}var la=d("ZodMiniPipe",(e,t)=>{ks.init(e,t),S.init(e,t)});function eg(e,t){return new la({type:"pipe",in:e,out:t})}var pa=d("ZodMiniCodec",(e,t)=>{la.init(e,t),dt.init(e,t)});function tg(e,t,r){return new pa({type:"pipe",in:e,out:t,transform:r.decode,reverseTransform:r.encode})}var zu=d("ZodMiniReadonly",(e,t)=>{xs.init(e,t),S.init(e,t)});function rg(e){return new zu({type:"readonly",innerType:e})}var Tu=d("ZodMiniTemplateLiteral",(e,t)=>{Ss.init(e,t),S.init(e,t)});function ng(e,t){return new Tu({type:"template_literal",parts:e,...g(t)})}var Iu=d("ZodMiniLazy",(e,t)=>{Ts.init(e,t),S.init(e,t)});function Pu(e){return new Iu({type:"lazy",getter:e})}var Au=d("ZodMiniPromise",(e,t)=>{zs.init(e,t),S.init(e,t)});function og(e){return new Au({type:"promise",innerType:e})}var fa=d("ZodMiniCustom",(e,t)=>{Is.init(e,t),S.init(e,t)});function sg(e,t){let r=new A({check:"custom",...g(t)});return r._zod.check=e,r}function Eu(e,t){return Vi(fa,e??(()=>!0),t)}function ig(e,t={}){return Qi(fa,e,t)}function ag(e){return Xi(e)}var cg=ea,ug=ta;function lg(e,t={}){let r=Eu(n=>n instanceof e,t);return r._zod.bag.Class=e,r._zod.check=n=>{n.value instanceof e||n.issues.push({code:"invalid_type",expected:e.name,input:n.value,inst:r,path:[...r._zod.def.path??[]]})},r}var pg=(...e)=>ra({Codec:pa,Boolean:kt,String:He},...e);function fg(){let e=Pu(()=>iu([_(),ke(),Je(),Xc(),K(e),fu(_(),e)]));return e}var Ru=d("ZodMiniFunction",(e,t)=>{vs.init(e,t),S.init(e,t)});function dg(e){return new Ru({type:"function",input:Array.isArray(e?.input)?pu(e?.input):e?.input??K(wr()),output:e?.output??wr()})}var da={};ve(da,{ZodMiniISODate:()=>zr,ZodMiniISODateTime:()=>vr,ZodMiniISODuration:()=>Ir,ZodMiniISOTime:()=>Tr,date:()=>hg,datetime:()=>mg,duration:()=>yg,time:()=>gg});var vr=d("ZodMiniISODateTime",(e,t)=>{Ro.init(e,t),E.init(e,t)});function mg(e){return ri(vr,e)}var zr=d("ZodMiniISODate",(e,t)=>{Co.init(e,t),E.init(e,t)});function hg(e){return ni(zr,e)}var Tr=d("ZodMiniISOTime",(e,t)=>{No.init(e,t),E.init(e,t)});function gg(e){return oi(Tr,e)}var Ir=d("ZodMiniISODuration",(e,t)=>{Oo.init(e,t),E.init(e,t)});function yg(e){return si(Ir,e)}var ma={};ve(ma,{bigint:()=>$g,boolean:()=>wg,date:()=>kg,number:()=>_g,string:()=>bg});function bg(e){return Rs(He,e)}function _g(e){return ai($t,e)}function wg(e){return mi(kt,e)}function $g(e){return gi(xt,e)}function kg(e){return Ti($r,e)}var X=_().check(yt(1)),xg=_().check(bt(/^https?:\/\/.+/)),Ke=I({CLANCY_BASE_BRANCH:w(_()),CLANCY_LABEL:w(_()),CLANCY_MODEL:w(_()),CLANCY_NOTIFY_WEBHOOK:w(_()),CLANCY_STATUS_IN_PROGRESS:w(_()),CLANCY_STATUS_DONE:w(_()),CLANCY_STATUS_REVIEW:w(_()),MAX_ITERATIONS:w(_()),PLAYWRIGHT_ENABLED:w(_()),PLAYWRIGHT_DEV_PORT:w(_()),CLANCY_ROLES:w(_()),CLANCY_PLAN_STATUS:w(_()),CLANCY_PLAN_LABEL:w(_()),CLANCY_PLAN_STATE_TYPE:w(_()),CLANCY_STATUS_PLANNED:w(_()),CLANCY_SKIP_COMMENTS:w(_()),GITHUB_TOKEN:w(_()),GITLAB_TOKEN:w(_()),BITBUCKET_USER:w(_()),BITBUCKET_TOKEN:w(_()),CLANCY_GIT_PLATFORM:w(_()),CLANCY_GIT_API_URL:w(_()),CLANCY_MAX_REWORK:w(_()),CLANCY_TDD:w(_()),CLANCY_MODE:w(_()),CLANCY_BRIEF_ISSUE_TYPE:w(_()),CLANCY_BRIEF_EPIC:w(_()),CLANCY_COMPONENT:w(_()),CLANCY_FIX_RETRIES:w(_()),CLANCY_VERIFY_COMMANDS:w(_()),CLANCY_TOKEN_RATE:w(_()),CLANCY_TIME_LIMIT:w(_()),CLANCY_BRANCH_GUARD:w(_()),CLANCY_LABEL_BRIEF:w(_()),CLANCY_LABEL_PLAN:w(_()),CLANCY_LABEL_BUILD:w(_())}),Nu=xe(Ke,{JIRA_BASE_URL:xg,JIRA_USER:X,JIRA_API_TOKEN:X,JIRA_PROJECT_KEY:X,CLANCY_JQL_STATUS:w(_()),CLANCY_JQL_SPRINT:w(_())}),Ou=xe(Ke,{GITHUB_TOKEN:X,GITHUB_REPO:X}),Lu=xe(Ke,{LINEAR_API_KEY:X,LINEAR_TEAM_ID:X}),Zu=xe(Ke,{SHORTCUT_API_TOKEN:X,SHORTCUT_WORKFLOW:w(_())}),ju=xe(Ke,{NOTION_TOKEN:X,NOTION_DATABASE_ID:X,CLANCY_NOTION_STATUS:w(_()),CLANCY_NOTION_ASSIGNEE:w(_()),CLANCY_NOTION_LABELS:w(_()),CLANCY_NOTION_PARENT:w(_())}),Du=xe(Ke,{AZDO_ORG:X,AZDO_PROJECT:X,AZDO_PAT:X,CLANCY_AZDO_STATUS:w(_()),CLANCY_AZDO_WIT:w(_())});function Pr(e){if(e.JIRA_BASE_URL){let t=Nu.safeParse(e);return t.success?{provider:"jira",env:t.data}:`\u2717 Jira env validation failed: ${t.error.message}`}if(e.GITHUB_TOKEN&&e.GITHUB_REPO){let t=Ou.safeParse(e);return t.success?{provider:"github",env:t.data}:`\u2717 GitHub env validation failed: ${t.error.message}`}if(e.LINEAR_API_KEY){let t=Lu.safeParse(e);return t.success?{provider:"linear",env:t.data}:`\u2717 Linear env validation failed: ${t.error.message}`}if(e.SHORTCUT_API_TOKEN){let t=Zu.safeParse(e);return t.success?{provider:"shortcut",env:t.data}:`\u2717 Shortcut env validation failed: ${t.error.message}`}if(e.NOTION_DATABASE_ID){let t=ju.safeParse(e);return t.success?{provider:"notion",env:t.data}:`\u2717 Notion env validation failed: ${t.error.message}`}if(e.AZDO_ORG){let t=Du.safeParse(e);return t.success?{provider:"azdo",env:t.data}:`\u2717 Azure DevOps env validation failed: ${t.error.message}`}return"\u2717 No board detected \u2014 set Jira, GitHub, Linear, Shortcut, Notion, or Azure DevOps credentials in .clancy/.env"}function Z(e){return e.env}import{appendFileSync as Mu,mkdirSync as Sg,readFileSync as vg}from"node:fs";import{dirname as zg,join as Bu}from"node:path";function Tg(e){let t=e.getUTCFullYear(),r=String(e.getUTCMonth()+1).padStart(2,"0"),n=String(e.getUTCDate()).padStart(2,"0"),o=String(e.getUTCHours()).padStart(2,"0"),s=String(e.getUTCMinutes()).padStart(2,"0");return`${t}-${r}-${n} ${o}:${s}`}function R(e,t,r,n,o,s){let i=Bu(e,".clancy","progress.txt");Sg(zg(i),{recursive:!0});let a=Tg(new Date);if(n==="BRIEF"||n==="APPROVE_BRIEF"){let f=`${a} | ${n} | ${t} | ${r}
|
|
41
|
+
Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(let i of e.seen.entries()){let a=i[1];if(t===i[0]){s(i);continue}if(e.external){let l=e.external.registry.get(i[0])?.id;if(t!==i[0]&&l){s(i);continue}}if(e.metadataRegistry.get(i[0])?.id){s(i);continue}if(a.cycle){s(i);continue}if(a.count>1&&e.reused==="ref"){s(i);continue}}}function $e(e,t){let r=e.seen.get(t);if(!r)throw new Error("Unprocessed schema. This is a bug in Zod.");let n=i=>{let a=e.seen.get(i);if(a.ref===null)return;let u=a.def??a.schema,l={...u},p=a.ref;if(a.ref=null,p){n(p);let m=e.seen.get(p),h=m.schema;if(h.$ref&&(e.target==="draft-07"||e.target==="draft-04"||e.target==="openapi-3.0")?(u.allOf=u.allOf??[],u.allOf.push(h)):Object.assign(u,h),Object.assign(u,l),i._zod.parent===p)for(let y in u)y==="$ref"||y==="allOf"||y in l||delete u[y];if(h.$ref&&m.def)for(let y in u)y==="$ref"||y==="allOf"||y in m.def&&JSON.stringify(u[y])===JSON.stringify(m.def[y])&&delete u[y]}let f=i._zod.parent;if(f&&f!==p){n(f);let m=e.seen.get(f);if(m?.schema.$ref&&(u.$ref=m.schema.$ref,m.def))for(let h in u)h==="$ref"||h==="allOf"||h in m.def&&JSON.stringify(u[h])===JSON.stringify(m.def[h])&&delete u[h]}e.override({zodSchema:i,jsonSchema:u,path:a.path??[]})};for(let i of[...e.seen.entries()].reverse())n(i[0]);let o={};if(e.target==="draft-2020-12"?o.$schema="https://json-schema.org/draft/2020-12/schema":e.target==="draft-07"?o.$schema="http://json-schema.org/draft-07/schema#":e.target==="draft-04"?o.$schema="http://json-schema.org/draft-04/schema#":e.target,e.external?.uri){let i=e.external.registry.get(t)?.id;if(!i)throw new Error("Schema is missing an `id` property");o.$id=e.external.uri(i)}Object.assign(o,r.def??r.schema);let s=e.external?.defs??{};for(let i of e.seen.entries()){let a=i[1];a.def&&a.defId&&(s[a.defId]=a.def)}e.external||Object.keys(s).length>0&&(e.target==="draft-2020-12"?o.$defs=s:o.definitions=s);try{let i=JSON.parse(JSON.stringify(o));return Object.defineProperty(i,"~standard",{value:{...t["~standard"],jsonSchema:{input:na(t,"input",e.processors),output:na(t,"output",e.processors)}},enumerable:!1,writable:!1}),i}catch{throw new Error("Error converting schema to JSON.")}}function J(e,t){let r=t??{seen:new Set};if(r.seen.has(e))return!1;r.seen.add(e);let n=e._zod.def;if(n.type==="transform")return!0;if(n.type==="array")return J(n.element,r);if(n.type==="set")return J(n.valueType,r);if(n.type==="lazy")return J(n.getter(),r);if(n.type==="promise"||n.type==="optional"||n.type==="nonoptional"||n.type==="nullable"||n.type==="readonly"||n.type==="default"||n.type==="prefault")return J(n.innerType,r);if(n.type==="intersection")return J(n.left,r)||J(n.right,r);if(n.type==="record"||n.type==="map")return J(n.keyType,r)||J(n.valueType,r);if(n.type==="pipe")return J(n.in,r)||J(n.out,r);if(n.type==="object"){for(let o in n.shape)if(J(n.shape[o],r))return!0;return!1}if(n.type==="union"){for(let o of n.options)if(J(o,r))return!0;return!1}if(n.type==="tuple"){for(let o of n.items)if(J(o,r))return!0;return!!(n.rest&&J(n.rest,r))}return!1}var Wd=(e,t={})=>r=>{let n=_e({...r,processors:t});return T(e,n),we(n,e),$e(n,e)},na=(e,t,r={})=>n=>{let{libraryOptions:o,target:s}=n??{},i=_e({...o??{},target:s,io:t,processors:r});return T(e,i),we(i,e),$e(i,e)};var Vd={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string",regex:""},Qd=(e,t,r,n)=>{let o=r;o.type="string";let{minimum:s,maximum:i,format:a,patterns:u,contentEncoding:l}=e._zod.bag;if(typeof s=="number"&&(o.minLength=s),typeof i=="number"&&(o.maxLength=i),a&&(o.format=Vd[a]??a,o.format===""&&delete o.format,a==="time"&&delete o.format),l&&(o.contentEncoding=l),u&&u.size>0){let p=[...u];p.length===1?o.pattern=p[0].source:p.length>1&&(o.allOf=[...p.map(f=>({...t.target==="draft-07"||t.target==="draft-04"||t.target==="openapi-3.0"?{type:"string"}:{},pattern:f.source}))])}},Xd=(e,t,r,n)=>{let o=r,{minimum:s,maximum:i,format:a,multipleOf:u,exclusiveMaximum:l,exclusiveMinimum:p}=e._zod.bag;typeof a=="string"&&a.includes("int")?o.type="integer":o.type="number",typeof p=="number"&&(t.target==="draft-04"||t.target==="openapi-3.0"?(o.minimum=p,o.exclusiveMinimum=!0):o.exclusiveMinimum=p),typeof s=="number"&&(o.minimum=s,typeof p=="number"&&t.target!=="draft-04"&&(p>=s?delete o.minimum:delete o.exclusiveMinimum)),typeof l=="number"&&(t.target==="draft-04"||t.target==="openapi-3.0"?(o.maximum=l,o.exclusiveMaximum=!0):o.exclusiveMaximum=l),typeof i=="number"&&(o.maximum=i,typeof l=="number"&&t.target!=="draft-04"&&(l<=i?delete o.maximum:delete o.exclusiveMaximum)),typeof u=="number"&&(o.multipleOf=u)},em=(e,t,r,n)=>{r.type="boolean"},tm=(e,t,r,n)=>{if(t.unrepresentable==="throw")throw new Error("BigInt cannot be represented in JSON Schema")},rm=(e,t,r,n)=>{if(t.unrepresentable==="throw")throw new Error("Symbols cannot be represented in JSON Schema")},nm=(e,t,r,n)=>{t.target==="openapi-3.0"?(r.type="string",r.nullable=!0,r.enum=[null]):r.type="null"},om=(e,t,r,n)=>{if(t.unrepresentable==="throw")throw new Error("Undefined cannot be represented in JSON Schema")},sm=(e,t,r,n)=>{if(t.unrepresentable==="throw")throw new Error("Void cannot be represented in JSON Schema")},im=(e,t,r,n)=>{r.not={}},am=(e,t,r,n)=>{},cm=(e,t,r,n)=>{},um=(e,t,r,n)=>{if(t.unrepresentable==="throw")throw new Error("Date cannot be represented in JSON Schema")},lm=(e,t,r,n)=>{let o=e._zod.def,s=nt(o.entries);s.every(i=>typeof i=="number")&&(r.type="number"),s.every(i=>typeof i=="string")&&(r.type="string"),r.enum=s},pm=(e,t,r,n)=>{let o=e._zod.def,s=[];for(let i of o.values)if(i===void 0){if(t.unrepresentable==="throw")throw new Error("Literal `undefined` cannot be represented in JSON Schema")}else if(typeof i=="bigint"){if(t.unrepresentable==="throw")throw new Error("BigInt literals cannot be represented in JSON Schema");s.push(Number(i))}else s.push(i);if(s.length!==0)if(s.length===1){let i=s[0];r.type=i===null?"null":typeof i,t.target==="draft-04"||t.target==="openapi-3.0"?r.enum=[i]:r.const=i}else s.every(i=>typeof i=="number")&&(r.type="number"),s.every(i=>typeof i=="string")&&(r.type="string"),s.every(i=>typeof i=="boolean")&&(r.type="boolean"),s.every(i=>i===null)&&(r.type="null"),r.enum=s},fm=(e,t,r,n)=>{if(t.unrepresentable==="throw")throw new Error("NaN cannot be represented in JSON Schema")},dm=(e,t,r,n)=>{let o=r,s=e._zod.pattern;if(!s)throw new Error("Pattern not found in template literal");o.type="string",o.pattern=s.source},mm=(e,t,r,n)=>{let o=r,s={type:"string",format:"binary",contentEncoding:"binary"},{minimum:i,maximum:a,mime:u}=e._zod.bag;i!==void 0&&(s.minLength=i),a!==void 0&&(s.maxLength=a),u?u.length===1?(s.contentMediaType=u[0],Object.assign(o,s)):(Object.assign(o,s),o.anyOf=u.map(l=>({contentMediaType:l}))):Object.assign(o,s)},hm=(e,t,r,n)=>{r.type="boolean"},gm=(e,t,r,n)=>{if(t.unrepresentable==="throw")throw new Error("Custom types cannot be represented in JSON Schema")},ym=(e,t,r,n)=>{if(t.unrepresentable==="throw")throw new Error("Function types cannot be represented in JSON Schema")},bm=(e,t,r,n)=>{if(t.unrepresentable==="throw")throw new Error("Transforms cannot be represented in JSON Schema")},_m=(e,t,r,n)=>{if(t.unrepresentable==="throw")throw new Error("Map cannot be represented in JSON Schema")},wm=(e,t,r,n)=>{if(t.unrepresentable==="throw")throw new Error("Set cannot be represented in JSON Schema")},$m=(e,t,r,n)=>{let o=r,s=e._zod.def,{minimum:i,maximum:a}=e._zod.bag;typeof i=="number"&&(o.minItems=i),typeof a=="number"&&(o.maxItems=a),o.type="array",o.items=T(s.element,t,{...n,path:[...n.path,"items"]})},xm=(e,t,r,n)=>{let o=r,s=e._zod.def;o.type="object",o.properties={};let i=s.shape;for(let l in i)o.properties[l]=T(i[l],t,{...n,path:[...n.path,"properties",l]});let a=new Set(Object.keys(i)),u=new Set([...a].filter(l=>{let p=s.shape[l]._zod;return t.io==="input"?p.optin===void 0:p.optout===void 0}));u.size>0&&(o.required=Array.from(u)),s.catchall?._zod.def.type==="never"?o.additionalProperties=!1:s.catchall?s.catchall&&(o.additionalProperties=T(s.catchall,t,{...n,path:[...n.path,"additionalProperties"]})):t.io==="output"&&(o.additionalProperties=!1)},km=(e,t,r,n)=>{let o=e._zod.def,s=o.inclusive===!1,i=o.options.map((a,u)=>T(a,t,{...n,path:[...n.path,s?"oneOf":"anyOf",u]}));s?r.oneOf=i:r.anyOf=i},Sm=(e,t,r,n)=>{let o=e._zod.def,s=T(o.left,t,{...n,path:[...n.path,"allOf",0]}),i=T(o.right,t,{...n,path:[...n.path,"allOf",1]}),a=l=>"allOf"in l&&Object.keys(l).length===1,u=[...a(s)?s.allOf:[s],...a(i)?i.allOf:[i]];r.allOf=u},vm=(e,t,r,n)=>{let o=r,s=e._zod.def;o.type="array";let i=t.target==="draft-2020-12"?"prefixItems":"items",a=t.target==="draft-2020-12"||t.target==="openapi-3.0"?"items":"additionalItems",u=s.items.map((m,h)=>T(m,t,{...n,path:[...n.path,i,h]})),l=s.rest?T(s.rest,t,{...n,path:[...n.path,a,...t.target==="openapi-3.0"?[s.items.length]:[]]}):null;t.target==="draft-2020-12"?(o.prefixItems=u,l&&(o.items=l)):t.target==="openapi-3.0"?(o.items={anyOf:u},l&&o.items.anyOf.push(l),o.minItems=u.length,l||(o.maxItems=u.length)):(o.items=u,l&&(o.additionalItems=l));let{minimum:p,maximum:f}=e._zod.bag;typeof p=="number"&&(o.minItems=p),typeof f=="number"&&(o.maxItems=f)},zm=(e,t,r,n)=>{let o=r,s=e._zod.def;o.type="object";let i=s.keyType,u=i._zod.bag?.patterns;if(s.mode==="loose"&&u&&u.size>0){let p=T(s.valueType,t,{...n,path:[...n.path,"patternProperties","*"]});o.patternProperties={};for(let f of u)o.patternProperties[f.source]=p}else(t.target==="draft-07"||t.target==="draft-2020-12")&&(o.propertyNames=T(s.keyType,t,{...n,path:[...n.path,"propertyNames"]})),o.additionalProperties=T(s.valueType,t,{...n,path:[...n.path,"additionalProperties"]});let l=i._zod.values;if(l){let p=[...l].filter(f=>typeof f=="string"||typeof f=="number");p.length>0&&(o.required=p)}},Tm=(e,t,r,n)=>{let o=e._zod.def,s=T(o.innerType,t,n),i=t.seen.get(e);t.target==="openapi-3.0"?(i.ref=o.innerType,r.nullable=!0):r.anyOf=[s,{type:"null"}]},Im=(e,t,r,n)=>{let o=e._zod.def;T(o.innerType,t,n);let s=t.seen.get(e);s.ref=o.innerType},Pm=(e,t,r,n)=>{let o=e._zod.def;T(o.innerType,t,n);let s=t.seen.get(e);s.ref=o.innerType,r.default=JSON.parse(JSON.stringify(o.defaultValue))},Am=(e,t,r,n)=>{let o=e._zod.def;T(o.innerType,t,n);let s=t.seen.get(e);s.ref=o.innerType,t.io==="input"&&(r._prefault=JSON.parse(JSON.stringify(o.defaultValue)))},Em=(e,t,r,n)=>{let o=e._zod.def;T(o.innerType,t,n);let s=t.seen.get(e);s.ref=o.innerType;let i;try{i=o.catchValue(void 0)}catch{throw new Error("Dynamic catch values are not supported in JSON Schema")}r.default=i},Rm=(e,t,r,n)=>{let o=e._zod.def,s=t.io==="input"?o.in._zod.def.type==="transform"?o.out:o.in:o.out;T(s,t,n);let i=t.seen.get(e);i.ref=s},Cm=(e,t,r,n)=>{let o=e._zod.def;T(o.innerType,t,n);let s=t.seen.get(e);s.ref=o.innerType,r.readOnly=!0},Nm=(e,t,r,n)=>{let o=e._zod.def;T(o.innerType,t,n);let s=t.seen.get(e);s.ref=o.innerType},Om=(e,t,r,n)=>{let o=e._zod.def;T(o.innerType,t,n);let s=t.seen.get(e);s.ref=o.innerType},Lm=(e,t,r,n)=>{let o=e._zod.innerType;T(o,t,n);let s=t.seen.get(e);s.ref=o},yr={string:Qd,number:Xd,boolean:em,bigint:tm,symbol:rm,null:nm,undefined:om,void:sm,never:im,any:am,unknown:cm,date:um,enum:lm,literal:pm,nan:fm,template_literal:dm,file:mm,success:hm,custom:gm,function:ym,transform:bm,map:_m,set:wm,array:$m,object:xm,union:km,intersection:Sm,tuple:vm,record:zm,nullable:Tm,nonoptional:Im,default:Pm,prefault:Am,catch:Em,pipe:Rm,readonly:Cm,promise:Nm,optional:Om,lazy:Lm};function br(e,t){if("_idmap"in e){let n=e,o=_e({...t,processors:yr}),s={};for(let u of n._idmap.entries()){let[l,p]=u;T(p,o)}let i={},a={registry:n,uri:t?.uri,defs:s};o.external=a;for(let u of n._idmap.entries()){let[l,p]=u;we(o,p),i[l]=$e(o,p)}if(Object.keys(s).length>0){let u=o.target==="draft-2020-12"?"$defs":"definitions";i.__shared={[u]:s}}return{schemas:i}}let r=_e({...t,processors:yr});return T(e,r),we(r,e),$e(r,e)}var _r=class{get metadataRegistry(){return this.ctx.metadataRegistry}get target(){return this.ctx.target}get unrepresentable(){return this.ctx.unrepresentable}get override(){return this.ctx.override}get io(){return this.ctx.io}get counter(){return this.ctx.counter}set counter(t){this.ctx.counter=t}get seen(){return this.ctx.seen}constructor(t){let r=t?.target??"draft-2020-12";r==="draft-4"&&(r="draft-04"),r==="draft-7"&&(r="draft-07"),this.ctx=_e({processors:yr,target:r,...t?.metadata&&{metadata:t.metadata},...t?.unrepresentable&&{unrepresentable:t.unrepresentable},...t?.override&&{override:t.override},...t?.io&&{io:t.io}})}process(t,r={path:[],schemaPath:[]}){return T(t,this.ctx,r)}emit(t,r){r&&(r.cycles&&(this.ctx.cycles=r.cycles),r.reused&&(this.ctx.reused=r.reused),r.external&&(this.ctx.external=r.external)),we(this.ctx,t);let n=$e(this.ctx,t),{"~standard":o,...s}=n;return s}};var Ec={};var S=d("ZodMiniType",(e,t)=>{if(!e._zod)throw new Error("Uninitialized schema in ZodMiniType.");x.init(e,t),e.def=t,e.type=t.type,e.parse=(r,n)=>ge(e,r,n,{callee:e.parse}),e.safeParse=(r,n)=>Te(e,r,n),e.parseAsync=async(r,n)=>ye(e,r,n,{callee:e.parseAsync}),e.safeParseAsync=async(r,n)=>Ie(e,r,n),e.check=(...r)=>e.clone({...t,checks:[...t.checks??[],...r.map(n=>typeof n=="function"?{_zod:{check:n,def:{check:"custom"},onattach:[]}}:n)]},{parent:!0}),e.with=e.check,e.clone=(r,n)=>q(e,r,n),e.brand=()=>e,e.register=((r,n)=>(r.add(e,n),e)),e.apply=r=>r(e)}),He=d("ZodMiniString",(e,t)=>{Be.init(e,t),S.init(e,t)});function _(e){return Es(He,e)}var E=d("ZodMiniStringFormat",(e,t)=>{P.init(e,t),He.init(e,t)}),Rc=d("ZodMiniEmail",(e,t)=>{ko.init(e,t),E.init(e,t)});function jm(e){return Cs(Rc,e)}var Cc=d("ZodMiniGUID",(e,t)=>{$o.init(e,t),E.init(e,t)});function Dm(e){return Ns(Cc,e)}var _t=d("ZodMiniUUID",(e,t)=>{xo.init(e,t),E.init(e,t)});function Mm(e){return Os(_t,e)}function Bm(e){return Ls(_t,e)}function Um(e){return Zs(_t,e)}function Fm(e){return js(_t,e)}var oa=d("ZodMiniURL",(e,t)=>{So.init(e,t),E.init(e,t)});function Hm(e){return mr(oa,e)}function qm(e){return mr(oa,{protocol:/^https?$/,hostname:re.domain,...g(e)})}var Nc=d("ZodMiniEmoji",(e,t)=>{vo.init(e,t),E.init(e,t)});function Jm(e){return Ds(Nc,e)}var Oc=d("ZodMiniNanoID",(e,t)=>{zo.init(e,t),E.init(e,t)});function Km(e){return Ms(Oc,e)}var Lc=d("ZodMiniCUID",(e,t)=>{To.init(e,t),E.init(e,t)});function Ym(e){return Bs(Lc,e)}var Zc=d("ZodMiniCUID2",(e,t)=>{Io.init(e,t),E.init(e,t)});function Gm(e){return Us(Zc,e)}var jc=d("ZodMiniULID",(e,t)=>{Po.init(e,t),E.init(e,t)});function Wm(e){return Fs(jc,e)}var Dc=d("ZodMiniXID",(e,t)=>{Ao.init(e,t),E.init(e,t)});function Vm(e){return Hs(Dc,e)}var Mc=d("ZodMiniKSUID",(e,t)=>{Eo.init(e,t),E.init(e,t)});function Qm(e){return qs(Mc,e)}var Bc=d("ZodMiniIPv4",(e,t)=>{Lo.init(e,t),E.init(e,t)});function Xm(e){return Js(Bc,e)}var Uc=d("ZodMiniIPv6",(e,t)=>{Zo.init(e,t),E.init(e,t)});function eh(e){return Ks(Uc,e)}var Fc=d("ZodMiniCIDRv4",(e,t)=>{Do.init(e,t),E.init(e,t)});function th(e){return Gs(Fc,e)}var Hc=d("ZodMiniCIDRv6",(e,t)=>{Mo.init(e,t),E.init(e,t)});function rh(e){return Ws(Hc,e)}var qc=d("ZodMiniMAC",(e,t)=>{jo.init(e,t),E.init(e,t)});function nh(e){return Ys(qc,e)}var Jc=d("ZodMiniBase64",(e,t)=>{Uo.init(e,t),E.init(e,t)});function oh(e){return Vs(Jc,e)}var Kc=d("ZodMiniBase64URL",(e,t)=>{Fo.init(e,t),E.init(e,t)});function sh(e){return Qs(Kc,e)}var Yc=d("ZodMiniE164",(e,t)=>{Ho.init(e,t),E.init(e,t)});function ih(e){return Xs(Yc,e)}var Gc=d("ZodMiniJWT",(e,t)=>{qo.init(e,t),E.init(e,t)});function ah(e){return ei(Gc,e)}var wt=d("ZodMiniCustomStringFormat",(e,t)=>{Jo.init(e,t),E.init(e,t)});function ch(e,t,r={}){return Ue(wt,e,t,r)}function uh(e){return Ue(wt,"hostname",re.hostname,e)}function lh(e){return Ue(wt,"hex",re.hex,e)}function ph(e,t){let r=t?.enc??"hex",n=`${e}_${r}`,o=re[n];if(!o)throw new Error(`Unrecognized hash format: ${n}`);return Ue(wt,n,o,t)}var $t=d("ZodMiniNumber",(e,t)=>{ar.init(e,t),S.init(e,t)});function xe(e){return ii($t,e)}var qe=d("ZodMiniNumberFormat",(e,t)=>{Ko.init(e,t),$t.init(e,t)});function fh(e){return ci(qe,e)}function dh(e){return ui(qe,e)}function mh(e){return li(qe,e)}function hh(e){return pi(qe,e)}function gh(e){return fi(qe,e)}var xt=d("ZodMiniBoolean",(e,t)=>{pt.init(e,t),S.init(e,t)});function Je(e){return di(xt,e)}var kt=d("ZodMiniBigInt",(e,t)=>{cr.init(e,t),S.init(e,t)});function yh(e){return hi(kt,e)}var sa=d("ZodMiniBigIntFormat",(e,t)=>{Yo.init(e,t),kt.init(e,t)});function bh(e){return yi(sa,e)}function _h(e){return bi(sa,e)}var Wc=d("ZodMiniSymbol",(e,t)=>{Go.init(e,t),S.init(e,t)});function wh(e){return _i(Wc,e)}var Vc=d("ZodMiniUndefined",(e,t)=>{Wo.init(e,t),S.init(e,t)});function $h(e){return wi(Vc,e)}var Qc=d("ZodMiniNull",(e,t)=>{Vo.init(e,t),S.init(e,t)});function Xc(e){return $i(Qc,e)}var eu=d("ZodMiniAny",(e,t)=>{Qo.init(e,t),S.init(e,t)});function xh(){return xi(eu)}var tu=d("ZodMiniUnknown",(e,t)=>{Xo.init(e,t),S.init(e,t)});function wr(){return ki(tu)}var ru=d("ZodMiniNever",(e,t)=>{es.init(e,t),S.init(e,t)});function nu(e){return Si(ru,e)}var ou=d("ZodMiniVoid",(e,t)=>{ts.init(e,t),S.init(e,t)});function kh(e){return vi(ou,e)}var $r=d("ZodMiniDate",(e,t)=>{rs.init(e,t),S.init(e,t)});function Sh(e){return zi($r,e)}var su=d("ZodMiniArray",(e,t)=>{ns.init(e,t),S.init(e,t)});function K(e,t){return new su({type:"array",element:e,...g(t)})}function vh(e){let t=e._zod.def.shape;return hu(Object.keys(t))}var xr=d("ZodMiniObject",(e,t)=>{ur.init(e,t),S.init(e,t),k(e,"shape",()=>t.shape)});function I(e,t){let r={type:"object",shape:e??{},...g(t)};return new xr(r)}function zh(e,t){return new xr({type:"object",shape:e,catchall:nu(),...g(t)})}function Th(e,t){return new xr({type:"object",shape:e,catchall:wr(),...g(t)})}function ke(e,t){return Kt(e,t)}function Ih(e,t){return ln(e,t)}function Ph(e,t){return Kt(e,t)}function Ah(e,t){return cn(e,t)}function Eh(e,t){return un(e,t)}function Rh(e,t){return pn(ca,e,t)}function Ch(e,t){return fn(ua,e,t)}function Nh(e,t){return e.clone({...e._zod.def,catchall:t})}var ia=d("ZodMiniUnion",(e,t)=>{ft.init(e,t),S.init(e,t)});function iu(e,t){return new ia({type:"union",options:e,...g(t)})}var au=d("ZodMiniXor",(e,t)=>{ia.init(e,t),os.init(e,t)});function Oh(e,t){return new au({type:"union",options:e,inclusive:!1,...g(t)})}var cu=d("ZodMiniDiscriminatedUnion",(e,t)=>{ss.init(e,t),S.init(e,t)});function Lh(e,t,r){return new cu({type:"union",options:t,discriminator:e,...g(r)})}var uu=d("ZodMiniIntersection",(e,t)=>{is.init(e,t),S.init(e,t)});function Zh(e,t){return new uu({type:"intersection",left:e,right:t})}var lu=d("ZodMiniTuple",(e,t)=>{lr.init(e,t),S.init(e,t)});function pu(e,t,r){let n=t instanceof x,o=n?r:t,s=n?t:null;return new lu({type:"tuple",items:e,rest:s,...g(o)})}var kr=d("ZodMiniRecord",(e,t)=>{as.init(e,t),S.init(e,t)});function fu(e,t,r){return new kr({type:"record",keyType:e,valueType:t,...g(r)})}function jh(e,t,r){let n=q(e);return n._zod.values=void 0,new kr({type:"record",keyType:n,valueType:t,...g(r)})}function Dh(e,t,r){return new kr({type:"record",keyType:e,valueType:t,mode:"loose",...g(r)})}var du=d("ZodMiniMap",(e,t)=>{cs.init(e,t),S.init(e,t)});function Mh(e,t,r){return new du({type:"map",keyType:e,valueType:t,...g(r)})}var mu=d("ZodMiniSet",(e,t)=>{us.init(e,t),S.init(e,t)});function Bh(e,t){return new mu({type:"set",valueType:e,...g(t)})}var aa=d("ZodMiniEnum",(e,t)=>{ls.init(e,t),S.init(e,t),e.options=Object.values(t.entries)});function hu(e,t){let r=Array.isArray(e)?Object.fromEntries(e.map(n=>[n,n])):e;return new aa({type:"enum",entries:r,...g(t)})}function Uh(e,t){return new aa({type:"enum",entries:e,...g(t)})}var gu=d("ZodMiniLiteral",(e,t)=>{ps.init(e,t),S.init(e,t)});function Fh(e,t){return new gu({type:"literal",values:Array.isArray(e)?e:[e],...g(t)})}var yu=d("ZodMiniFile",(e,t)=>{fs.init(e,t),S.init(e,t)});function Hh(e){return Wi(yu,e)}var bu=d("ZodMiniTransform",(e,t)=>{ds.init(e,t),S.init(e,t)});function qh(e){return new bu({type:"transform",transform:e})}var ca=d("ZodMiniOptional",(e,t)=>{pr.init(e,t),S.init(e,t)});function w(e){return new ca({type:"optional",innerType:e})}var _u=d("ZodMiniExactOptional",(e,t)=>{ms.init(e,t),S.init(e,t)});function Jh(e){return new _u({type:"optional",innerType:e})}var wu=d("ZodMiniNullable",(e,t)=>{hs.init(e,t),S.init(e,t)});function Sr(e){return new wu({type:"nullable",innerType:e})}function Kh(e){return w(Sr(e))}var $u=d("ZodMiniDefault",(e,t)=>{gs.init(e,t),S.init(e,t)});function Yh(e,t){return new $u({type:"default",innerType:e,get defaultValue(){return typeof t=="function"?t():je(t)}})}var xu=d("ZodMiniPrefault",(e,t)=>{ys.init(e,t),S.init(e,t)});function Gh(e,t){return new xu({type:"prefault",innerType:e,get defaultValue(){return typeof t=="function"?t():je(t)}})}var ua=d("ZodMiniNonOptional",(e,t)=>{bs.init(e,t),S.init(e,t)});function Wh(e,t){return new ua({type:"nonoptional",innerType:e,...g(t)})}var ku=d("ZodMiniSuccess",(e,t)=>{_s.init(e,t),S.init(e,t)});function Vh(e){return new ku({type:"success",innerType:e})}var Su=d("ZodMiniCatch",(e,t)=>{ws.init(e,t),S.init(e,t)});function Qh(e,t){return new Su({type:"catch",innerType:e,catchValue:typeof t=="function"?t:()=>t})}var vu=d("ZodMiniNaN",(e,t)=>{$s.init(e,t),S.init(e,t)});function Xh(e){return Ii(vu,e)}var la=d("ZodMiniPipe",(e,t)=>{xs.init(e,t),S.init(e,t)});function eg(e,t){return new la({type:"pipe",in:e,out:t})}var pa=d("ZodMiniCodec",(e,t)=>{la.init(e,t),dt.init(e,t)});function tg(e,t,r){return new pa({type:"pipe",in:e,out:t,transform:r.decode,reverseTransform:r.encode})}var zu=d("ZodMiniReadonly",(e,t)=>{ks.init(e,t),S.init(e,t)});function rg(e){return new zu({type:"readonly",innerType:e})}var Tu=d("ZodMiniTemplateLiteral",(e,t)=>{Ss.init(e,t),S.init(e,t)});function ng(e,t){return new Tu({type:"template_literal",parts:e,...g(t)})}var Iu=d("ZodMiniLazy",(e,t)=>{Ts.init(e,t),S.init(e,t)});function Pu(e){return new Iu({type:"lazy",getter:e})}var Au=d("ZodMiniPromise",(e,t)=>{zs.init(e,t),S.init(e,t)});function og(e){return new Au({type:"promise",innerType:e})}var fa=d("ZodMiniCustom",(e,t)=>{Is.init(e,t),S.init(e,t)});function sg(e,t){let r=new A({check:"custom",...g(t)});return r._zod.check=e,r}function Eu(e,t){return Vi(fa,e??(()=>!0),t)}function ig(e,t={}){return Qi(fa,e,t)}function ag(e){return Xi(e)}var cg=ea,ug=ta;function lg(e,t={}){let r=Eu(n=>n instanceof e,t);return r._zod.bag.Class=e,r._zod.check=n=>{n.value instanceof e||n.issues.push({code:"invalid_type",expected:e.name,input:n.value,inst:r,path:[...r._zod.def.path??[]]})},r}var pg=(...e)=>ra({Codec:pa,Boolean:xt,String:He},...e);function fg(){let e=Pu(()=>iu([_(),xe(),Je(),Xc(),K(e),fu(_(),e)]));return e}var Ru=d("ZodMiniFunction",(e,t)=>{vs.init(e,t),S.init(e,t)});function dg(e){return new Ru({type:"function",input:Array.isArray(e?.input)?pu(e?.input):e?.input??K(wr()),output:e?.output??wr()})}var da={};ve(da,{ZodMiniISODate:()=>zr,ZodMiniISODateTime:()=>vr,ZodMiniISODuration:()=>Ir,ZodMiniISOTime:()=>Tr,date:()=>hg,datetime:()=>mg,duration:()=>yg,time:()=>gg});var vr=d("ZodMiniISODateTime",(e,t)=>{Ro.init(e,t),E.init(e,t)});function mg(e){return ri(vr,e)}var zr=d("ZodMiniISODate",(e,t)=>{Co.init(e,t),E.init(e,t)});function hg(e){return ni(zr,e)}var Tr=d("ZodMiniISOTime",(e,t)=>{No.init(e,t),E.init(e,t)});function gg(e){return oi(Tr,e)}var Ir=d("ZodMiniISODuration",(e,t)=>{Oo.init(e,t),E.init(e,t)});function yg(e){return si(Ir,e)}var ma={};ve(ma,{bigint:()=>$g,boolean:()=>wg,date:()=>xg,number:()=>_g,string:()=>bg});function bg(e){return Rs(He,e)}function _g(e){return ai($t,e)}function wg(e){return mi(xt,e)}function $g(e){return gi(kt,e)}function xg(e){return Ti($r,e)}var X=_().check(yt(1)),kg=_().check(bt(/^https?:\/\/.+/)),Ke=I({CLANCY_BASE_BRANCH:w(_()),CLANCY_LABEL:w(_()),CLANCY_MODEL:w(_()),CLANCY_NOTIFY_WEBHOOK:w(_()),CLANCY_STATUS_IN_PROGRESS:w(_()),CLANCY_STATUS_DONE:w(_()),CLANCY_STATUS_REVIEW:w(_()),MAX_ITERATIONS:w(_()),PLAYWRIGHT_ENABLED:w(_()),PLAYWRIGHT_DEV_PORT:w(_()),CLANCY_ROLES:w(_()),CLANCY_PLAN_STATUS:w(_()),CLANCY_PLAN_LABEL:w(_()),CLANCY_PLAN_STATE_TYPE:w(_()),CLANCY_STATUS_PLANNED:w(_()),CLANCY_SKIP_COMMENTS:w(_()),GITHUB_TOKEN:w(_()),GITLAB_TOKEN:w(_()),BITBUCKET_USER:w(_()),BITBUCKET_TOKEN:w(_()),CLANCY_GIT_PLATFORM:w(_()),CLANCY_GIT_API_URL:w(_()),CLANCY_MAX_REWORK:w(_()),CLANCY_TDD:w(_()),CLANCY_MODE:w(_()),CLANCY_BRIEF_ISSUE_TYPE:w(_()),CLANCY_BRIEF_EPIC:w(_()),CLANCY_COMPONENT:w(_()),CLANCY_FIX_RETRIES:w(_()),CLANCY_VERIFY_COMMANDS:w(_()),CLANCY_TOKEN_RATE:w(_()),CLANCY_TIME_LIMIT:w(_()),CLANCY_BRANCH_GUARD:w(_()),CLANCY_LABEL_BRIEF:w(_()),CLANCY_LABEL_PLAN:w(_()),CLANCY_LABEL_BUILD:w(_())}),Nu=ke(Ke,{JIRA_BASE_URL:kg,JIRA_USER:X,JIRA_API_TOKEN:X,JIRA_PROJECT_KEY:X,CLANCY_JQL_STATUS:w(_()),CLANCY_JQL_SPRINT:w(_())}),Ou=ke(Ke,{GITHUB_TOKEN:X,GITHUB_REPO:X}),Lu=ke(Ke,{LINEAR_API_KEY:X,LINEAR_TEAM_ID:X}),Zu=ke(Ke,{SHORTCUT_API_TOKEN:X,SHORTCUT_WORKFLOW:w(_())}),ju=ke(Ke,{NOTION_TOKEN:X,NOTION_DATABASE_ID:X,CLANCY_NOTION_STATUS:w(_()),CLANCY_NOTION_ASSIGNEE:w(_()),CLANCY_NOTION_LABELS:w(_()),CLANCY_NOTION_PARENT:w(_())}),Du=ke(Ke,{AZDO_ORG:X,AZDO_PROJECT:X,AZDO_PAT:X,CLANCY_AZDO_STATUS:w(_()),CLANCY_AZDO_WIT:w(_())});function Pr(e){if(e.JIRA_BASE_URL){let t=Nu.safeParse(e);return t.success?{provider:"jira",env:t.data}:`\u2717 Jira env validation failed: ${t.error.message}`}if(e.GITHUB_TOKEN&&e.GITHUB_REPO){let t=Ou.safeParse(e);return t.success?{provider:"github",env:t.data}:`\u2717 GitHub env validation failed: ${t.error.message}`}if(e.LINEAR_API_KEY){let t=Lu.safeParse(e);return t.success?{provider:"linear",env:t.data}:`\u2717 Linear env validation failed: ${t.error.message}`}if(e.SHORTCUT_API_TOKEN){let t=Zu.safeParse(e);return t.success?{provider:"shortcut",env:t.data}:`\u2717 Shortcut env validation failed: ${t.error.message}`}if(e.NOTION_DATABASE_ID){let t=ju.safeParse(e);return t.success?{provider:"notion",env:t.data}:`\u2717 Notion env validation failed: ${t.error.message}`}if(e.AZDO_ORG){let t=Du.safeParse(e);return t.success?{provider:"azdo",env:t.data}:`\u2717 Azure DevOps env validation failed: ${t.error.message}`}return"\u2717 No board detected \u2014 set Jira, GitHub, Linear, Shortcut, Notion, or Azure DevOps credentials in .clancy/.env"}function Z(e){return e.env}import{appendFileSync as Mu,mkdirSync as Sg,readFileSync as vg}from"node:fs";import{dirname as zg,join as Bu}from"node:path";function Tg(e){let t=e.getUTCFullYear(),r=String(e.getUTCMonth()+1).padStart(2,"0"),n=String(e.getUTCDate()).padStart(2,"0"),o=String(e.getUTCHours()).padStart(2,"0"),s=String(e.getUTCMinutes()).padStart(2,"0");return`${t}-${r}-${n} ${o}:${s}`}function R(e,t,r,n,o,s){let i=Bu(e,".clancy","progress.txt");Sg(zg(i),{recursive:!0});let a=Tg(new Date);if(n==="BRIEF"||n==="APPROVE_BRIEF"){let f=`${a} | ${n} | ${t} | ${r}
|
|
42
42
|
`;Mu(i,f,"utf8");return}let u=o!=null?` | pr:${o}`:"",l=s?` | parent:${s}`:"",p=`${a} | ${t} | ${r} | ${n}${u}${l}
|
|
43
43
|
`;Mu(i,p,"utf8")}function Uu(e){let t=Bu(e,".clancy","progress.txt"),r;try{r=vg(t,"utf8")}catch{return[]}let n=[];for(let o of r.split(`
|
|
44
44
|
`)){let s=o.trim();if(!s)continue;let i=s.split(" | ");if(i.length<4)continue;let a=i[0];if(i[1]==="BRIEF"||i[1]==="APPROVE_BRIEF"){n.push({timestamp:a,key:i[2],summary:i.slice(3).join(" | "),status:i[1]});continue}let u=i[1],l,p,f,m=[];for(let h=2;h<i.length;h++){let b=i[h],y=b.match(/^pr:(\d+)$/),z=b.match(/^parent:(.+)$/);y?p=parseInt(y[1],10):z?f=z[1]:h>=3&&!l&&b===b.toUpperCase()&&b.length>1?l=b:m.push(b)}l&&(l==="APPROVE"&&(l="APPROVE_PLAN"),n.push({timestamp:a,key:u,summary:m.join(" | "),status:l,...p!=null&&{prNumber:p},...f!=null&&{parent:f}}))}return n}function Fu(e,t){let r=Uu(e),n=t.toLowerCase(),o=0;for(let s of r)s.key.toLowerCase()===n&&s.status==="REWORK"&&o++;return o}function j(e,t){let r=Uu(e),n=new Map;for(let o of r)n.set(o.key,o);return[...n.values()].filter(o=>o.status===t)}function Ig(e){return e.startsWith("epic/")||e.startsWith("milestone/")}function Ye(e,t,r,n,o){let s=[],i=r?Ig(r):!1;switch(e.provider){case"github":s.push(i?`Part of ${t.key}`:`Closes ${t.key}`),o&&!i&&s.push(`Closes ${o}`);break;case"jira":s.push(`**Jira:** [${t.key}](${e.env.JIRA_BASE_URL}/browse/${t.key})`);break;case"linear":s.push(`**Linear:** ${t.key}`);break}return s.push(""),t.description&&(s.push("## Description"),s.push(""),s.push(t.description),s.push("")),n&&(s.push("## \u26A0 Verification Warning"),s.push(""),s.push(n),s.push(""),s.push("This PR may need manual fixes before merging."),s.push("")),s.push("---"),s.push("*Created by [Clancy](https://github.com/Pushedskydiver/clancy)*"),s.push(""),s.push("---"),s.push("<details>"),s.push("<summary><strong>Rework instructions</strong> (click to expand)</summary>"),s.push(""),s.push("To request changes:"),s.push("- **Code comments** \u2014 leave inline comments on specific lines. These are always picked up automatically."),s.push("- **General feedback** \u2014 reply with a comment starting with `Rework:` followed by what needs fixing. Comments without the `Rework:` prefix are treated as discussion."),s.push(""),s.push("Example: `Rework: The form validation doesn't handle empty passwords`"),s.push(""),s.push("</details>"),s.join(`
|
|
45
45
|
`)}function Hu(e,t,r,n){let o=[];o.push(`## ${e} \u2014 ${t}`),o.push(""),o.push("### Children"),o.push("");for(let s of r){let i=s.prNumber?` (#${s.prNumber})`:"";o.push(`- ${s.key} \u2014 ${s.summary}${i}`)}if(n==="github"){o.push(""),o.push("### Closes"),o.push("");let s=r.map(i=>i.key).filter(i=>i.startsWith("#"));e.startsWith("#")&&s.unshift(e),s.length>0&&o.push(s.map(i=>`Closes ${i}`).join(", "))}return o.push(""),o.push("---"),o.push("*Created by [Clancy](https://github.com/Pushedskydiver/clancy)*"),o.join(`
|
|
46
|
-
`)}import{execFileSync as Pg}from"node:child_process";function qu(e){let t=e.trim().replace(/\.git$/,""),r=t.match(/^git@([^:]+):(.+)$/),n=t.match(/^(?:https?|ssh):\/\/(?:[^@]+@)?([^/:]+)(?::\d+)?\/(.+)$/),o=r?.[1]??n?.[1],s=r?.[2]??n?.[2];if(!(!o||!s))return{hostname:o,path:s}}function Ag(e){let t=qu(e);if(!t)return{host:"unknown",url:e};let{hostname:r,path:n}=t;switch(Eg(r)){case"github":{let s=n.split("/");return s.length>=2?{host:"github",owner:s[0],repo:s[1],hostname:r}:{host:"unknown",url:e}}case"gitlab":return{host:"gitlab",projectPath:n,hostname:r};case"bitbucket":{let s=n.match(/^scm\/([^/]+)\/(.+)$/);if(s)return{host:"bitbucket-server",projectKey:s[1],repoSlug:s[2],hostname:r};let i=n.split("/");return i.length>=2?{host:"bitbucket",workspace:i[0],repoSlug:i[1],hostname:r}:{host:"unknown",url:e}}case"azure":return{host:"azure",url:e};default:return{host:"unknown",url:e}}}function Eg(e){let t=e.toLowerCase();return t==="github.com"||t.includes("github")?"github":t==="gitlab.com"||t.includes("gitlab")?"gitlab":t==="bitbucket.org"||t.includes("bitbucket")?"bitbucket":t.includes("dev.azure")||t.includes("visualstudio")?"azure":"unknown"}function ce(e){let t;try{t=Pg("git",["remote","get-url","origin"],{encoding:"utf8"}).trim()}catch{return{host:"none"}}return t?e?Rg(t,e):Ag(t):{host:"none"}}function Rg(e,t){let r=qu(e);if(!r)return{host:"unknown",url:e};let{hostname:n,path:o}=r;switch(t.toLowerCase()){case"github":{let s=o.split("/");return s.length>=2?{host:"github",owner:s[0],repo:s[1],hostname:n}:{host:"unknown",url:e}}case"gitlab":return{host:"gitlab",projectPath:o,hostname:n};case"bitbucket":{let s=o.split("/");return s.length>=2?{host:"bitbucket",workspace:s[0],repoSlug:s[1],hostname:n}:{host:"unknown",url:e}}case"bitbucket-server":{let s=o.match(/^scm\/([^/]+)\/(.+)$/);if(s)return{host:"bitbucket-server",projectKey:s[1],repoSlug:s[2],hostname:n};let i=o.split("/");return i.length>=2?{host:"bitbucket-server",projectKey:i[0],repoSlug:i[1],hostname:n}:{host:"unknown",url:e}}default:return{host:"unknown",url:e}}}function St(e,t){if(t)return t.replace(/\/$/,"");switch(e.host){case"github":return e.hostname==="github.com"?"https://api.github.com":`https://${e.hostname}/api/v3`;case"gitlab":return`https://${e.hostname}/api/v4`;case"bitbucket":return"https://api.bitbucket.org/2.0";case"bitbucket-server":return`https://${e.hostname}/rest/api/1.0`;default:return}}var Cg=I({id:ke(),links:I({html:w(I({href:w(_())}))}),participants:K(I({state:w(_()),role:_()}))}),Ju=I({values:K(Cg)}),Ng=I({content:I({raw:_()}),inline:w(I({path:w(_())})),created_on:_(),user:w(I({nickname:w(_())}))}),ga=I({values:K(Ng)}),Og=I({id:ke(),links:I({self:w(K(I({href:w(_())})))}),reviewers:K(I({status:_()}))}),Ku=I({values:K(Og)}),Lg=I({text:_(),anchor:w(I({path:w(_())})),createdDate:ke(),author:w(I({slug:w(_())}))}),Zg=I({action:_(),comment:w(Lg)}),ya=I({values:K(Zg)});async function Ae(e,t,r,n,o){let s=new AbortController,i=setTimeout(()=>s.abort(),3e4);try{let a=await fetch(e,{method:"POST",headers:{...t,"Content-Type":"application/json"},body:JSON.stringify(r),signal:s.signal});if(!a.ok){let p=await a.text().catch(()=>""),f=o?.(a.status,p)??!1;return{ok:!1,error:`HTTP ${a.status}${p?`: ${p.slice(0,200)}`:""}`,alreadyExists:f}}let u=await a.json(),l=n(u);return!l.url&&!l.number?{ok:!1,error:"PR created but response missing URL and number"}:{ok:!0,url:l.url,number:l.number}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}finally{clearTimeout(i)}}function Ge(e,t){return`Basic ${Buffer.from(`${e}:${t}`).toString("base64")}`}function ie(e){return e.trim().toLowerCase().startsWith("rework:")}function Ee(e){return e.trim().replace(/^rework:\s*/i,"").trim()}async function Yu(e,t,r,n,o,s,i,a){return Ae(`https://api.bitbucket.org/2.0/repositories/${r}/${n}/pullrequests`,{Authorization:Ge(e,t)},{title:i,description:a,source:{branch:{name:o}},destination:{branch:{name:s}},close_source_branch:!0},u=>{let l=u;return{url:l.links?.html?.href??"",number:l.id??0}},(u,l)=>u===409&&l.includes("already exists"))}async function Gu(e,t,r,n,o,s,i,a){return Ae(`${t}/projects/${r}/repos/${n}/pull-requests`,{Authorization:`Bearer ${e}`},{title:i,description:a,fromRef:{id:`refs/heads/${o}`,repository:{slug:n,project:{key:r}}},toRef:{id:`refs/heads/${s}`,repository:{slug:n,project:{key:r}}}},u=>{let l=u;return{url:l.links?.self?.[0]?.href??"",number:l.id??0}},(u,l)=>u===409&&(l.includes("already exists")||l.includes("Only one pull request")))}async function Wu(e,t,r,n,o,s){try{return(await fetch(`https://api.bitbucket.org/2.0/repositories/${r}/${n}/pullrequests/${o}/comments`,{method:"POST",headers:{Authorization:Ge(e,t),"Content-Type":"application/json"},body:JSON.stringify({content:{raw:s}})})).ok}catch{return!1}}async function Vu(e,t,r,n,o,s){try{return(await fetch(`${t}/projects/${r}/repos/${n}/pull-requests/${o}/comments`,{method:"POST",headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json"},body:JSON.stringify({text:s})})).ok}catch{return!1}}async function Qu(e,t,r,n,o,s){try{let i=`https://api.bitbucket.org/2.0/repositories/${r}/${n}/pullrequests?q=source.branch.name="${o}"&state=OPEN`,a=await fetch(i,{headers:{Authorization:Ge(e,t)}});if(!a.ok)return;let u=Ju.parse(await a.json());if(u.values.length===0)return;let l=u.values[0],p=l.links.html?.href??"",f=`https://api.bitbucket.org/2.0/repositories/${r}/${n}/pullrequests/${l.id}/comments?pagelen=100`,m=await fetch(f,{headers:{Authorization:Ge(e,t)}});if(!m.ok)return;let h=ga.parse(await m.json()),b=s?h.values.filter(Y=>Y.created_on>s):h.values,y=b.some(Y=>Y.inline!=null),z=b.some(Y=>Y.inline==null&&ie(Y.content.raw));return{changesRequested:y||z,prNumber:l.id,prUrl:p}}catch{return}}async function Xu(e,t,r,n,o,s){try{let i=`https://api.bitbucket.org/2.0/repositories/${r}/${n}/pullrequests/${o}/comments?pagelen=100`,a=await fetch(i,{headers:{Authorization:Ge(e,t)}});if(!a.ok)return[];let u=ga.parse(await a.json()),l=s?u.values.filter(f=>f.created_on>s):u.values,p=[];for(let f of l)if(f.inline!=null){let m=f.inline.path?`[${f.inline.path}] `:"";p.push(`${m}${f.content.raw}`)}else ie(f.content.raw)&&p.push(Ee(f.content.raw));return p}catch{return[]}}async function el(e,t,r,n,o,s){try{let i=`${t}/projects/${r}/repos/${n}/pull-requests?state=OPEN&at=refs/heads/${o}`,a=await fetch(i,{headers:{Authorization:`Bearer ${e}`}});if(!a.ok)return;let u=Ku.parse(await a.json());if(u.values.length===0)return;let l=u.values[0],p=l.links.self?.[0]?.href??"",f=`${t}/projects/${r}/repos/${n}/pull-requests/${l.id}/activities?limit=100`,m=await fetch(f,{headers:{Authorization:`Bearer ${e}`}});if(!m.ok)return;let h=ya.parse(await m.json()),b=s?Date.parse(s):void 0,y=h.values.filter(C=>C.action==="COMMENTED"&&C.comment&&(b==null||C.comment.createdDate>b)),z=y.some(C=>C.comment.anchor!=null),H=y.some(C=>C.comment.anchor==null&&ie(C.comment.text));return{changesRequested:z||H,prNumber:l.id,prUrl:p}}catch{return}}async function tl(e,t,r,n,o,s){try{let i=`${t}/projects/${r}/repos/${n}/pull-requests/${o}/activities?limit=100`,a=await fetch(i,{headers:{Authorization:`Bearer ${e}`}});if(!a.ok)return[];let u=ya.parse(await a.json()),l=s?Date.parse(s):void 0,p=[];for(let f of u.values){if(f.action!=="COMMENTED"||!f.comment||l!=null&&f.comment.createdDate<=l)continue;let m=f.comment;if(m.anchor!=null){let h=m.anchor.path?`[${m.anchor.path}] `:"";p.push(`${h}${m.text}`)}else ie(m.text)&&p.push(Ee(m.text))}return p}catch{return[]}}var jg=c.object({number:c.number(),title:c.string(),body:c.optional(c.nullable(c.string())),pull_request:c.optional(c.unknown()),milestone:c.optional(c.nullable(c.object({title:c.string()}))),labels:c.optional(c.array(c.object({name:c.optional(c.string())})))}),rl=c.array(jg),Dg=c.object({id:c.number(),body:c.optional(c.nullable(c.string())),created_at:c.string(),user:c.optional(c.object({login:c.string()}))}),ba=c.array(Dg),Mg=c.object({number:c.number(),html_url:c.string(),state:c.string()}),nl=c.array(Mg),Bg=c.object({state:c.string(),user:c.object({login:c.string()}),submitted_at:c.string()}),ol=c.array(Bg),Ug=c.object({body:c.optional(c.nullable(c.string())),path:c.optional(c.string()),created_at:c.optional(c.string()),user:c.optional(c.object({login:c.string()}))}),_a=c.array(Ug);var D="https://api.github.com";async function Ar(e,t,r,n){try{let o=new AbortController,s=setTimeout(()=>o.abort(),1e4),i=await fetch(e,{headers:t,signal:o.signal});if(clearTimeout(s),i.ok)return{ok:!0};let a=r[i.status];return a?{ok:!1,error:a}:{ok:!1,error:`\u2717 HTTP ${i.status}`}}catch{return{ok:!1,error:n}}}function U(e){return{Authorization:`Bearer ${e}`,Accept:"application/vnd.github+json","X-GitHub-Api-Version":"2022-11-28"}}function Se(e){return{Authorization:`Basic ${e}`,Accept:"application/json"}}function Er(e){return e?.trimStart().startsWith("[clancy]")??!1}async function sl(e,t,r,n,o=D,s){try{let i=U(e),a=await fetch(`${o}/repos/${t}/pulls?head=${n}:${r}&state=open`,{headers:i});if(!a.ok)return;let u=nl.parse(await a.json());if(u.length===0)return;let l=u[0],p=s?`&since=${s}`:"",[f,m]=await Promise.all([fetch(`${o}/repos/${t}/pulls/${l.number}/comments?per_page=100${p}`,{headers:i}),fetch(`${o}/repos/${t}/issues/${l.number}/comments?per_page=100${p}`,{headers:i})]);if(!f.ok||!m.ok)return;let h=_a.parse(await f.json()),b=ba.parse(await m.json()),y=h.filter(O=>!Er(O.body)),z=b.filter(O=>!Er(O.body)),H=y.length>0,Y=z.some(O=>O.body&&ie(O.body)),C=H||Y,M;if(!C)try{let O=await fetch(`${o}/repos/${t}/pulls/${l.number}/reviews?per_page=100`,{headers:i});if(O.ok){let Da=ol.parse(await O.json()),jt=new Map;for(let le of Da)le.state==="PENDING"||le.state==="DISMISSED"||jt.set(le.user.login,le.state);let Ma=[...jt.entries()].filter(([,le])=>le==="CHANGES_REQUESTED");Ma.length>0&&(C=!0,M=Ma.map(([le])=>le))}}catch{}return{changesRequested:C,prNumber:l.number,prUrl:l.html_url,reviewers:M}}catch{return}}async function il(e,t,r,n=D,o){try{let s=U(e),i=o?`&since=${o}`:"",[a,u]=await Promise.all([fetch(`${n}/repos/${t}/pulls/${r}/comments?per_page=100${i}`,{headers:s}),fetch(`${n}/repos/${t}/issues/${r}/comments?per_page=100${i}`,{headers:s})]);if(!a.ok||!u.ok)return[];let l=_a.parse(await a.json()),p=ba.parse(await u.json()),f=l.filter(b=>!Er(b.body)),m=p.filter(b=>!Er(b.body)),h=[];for(let b of f){if(!b.body)continue;let y=b.path?`[${b.path}] `:"";h.push(`${y}${b.body}`)}for(let b of m)b.body&&ie(b.body)&&h.push(Ee(b.body));return h}catch{return[]}}async function al(e,t,r,n,o=D){try{return(await fetch(`${o}/repos/${t}/issues/${r}/comments`,{method:"POST",headers:{...U(e),"Content-Type":"application/json"},body:JSON.stringify({body:n})})).ok}catch{return!1}}async function cl(e,t,r,n,o=D){try{return(await fetch(`${o}/repos/${t}/pulls/${r}/requested_reviewers`,{method:"POST",headers:{...U(e),"Content-Type":"application/json"},body:JSON.stringify({reviewers:n})})).ok}catch{return!1}}async function ul(e,t,r,n,o,s,i=D){return Ae(`${i}/repos/${t}/pulls`,U(e),{title:o,head:r,base:n,body:s},a=>{let u=a;return{url:u.html_url??"",number:u.number??0}},(a,u)=>a===422&&u.includes("already exists"))}var Fg=I({iid:ke(),web_url:_(),detailed_merge_status:w(_())}),ll=K(Fg),Hg=I({body:_(),resolvable:Je(),resolved:w(Je()),system:Je(),type:w(Sr(_())),created_at:w(_()),position:w(I({new_path:w(_())})),author:w(I({username:_()}))}),qg=I({id:w(_()),notes:K(Hg)}),wa=K(qg);async function pl(e,t,r,n,o,s,i){let a=encodeURIComponent(r);return Ae(`${t}/projects/${a}/merge_requests`,{"PRIVATE-TOKEN":e},{source_branch:n,target_branch:o,title:s,description:i,remove_source_branch:!0},u=>{let l=u;return{url:l.web_url??"",number:l.iid??0}},(u,l)=>u===409&&l.includes("already exists"))}async function fl(e,t,r,n,o){try{let s=encodeURIComponent(r);return(await fetch(`${t}/projects/${s}/merge_requests/${n}/notes`,{method:"POST",headers:{"PRIVATE-TOKEN":e,"Content-Type":"application/json"},body:JSON.stringify({body:o})})).ok}catch{return!1}}async function dl(e,t,r,n,o){let s=encodeURIComponent(r),i=0;for(let a of o)try{(await fetch(`${t}/projects/${s}/merge_requests/${n}/discussions/${a}`,{method:"PUT",headers:{"PRIVATE-TOKEN":e,"Content-Type":"application/json"},body:JSON.stringify({resolved:!0})})).ok&&i++}catch{}return i}async function ml(e,t,r,n,o){try{let s=encodeURIComponent(r),i=`${t}/projects/${s}/merge_requests?source_branch=${n}&state=opened`,a=await fetch(i,{headers:{"PRIVATE-TOKEN":e}});if(!a.ok)return;let u=ll.parse(await a.json());if(u.length===0)return;let l=u[0],p=`${t}/projects/${s}/merge_requests/${l.iid}/discussions?per_page=100`,f=await fetch(p,{headers:{"PRIVATE-TOKEN":e}});if(!f.ok)return;let m=wa.parse(await f.json()),h=!1;for(let b of m){for(let y of b.notes)if(!y.system&&!(o&&y.created_at&&y.created_at<=o)){if(y.type==="DiffNote"&&y.resolvable!==!1&&y.resolved!==!0){h=!0;break}if(ie(y.body)){h=!0;break}}if(h)break}return{changesRequested:h,prNumber:l.iid,prUrl:l.web_url}}catch{return}}async function hl(e,t,r,n,o){try{let s=encodeURIComponent(r),i=`${t}/projects/${s}/merge_requests/${n}/discussions?per_page=100`,a=await fetch(i,{headers:{"PRIVATE-TOKEN":e}});if(!a.ok)return{comments:[],discussionIds:[]};let u=wa.parse(await a.json()),l=[],p=[];for(let f of u){let m=!1;for(let h of f.notes)if(!h.system&&!(o&&h.created_at&&h.created_at<=o))if(h.type==="DiffNote"&&h.resolvable!==!1&&h.resolved!==!0){let b=h.position?.new_path?`[${h.position.new_path}] `:"";l.push(`${b}${h.body}`),m=!0}else ie(h.body)&&(l.push(Ee(h.body)),m=!0);m&&f.id&&p.push(f.id)}return{comments:l,discussionIds:p}}catch{return{comments:[],discussionIds:[]}}}function vt(e,t){let r=Z(e);switch(t.host){case"github":if(r.GITHUB_TOKEN)return{token:r.GITHUB_TOKEN};break;case"gitlab":if(r.GITLAB_TOKEN)return{token:r.GITLAB_TOKEN};break;case"bitbucket":if(r.BITBUCKET_USER&&r.BITBUCKET_TOKEN)return{token:r.BITBUCKET_TOKEN,username:r.BITBUCKET_USER};break;case"bitbucket-server":if(r.BITBUCKET_TOKEN)return{token:r.BITBUCKET_TOKEN};break}}async function Re(e,t,r,n,o,s){let i=vt(e,t);if(!i)return;let a=St(t,Z(e).CLANCY_GIT_API_URL);if(a)switch(t.host){case"github":return ul(i.token,`${t.owner}/${t.repo}`,r,n,o,s,a);case"gitlab":return pl(i.token,a,t.projectPath,r,n,o,s);case"bitbucket":return Yu(i.username,i.token,t.workspace,t.repoSlug,r,n,o,s);case"bitbucket-server":return Gu(i.token,a,t.projectKey,t.repoSlug,r,n,o,s);default:return}}function Rr(e,t,r){let n=encodeURIComponent(t),o=encodeURIComponent(r);if(e.host==="github")return`https://${e.hostname}/${e.owner}/${e.repo}/compare/${o}...${n}`;if(e.host==="gitlab")return`https://${e.hostname}/${e.projectPath}/-/merge_requests/new?merge_request[source_branch]=${n}&merge_request[target_branch]=${o}`;if(e.host==="bitbucket")return`https://${e.hostname}/${e.workspace}/${e.repoSlug}/pull-requests/new?source=${n}&dest=${o}`;if(e.host==="bitbucket-server")return`https://${e.hostname}/projects/${e.projectKey}/repos/${e.repoSlug}/pull-requests?create&sourceBranch=refs/heads/${n}&targetBranch=refs/heads/${o}`}function $a(e,t){let r=Ua(e),n=Xe(e);if(r)return Mt(e)?!0:(console.log(v(`\u26A0 Epic branch ${e} exists on remote but could not be fetched.`)),!1);if(n)return console.log(Oe(`\u2717 Epic branch ${e} exists locally but not on remote.`)),console.log(v(" This may contain work from a previous Clancy version that squash-merged locally.")),console.log($(" To preserve this work, push it manually:")),console.log($(` git push -u origin ${e}`)),console.log($(" Then re-run /clancy:once to continue.")),!1;try{if(gl("git",["fetch","origin",t],{encoding:"utf8",stdio:["pipe","pipe","pipe"],timeout:15e3}),gl("git",["checkout","-b",e,`origin/${t}`],{encoding:"utf8"}),et(e))console.log(N(` \u2713 Created epic branch ${e}`));else return console.log(v(`\u26A0 Created ${e} locally but could not push to origin.`)),!1;return!0}catch(o){return console.log(Oe(`\u2717 Could not create epic branch: ${o instanceof Error?o.message:String(o)}`)),!1}}async function ka(e,t,r,n,o,s=!1,i,a,u){if(!et(r)){console.log(v(`\u26A0 Could not push ${r} to origin.`)),console.log($(" The branch is still available locally. Push manually:")),console.log($(` git push -u origin ${r}`)),s||R(process.cwd(),t.key,t.title,"PUSH_FAILED",void 0,i),L(n);let y=Ce(Date.now()-o);return console.log(""),console.log(v(`\u26A0 ${t.key} implemented but push failed`)+$(` (${y})`)),!1}console.log(N(` \u2713 Pushed ${r}`));let p;try{let y=Kg(process.cwd(),".clancy","verify-attempt.txt"),z=Jg(y,"utf8").trim(),H=parseInt(z,10);H>0&&(p=`Verification checks did not fully pass (${H} attempt(s)). Review carefully.`)}catch{}let f=Z(e).CLANCY_GIT_PLATFORM,m=ce(f),h=`feat(${t.key}): ${t.title}`,b=Ye(e,{key:t.key,title:t.title,description:t.description,provider:e.provider},n,p,u);if(m.host!=="none"&&m.host!=="unknown"&&m.host!=="azure"){let y=await Re(e,m,r,n,h,b);if(y?.ok)console.log(N(` \u2713 PR created: ${y.url}`)),s||R(process.cwd(),t.key,t.title,"PR_CREATED",y.number,i);else if(y&&!y.ok&&y.alreadyExists)console.log(v(` \u26A0 A PR/MR already exists for ${r}. Branch pushed.`)),s||R(process.cwd(),t.key,t.title,"PUSHED",void 0,i);else if(y&&!y.ok){console.log(v(` \u26A0 PR/MR creation failed: ${y.error}`));let z=Rr(m,r,n);console.log(z?$(` Create one manually: ${z}`):$(" Branch pushed \u2014 create a PR/MR manually.")),s||R(process.cwd(),t.key,t.title,"PUSHED",void 0,i)}else{let z=Rr(m,r,n);console.log(z?$(` Create a PR: ${z}`):$(" Branch pushed to remote. Create a PR/MR manually.")),s||R(process.cwd(),t.key,t.title,"PUSHED",void 0,i)}}else m.host==="none"?(console.log(v(`\u26A0 No git remote configured. Branch available locally: ${r}`)),s||R(process.cwd(),t.key,t.title,"LOCAL",void 0,i)):(console.log($(" Branch pushed to remote. Create a PR/MR manually.")),s||R(process.cwd(),t.key,t.title,"PUSHED",void 0,i));if(e.provider!=="github"&&a){let y=e.env.CLANCY_STATUS_REVIEW??e.env.CLANCY_STATUS_DONE;y&&await a.transitionTicket(t,y)}return L(n),!0}async function yl(e,t,r,n,o,s){console.log(""),console.log(N(`\u{1F389} All children of ${t} are done!`)),console.log($(` Creating epic PR: ${n} \u2192 ${o}`));let i=j(process.cwd(),"PR_CREATED"),a=j(process.cwd(),"DONE"),u=j(process.cwd(),"REWORK"),l=j(process.cwd(),"PUSHED"),p=[...i,...a,...u,...l].filter(H=>H.parent===t),f=Z(e).CLANCY_GIT_PLATFORM,m=ce(f),h=`feat(${t}): ${r}`,b=Hu(t,r,p,e.provider);if(m.host==="none"||m.host==="unknown"||m.host==="azure")return console.log(v("\u26A0 Cannot create epic PR \u2014 no supported git remote detected.")),console.log($(` Push manually: git push origin ${n}`)),console.log($(` Then create a PR targeting ${o}`)),!1;let y=await Re(e,m,n,o,h,b);if(y?.ok){if(console.log(N(` \u2713 Epic PR created: ${y.url}`)),R(process.cwd(),t,r,"EPIC_PR_CREATED",y.number),e.provider!=="github"&&s){let H=e.env.CLANCY_STATUS_REVIEW??e.env.CLANCY_STATUS_DONE;H&&await s.transitionTicket({key:t,title:r,description:"",parentInfo:"none",blockers:"None"},H)}return!0}if(y&&!y.ok&&y.alreadyExists)return console.log(v(` \u26A0 An epic PR already exists for ${n}.`)),R(process.cwd(),t,r,"EPIC_PR_CREATED"),!0;console.log(v(`\u26A0 Epic PR creation failed: ${y?.error??"unknown error"}`)),console.log($(" Create it manually:")),console.log($(` Branch: ${n} \u2192 ${o}`));let z=Rr(m,n,o);return z&&console.log($(` ${z}`)),!1}async function bl(e){let t=e.board,r=e.ticket,n=e.ticketBranch,o=e.targetBranch,s=e.baseBranch,i=e.hasParent,a=e.isRework??!1;e.originalBranch=Ba();let u=!1;if(i&&!a){let p=await t.fetchChildrenStatus(r.parentInfo,r.linearIssueId);p&&p.total===1&&(u=!0)}e.skipEpicBranch=u;let l=i&&!u?o:s;if(e.effectiveTarget=l,a){if(i&&!u){if(!$a(o,s))return e.originalBranch&&L(e.originalBranch),!1}else Yr(l,s);Mt(n)?L(n):(L(l),L(n,!0))}else if(i&&!u){if(!$a(o,s))return e.originalBranch&&L(e.originalBranch),!1;L(o),L(n,!0)}else Yr(s,s),L(s),L(n,!0);try{Ja(e.cwd,{pid:process.pid,ticketKey:r.key,ticketTitle:r.title,ticketBranch:n,targetBranch:l,parentKey:r.parentInfo,description:(r.description??"").slice(0,2e3),startedAt:new Date().toISOString()}),e.lockOwner=!0}catch{console.log($(" (warning: could not write lock file \u2014 crash recovery disabled)"))}return!0}function Yg(e){return e.includes("hooks.slack.com")}function Gg(e){return JSON.stringify({text:e})}function Wg(e){return JSON.stringify({type:"message",attachments:[{contentType:"application/vnd.microsoft.card.adaptive",content:{$schema:"http://adaptivecards.io/schemas/adaptive-card.json",type:"AdaptiveCard",version:"1.4",body:[{type:"TextBlock",text:e,wrap:!0}]}}]})}async function _l(e,t){let r=Yg(e)?Gg(t):Wg(t);try{let n=await fetch(e,{method:"POST",headers:{"Content-Type":"application/json"},body:r});n.ok||console.warn(`\u26A0 Notification failed: HTTP ${n.status}`)}catch{console.warn("\u26A0 Notification failed: could not reach webhook")}}async function wl(e){let t=e.config,r=e.ticket,n=Ce(Date.now()-e.startTime);console.log(""),console.log(N(`\u{1F3C1} ${r.key} complete`)+$(` (${n})`)),console.log($(` "Bake 'em away, toys."`));let o=t.env.CLANCY_NOTIFY_WEBHOOK;return o&&await _l(o,`\u2713 Clancy completed [${r.key}] ${r.title}`),!0}import{appendFileSync as Vg,mkdirSync as Qg}from"node:fs";import{dirname as Xg,join as ey}from"node:path";function $l(e,t,r,n=6600){let o=ey(e,".clancy","costs.log");Qg(Xg(o),{recursive:!0});let s=new Date(r).getTime(),i=Date.now(),a=Number.isNaN(s)?0:Math.max(0,i-s),u=Math.round(a/6e4),l=Math.round(u*n),f=`${new Date().toISOString()} | ${t} | ${u}min | ~${l} tokens (estimated)
|
|
47
|
-
`;Vg(o,f,"utf8")}function
|
|
48
|
-
`,"utf8"),ny(n,r)}function Tl(e,t){return e.tickets[t]||(e.tickets[t]={reworkCycles:0,verificationRetries:0}),e.tickets[t]}function Il(e,t){try{let r=vl(e),n=Tl(r,t);n.reworkCycles++,
|
|
46
|
+
`)}import{execFileSync as Pg}from"node:child_process";function qu(e){let t=e.trim().replace(/\.git$/,""),r=t.match(/^git@([^:]+):(.+)$/),n=t.match(/^(?:https?|ssh):\/\/(?:[^@]+@)?([^/:]+)(?::\d+)?\/(.+)$/),o=r?.[1]??n?.[1],s=r?.[2]??n?.[2];if(!(!o||!s))return{hostname:o,path:s}}function Ag(e){let t=qu(e);if(!t)return{host:"unknown",url:e};let{hostname:r,path:n}=t;switch(Eg(r)){case"github":{let s=n.split("/");return s.length>=2?{host:"github",owner:s[0],repo:s[1],hostname:r}:{host:"unknown",url:e}}case"gitlab":return{host:"gitlab",projectPath:n,hostname:r};case"bitbucket":{let s=n.match(/^scm\/([^/]+)\/(.+)$/);if(s)return{host:"bitbucket-server",projectKey:s[1],repoSlug:s[2],hostname:r};let i=n.split("/");return i.length>=2?{host:"bitbucket",workspace:i[0],repoSlug:i[1],hostname:r}:{host:"unknown",url:e}}case"azure":return{host:"azure",url:e};default:return{host:"unknown",url:e}}}function Eg(e){let t=e.toLowerCase();return t==="github.com"||t.includes("github")?"github":t==="gitlab.com"||t.includes("gitlab")?"gitlab":t==="bitbucket.org"||t.includes("bitbucket")?"bitbucket":t.includes("dev.azure")||t.includes("visualstudio")?"azure":"unknown"}function ce(e){let t;try{t=Pg("git",["remote","get-url","origin"],{encoding:"utf8"}).trim()}catch{return{host:"none"}}return t?e?Rg(t,e):Ag(t):{host:"none"}}function Rg(e,t){let r=qu(e);if(!r)return{host:"unknown",url:e};let{hostname:n,path:o}=r;switch(t.toLowerCase()){case"github":{let s=o.split("/");return s.length>=2?{host:"github",owner:s[0],repo:s[1],hostname:n}:{host:"unknown",url:e}}case"gitlab":return{host:"gitlab",projectPath:o,hostname:n};case"bitbucket":{let s=o.split("/");return s.length>=2?{host:"bitbucket",workspace:s[0],repoSlug:s[1],hostname:n}:{host:"unknown",url:e}}case"bitbucket-server":{let s=o.match(/^scm\/([^/]+)\/(.+)$/);if(s)return{host:"bitbucket-server",projectKey:s[1],repoSlug:s[2],hostname:n};let i=o.split("/");return i.length>=2?{host:"bitbucket-server",projectKey:i[0],repoSlug:i[1],hostname:n}:{host:"unknown",url:e}}default:return{host:"unknown",url:e}}}function St(e,t){if(t)return t.replace(/\/$/,"");switch(e.host){case"github":return e.hostname==="github.com"?"https://api.github.com":`https://${e.hostname}/api/v3`;case"gitlab":return`https://${e.hostname}/api/v4`;case"bitbucket":return"https://api.bitbucket.org/2.0";case"bitbucket-server":return`https://${e.hostname}/rest/api/1.0`;default:return}}var Cg=I({id:xe(),links:I({html:w(I({href:w(_())}))}),participants:K(I({state:w(_()),role:_()}))}),Ju=I({values:K(Cg)}),Ng=I({content:I({raw:_()}),inline:w(I({path:w(_())})),created_on:_(),user:w(I({nickname:w(_())}))}),ga=I({values:K(Ng)}),Og=I({id:xe(),links:I({self:w(K(I({href:w(_())})))}),reviewers:K(I({status:_()}))}),Ku=I({values:K(Og)}),Lg=I({text:_(),anchor:w(I({path:w(_())})),createdDate:xe(),author:w(I({slug:w(_())}))}),Zg=I({action:_(),comment:w(Lg)}),ya=I({values:K(Zg)});async function Ae(e,t,r,n,o){let s=new AbortController,i=setTimeout(()=>s.abort(),3e4);try{let a=await fetch(e,{method:"POST",headers:{...t,"Content-Type":"application/json"},body:JSON.stringify(r),signal:s.signal});if(!a.ok){let p=await a.text().catch(()=>""),f=o?.(a.status,p)??!1;return{ok:!1,error:`HTTP ${a.status}${p?`: ${p.slice(0,200)}`:""}`,alreadyExists:f}}let u=await a.json(),l=n(u);return!l.url&&!l.number?{ok:!1,error:"PR created but response missing URL and number"}:{ok:!0,url:l.url,number:l.number}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}finally{clearTimeout(i)}}function Ge(e,t){return`Basic ${Buffer.from(`${e}:${t}`).toString("base64")}`}function ie(e){return e.trim().toLowerCase().startsWith("rework:")}function Ee(e){return e.trim().replace(/^rework:\s*/i,"").trim()}async function Yu(e,t,r,n,o,s,i,a){return Ae(`https://api.bitbucket.org/2.0/repositories/${r}/${n}/pullrequests`,{Authorization:Ge(e,t)},{title:i,description:a,source:{branch:{name:o}},destination:{branch:{name:s}},close_source_branch:!0},u=>{let l=u;return{url:l.links?.html?.href??"",number:l.id??0}},(u,l)=>u===409&&l.includes("already exists"))}async function Gu(e,t,r,n,o,s,i,a){return Ae(`${t}/projects/${r}/repos/${n}/pull-requests`,{Authorization:`Bearer ${e}`},{title:i,description:a,fromRef:{id:`refs/heads/${o}`,repository:{slug:n,project:{key:r}}},toRef:{id:`refs/heads/${s}`,repository:{slug:n,project:{key:r}}}},u=>{let l=u;return{url:l.links?.self?.[0]?.href??"",number:l.id??0}},(u,l)=>u===409&&(l.includes("already exists")||l.includes("Only one pull request")))}async function Wu(e,t,r,n,o,s){try{return(await fetch(`https://api.bitbucket.org/2.0/repositories/${r}/${n}/pullrequests/${o}/comments`,{method:"POST",headers:{Authorization:Ge(e,t),"Content-Type":"application/json"},body:JSON.stringify({content:{raw:s}})})).ok}catch{return!1}}async function Vu(e,t,r,n,o,s){try{return(await fetch(`${t}/projects/${r}/repos/${n}/pull-requests/${o}/comments`,{method:"POST",headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json"},body:JSON.stringify({text:s})})).ok}catch{return!1}}async function Qu(e,t,r,n,o,s){try{let i=`https://api.bitbucket.org/2.0/repositories/${r}/${n}/pullrequests?q=source.branch.name="${o}"&state=OPEN`,a=await fetch(i,{headers:{Authorization:Ge(e,t)}});if(!a.ok)return;let u=Ju.parse(await a.json());if(u.values.length===0)return;let l=u.values[0],p=l.links.html?.href??"",f=`https://api.bitbucket.org/2.0/repositories/${r}/${n}/pullrequests/${l.id}/comments?pagelen=100`,m=await fetch(f,{headers:{Authorization:Ge(e,t)}});if(!m.ok)return;let h=ga.parse(await m.json()),b=s?h.values.filter(Y=>Y.created_on>s):h.values,y=b.some(Y=>Y.inline!=null),z=b.some(Y=>Y.inline==null&&ie(Y.content.raw));return{changesRequested:y||z,prNumber:l.id,prUrl:p}}catch{return}}async function Xu(e,t,r,n,o,s){try{let i=`https://api.bitbucket.org/2.0/repositories/${r}/${n}/pullrequests/${o}/comments?pagelen=100`,a=await fetch(i,{headers:{Authorization:Ge(e,t)}});if(!a.ok)return[];let u=ga.parse(await a.json()),l=s?u.values.filter(f=>f.created_on>s):u.values,p=[];for(let f of l)if(f.inline!=null){let m=f.inline.path?`[${f.inline.path}] `:"";p.push(`${m}${f.content.raw}`)}else ie(f.content.raw)&&p.push(Ee(f.content.raw));return p}catch{return[]}}async function el(e,t,r,n,o,s){try{let i=`${t}/projects/${r}/repos/${n}/pull-requests?state=OPEN&at=refs/heads/${o}`,a=await fetch(i,{headers:{Authorization:`Bearer ${e}`}});if(!a.ok)return;let u=Ku.parse(await a.json());if(u.values.length===0)return;let l=u.values[0],p=l.links.self?.[0]?.href??"",f=`${t}/projects/${r}/repos/${n}/pull-requests/${l.id}/activities?limit=100`,m=await fetch(f,{headers:{Authorization:`Bearer ${e}`}});if(!m.ok)return;let h=ya.parse(await m.json()),b=s?Date.parse(s):void 0,y=h.values.filter(C=>C.action==="COMMENTED"&&C.comment&&(b==null||C.comment.createdDate>b)),z=y.some(C=>C.comment.anchor!=null),H=y.some(C=>C.comment.anchor==null&&ie(C.comment.text));return{changesRequested:z||H,prNumber:l.id,prUrl:p}}catch{return}}async function tl(e,t,r,n,o,s){try{let i=`${t}/projects/${r}/repos/${n}/pull-requests/${o}/activities?limit=100`,a=await fetch(i,{headers:{Authorization:`Bearer ${e}`}});if(!a.ok)return[];let u=ya.parse(await a.json()),l=s?Date.parse(s):void 0,p=[];for(let f of u.values){if(f.action!=="COMMENTED"||!f.comment||l!=null&&f.comment.createdDate<=l)continue;let m=f.comment;if(m.anchor!=null){let h=m.anchor.path?`[${m.anchor.path}] `:"";p.push(`${h}${m.text}`)}else ie(m.text)&&p.push(Ee(m.text))}return p}catch{return[]}}var jg=c.object({number:c.number(),title:c.string(),body:c.optional(c.nullable(c.string())),pull_request:c.optional(c.unknown()),milestone:c.optional(c.nullable(c.object({title:c.string()}))),labels:c.optional(c.array(c.object({name:c.optional(c.string())})))}),rl=c.array(jg),Dg=c.object({id:c.number(),body:c.optional(c.nullable(c.string())),created_at:c.string(),user:c.optional(c.object({login:c.string()}))}),ba=c.array(Dg),Mg=c.object({number:c.number(),html_url:c.string(),state:c.string()}),nl=c.array(Mg),Bg=c.object({state:c.string(),user:c.object({login:c.string()}),submitted_at:c.string()}),ol=c.array(Bg),Ug=c.object({body:c.optional(c.nullable(c.string())),path:c.optional(c.string()),created_at:c.optional(c.string()),user:c.optional(c.object({login:c.string()}))}),_a=c.array(Ug);var D="https://api.github.com";async function Ar(e,t,r,n){try{let o=new AbortController,s=setTimeout(()=>o.abort(),1e4),i=await fetch(e,{headers:t,signal:o.signal});if(clearTimeout(s),i.ok)return{ok:!0};let a=r[i.status];return a?{ok:!1,error:a}:{ok:!1,error:`\u2717 HTTP ${i.status}`}}catch{return{ok:!1,error:n}}}function U(e){return{Authorization:`Bearer ${e}`,Accept:"application/vnd.github+json","X-GitHub-Api-Version":"2022-11-28"}}function Se(e){return{Authorization:`Basic ${e}`,Accept:"application/json"}}function Er(e){return e?.trimStart().startsWith("[clancy]")??!1}async function sl(e,t,r,n,o=D,s){try{let i=U(e),a=await fetch(`${o}/repos/${t}/pulls?head=${n}:${r}&state=open`,{headers:i});if(!a.ok)return;let u=nl.parse(await a.json());if(u.length===0)return;let l=u[0],p=s?`&since=${s}`:"",[f,m]=await Promise.all([fetch(`${o}/repos/${t}/pulls/${l.number}/comments?per_page=100${p}`,{headers:i}),fetch(`${o}/repos/${t}/issues/${l.number}/comments?per_page=100${p}`,{headers:i})]);if(!f.ok||!m.ok)return;let h=_a.parse(await f.json()),b=ba.parse(await m.json()),y=h.filter(O=>!Er(O.body)),z=b.filter(O=>!Er(O.body)),H=y.length>0,Y=z.some(O=>O.body&&ie(O.body)),C=H||Y,M;if(!C)try{let O=await fetch(`${o}/repos/${t}/pulls/${l.number}/reviews?per_page=100`,{headers:i});if(O.ok){let Da=ol.parse(await O.json()),jt=new Map;for(let le of Da)le.state==="PENDING"||le.state==="DISMISSED"||jt.set(le.user.login,le.state);let Ma=[...jt.entries()].filter(([,le])=>le==="CHANGES_REQUESTED");Ma.length>0&&(C=!0,M=Ma.map(([le])=>le))}}catch{}return{changesRequested:C,prNumber:l.number,prUrl:l.html_url,reviewers:M}}catch{return}}async function il(e,t,r,n=D,o){try{let s=U(e),i=o?`&since=${o}`:"",[a,u]=await Promise.all([fetch(`${n}/repos/${t}/pulls/${r}/comments?per_page=100${i}`,{headers:s}),fetch(`${n}/repos/${t}/issues/${r}/comments?per_page=100${i}`,{headers:s})]);if(!a.ok||!u.ok)return[];let l=_a.parse(await a.json()),p=ba.parse(await u.json()),f=l.filter(b=>!Er(b.body)),m=p.filter(b=>!Er(b.body)),h=[];for(let b of f){if(!b.body)continue;let y=b.path?`[${b.path}] `:"";h.push(`${y}${b.body}`)}for(let b of m)b.body&&ie(b.body)&&h.push(Ee(b.body));return h}catch{return[]}}async function al(e,t,r,n,o=D){try{return(await fetch(`${o}/repos/${t}/issues/${r}/comments`,{method:"POST",headers:{...U(e),"Content-Type":"application/json"},body:JSON.stringify({body:n})})).ok}catch{return!1}}async function cl(e,t,r,n,o=D){try{return(await fetch(`${o}/repos/${t}/pulls/${r}/requested_reviewers`,{method:"POST",headers:{...U(e),"Content-Type":"application/json"},body:JSON.stringify({reviewers:n})})).ok}catch{return!1}}async function ul(e,t,r,n,o,s,i=D){return Ae(`${i}/repos/${t}/pulls`,U(e),{title:o,head:r,base:n,body:s},a=>{let u=a;return{url:u.html_url??"",number:u.number??0}},(a,u)=>a===422&&u.includes("already exists"))}var Fg=I({iid:xe(),web_url:_(),detailed_merge_status:w(_())}),ll=K(Fg),Hg=I({body:_(),resolvable:Je(),resolved:w(Je()),system:Je(),type:w(Sr(_())),created_at:w(_()),position:w(I({new_path:w(_())})),author:w(I({username:_()}))}),qg=I({id:w(_()),notes:K(Hg)}),wa=K(qg);async function pl(e,t,r,n,o,s,i){let a=encodeURIComponent(r);return Ae(`${t}/projects/${a}/merge_requests`,{"PRIVATE-TOKEN":e},{source_branch:n,target_branch:o,title:s,description:i,remove_source_branch:!0},u=>{let l=u;return{url:l.web_url??"",number:l.iid??0}},(u,l)=>u===409&&l.includes("already exists"))}async function fl(e,t,r,n,o){try{let s=encodeURIComponent(r);return(await fetch(`${t}/projects/${s}/merge_requests/${n}/notes`,{method:"POST",headers:{"PRIVATE-TOKEN":e,"Content-Type":"application/json"},body:JSON.stringify({body:o})})).ok}catch{return!1}}async function dl(e,t,r,n,o){let s=encodeURIComponent(r),i=0;for(let a of o)try{(await fetch(`${t}/projects/${s}/merge_requests/${n}/discussions/${a}`,{method:"PUT",headers:{"PRIVATE-TOKEN":e,"Content-Type":"application/json"},body:JSON.stringify({resolved:!0})})).ok&&i++}catch{}return i}async function ml(e,t,r,n,o){try{let s=encodeURIComponent(r),i=`${t}/projects/${s}/merge_requests?source_branch=${n}&state=opened`,a=await fetch(i,{headers:{"PRIVATE-TOKEN":e}});if(!a.ok)return;let u=ll.parse(await a.json());if(u.length===0)return;let l=u[0],p=`${t}/projects/${s}/merge_requests/${l.iid}/discussions?per_page=100`,f=await fetch(p,{headers:{"PRIVATE-TOKEN":e}});if(!f.ok)return;let m=wa.parse(await f.json()),h=!1;for(let b of m){for(let y of b.notes)if(!y.system&&!(o&&y.created_at&&y.created_at<=o)){if(y.type==="DiffNote"&&y.resolvable!==!1&&y.resolved!==!0){h=!0;break}if(ie(y.body)){h=!0;break}}if(h)break}return{changesRequested:h,prNumber:l.iid,prUrl:l.web_url}}catch{return}}async function hl(e,t,r,n,o){try{let s=encodeURIComponent(r),i=`${t}/projects/${s}/merge_requests/${n}/discussions?per_page=100`,a=await fetch(i,{headers:{"PRIVATE-TOKEN":e}});if(!a.ok)return{comments:[],discussionIds:[]};let u=wa.parse(await a.json()),l=[],p=[];for(let f of u){let m=!1;for(let h of f.notes)if(!h.system&&!(o&&h.created_at&&h.created_at<=o))if(h.type==="DiffNote"&&h.resolvable!==!1&&h.resolved!==!0){let b=h.position?.new_path?`[${h.position.new_path}] `:"";l.push(`${b}${h.body}`),m=!0}else ie(h.body)&&(l.push(Ee(h.body)),m=!0);m&&f.id&&p.push(f.id)}return{comments:l,discussionIds:p}}catch{return{comments:[],discussionIds:[]}}}function vt(e,t){let r=Z(e);switch(t.host){case"github":if(r.GITHUB_TOKEN)return{token:r.GITHUB_TOKEN};break;case"gitlab":if(r.GITLAB_TOKEN)return{token:r.GITLAB_TOKEN};break;case"bitbucket":if(r.BITBUCKET_USER&&r.BITBUCKET_TOKEN)return{token:r.BITBUCKET_TOKEN,username:r.BITBUCKET_USER};break;case"bitbucket-server":if(r.BITBUCKET_TOKEN)return{token:r.BITBUCKET_TOKEN};break}}async function Re(e,t,r,n,o,s){let i=vt(e,t);if(!i)return;let a=St(t,Z(e).CLANCY_GIT_API_URL);if(a)switch(t.host){case"github":return ul(i.token,`${t.owner}/${t.repo}`,r,n,o,s,a);case"gitlab":return pl(i.token,a,t.projectPath,r,n,o,s);case"bitbucket":return Yu(i.username,i.token,t.workspace,t.repoSlug,r,n,o,s);case"bitbucket-server":return Gu(i.token,a,t.projectKey,t.repoSlug,r,n,o,s);default:return}}function Rr(e,t,r){let n=encodeURIComponent(t),o=encodeURIComponent(r);if(e.host==="github")return`https://${e.hostname}/${e.owner}/${e.repo}/compare/${o}...${n}`;if(e.host==="gitlab")return`https://${e.hostname}/${e.projectPath}/-/merge_requests/new?merge_request[source_branch]=${n}&merge_request[target_branch]=${o}`;if(e.host==="bitbucket")return`https://${e.hostname}/${e.workspace}/${e.repoSlug}/pull-requests/new?source=${n}&dest=${o}`;if(e.host==="bitbucket-server")return`https://${e.hostname}/projects/${e.projectKey}/repos/${e.repoSlug}/pull-requests?create&sourceBranch=refs/heads/${n}&targetBranch=refs/heads/${o}`}function $a(e,t){let r=Ua(e),n=Xe(e);if(r)return Mt(e)?!0:(console.log(v(`\u26A0 Epic branch ${e} exists on remote but could not be fetched.`)),!1);if(n)return console.log(Oe(`\u2717 Epic branch ${e} exists locally but not on remote.`)),console.log(v(" This may contain work from a previous Clancy version that squash-merged locally.")),console.log($(" To preserve this work, push it manually:")),console.log($(` git push -u origin ${e}`)),console.log($(" Then re-run /clancy:once to continue.")),!1;try{if(gl("git",["fetch","origin",t],{encoding:"utf8",stdio:["pipe","pipe","pipe"],timeout:15e3}),gl("git",["checkout","-b",e,`origin/${t}`],{encoding:"utf8"}),et(e))console.log(N(` \u2713 Created epic branch ${e}`));else return console.log(v(`\u26A0 Created ${e} locally but could not push to origin.`)),!1;return!0}catch(o){return console.log(Oe(`\u2717 Could not create epic branch: ${o instanceof Error?o.message:String(o)}`)),!1}}async function xa(e,t,r,n,o,s=!1,i,a,u){if(!et(r)){console.log(v(`\u26A0 Could not push ${r} to origin.`)),console.log($(" The branch is still available locally. Push manually:")),console.log($(` git push -u origin ${r}`)),s||R(process.cwd(),t.key,t.title,"PUSH_FAILED",void 0,i),L(n);let y=Ce(Date.now()-o);return console.log(""),console.log(v(`\u26A0 ${t.key} implemented but push failed`)+$(` (${y})`)),!1}console.log(N(` \u2713 Pushed ${r}`));let p;try{let y=Kg(process.cwd(),".clancy","verify-attempt.txt"),z=Jg(y,"utf8").trim(),H=parseInt(z,10);H>0&&(p=`Verification checks did not fully pass (${H} attempt(s)). Review carefully.`)}catch{}let f=Z(e).CLANCY_GIT_PLATFORM,m=ce(f),h=`feat(${t.key}): ${t.title}`,b=Ye(e,{key:t.key,title:t.title,description:t.description,provider:e.provider},n,p,u);if(m.host!=="none"&&m.host!=="unknown"&&m.host!=="azure"){let y=await Re(e,m,r,n,h,b);if(y?.ok)console.log(N(` \u2713 PR created: ${y.url}`)),s||R(process.cwd(),t.key,t.title,"PR_CREATED",y.number,i);else if(y&&!y.ok&&y.alreadyExists)console.log(v(` \u26A0 A PR/MR already exists for ${r}. Branch pushed.`)),s||R(process.cwd(),t.key,t.title,"PUSHED",void 0,i);else if(y&&!y.ok){console.log(v(` \u26A0 PR/MR creation failed: ${y.error}`));let z=Rr(m,r,n);console.log(z?$(` Create one manually: ${z}`):$(" Branch pushed \u2014 create a PR/MR manually.")),s||R(process.cwd(),t.key,t.title,"PUSHED",void 0,i)}else{let z=Rr(m,r,n);console.log(z?$(` Create a PR: ${z}`):$(" Branch pushed to remote. Create a PR/MR manually.")),s||R(process.cwd(),t.key,t.title,"PUSHED",void 0,i)}}else m.host==="none"?(console.log(v(`\u26A0 No git remote configured. Branch available locally: ${r}`)),s||R(process.cwd(),t.key,t.title,"LOCAL",void 0,i)):(console.log($(" Branch pushed to remote. Create a PR/MR manually.")),s||R(process.cwd(),t.key,t.title,"PUSHED",void 0,i));if(e.provider!=="github"&&a){let y=e.env.CLANCY_STATUS_REVIEW??e.env.CLANCY_STATUS_DONE;y&&await a.transitionTicket(t,y)}return L(n),!0}async function yl(e,t,r,n,o,s){console.log(""),console.log(N(`\u{1F389} All children of ${t} are done!`)),console.log($(` Creating epic PR: ${n} \u2192 ${o}`));let i=j(process.cwd(),"PR_CREATED"),a=j(process.cwd(),"DONE"),u=j(process.cwd(),"REWORK"),l=j(process.cwd(),"PUSHED"),p=[...i,...a,...u,...l].filter(H=>H.parent===t),f=Z(e).CLANCY_GIT_PLATFORM,m=ce(f),h=`feat(${t}): ${r}`,b=Hu(t,r,p,e.provider);if(m.host==="none"||m.host==="unknown"||m.host==="azure")return console.log(v("\u26A0 Cannot create epic PR \u2014 no supported git remote detected.")),console.log($(` Push manually: git push origin ${n}`)),console.log($(` Then create a PR targeting ${o}`)),!1;let y=await Re(e,m,n,o,h,b);if(y?.ok){if(console.log(N(` \u2713 Epic PR created: ${y.url}`)),R(process.cwd(),t,r,"EPIC_PR_CREATED",y.number),e.provider!=="github"&&s){let H=e.env.CLANCY_STATUS_REVIEW??e.env.CLANCY_STATUS_DONE;H&&await s.transitionTicket({key:t,title:r,description:"",parentInfo:"none",blockers:"None"},H)}return!0}if(y&&!y.ok&&y.alreadyExists)return console.log(v(` \u26A0 An epic PR already exists for ${n}.`)),R(process.cwd(),t,r,"EPIC_PR_CREATED"),!0;console.log(v(`\u26A0 Epic PR creation failed: ${y?.error??"unknown error"}`)),console.log($(" Create it manually:")),console.log($(` Branch: ${n} \u2192 ${o}`));let z=Rr(m,n,o);return z&&console.log($(` ${z}`)),!1}async function bl(e){let t=e.board,r=e.ticket,n=e.ticketBranch,o=e.targetBranch,s=e.baseBranch,i=e.hasParent,a=e.isRework??!1;e.originalBranch=Ba();let u=!1;if(i&&!a){let p=await t.fetchChildrenStatus(r.parentInfo,r.linearIssueId);p&&p.total===1&&(u=!0)}e.skipEpicBranch=u;let l=i&&!u?o:s;if(e.effectiveTarget=l,a){if(i&&!u){if(!$a(o,s))return e.originalBranch&&L(e.originalBranch),!1}else Yr(l,s);Mt(n)?L(n):(L(l),L(n,!0))}else if(i&&!u){if(!$a(o,s))return e.originalBranch&&L(e.originalBranch),!1;L(o),L(n,!0)}else Yr(s,s),L(s),L(n,!0);try{Ja(e.cwd,{pid:process.pid,ticketKey:r.key,ticketTitle:r.title,ticketBranch:n,targetBranch:l,parentKey:r.parentInfo,description:(r.description??"").slice(0,2e3),startedAt:new Date().toISOString()}),e.lockOwner=!0}catch{console.log($(" (warning: could not write lock file \u2014 crash recovery disabled)"))}return!0}function Yg(e){return e.includes("hooks.slack.com")}function Gg(e){return JSON.stringify({text:e})}function Wg(e){return JSON.stringify({type:"message",attachments:[{contentType:"application/vnd.microsoft.card.adaptive",content:{$schema:"http://adaptivecards.io/schemas/adaptive-card.json",type:"AdaptiveCard",version:"1.4",body:[{type:"TextBlock",text:e,wrap:!0}]}}]})}async function _l(e,t){let r=Yg(e)?Gg(t):Wg(t);try{let n=await fetch(e,{method:"POST",headers:{"Content-Type":"application/json"},body:r});n.ok||console.warn(`\u26A0 Notification failed: HTTP ${n.status}`)}catch{console.warn("\u26A0 Notification failed: could not reach webhook")}}async function wl(e){let t=e.config,r=e.ticket,n=Ce(Date.now()-e.startTime);console.log(""),console.log(N(`\u{1F3C1} ${r.key} complete`)+$(` (${n})`)),console.log($(` "Bake 'em away, toys."`));let o=t.env.CLANCY_NOTIFY_WEBHOOK;return o&&await _l(o,`\u2713 Clancy completed [${r.key}] ${r.title}`),!0}import{appendFileSync as Vg,mkdirSync as Qg}from"node:fs";import{dirname as Xg,join as ey}from"node:path";function $l(e,t,r,n=6600){let o=ey(e,".clancy","costs.log");Qg(Xg(o),{recursive:!0});let s=new Date(r).getTime(),i=Date.now(),a=Number.isNaN(s)?0:Math.max(0,i-s),u=Math.round(a/6e4),l=Math.round(u*n),f=`${new Date().toISOString()} | ${t} | ${u}min | ~${l} tokens (estimated)
|
|
47
|
+
`;Vg(o,f,"utf8")}function xl(e){let t=e.config,r=e.ticket;try{let n=Ut(e.cwd);if(n){let o=Number(t.env.CLANCY_TOKEN_RATE??"6600");$l(e.cwd,r.key,n.startedAt,Number.isFinite(o)&&o>0?o:6600)}}catch{}return!0}import{mkdirSync as ty,readFileSync as ry,renameSync as ny,writeFileSync as oy}from"node:fs";import{join as kl}from"node:path";function Sl(e){return kl(e,".clancy","quality.json")}function vl(e){try{let t=ry(Sl(e),"utf8"),r=JSON.parse(t);if(r&&typeof r.tickets=="object"&&r.tickets!==null&&!Array.isArray(r.tickets))return ka(r),r}catch{}return{tickets:{},summary:{totalTickets:0,avgReworkCycles:0,avgVerificationRetries:0,avgDuration:0}}}function ka(e){let t=Object.values(e.tickets),r=t.length;if(r===0){e.summary={totalTickets:0,avgReworkCycles:0,avgVerificationRetries:0,avgDuration:0};return}let n=0,o=0,s=0,i=0;for(let a of t)n+=a.reworkCycles,o+=a.verificationRetries,a.duration!=null&&(s+=a.duration,i++);e.summary={totalTickets:r,avgReworkCycles:Math.round(n/r*100)/100,avgVerificationRetries:Math.round(o/r*100)/100,avgDuration:i>0?Math.round(s/i*100)/100:0}}function zl(e,t){let r=Sl(e),n=r+".tmp";ty(kl(e,".clancy"),{recursive:!0}),oy(n,JSON.stringify(t,null,2)+`
|
|
48
|
+
`,"utf8"),ny(n,r)}function Tl(e,t){return e.tickets[t]||(e.tickets[t]={reworkCycles:0,verificationRetries:0}),e.tickets[t]}function Il(e,t){try{let r=vl(e),n=Tl(r,t);n.reworkCycles++,ka(r),zl(e,r)}catch{}}function Pl(e,t,r){try{let n=vl(e),o=Tl(n,t);o.deliveredAt=new Date().toISOString(),o.duration=r,ka(n),zl(e,n)}catch{}}function We(e,t){return e==="github"?`feature/issue-${t.replace("#","")}`:`feature/${t.toLowerCase()}`}function Ve(e,t,r){return r?e==="github"?`milestone/${r.toLowerCase().replace(/\s+/g,"-").replace(/[^a-z0-9-]/g,"")}`:`epic/${r.toLowerCase()}`:t}async function Al(e){let t=j(process.cwd(),"PR_CREATED"),r=j(process.cwd(),"REWORK"),n=j(process.cwd(),"PUSHED"),o=j(process.cwd(),"PUSH_FAILED"),s=[...t,...r,...n,...o];if(s.length===0)return;let i=Z(e).CLANCY_GIT_PLATFORM,a=ce(i);if(a.host==="none"||a.host==="unknown"||a.host==="azure")return;let u=vt(e,a);if(!u)return;let l=St(a,Z(e).CLANCY_GIT_API_URL);if(!l)return;let p=s.slice(0,5);for(let f of p){let m=We(e.provider,f.key),h;if(f.timestamp){let y=new Date(f.timestamp.replace(" ","T")+"Z");h=Number.isNaN(y.getTime())?void 0:y.toISOString()}let b;switch(a.host){case"github":b=await sl(u.token,`${a.owner}/${a.repo}`,m,a.owner,l,h);break;case"gitlab":b=await ml(u.token,l,a.projectPath,m,h);break;case"bitbucket":b=await Qu(u.username,u.token,a.workspace,a.repoSlug,m,h);break;case"bitbucket-server":b=await el(u.token,l,a.projectKey,a.repoSlug,m,h);break}if(b?.changesRequested){let y=[],z;switch(a.host){case"github":y=await il(u.token,`${a.owner}/${a.repo}`,b.prNumber,l,h);break;case"gitlab":{let Y=await hl(u.token,l,a.projectPath,b.prNumber,h);y=Y.comments,z=Y.discussionIds;break}case"bitbucket":y=await Xu(u.username,u.token,a.workspace,a.repoSlug,b.prNumber,h);break;case"bitbucket-server":y=await tl(u.token,l,a.projectKey,a.repoSlug,b.prNumber,h);break}return{ticket:{key:f.key,title:f.summary,description:f.summary,parentInfo:f.parent??"none",blockers:"None"},feedback:y,prNumber:b.prNumber,discussionIds:z,reviewers:b.reviewers??[]}}}}function sy(e){if(e.length===0)return"[clancy] Rework pushed addressing reviewer feedback.";let t=e.length,r=e.slice(0,3).map(o=>`- ${o.slice(0,80)}`).join(`
|
|
49
49
|
`),n=e.length>3?`
|
|
50
50
|
- ...`:"";return`[clancy] Rework pushed addressing ${t} feedback item${t!==1?"s":""}.
|
|
51
51
|
|
|
52
|
-
${r}${n}`}async function El(e,t,r,n,o){let s=Z(e).CLANCY_GIT_PLATFORM,i=ce(s);if(i.host==="none"||i.host==="unknown"||i.host==="azure")return;let a=vt(e,i);if(!a)return;let u=St(i,Z(e).CLANCY_GIT_API_URL);if(!u)return;let l=sy(r);try{let p=!1;switch(i.host){case"github":p=await al(a.token,`${i.owner}/${i.repo}`,t,l,u);break;case"gitlab":p=await fl(a.token,u,i.projectPath,t,l);break;case"bitbucket":p=await Wu(a.username,a.token,i.workspace,i.repoSlug,t,l);break;case"bitbucket-server":p=await Vu(a.token,u,i.projectKey,i.repoSlug,t,l);break}p&&console.log($(" \u2713 Posted rework comment"))}catch{}if(i.host==="gitlab"&&n&&n.length>0)try{let p=await dl(a.token,u,i.projectPath,t,n);p>0&&console.log($(` \u2713 Resolved ${p} discussion thread${p!==1?"s":""}`))}catch{}if(i.host==="github"&&o&&o.length>0)try{await cl(a.token,`${i.owner}/${i.repo}`,t,o,u)&&console.log($(` \u2713 Re-requested review from ${o.join(", ")}`))}catch{}}async function Rl(e){let t=e.config,r=e.ticket,n=e.ticketBranch,o=e.effectiveTarget,s=e.hasParent,i=e.skipEpicBranch??!1,a=e.isRework??!1,u=s&&!i?r.parentInfo:void 0,l=s&&i?r.parentInfo:void 0,p=l&&/^#\d+$/.test(l),f=l&&t.provider==="github"&&!p?void 0:l;if(a){if(!await
|
|
52
|
+
${r}${n}`}async function El(e,t,r,n,o){let s=Z(e).CLANCY_GIT_PLATFORM,i=ce(s);if(i.host==="none"||i.host==="unknown"||i.host==="azure")return;let a=vt(e,i);if(!a)return;let u=St(i,Z(e).CLANCY_GIT_API_URL);if(!u)return;let l=sy(r);try{let p=!1;switch(i.host){case"github":p=await al(a.token,`${i.owner}/${i.repo}`,t,l,u);break;case"gitlab":p=await fl(a.token,u,i.projectPath,t,l);break;case"bitbucket":p=await Wu(a.username,a.token,i.workspace,i.repoSlug,t,l);break;case"bitbucket-server":p=await Vu(a.token,u,i.projectKey,i.repoSlug,t,l);break}p&&console.log($(" \u2713 Posted rework comment"))}catch{}if(i.host==="gitlab"&&n&&n.length>0)try{let p=await dl(a.token,u,i.projectPath,t,n);p>0&&console.log($(` \u2713 Resolved ${p} discussion thread${p!==1?"s":""}`))}catch{}if(i.host==="github"&&o&&o.length>0)try{await cl(a.token,`${i.owner}/${i.repo}`,t,o,u)&&console.log($(` \u2713 Re-requested review from ${o.join(", ")}`))}catch{}}async function Rl(e){let t=e.config,r=e.ticket,n=e.ticketBranch,o=e.effectiveTarget,s=e.hasParent,i=e.skipEpicBranch??!1,a=e.isRework??!1,u=s&&!i?r.parentInfo:void 0,l=s&&i?r.parentInfo:void 0,p=l&&/^#\d+$/.test(l),f=l&&t.provider==="github"&&!p?void 0:l;if(a){if(!await xa(t,r,n,o,e.startTime,!0,u,e.board))return R(e.cwd,r.key,r.title,"PUSH_FAILED",void 0,u),!1;R(e.cwd,r.key,r.title,"REWORK",e.reworkPrNumber,u),Il(e.cwd,r.key),e.reworkPrNumber!=null&&await El(t,e.reworkPrNumber,e.prFeedback??[],e.reworkDiscussionIds,e.reworkReviewers)}else{if(!await xa(t,r,n,o,e.startTime,!1,u,e.board,f))return!1;Pl(e.cwd,r.key,Date.now()-e.startTime)}return!0}function Cl(e){if(!e.dryRun)return!0;let t=e.config,r=e.ticket,n=e.ticketBranch,o=e.targetBranch,s=t.provider==="github"?"Milestone":"Epic";return console.log(""),console.log(v("\u2500\u2500 Dry Run \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500")),console.log(` Ticket: ${Ne(`[${r.key}]`)} ${r.title}`),e.isRework&&console.log(" Mode: Rework"),console.log(` ${s}:${" ".repeat(14-s.length)}${r.parentInfo}`),t.provider!=="github"&&console.log(` Blockers: ${r.blockers}`),console.log(` Target branch: ${n} \u2192 ${o}`),r.description&&console.log(` Description: ${r.description}`),console.log(v("\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500")),console.log($(" No changes made. Remove --dry-run to run for real.")),!1}async function Nl(e){let t=e.config,r=e.board;try{let n=j(e.cwd,"PR_CREATED"),o=j(e.cwd,"REWORK"),s=j(e.cwd,"PUSHED"),i=[...n,...o,...s],a=new Set(j(e.cwd,"EPIC_PR_CREATED").map(p=>p.key)),u=new Set(i.map(p=>p.parent).filter(p=>!!p).filter(p=>!a.has(p))),l=t.env.CLANCY_BASE_BRANCH??"main";for(let p of u){let f=await r.fetchChildrenStatus(p);if(f&&f.incomplete===0&&f.total>0){let m=Ve(t.provider,l,p),h=await yl(t,p,p,m,l,r);console.log(h?N(` \u2713 Epic ${p} complete \u2014 PR created`):v(`\u26A0 Epic PR creation failed for ${p}. Create manually:
|
|
53
53
|
git push origin ${m}
|
|
54
54
|
Then create a PR targeting ${l}`))}}}catch{}return!0}import{spawnSync as Ol}from"node:child_process";function Ll(e,t){let r=["-p","--dangerously-skip-permissions"];t&&r.push("--model",t);let n=Ol("claude",r,{input:e,stdio:["pipe","pipe","pipe"],encoding:"utf8"});return{stdout:n.stdout??"",ok:n.status===0&&!n.error}}function Zl(e,t){let r=["--dangerously-skip-permissions"];t&&r.push("--model",t);let n=Ol("claude",r,{input:e,stdio:["pipe","inherit","inherit"],encoding:"utf8"});return n.status===0&&!n.error}function iy(e){return["You are evaluating whether a ticket can be implemented as pure code changes in a repository.","",`Ticket: [${e.key}] ${e.title}`,"Description:",e.description,"","Can this ticket be completed entirely through code changes committed to a git repository?","","Answer INFEASIBLE if the ticket requires ANY of:","- Manual testing or configuration in external tools or admin panels","- Access to external services, APIs, or platforms not available in the codebase","- Physical, hardware, or infrastructure changes","- Design assets that do not yet exist","- Deployment or infrastructure changes outside the repository","- Human judgment calls that require stakeholder input","","Answer with exactly one line in this format:","FEASIBLE","or","INFEASIBLE: one-line reason","","Do not include any other text."].join(`
|
|
55
55
|
`)}function ay(e){let t=e.trim().split(`
|
|
@@ -119,7 +119,7 @@ If the ${e.provider==="github"?"issue":"ticket"} IS implementable, continue:${e.
|
|
|
119
119
|
4. Commit your work following the conventions in GIT.md
|
|
120
120
|
5. When done, confirm you are finished.`}function Fl(e){let t=e.config,r=e.ticket,n=e.isRework??!1,o=e.targetBranch,s=t.env.CLANCY_TDD==="true",i;n?i=Bl({key:r.key,title:r.title,description:r.description,provider:t.provider,feedbackComments:e.prFeedback??[],previousContext:Fa(o),tdd:s}):i=Ul({provider:t.provider,key:r.key,title:r.title,description:r.description,parentInfo:r.parentInfo,blockers:t.provider!=="github"?r.blockers:void 0,tdd:s}),process.env.CLANCY_ONCE_ACTIVE="1";let a;try{a=Zl(i,t.env.CLANCY_MODEL)}finally{delete process.env.CLANCY_ONCE_ACTIVE}return a?!0:(console.log(v("\u26A0 Claude session exited with an error. Skipping merge.")),!1)}import{execFileSync as Sa}from"node:child_process";import{existsSync as ly,readFileSync as py}from"node:fs";import{join as fy}from"node:path";function dy(e){let t={};for(let r of e.split(`
|
|
121
121
|
`)){let n=r.trim();if(!n||n.startsWith("#"))continue;let o=n.indexOf("=");if(o===-1)continue;let s=n.slice(0,o).trim(),i=n.slice(o+1).trim();i.length>=2&&(i.startsWith('"')&&i.endsWith('"')||i.startsWith("'")&&i.endsWith("'"))&&(i=i.slice(1,-1)),t[s]=i}return t}function Hl(e){let t=fy(e,".clancy",".env");if(!ly(t))return;let r=py(t,"utf8");return dy(r)}function my(e){try{return Sa("which",[e],{stdio:"ignore"}),!0}catch{return!1}}function hy(){try{return Sa("git",["rev-parse","--git-dir"],{stdio:"ignore"}),!0}catch{return!1}}function Cr(e){for(let n of["claude","git"])if(!my(n))return{ok:!1,error:`\u2717 ${n} is required but not found`};let t=Hl(e);if(!t)return{ok:!1,error:"\u2717 .clancy/.env not found \u2014 run /clancy:init first"};if(!hy())return{ok:!1,error:"\u2717 Not inside a git repository"};let r;try{Sa("git",["ls-remote","origin","HEAD"],{encoding:"utf8",timeout:5e3,stdio:["pipe","pipe","pipe"]})}catch{r="\u26A0 Could not reach origin. PR creation and rework detection may not work."}if(Dt()){let n="\u26A0 Working directory has uncommitted changes \u2014 they will be included in the branch";r=r?`${r}
|
|
122
|
-
${n}`:n}return{ok:!0,env:t,warning:r}}import{execFileSync as zt}from"node:child_process";function ql(e){let t=e.ticketBranch;if(!Xe(t))return;let r;try{r=zt("git",["rev-parse","--abbrev-ref","HEAD"],{encoding:"utf8"}).trim()}catch{return}try{L(t)}catch{return}let n=!1,o=!1;try{n=Dt()}catch{}try{o=zt("git",["log",`origin/${t}..${t}`,"--oneline"],{encoding:"utf8"}).trim().length>0}catch{try{o=zt("git",["log",`origin/${e.targetBranch}..${t}`,"--oneline"],{encoding:"utf8"}).trim().length>0}catch{}}try{L(r)}catch{}if(!(!n&&!o))return{branch:t,hasUncommitted:n,hasUnpushed:o}}async function Jl(e,t,r){try{if(L(r.branch),r.hasUncommitted)try{zt("git",["add","-A"],{encoding:"utf8"}),zt("git",["commit","-m",`fix(${t.ticketKey}): resume after crash`],{encoding:"utf8"}),console.log(N(` \u2713 Committed in-progress work for ${t.ticketKey}`))}catch{return console.log(v(` \u26A0 Could not commit changes on ${r.branch}`)),!1}if(!et(r.branch))return console.log(v(` \u26A0 Could not push ${r.branch} to origin`)),!1;console.log(N(` \u2713 Pushed ${r.branch}`));let o=Z(e).CLANCY_GIT_PLATFORM,s=ce(o),i=`feat(${t.ticketKey}): ${t.ticketTitle}`,a=Ye(e,{key:t.ticketKey,title:t.ticketTitle,description:"",provider:e.provider},t.targetBranch);if(s.host!=="none"&&s.host!=="unknown"&&s.host!=="azure"){let u=await Re(e,s,r.branch,t.targetBranch,i,a);u?.ok?(console.log(N(` \u2713 PR created: ${u.url}`)),R(process.cwd(),t.ticketKey,t.ticketTitle,"RESUMED",u.number,t.parentKey&&t.parentKey!=="none"?t.parentKey:void 0)):(console.log($(" Branch pushed \u2014 create a PR manually.")),R(process.cwd(),t.ticketKey,t.ticketTitle,"RESUMED",void 0,t.parentKey&&t.parentKey!=="none"?t.parentKey:void 0))}else R(process.cwd(),t.ticketKey,t.ticketTitle,"RESUMED",void 0,t.parentKey&&t.parentKey!=="none"?t.parentKey:void 0);try{L(t.targetBranch)}catch{}return!0}catch(n){return console.log(v(` \u26A0 Resume failed: ${n instanceof Error?n.message:String(n)}`)),!1}}async function Kl(e){let t=Ut(e.cwd);if(!t)return!0;if(!Ka(t))return console.log(v(`\u26A0 Another Clancy session is running (PID ${t.pid}, ticket ${t.ticketKey}). Aborting.`)),!1;console.log($(` Stale lock found (PID ${t.pid}, ticket ${t.ticketKey}). Cleaning up...`)),Ft(e.cwd),Ht(e.cwd);try{let r=ql(t);if(r)if(e.isAfk){console.log(v(` \u21BB Resuming crashed session: ${t.ticketKey} on ${r.branch}`));let n=Cr(e.cwd);if(n.ok){let o=Pr(n.env);if(typeof o!="string"&&await Jl(o,t,r))return console.log(N(` \u2713 Resumed ${t.ticketKey}`)),!1}}else console.log(v(` Found in-progress work on ${r.branch}.`+(r.hasUncommitted?" Has uncommitted changes.":"")+(r.hasUnpushed?" Has unpushed commits.":""))),console.log($(" Run in AFK mode (CLANCY_AFK_MODE=1) to auto-resume, or handle manually."))}catch{}return!0}async function Yl(e){let t=e.config;if(!t)return!0;try{let r=j(e.cwd,"PUSHED"),n=j(e.cwd,"PR_CREATED"),o=new Set(n.map(l=>l.key)),s=r.filter(l=>!o.has(l.key));if(!s.length)return!0;let i=Z(t).CLANCY_GIT_PLATFORM,a=ce(i);if(a.host==="none"||a.host==="unknown"||a.host==="azure"){for(let l of s){console.log($(` Skipping PR retry for ${l.key} \u2014 remote host "${a.host}" does not support PR creation`));let p=l.parent&&l.parent!=="none"?l.parent:void 0;R(e.cwd,l.key,l.summary,"PR_CREATED",void 0,p)}return!0}let u=t.env.CLANCY_BASE_BRANCH??"main";for(let l of s){console.log(v(` \u21BB Retrying PR creation for ${l.key} (previously pushed)`));let p=l.parent&&l.parent!=="none"?l.parent:void 0,f=We(t.provider,l.key),m=Ve(t.provider,u,p),h=`feat(${l.key}): ${l.summary}`,b=Ye(t,{key:l.key,title:l.summary,description:l.summary,provider:t.provider},m),y=await Re(t,a,f,m,h,b);y?.ok?(console.log(N(` \u2713 PR created: ${y.url}`)),R(e.cwd,l.key,l.summary,"PR_CREATED",y.number,p)):y&&!y.ok&&y.alreadyExists?(console.log($(` PR already exists for ${l.key}`)),R(e.cwd,l.key,l.summary,"PR_CREATED",void 0,p)):console.log(v(` \u26A0 PR retry failed for ${l.key}${y&&!y.ok?`: ${y.error}`:""} \u2014 create manually`))}}catch{}return!0}var va=c.object({id:c.number(),url:c.optional(c.string())}),Gl=c.object({workItems:c.array(va)}),gy=c.object({rel:c.string(),url:c.string(),attributes:c.optional(c.object({name:c.optional(c.string())}))}),yy=c.object({"System.Title":c.optional(c.string()),"System.Description":c.optional(c.nullable(c.string())),"System.State":c.optional(c.string()),"System.Tags":c.optional(c.nullable(c.string())),"System.AssignedTo":c.optional(c.nullable(c.object({displayName:c.optional(c.string()),uniqueName:c.optional(c.string())}))),"System.WorkItemType":c.optional(c.string())}),za=c.object({id:c.number(),fields:yy,relations:c.optional(c.nullable(c.array(gy)))}),Wl=c.object({value:c.array(za),count:c.optional(c.number())}),Vl=c.object({id:c.string(),name:c.string(),state:c.optional(c.string())}),by=c.object({source:c.optional(c.nullable(va)),target:c.optional(c.nullable(va))}),Ql=c.object({workItemRelations:c.optional(c.array(by))});var Qe="7.1";function Xl(e){return`Basic ${btoa(`:${e}`)}`}function Pt(e){return!(e.includes("'")||e.includes("\\")||e.includes("--")||e.includes(";")||e.includes("/*")||/[^\x20-\x7E\t\n\r]/.test(e))}function Tt(e){if(!Pt(e))throw new Error(`Unsafe WIQL value: ${e.slice(0,50)}`);return e}function At(e,t){return`https://dev.azure.com/${encodeURIComponent(e)}/${encodeURIComponent(t)}/_apis`}function Et(e){return{Authorization:Xl(e),"Content-Type":"application/json"}}function _y(e){return{Authorization:Xl(e),"Content-Type":"application/json-patch+json"}}async function ep(e,t,r){let n;try{n=await fetch(`https://dev.azure.com/${encodeURIComponent(e)}/_apis/projects/${encodeURIComponent(t)}?api-version=${Qe}`,{headers:Et(r)})}catch{return{ok:!1,error:"\u2717 Could not reach Azure DevOps \u2014 check network"}}if(!n.ok)return n.status===401||n.status===403?{ok:!1,error:"\u2717 Azure DevOps auth failed \u2014 check AZDO_PAT"}:{ok:!1,error:`\u2717 Azure DevOps API returned HTTP ${n.status}`};try{let o=await n.json(),s=Vl.safeParse(o);if(s.success&&s.data.id)return{ok:!0}}catch{}return{ok:!1,error:"\u2717 Azure DevOps auth failed \u2014 check AZDO_PAT"}}async function tp(e,t,r,n){try{let o=await fetch(`${At(e,t)}/wit/wiql?api-version=${Qe}`,{method:"POST",headers:Et(r),body:JSON.stringify({query:n})});if(!o.ok)return console.warn(`\u26A0 Azure DevOps WIQL returned HTTP ${o.status}`),[];let s=await o.json(),i=Gl.safeParse(s);return i.success?i.data.workItems.map(a=>a.id):(console.warn(`\u26A0 Unexpected Azure DevOps WIQL response: ${i.error.message}`),[])}catch(o){return console.warn(`\u26A0 Azure DevOps WIQL request failed: ${o instanceof Error?o.message:String(o)}`),[]}}async function Ta(e,t,r,n){if(!n.length)return[];let o=[];for(let s=0;s<n.length;s+=200){let a=n.slice(s,s+200).join(",");try{let u=await fetch(`${At(e,t)}/wit/workitems?ids=${a}&$expand=relations&api-version=${Qe}`,{headers:Et(r)});if(!u.ok){console.warn(`\u26A0 Azure DevOps work items batch returned HTTP ${u.status}`);continue}let l=await u.json(),p=Wl.safeParse(l);if(!p.success){console.warn(`\u26A0 Unexpected Azure DevOps work items response: ${p.error.message}`);continue}o.push(...p.data.value)}catch(u){console.warn(`\u26A0 Azure DevOps work items fetch failed: ${u instanceof Error?u.message:String(u)}`)}}return o}async function It(e,t,r,n){try{let o=await fetch(`${At(e,t)}/wit/workitems/${n}?$expand=relations&api-version=${Qe}`,{headers:Et(r)});if(!o.ok)return;let s=await o.json(),i=za.safeParse(s);return i.success?i.data:void 0}catch{return}}async function Nr(e,t,r,n,o){try{return(await fetch(`${At(e,t)}/wit/workitems/${n}?api-version=${Qe}`,{method:"PATCH",headers:_y(r),body:JSON.stringify(o)})).ok}catch{return!1}}function Or(e){return e?e.split(";").map(t=>t.trim()).filter(Boolean):[]}function Ia(e){return e.join("; ")}function rp(e){let t=e.match(/workItems\/(\d+)/i);if(!t)return;let r=parseInt(t[1],10);return Number.isNaN(r)?void 0:r}async function np(e,t,r,n,o,s,i=5){let a=`SELECT [System.Id] FROM WorkItems WHERE [System.TeamProject] = '${Tt(t)}' AND [System.State] = '${Tt(n)}' AND [System.AssignedTo] = @Me`;o&&(a+=` AND [System.WorkItemType] = '${Tt(o)}'`),a+=" ORDER BY [System.CreatedDate] ASC";let u=await tp(e,t,r,a);if(!u.length)return[];let l=u.slice(0,i*2),f=(await Ta(e,t,r,l)).map(m=>wy(m));return s&&(f=f.filter(m=>!m.labels?.some(h=>h==="clancy:hitl"))),f.slice(0,i)}function wy(e){let t=Or(e.fields["System.Tags"]),r;if(e.relations){for(let n of e.relations)if(n.rel==="System.LinkTypes.Hierarchy-Reverse"){r=rp(n.url);break}}return{key:`azdo-${e.id}`,title:e.fields["System.Title"]??"",description:e.fields["System.Description"]??"",provider:"azdo",workItemId:e.id,parentId:r,labels:t}}var Pa=new Set(["Done","Closed","Completed","Resolved"]);async function op(e,t,r,n){try{let o=await It(e,t,r,n);if(!o)return!1;let s=(o.relations??[]).filter(i=>i.rel==="System.LinkTypes.Dependency-Reverse");if(!s.length)return!1;for(let i of s){let a=rp(i.url);if(a===void 0)continue;let u=await It(e,t,r,a);if(!u)continue;let l=u.fields["System.State"];if(!l||!Pa.has(l))return!0}return!1}catch{return!1}}async function sp(e,t,r,n,o){try{if(o){let s=`Epic: ${o}`,i=await $y(e,t,r,s);if(i&&i.total>0)return i}return await ky(e,t,r,n)}catch{return}}async function $y(e,t,r,n){try{let o=`SELECT [System.Id] FROM WorkItems WHERE [System.TeamProject] = '${Tt(t)}' AND [System.Description] CONTAINS '${Tt(n)}'`,s=await tp(e,t,r,o);if(!s.length)return{total:0,incomplete:0};let i=await Ta(e,t,r,s),a=i.length,u=i.filter(l=>{let p=l.fields["System.State"];return!p||!Pa.has(p)}).length;return{total:a,incomplete:u}}catch{return}}async function ky(e,t,r,n){try{if(Number.isNaN(n))return;let o=`SELECT [System.Id] FROM WorkItemLinks WHERE [Source].[System.Id] = ${n} AND [System.Links.LinkType] = 'System.LinkTypes.Hierarchy-Forward' MODE (MustContain)`,s=await fetch(`${At(e,t)}/wit/wiql?api-version=${Qe}`,{method:"POST",headers:Et(r),body:JSON.stringify({query:o})});if(!s.ok)return;let i=await s.json(),a=Ql.safeParse(i);if(!a.success)return;let l=(a.data.workItemRelations??[]).filter(h=>h.target?.id!==void 0&&h.target.id!==n).map(h=>h.target.id);if(!l.length)return{total:0,incomplete:0};let p=await Ta(e,t,r,l),f=p.length,m=p.filter(h=>{let b=h.fields["System.State"];return!b||!Pa.has(b)}).length;return{total:f,incomplete:m}}catch{return}}function ip(e){let t=e.AZDO_ORG,r=e.AZDO_PROJECT,n=e.AZDO_PAT,o=e.CLANCY_AZDO_STATUS??"New",s=e.CLANCY_AZDO_WIT;return{async ping(){return ep(t,r,n)},validateInputs(){if(!t.trim())return"\u2717 AZDO_ORG must not be empty";if(!r.trim())return"\u2717 AZDO_PROJECT must not be empty";if(!n.trim())return"\u2717 AZDO_PAT must not be empty";if(!Pt(r))return"\u2717 AZDO_PROJECT contains unsafe characters for WIQL queries";if(!Pt(o))return"\u2717 CLANCY_AZDO_STATUS contains unsafe characters for WIQL queries";if(s&&!Pt(s))return"\u2717 CLANCY_AZDO_WIT contains unsafe characters for WIQL queries"},async fetchTicket(i){return(await this.fetchTickets(i))[0]},async fetchTickets(i){let a=await np(t,r,n,o,s,i.excludeHitl);if(i.buildLabel){let u=i.buildLabel;a=a.filter(l=>l.labels?.includes(u))}return a.map(u=>({key:u.key,title:u.title,description:u.description,parentInfo:u.parentId?`azdo-${u.parentId}`:"none",blockers:"None",issueId:String(u.workItemId),labels:u.labels??[],status:o}))},async fetchBlockerStatus(i){let a=Lr(i.key);return a===void 0?!1:op(t,r,n,a)},async fetchChildrenStatus(i,a){let u=a??i.replace("azdo-",""),l=parseInt(u,10);if(!Number.isNaN(l))return sp(t,r,n,l,i)},async transitionTicket(i,a){let u=Lr(i.key);if(u===void 0)return!1;let l=await Nr(t,r,n,u,[{op:"replace",path:"/fields/System.State",value:a}]);return l&&console.log(` \u2192 Transitioned to ${a}`),l},async ensureLabel(i){},async addLabel(i,a){try{let u=Lr(i);if(u===void 0)return;let l=await It(t,r,n,u);if(!l)return;let p=Or(l.fields["System.Tags"]);if(p.includes(a))return;let f=[...p,a];await Nr(t,r,n,u,[{op:"replace",path:"/fields/System.Tags",value:Ia(f)}])}catch(u){console.warn(`\u26A0 addLabel failed: ${u instanceof Error?u.message:String(u)}`)}},async removeLabel(i,a){try{let u=Lr(i);if(u===void 0)return;let l=await It(t,r,n,u);if(!l)return;let p=Or(l.fields["System.Tags"]);if(!p.includes(a))return;let f=p.filter(m=>m!==a);await Nr(t,r,n,u,[{op:"replace",path:"/fields/System.Tags",value:Ia(f)}])}catch(u){console.warn(`\u26A0 removeLabel failed: ${u instanceof Error?u.message:String(u)}`)}},sharedEnv(){return e}}}function Lr(e){let t=parseInt(e.replace("azdo-",""),10);return Number.isNaN(t)?void 0:t}var xy=c.object({login:c.string()}),Sy=/^[a-zA-Z0-9_.-]+\/[a-zA-Z0-9_.-]+$/,Zr;function jr(e){return Sy.test(e)}async function cp(e,t){return Ar(`${D}/repos/${t}`,U(e),{401:"\u2717 GitHub auth failed \u2014 check GITHUB_TOKEN",403:"\u2717 GitHub permission denied",404:`\u2717 GitHub repo "${t}" not found`},"\u2717 Could not reach GitHub \u2014 check network")}async function up(e,t){if(Zr)return Zr;try{let r=await fetch(`${t??D}/user`,{headers:U(e)});if(!r.ok){let s=r.status===401||r.status===403?' Fine-grained PATs need "Account permissions \u2192 read" (or classic PATs need read:user scope).':"";return console.warn(`\u26A0 GitHub /user returned HTTP ${r.status} \u2014 falling back to @me.${s}`),"@me"}let n=await r.json(),o=xy.safeParse(n);if(o.success)return Zr=o.data.login,Zr;console.warn("\u26A0 Unexpected GitHub /user response \u2014 falling back to @me")}catch(r){console.warn(`\u26A0 GitHub /user request failed: ${r instanceof Error?r.message:String(r)} \u2014 falling back to @me`)}return"@me"}async function lp(e,t,r,n,o,s=5){let i,a=new URLSearchParams({state:"open",assignee:n??"@me",per_page:"10"});r&&a.set("labels",r);try{i=await fetch(`${D}/repos/${t}/issues?${a}`,{headers:U(e)})}catch(f){return console.warn(`\u26A0 GitHub API request failed: ${f instanceof Error?f.message:String(f)}`),[]}if(!i.ok)return console.warn(`\u26A0 GitHub API returned HTTP ${i.status}`),[];let u;try{u=await i.json()}catch{return console.warn("\u26A0 GitHub API returned invalid JSON"),[]}let l=rl.safeParse(u);if(!l.success)return console.warn(`\u26A0 Unexpected GitHub response shape: ${l.error.message}`),[];let p=l.data.filter(f=>!f.pull_request);return o&&(p=p.filter(f=>!f.labels?.some(m=>m.name==="clancy:hitl"))),p.slice(0,s).map(f=>({key:`#${f.number}`,title:f.title,description:f.body??"",provider:"github",milestone:f.milestone?.title,labels:f.labels?.map(m=>m.name).filter(m=>!!m)}))}async function pp(e,t,r,n){if(!jr(t))return!1;let o=/Blocked by #(\d+)/gi,s=new Set,i;for(;(i=o.exec(n))!==null;){let a=parseInt(i[1],10);!Number.isNaN(a)&&a!==r&&s.add(a)}if(!s.size)return!1;try{for(let a of s){let u=await fetch(`${D}/repos/${t}/issues/${a}`,{headers:U(e)});if(!u.ok)continue;if((await u.json()).state!=="closed")return!0}return!1}catch{return!1}}async function fp(e,t,r){if(jr(t))try{let n=await ap(e,t,`Epic: #${r}`);return n&&n.total>0?n:await ap(e,t,`Parent: #${r}`)}catch{return}}async function ap(e,t,r){let n=U(e),o=`"${r}" repo:${t} is:issue`,s=new URLSearchParams({q:o,per_page:"1"}),i=await fetch(`${D}/search/issues?${s}`,{headers:n});if(!i.ok)return;let u=(await i.json()).total_count??0;if(u===0)return{total:0,incomplete:0};let l=`"${r}" repo:${t} is:issue is:open`,p=new URLSearchParams({q:l,per_page:"1"}),f=await fetch(`${D}/search/issues?${p}`,{headers:n});if(!f.ok)return{total:u,incomplete:u};let h=(await f.json()).total_count??0;return{total:u,incomplete:h}}function dp(e){return{async ping(){return cp(e.GITHUB_TOKEN,e.GITHUB_REPO)},validateInputs(){if(!jr(e.GITHUB_REPO))return"\u2717 GITHUB_REPO format is invalid \u2014 expected owner/repo"},async fetchTicket(t){return(await this.fetchTickets(t))[0]},async fetchTickets(t){let r=await up(e.GITHUB_TOKEN);return(await lp(e.GITHUB_TOKEN,e.GITHUB_REPO,t.buildLabel??e.CLANCY_LABEL,r,t.excludeHitl)).map(o=>({key:o.key,title:o.title,description:o.description,parentInfo:o.milestone??"none",blockers:"None",labels:o.labels??[],status:"open"}))},async fetchBlockerStatus(t){let r=parseInt(t.key.replace("#",""),10);return Number.isNaN(r)?!1:pp(e.GITHUB_TOKEN,e.GITHUB_REPO,r,t.description)},async fetchChildrenStatus(t){let r=parseInt(t.replace("#",""),10);if(!Number.isNaN(r))return fp(e.GITHUB_TOKEN,e.GITHUB_REPO,r)},async transitionTicket(){return!1},async ensureLabel(t){try{let r=U(e.GITHUB_TOKEN),n=await fetch(`${D}/repos/${e.GITHUB_REPO}/labels/${encodeURIComponent(t)}`,{headers:r});if(n.ok)return;if(n.status===404){let o=await fetch(`${D}/repos/${e.GITHUB_REPO}/labels`,{method:"POST",headers:{...r,"Content-Type":"application/json"},body:JSON.stringify({name:t,color:"0075ca"})});!o.ok&&o.status!==422&&console.warn(`\u26A0 ensureLabel create returned HTTP ${o.status}`)}else console.warn(`\u26A0 ensureLabel GET returned HTTP ${n.status}`)}catch(r){console.warn(`\u26A0 ensureLabel failed: ${r instanceof Error?r.message:String(r)}`)}},async addLabel(t,r){try{await this.ensureLabel(r);let n=parseInt(t.replace("#",""),10);if(Number.isNaN(n))return;let o=U(e.GITHUB_TOKEN),s=await fetch(`${D}/repos/${e.GITHUB_REPO}/issues/${n}/labels`,{method:"POST",headers:{...o,"Content-Type":"application/json"},body:JSON.stringify({labels:[r]})});s.ok||console.warn(`\u26A0 addLabel returned HTTP ${s.status}`)}catch(n){console.warn(`\u26A0 addLabel failed: ${n instanceof Error?n.message:String(n)}`)}},async removeLabel(t,r){try{let n=parseInt(t.replace("#",""),10);if(Number.isNaN(n))return;let o=U(e.GITHUB_TOKEN),s=await fetch(`${D}/repos/${e.GITHUB_REPO}/issues/${n}/labels/${encodeURIComponent(r)}`,{method:"DELETE",headers:o});!s.ok&&s.status!==404&&console.warn(`\u26A0 removeLabel returned HTTP ${s.status}`)}catch(n){console.warn(`\u26A0 removeLabel failed: ${n instanceof Error?n.message:String(n)}`)}},sharedEnv(){return e}}}var vy=c.object({type:c.optional(c.object({name:c.optional(c.string())})),inwardIssue:c.optional(c.object({key:c.optional(c.string())}))}),zy=c.object({summary:c.string(),description:c.optional(c.unknown()),issuelinks:c.optional(c.array(vy)),parent:c.optional(c.object({key:c.optional(c.string())})),customfield_10014:c.optional(c.nullable(c.string())),labels:c.optional(c.array(c.string()))}),Ty=c.object({key:c.string(),fields:zy}),mp=c.object({total:c.optional(c.number()),isLast:c.optional(c.boolean()),issues:c.array(Ty)}),Iy=c.object({id:c.string(),name:c.string()}),hp=c.object({transitions:c.array(Iy)}),Py=c.object({type:c.optional(c.object({name:c.optional(c.string())})),inwardIssue:c.optional(c.object({key:c.optional(c.string()),fields:c.optional(c.object({status:c.optional(c.object({statusCategory:c.optional(c.object({key:c.optional(c.string())}))}))}))}))}),gp=c.object({fields:c.optional(c.object({issuelinks:c.optional(c.array(Py))}))}),Aa=c.object({fields:c.optional(c.object({labels:c.optional(c.array(c.string()))}))});var Ay=/^[a-zA-Z0-9 _\-'.]+$/,Ea=/^[A-Z][A-Z0-9]+-\d+$/;function bp(e,t){return Buffer.from(`${e}:${t}`).toString("base64")}function Rt(e){return Ay.test(e)}async function _p(e,t,r){return Ar(`${e}/rest/api/3/project/${t}`,Se(r),{401:"\u2717 Jira auth failed \u2014 check credentials",403:"\u2717 Jira permission denied for this project",404:`\u2717 Jira project "${t}" not found`},"\u2717 Could not reach Jira \u2014 check network")}function Ey(e,t,r,n,o){let s=[`project="${e}"`];return r&&s.push("sprint in openSprints()"),n&&s.push(`labels = "${n}"`),o&&s.push('labels != "clancy:hitl"'),s.push("assignee=currentUser()"),s.push(`status="${t}"`),s.join(" AND ")+" ORDER BY priority ASC"}function Ry(e){if(!e||typeof e!="object")return"";let t=[];function r(n){if(typeof n=="string"){t.push(n);return}if(Array.isArray(n)){for(let o of n)r(o);return}if(n&&typeof n=="object")for(let o of Object.values(n))r(o)}return r(e),t.join(" ")}async function wp(e,t,r,n,o,s,i,a=5){let u=Ey(r,n,o,s,i),l;try{l=await fetch(`${e}/rest/api/3/search/jql`,{method:"POST",headers:{...Se(t),"Content-Type":"application/json"},body:JSON.stringify({jql:u,maxResults:a,fields:["summary","description","issuelinks","parent","customfield_10014","labels"]})})}catch(m){return console.warn(`\u26A0 Jira API request failed: ${m instanceof Error?m.message:String(m)}`),[]}if(!l.ok)return console.warn(`\u26A0 Jira API returned HTTP ${l.status}`),[];let p;try{p=await l.json()}catch{return console.warn("\u26A0 Jira API returned invalid JSON"),[]}let f=mp.safeParse(p);return f.success?f.data.issues.map(m=>{let h=m.fields,b=(h.issuelinks??[]).filter(z=>z.type?.name==="Blocks"&&z.inwardIssue?.key).map(z=>z.inwardIssue?.key).filter(z=>!!z),y=h.parent?.key??h.customfield_10014??void 0;return{key:m.key,title:h.summary,description:Ry(h.description),provider:"jira",epicKey:y,blockers:b,labels:h.labels}}):(console.warn(`\u26A0 Unexpected Jira response shape: ${f.error.message}`),[])}async function $p(e,t,r){if(!Ea.test(r))return!1;try{let n=await fetch(`${e}/rest/api/3/issue/${r}?fields=issuelinks`,{headers:Se(t)});if(!n.ok)return!1;let o=await n.json(),s=gp.safeParse(o);return s.success?(s.data.fields?.issuelinks??[]).some(a=>{if(a.type?.name!=="Blocks"||!a.inwardIssue?.key)return!1;let u=a.inwardIssue.fields?.status?.statusCategory?.key;return u?u!=="done":!1}):!1}catch{return!1}}async function kp(e,t,r){if(Ea.test(r))try{let n=r.split("-")[0],o=await yp(e,t,`project = "${n}" AND description ~ "Epic: ${r}"`);return o&&o.total>0?o:await yp(e,t,`parent = ${r}`)}catch{return}}async function yp(e,t,r){let n=await fetch(`${e}/rest/api/3/search/jql`,{method:"POST",headers:{...Se(t),"Content-Type":"application/json"},body:JSON.stringify({jql:r,maxResults:0})});if(!n.ok)return;let s=(await n.json()).total??0;if(s===0)return{total:0,incomplete:0};let i=await fetch(`${e}/rest/api/3/search/jql`,{method:"POST",headers:{...Se(t),"Content-Type":"application/json"},body:JSON.stringify({jql:`${r} AND statusCategory != "done"`,maxResults:0})});if(!i.ok)return;let u=(await i.json()).total??0;return{total:s,incomplete:u}}async function Cy(e,t,r,n){if(!Ea.test(r))return;let o;try{o=await fetch(`${e}/rest/api/3/issue/${r}/transitions`,{headers:Se(t)})}catch(u){console.warn(`\u26A0 Jira transitions request failed: ${u instanceof Error?u.message:String(u)}`);return}if(!o.ok)return;let s;try{s=await o.json()}catch{console.warn("\u26A0 Jira transitions returned invalid JSON");return}let i=hp.safeParse(s);if(!i.success){console.warn(`\u26A0 Unexpected Jira transitions response: ${i.error.message}`);return}return i.data.transitions.find(u=>u.name===n)?.id}async function xp(e,t,r,n){try{let o=await Cy(e,t,r,n);return o?(await fetch(`${e}/rest/api/3/issue/${r}/transitions`,{method:"POST",headers:{...Se(t),"Content-Type":"application/json"},body:JSON.stringify({transition:{id:o}})})).ok:(console.warn(`\u26A0 Jira transition "${n}" not found for ${r}`),!1)}catch{return!1}}function Sp(e){let t=bp(e.JIRA_USER,e.JIRA_API_TOKEN);return{async ping(){return _p(e.JIRA_BASE_URL,e.JIRA_PROJECT_KEY,t)},validateInputs(){if(!Rt(e.JIRA_PROJECT_KEY))return"\u2717 JIRA_PROJECT_KEY contains invalid characters";if(e.CLANCY_LABEL_BUILD&&!Rt(e.CLANCY_LABEL_BUILD))return"\u2717 CLANCY_LABEL_BUILD contains invalid characters";if(e.CLANCY_LABEL&&!Rt(e.CLANCY_LABEL))return"\u2717 CLANCY_LABEL contains invalid characters";if(e.CLANCY_JQL_STATUS&&!Rt(e.CLANCY_JQL_STATUS))return"\u2717 CLANCY_JQL_STATUS contains invalid characters"},async fetchTicket(r){return(await this.fetchTickets(r))[0]},async fetchTickets(r){let n=await wp(e.JIRA_BASE_URL,t,e.JIRA_PROJECT_KEY,e.CLANCY_JQL_STATUS??"To Do",e.CLANCY_JQL_SPRINT,r.buildLabel??e.CLANCY_LABEL,r.excludeHitl),o=e.CLANCY_JQL_STATUS??"To Do";return n.map(s=>{let i=s.blockers.length?`Blocked by: ${s.blockers.join(", ")}`:"None";return{key:s.key,title:s.title,description:s.description,parentInfo:s.epicKey??"none",blockers:i,labels:s.labels??[],status:o}})},async fetchBlockerStatus(r){return $p(e.JIRA_BASE_URL,t,r.key)},async fetchChildrenStatus(r){return kp(e.JIRA_BASE_URL,t,r)},async transitionTicket(r,n){let o=await xp(e.JIRA_BASE_URL,t,r.key,n);return o&&console.log(` \u2192 Transitioned to ${n}`),o},async ensureLabel(r){},async addLabel(r,n){try{if(!/^[A-Z][A-Z0-9]+-\d+$/.test(r))return;let o=await fetch(`${e.JIRA_BASE_URL}/rest/api/3/issue/${encodeURIComponent(r)}?fields=labels`,{headers:{Authorization:t,Accept:"application/json"}});if(!o.ok){console.warn(`\u26A0 addLabel GET failed: HTTP ${o.status}`);return}let i=Aa.parse(await o.json()).fields?.labels??[];if(i.includes(n))return;let a=await fetch(`${e.JIRA_BASE_URL}/rest/api/3/issue/${encodeURIComponent(r)}`,{method:"PUT",headers:{Authorization:t,"Content-Type":"application/json"},body:JSON.stringify({fields:{labels:[...i,n]}})});a.ok||console.warn(`\u26A0 addLabel PUT returned HTTP ${a.status}`)}catch(o){console.warn(`\u26A0 addLabel failed: ${o instanceof Error?o.message:String(o)}`)}},async removeLabel(r,n){try{if(!/^[A-Z][A-Z0-9]+-\d+$/.test(r))return;let o=await fetch(`${e.JIRA_BASE_URL}/rest/api/3/issue/${encodeURIComponent(r)}?fields=labels`,{headers:{Authorization:t,Accept:"application/json"}});if(!o.ok){console.warn(`\u26A0 removeLabel GET failed: HTTP ${o.status}`);return}let i=Aa.parse(await o.json()).fields?.labels??[];if(!i.includes(n))return;let a=await fetch(`${e.JIRA_BASE_URL}/rest/api/3/issue/${encodeURIComponent(r)}`,{method:"PUT",headers:{Authorization:t,"Content-Type":"application/json"},body:JSON.stringify({fields:{labels:i.filter(u=>u!==n)}})});a.ok||console.warn(`\u26A0 removeLabel PUT returned HTTP ${a.status}`)}catch(o){console.warn(`\u26A0 removeLabel failed: ${o instanceof Error?o.message:String(o)}`)}},sharedEnv(){return e}}}var Ny=c.object({id:c.string(),identifier:c.string(),title:c.string(),description:c.optional(c.nullable(c.string())),parent:c.optional(c.nullable(c.object({identifier:c.string(),title:c.optional(c.string())}))),labels:c.optional(c.object({nodes:c.array(c.object({name:c.string()}))}))}),vp=c.object({data:c.optional(c.object({viewer:c.optional(c.object({assignedIssues:c.optional(c.object({nodes:c.array(Ny)}))}))}))}),zp=c.object({data:c.optional(c.object({viewer:c.optional(c.object({id:c.optional(c.string())}))}))}),Tp=c.object({data:c.optional(c.object({workflowStates:c.optional(c.object({nodes:c.array(c.object({id:c.string()}))}))}))}),Ip=c.object({data:c.optional(c.object({issueUpdate:c.optional(c.object({success:c.optional(c.boolean())}))}))}),Oy=c.object({type:c.string(),relatedIssue:c.optional(c.object({state:c.optional(c.object({type:c.optional(c.string())}))}))}),Pp=c.object({data:c.optional(c.object({issue:c.optional(c.object({relations:c.optional(c.object({nodes:c.array(Oy)}))}))}))}),Ly=c.object({state:c.optional(c.object({type:c.optional(c.string())}))}),Ap=c.object({data:c.optional(c.object({issueSearch:c.optional(c.object({nodes:c.array(Ly)}))}))}),Ep=c.object({data:c.optional(c.object({team:c.optional(c.object({labels:c.optional(c.object({nodes:c.array(c.object({id:c.string(),name:c.string()}))}))}))}))}),Rp=c.object({data:c.optional(c.object({issueLabels:c.optional(c.object({nodes:c.array(c.object({id:c.string(),name:c.string()}))}))}))}),Cp=c.object({data:c.optional(c.object({issueLabelCreate:c.optional(c.object({issueLabel:c.optional(c.object({id:c.string()})),success:c.optional(c.boolean())}))}))}),Ra=c.object({data:c.optional(c.object({issueSearch:c.optional(c.object({nodes:c.array(c.object({id:c.string(),labels:c.optional(c.object({nodes:c.array(c.object({id:c.string(),name:c.optional(c.string())}))}))}))}))}))});var Zy=/^[a-zA-Z0-9_-]+$/,Np="https://api.linear.app/graphql";function Op(e){return Zy.test(e)}async function V(e,t,r){let n;try{n=await fetch(Np,{method:"POST",headers:{Authorization:e,"Content-Type":"application/json"},body:JSON.stringify({query:t,variables:r})})}catch(o){console.warn(`\u26A0 Linear API request failed: ${o instanceof Error?o.message:String(o)}`);return}if(!n.ok){console.warn(`\u26A0 Linear API returned HTTP ${n.status}`);return}try{return await n.json()}catch{console.warn("\u26A0 Linear API returned invalid JSON");return}}async function Lp(e){let t;try{t=await fetch(Np,{method:"POST",headers:{Authorization:e,"Content-Type":"application/json"},body:JSON.stringify({query:"{ viewer { id } }"})})}catch{return{ok:!1,error:"\u2717 Could not reach Linear \u2014 check network"}}if(!t.ok)return t.status===401||t.status===403?{ok:!1,error:"\u2717 Linear auth failed \u2014 check LINEAR_API_KEY"}:{ok:!1,error:`\u2717 Linear API returned HTTP ${t.status}`};try{let r=await t.json(),n=zp.safeParse(r);if(n.success&&n.data.data?.viewer?.id)return{ok:!0}}catch{}return{ok:!1,error:"\u2717 Linear auth failed \u2014 check LINEAR_API_KEY"}}async function Zp(e,t,r=5){let n=e.CLANCY_LABEL?.trim(),o=!!n,s=o?"labels: { name: { eq: $label } }":"",i=["$teamId: String!",...o?["$label: String!"]:[]],a=['state: { type: { eq: "unstarted" } }',"team: { id: { eq: $teamId } }",s].filter(Boolean),u=`
|
|
122
|
+
${n}`:n}return{ok:!0,env:t,warning:r}}import{execFileSync as zt}from"node:child_process";function ql(e){let t=e.ticketBranch;if(!Xe(t))return;let r;try{r=zt("git",["rev-parse","--abbrev-ref","HEAD"],{encoding:"utf8"}).trim()}catch{return}try{L(t)}catch{return}let n=!1,o=!1;try{n=Dt()}catch{}try{o=zt("git",["log",`origin/${t}..${t}`,"--oneline"],{encoding:"utf8"}).trim().length>0}catch{try{o=zt("git",["log",`origin/${e.targetBranch}..${t}`,"--oneline"],{encoding:"utf8"}).trim().length>0}catch{}}try{L(r)}catch{}if(!(!n&&!o))return{branch:t,hasUncommitted:n,hasUnpushed:o}}async function Jl(e,t,r){try{if(L(r.branch),r.hasUncommitted)try{zt("git",["add","-A"],{encoding:"utf8"}),zt("git",["commit","-m",`fix(${t.ticketKey}): resume after crash`],{encoding:"utf8"}),console.log(N(` \u2713 Committed in-progress work for ${t.ticketKey}`))}catch{return console.log(v(` \u26A0 Could not commit changes on ${r.branch}`)),!1}if(!et(r.branch))return console.log(v(` \u26A0 Could not push ${r.branch} to origin`)),!1;console.log(N(` \u2713 Pushed ${r.branch}`));let o=Z(e).CLANCY_GIT_PLATFORM,s=ce(o),i=`feat(${t.ticketKey}): ${t.ticketTitle}`,a=Ye(e,{key:t.ticketKey,title:t.ticketTitle,description:"",provider:e.provider},t.targetBranch);if(s.host!=="none"&&s.host!=="unknown"&&s.host!=="azure"){let u=await Re(e,s,r.branch,t.targetBranch,i,a);u?.ok?(console.log(N(` \u2713 PR created: ${u.url}`)),R(process.cwd(),t.ticketKey,t.ticketTitle,"RESUMED",u.number,t.parentKey&&t.parentKey!=="none"?t.parentKey:void 0)):(console.log($(" Branch pushed \u2014 create a PR manually.")),R(process.cwd(),t.ticketKey,t.ticketTitle,"RESUMED",void 0,t.parentKey&&t.parentKey!=="none"?t.parentKey:void 0))}else R(process.cwd(),t.ticketKey,t.ticketTitle,"RESUMED",void 0,t.parentKey&&t.parentKey!=="none"?t.parentKey:void 0);try{L(t.targetBranch)}catch{}return!0}catch(n){return console.log(v(` \u26A0 Resume failed: ${n instanceof Error?n.message:String(n)}`)),!1}}async function Kl(e){let t=Ut(e.cwd);if(!t)return!0;if(!Ka(t))return console.log(v(`\u26A0 Another Clancy session is running (PID ${t.pid}, ticket ${t.ticketKey}). Aborting.`)),!1;console.log($(` Stale lock found (PID ${t.pid}, ticket ${t.ticketKey}). Cleaning up...`)),Ft(e.cwd),Ht(e.cwd);try{let r=ql(t);if(r)if(e.isAfk){console.log(v(` \u21BB Resuming crashed session: ${t.ticketKey} on ${r.branch}`));let n=Cr(e.cwd);if(n.ok){let o=Pr(n.env);if(typeof o!="string"&&await Jl(o,t,r))return console.log(N(` \u2713 Resumed ${t.ticketKey}`)),!1}}else console.log(v(` Found in-progress work on ${r.branch}.`+(r.hasUncommitted?" Has uncommitted changes.":"")+(r.hasUnpushed?" Has unpushed commits.":""))),console.log($(" Run in AFK mode (CLANCY_AFK_MODE=1) to auto-resume, or handle manually."))}catch{}return!0}async function Yl(e){let t=e.config;if(!t)return!0;try{let r=j(e.cwd,"PUSHED"),n=j(e.cwd,"PR_CREATED"),o=new Set(n.map(l=>l.key)),s=r.filter(l=>!o.has(l.key));if(!s.length)return!0;let i=Z(t).CLANCY_GIT_PLATFORM,a=ce(i);if(a.host==="none"||a.host==="unknown"||a.host==="azure"){for(let l of s){console.log($(` Skipping PR retry for ${l.key} \u2014 remote host "${a.host}" does not support PR creation`));let p=l.parent&&l.parent!=="none"?l.parent:void 0;R(e.cwd,l.key,l.summary,"PR_CREATED",void 0,p)}return!0}let u=t.env.CLANCY_BASE_BRANCH??"main";for(let l of s){console.log(v(` \u21BB Retrying PR creation for ${l.key} (previously pushed)`));let p=l.parent&&l.parent!=="none"?l.parent:void 0,f=We(t.provider,l.key),m=Ve(t.provider,u,p),h=`feat(${l.key}): ${l.summary}`,b=Ye(t,{key:l.key,title:l.summary,description:l.summary,provider:t.provider},m),y=await Re(t,a,f,m,h,b);y?.ok?(console.log(N(` \u2713 PR created: ${y.url}`)),R(e.cwd,l.key,l.summary,"PR_CREATED",y.number,p)):y&&!y.ok&&y.alreadyExists?(console.log($(` PR already exists for ${l.key}`)),R(e.cwd,l.key,l.summary,"PR_CREATED",void 0,p)):console.log(v(` \u26A0 PR retry failed for ${l.key}${y&&!y.ok?`: ${y.error}`:""} \u2014 create manually`))}}catch{}return!0}var va=c.object({id:c.number(),url:c.optional(c.string())}),Gl=c.object({workItems:c.array(va)}),gy=c.object({rel:c.string(),url:c.string(),attributes:c.optional(c.object({name:c.optional(c.string())}))}),yy=c.object({"System.Title":c.optional(c.string()),"System.Description":c.optional(c.nullable(c.string())),"System.State":c.optional(c.string()),"System.Tags":c.optional(c.nullable(c.string())),"System.AssignedTo":c.optional(c.nullable(c.object({displayName:c.optional(c.string()),uniqueName:c.optional(c.string())}))),"System.WorkItemType":c.optional(c.string())}),za=c.object({id:c.number(),fields:yy,relations:c.optional(c.nullable(c.array(gy)))}),Wl=c.object({value:c.array(za),count:c.optional(c.number())}),Vl=c.object({id:c.string(),name:c.string(),state:c.optional(c.string())}),by=c.object({source:c.optional(c.nullable(va)),target:c.optional(c.nullable(va))}),Ql=c.object({workItemRelations:c.optional(c.array(by))});var Qe="7.1";function Xl(e){return`Basic ${btoa(`:${e}`)}`}function Pt(e){return!(e.includes("'")||e.includes("\\")||e.includes("--")||e.includes(";")||e.includes("/*")||/[^\x20-\x7E\t\n\r]/.test(e))}function Tt(e){if(!Pt(e))throw new Error(`Unsafe WIQL value: ${e.slice(0,50)}`);return e}function At(e,t){return`https://dev.azure.com/${encodeURIComponent(e)}/${encodeURIComponent(t)}/_apis`}function Et(e){return{Authorization:Xl(e),"Content-Type":"application/json"}}function _y(e){return{Authorization:Xl(e),"Content-Type":"application/json-patch+json"}}async function ep(e,t,r){let n;try{n=await fetch(`https://dev.azure.com/${encodeURIComponent(e)}/_apis/projects/${encodeURIComponent(t)}?api-version=${Qe}`,{headers:Et(r)})}catch{return{ok:!1,error:"\u2717 Could not reach Azure DevOps \u2014 check network"}}if(!n.ok)return n.status===401||n.status===403?{ok:!1,error:"\u2717 Azure DevOps auth failed \u2014 check AZDO_PAT"}:{ok:!1,error:`\u2717 Azure DevOps API returned HTTP ${n.status}`};try{let o=await n.json(),s=Vl.safeParse(o);if(s.success&&s.data.id)return{ok:!0}}catch{}return{ok:!1,error:"\u2717 Azure DevOps auth failed \u2014 check AZDO_PAT"}}async function tp(e,t,r,n){try{let o=await fetch(`${At(e,t)}/wit/wiql?api-version=${Qe}`,{method:"POST",headers:Et(r),body:JSON.stringify({query:n})});if(!o.ok)return console.warn(`\u26A0 Azure DevOps WIQL returned HTTP ${o.status}`),[];let s=await o.json(),i=Gl.safeParse(s);return i.success?i.data.workItems.map(a=>a.id):(console.warn(`\u26A0 Unexpected Azure DevOps WIQL response: ${i.error.message}`),[])}catch(o){return console.warn(`\u26A0 Azure DevOps WIQL request failed: ${o instanceof Error?o.message:String(o)}`),[]}}async function Ta(e,t,r,n){if(!n.length)return[];let o=[];for(let s=0;s<n.length;s+=200){let a=n.slice(s,s+200).join(",");try{let u=await fetch(`${At(e,t)}/wit/workitems?ids=${a}&$expand=relations&api-version=${Qe}`,{headers:Et(r)});if(!u.ok){console.warn(`\u26A0 Azure DevOps work items batch returned HTTP ${u.status}`);continue}let l=await u.json(),p=Wl.safeParse(l);if(!p.success){console.warn(`\u26A0 Unexpected Azure DevOps work items response: ${p.error.message}`);continue}o.push(...p.data.value)}catch(u){console.warn(`\u26A0 Azure DevOps work items fetch failed: ${u instanceof Error?u.message:String(u)}`)}}return o}async function It(e,t,r,n){try{let o=await fetch(`${At(e,t)}/wit/workitems/${n}?$expand=relations&api-version=${Qe}`,{headers:Et(r)});if(!o.ok)return;let s=await o.json(),i=za.safeParse(s);return i.success?i.data:void 0}catch{return}}async function Nr(e,t,r,n,o){try{return(await fetch(`${At(e,t)}/wit/workitems/${n}?api-version=${Qe}`,{method:"PATCH",headers:_y(r),body:JSON.stringify(o)})).ok}catch{return!1}}function Or(e){return e?e.split(";").map(t=>t.trim()).filter(Boolean):[]}function Ia(e){return e.join("; ")}function rp(e){let t=e.match(/workItems\/(\d+)/i);if(!t)return;let r=parseInt(t[1],10);return Number.isNaN(r)?void 0:r}async function np(e,t,r,n,o,s,i=5){let a=`SELECT [System.Id] FROM WorkItems WHERE [System.TeamProject] = '${Tt(t)}' AND [System.State] = '${Tt(n)}' AND [System.AssignedTo] = @Me`;o&&(a+=` AND [System.WorkItemType] = '${Tt(o)}'`),a+=" ORDER BY [System.CreatedDate] ASC";let u=await tp(e,t,r,a);if(!u.length)return[];let l=u.slice(0,i*2),f=(await Ta(e,t,r,l)).map(m=>wy(m));return s&&(f=f.filter(m=>!m.labels?.some(h=>h==="clancy:hitl"))),f.slice(0,i)}function wy(e){let t=Or(e.fields["System.Tags"]),r;if(e.relations){for(let n of e.relations)if(n.rel==="System.LinkTypes.Hierarchy-Reverse"){r=rp(n.url);break}}return{key:`azdo-${e.id}`,title:e.fields["System.Title"]??"",description:e.fields["System.Description"]??"",provider:"azdo",workItemId:e.id,parentId:r,labels:t}}var Pa=new Set(["Done","Closed","Completed","Resolved"]);async function op(e,t,r,n){try{let o=await It(e,t,r,n);if(!o)return!1;let s=(o.relations??[]).filter(i=>i.rel==="System.LinkTypes.Dependency-Reverse");if(!s.length)return!1;for(let i of s){let a=rp(i.url);if(a===void 0)continue;let u=await It(e,t,r,a);if(!u)continue;let l=u.fields["System.State"];if(!l||!Pa.has(l))return!0}return!1}catch{return!1}}async function sp(e,t,r,n,o){try{if(o){let s=`Epic: ${o}`,i=await $y(e,t,r,s);if(i&&i.total>0)return i}return await xy(e,t,r,n)}catch{return}}async function $y(e,t,r,n){try{let o=`SELECT [System.Id] FROM WorkItems WHERE [System.TeamProject] = '${Tt(t)}' AND [System.Description] CONTAINS '${Tt(n)}'`,s=await tp(e,t,r,o);if(!s.length)return{total:0,incomplete:0};let i=await Ta(e,t,r,s),a=i.length,u=i.filter(l=>{let p=l.fields["System.State"];return!p||!Pa.has(p)}).length;return{total:a,incomplete:u}}catch{return}}async function xy(e,t,r,n){try{if(Number.isNaN(n))return;let o=`SELECT [System.Id] FROM WorkItemLinks WHERE [Source].[System.Id] = ${n} AND [System.Links.LinkType] = 'System.LinkTypes.Hierarchy-Forward' MODE (MustContain)`,s=await fetch(`${At(e,t)}/wit/wiql?api-version=${Qe}`,{method:"POST",headers:Et(r),body:JSON.stringify({query:o})});if(!s.ok)return;let i=await s.json(),a=Ql.safeParse(i);if(!a.success)return;let l=(a.data.workItemRelations??[]).filter(h=>h.target?.id!==void 0&&h.target.id!==n).map(h=>h.target.id);if(!l.length)return{total:0,incomplete:0};let p=await Ta(e,t,r,l),f=p.length,m=p.filter(h=>{let b=h.fields["System.State"];return!b||!Pa.has(b)}).length;return{total:f,incomplete:m}}catch{return}}function ip(e){let t=e.AZDO_ORG,r=e.AZDO_PROJECT,n=e.AZDO_PAT,o=e.CLANCY_AZDO_STATUS??"New",s=e.CLANCY_AZDO_WIT;return{async ping(){return ep(t,r,n)},validateInputs(){if(!t.trim())return"\u2717 AZDO_ORG must not be empty";if(!r.trim())return"\u2717 AZDO_PROJECT must not be empty";if(!n.trim())return"\u2717 AZDO_PAT must not be empty";if(!Pt(r))return"\u2717 AZDO_PROJECT contains unsafe characters for WIQL queries";if(!Pt(o))return"\u2717 CLANCY_AZDO_STATUS contains unsafe characters for WIQL queries";if(s&&!Pt(s))return"\u2717 CLANCY_AZDO_WIT contains unsafe characters for WIQL queries"},async fetchTicket(i){return(await this.fetchTickets(i))[0]},async fetchTickets(i){let a=await np(t,r,n,o,s,i.excludeHitl);if(i.buildLabel){let u=i.buildLabel;a=a.filter(l=>l.labels?.includes(u))}return a.map(u=>({key:u.key,title:u.title,description:u.description,parentInfo:u.parentId?`azdo-${u.parentId}`:"none",blockers:"None",issueId:String(u.workItemId),labels:u.labels??[],status:o}))},async fetchBlockerStatus(i){let a=Lr(i.key);return a===void 0?!1:op(t,r,n,a)},async fetchChildrenStatus(i,a){let u=a??i.replace("azdo-",""),l=parseInt(u,10);if(!Number.isNaN(l))return sp(t,r,n,l,i)},async transitionTicket(i,a){let u=Lr(i.key);if(u===void 0)return!1;let l=await Nr(t,r,n,u,[{op:"replace",path:"/fields/System.State",value:a}]);return l&&console.log(` \u2192 Transitioned to ${a}`),l},async ensureLabel(i){},async addLabel(i,a){try{let u=Lr(i);if(u===void 0)return;let l=await It(t,r,n,u);if(!l)return;let p=Or(l.fields["System.Tags"]);if(p.includes(a))return;let f=[...p,a];await Nr(t,r,n,u,[{op:"replace",path:"/fields/System.Tags",value:Ia(f)}])}catch(u){console.warn(`\u26A0 addLabel failed: ${u instanceof Error?u.message:String(u)}`)}},async removeLabel(i,a){try{let u=Lr(i);if(u===void 0)return;let l=await It(t,r,n,u);if(!l)return;let p=Or(l.fields["System.Tags"]);if(!p.includes(a))return;let f=p.filter(m=>m!==a);await Nr(t,r,n,u,[{op:"replace",path:"/fields/System.Tags",value:Ia(f)}])}catch(u){console.warn(`\u26A0 removeLabel failed: ${u instanceof Error?u.message:String(u)}`)}},sharedEnv(){return e}}}function Lr(e){let t=parseInt(e.replace("azdo-",""),10);return Number.isNaN(t)?void 0:t}var ky=c.object({login:c.string()}),Sy=/^[a-zA-Z0-9_.-]+\/[a-zA-Z0-9_.-]+$/,Zr;function jr(e){return Sy.test(e)}async function cp(e,t){return Ar(`${D}/repos/${t}`,U(e),{401:"\u2717 GitHub auth failed \u2014 check GITHUB_TOKEN",403:"\u2717 GitHub permission denied",404:`\u2717 GitHub repo "${t}" not found`},"\u2717 Could not reach GitHub \u2014 check network")}async function up(e,t){if(Zr)return Zr;try{let r=await fetch(`${t??D}/user`,{headers:U(e)});if(!r.ok){let s=r.status===401||r.status===403?' Fine-grained PATs need "Account permissions \u2192 read" (or classic PATs need read:user scope).':"";return console.warn(`\u26A0 GitHub /user returned HTTP ${r.status} \u2014 falling back to @me.${s}`),"@me"}let n=await r.json(),o=ky.safeParse(n);if(o.success)return Zr=o.data.login,Zr;console.warn("\u26A0 Unexpected GitHub /user response \u2014 falling back to @me")}catch(r){console.warn(`\u26A0 GitHub /user request failed: ${r instanceof Error?r.message:String(r)} \u2014 falling back to @me`)}return"@me"}async function lp(e,t,r,n,o,s=5){let i,a=new URLSearchParams({state:"open",assignee:n??"@me",per_page:"10"});r&&a.set("labels",r);try{i=await fetch(`${D}/repos/${t}/issues?${a}`,{headers:U(e)})}catch(f){return console.warn(`\u26A0 GitHub API request failed: ${f instanceof Error?f.message:String(f)}`),[]}if(!i.ok)return console.warn(`\u26A0 GitHub API returned HTTP ${i.status}`),[];let u;try{u=await i.json()}catch{return console.warn("\u26A0 GitHub API returned invalid JSON"),[]}let l=rl.safeParse(u);if(!l.success)return console.warn(`\u26A0 Unexpected GitHub response shape: ${l.error.message}`),[];let p=l.data.filter(f=>!f.pull_request);return o&&(p=p.filter(f=>!f.labels?.some(m=>m.name==="clancy:hitl"))),p.slice(0,s).map(f=>({key:`#${f.number}`,title:f.title,description:f.body??"",provider:"github",milestone:f.milestone?.title,labels:f.labels?.map(m=>m.name).filter(m=>!!m)}))}async function pp(e,t,r,n){if(!jr(t))return!1;let o=/Blocked by #(\d+)/gi,s=new Set,i;for(;(i=o.exec(n))!==null;){let a=parseInt(i[1],10);!Number.isNaN(a)&&a!==r&&s.add(a)}if(!s.size)return!1;try{for(let a of s){let u=await fetch(`${D}/repos/${t}/issues/${a}`,{headers:U(e)});if(!u.ok)continue;if((await u.json()).state!=="closed")return!0}return!1}catch{return!1}}async function fp(e,t,r){if(jr(t))try{let n=await ap(e,t,`Epic: #${r}`);return n&&n.total>0?n:await ap(e,t,`Parent: #${r}`)}catch{return}}async function ap(e,t,r){let n=U(e),o=`"${r}" repo:${t} is:issue`,s=new URLSearchParams({q:o,per_page:"1"}),i=await fetch(`${D}/search/issues?${s}`,{headers:n});if(!i.ok)return;let u=(await i.json()).total_count??0;if(u===0)return{total:0,incomplete:0};let l=`"${r}" repo:${t} is:issue is:open`,p=new URLSearchParams({q:l,per_page:"1"}),f=await fetch(`${D}/search/issues?${p}`,{headers:n});if(!f.ok)return{total:u,incomplete:u};let h=(await f.json()).total_count??0;return{total:u,incomplete:h}}var vy=/^(?:Epic|Parent): (#\d+)/m;function zy(e){return e.match(vy)?.[1]}function dp(e){return{async ping(){return cp(e.GITHUB_TOKEN,e.GITHUB_REPO)},validateInputs(){if(!jr(e.GITHUB_REPO))return"\u2717 GITHUB_REPO format is invalid \u2014 expected owner/repo"},async fetchTicket(t){return(await this.fetchTickets(t))[0]},async fetchTickets(t){let r=await up(e.GITHUB_TOKEN);return(await lp(e.GITHUB_TOKEN,e.GITHUB_REPO,t.buildLabel??e.CLANCY_LABEL,r,t.excludeHitl)).map(o=>({key:o.key,title:o.title,description:o.description,parentInfo:o.milestone??zy(o.description)??"none",blockers:"None",labels:o.labels??[],status:"open"}))},async fetchBlockerStatus(t){let r=parseInt(t.key.replace("#",""),10);return Number.isNaN(r)?!1:pp(e.GITHUB_TOKEN,e.GITHUB_REPO,r,t.description)},async fetchChildrenStatus(t){let r=parseInt(t.replace("#",""),10);if(!Number.isNaN(r))return fp(e.GITHUB_TOKEN,e.GITHUB_REPO,r)},async transitionTicket(){return!1},async ensureLabel(t){try{let r=U(e.GITHUB_TOKEN),n=await fetch(`${D}/repos/${e.GITHUB_REPO}/labels/${encodeURIComponent(t)}`,{headers:r});if(n.ok)return;if(n.status===404){let o=await fetch(`${D}/repos/${e.GITHUB_REPO}/labels`,{method:"POST",headers:{...r,"Content-Type":"application/json"},body:JSON.stringify({name:t,color:"0075ca"})});!o.ok&&o.status!==422&&console.warn(`\u26A0 ensureLabel create returned HTTP ${o.status}`)}else console.warn(`\u26A0 ensureLabel GET returned HTTP ${n.status}`)}catch(r){console.warn(`\u26A0 ensureLabel failed: ${r instanceof Error?r.message:String(r)}`)}},async addLabel(t,r){try{await this.ensureLabel(r);let n=parseInt(t.replace("#",""),10);if(Number.isNaN(n))return;let o=U(e.GITHUB_TOKEN),s=await fetch(`${D}/repos/${e.GITHUB_REPO}/issues/${n}/labels`,{method:"POST",headers:{...o,"Content-Type":"application/json"},body:JSON.stringify({labels:[r]})});s.ok||console.warn(`\u26A0 addLabel returned HTTP ${s.status}`)}catch(n){console.warn(`\u26A0 addLabel failed: ${n instanceof Error?n.message:String(n)}`)}},async removeLabel(t,r){try{let n=parseInt(t.replace("#",""),10);if(Number.isNaN(n))return;let o=U(e.GITHUB_TOKEN),s=await fetch(`${D}/repos/${e.GITHUB_REPO}/issues/${n}/labels/${encodeURIComponent(r)}`,{method:"DELETE",headers:o});!s.ok&&s.status!==404&&console.warn(`\u26A0 removeLabel returned HTTP ${s.status}`)}catch(n){console.warn(`\u26A0 removeLabel failed: ${n instanceof Error?n.message:String(n)}`)}},sharedEnv(){return e}}}var Ty=c.object({type:c.optional(c.object({name:c.optional(c.string())})),inwardIssue:c.optional(c.object({key:c.optional(c.string())}))}),Iy=c.object({summary:c.string(),description:c.optional(c.unknown()),issuelinks:c.optional(c.array(Ty)),parent:c.optional(c.object({key:c.optional(c.string())})),customfield_10014:c.optional(c.nullable(c.string())),labels:c.optional(c.array(c.string()))}),Py=c.object({key:c.string(),fields:Iy}),mp=c.object({total:c.optional(c.number()),isLast:c.optional(c.boolean()),issues:c.array(Py)}),Ay=c.object({id:c.string(),name:c.string()}),hp=c.object({transitions:c.array(Ay)}),Ey=c.object({type:c.optional(c.object({name:c.optional(c.string())})),inwardIssue:c.optional(c.object({key:c.optional(c.string()),fields:c.optional(c.object({status:c.optional(c.object({statusCategory:c.optional(c.object({key:c.optional(c.string())}))}))}))}))}),gp=c.object({fields:c.optional(c.object({issuelinks:c.optional(c.array(Ey))}))}),Aa=c.object({fields:c.optional(c.object({labels:c.optional(c.array(c.string()))}))});var Ry=/^[a-zA-Z0-9 _\-'.]+$/,Ea=/^[A-Z][A-Z0-9]+-\d+$/;function bp(e,t){return Buffer.from(`${e}:${t}`).toString("base64")}function Rt(e){return Ry.test(e)}async function _p(e,t,r){return Ar(`${e}/rest/api/3/project/${t}`,Se(r),{401:"\u2717 Jira auth failed \u2014 check credentials",403:"\u2717 Jira permission denied for this project",404:`\u2717 Jira project "${t}" not found`},"\u2717 Could not reach Jira \u2014 check network")}function Cy(e,t,r,n,o){let s=[`project="${e}"`];return r&&s.push("sprint in openSprints()"),n&&s.push(`labels = "${n}"`),o&&s.push('labels != "clancy:hitl"'),s.push("assignee=currentUser()"),s.push(`status="${t}"`),s.join(" AND ")+" ORDER BY priority ASC"}function Ny(e){if(!e||typeof e!="object")return"";let t=[];function r(n){if(typeof n=="string"){t.push(n);return}if(Array.isArray(n)){for(let o of n)r(o);return}if(n&&typeof n=="object")for(let o of Object.values(n))r(o)}return r(e),t.join(" ")}async function wp(e,t,r,n,o,s,i,a=5){let u=Cy(r,n,o,s,i),l;try{l=await fetch(`${e}/rest/api/3/search/jql`,{method:"POST",headers:{...Se(t),"Content-Type":"application/json"},body:JSON.stringify({jql:u,maxResults:a,fields:["summary","description","issuelinks","parent","customfield_10014","labels"]})})}catch(m){return console.warn(`\u26A0 Jira API request failed: ${m instanceof Error?m.message:String(m)}`),[]}if(!l.ok)return console.warn(`\u26A0 Jira API returned HTTP ${l.status}`),[];let p;try{p=await l.json()}catch{return console.warn("\u26A0 Jira API returned invalid JSON"),[]}let f=mp.safeParse(p);return f.success?f.data.issues.map(m=>{let h=m.fields,b=(h.issuelinks??[]).filter(z=>z.type?.name==="Blocks"&&z.inwardIssue?.key).map(z=>z.inwardIssue?.key).filter(z=>!!z),y=h.parent?.key??h.customfield_10014??void 0;return{key:m.key,title:h.summary,description:Ny(h.description),provider:"jira",epicKey:y,blockers:b,labels:h.labels}}):(console.warn(`\u26A0 Unexpected Jira response shape: ${f.error.message}`),[])}async function $p(e,t,r){if(!Ea.test(r))return!1;try{let n=await fetch(`${e}/rest/api/3/issue/${r}?fields=issuelinks`,{headers:Se(t)});if(!n.ok)return!1;let o=await n.json(),s=gp.safeParse(o);return s.success?(s.data.fields?.issuelinks??[]).some(a=>{if(a.type?.name!=="Blocks"||!a.inwardIssue?.key)return!1;let u=a.inwardIssue.fields?.status?.statusCategory?.key;return u?u!=="done":!1}):!1}catch{return!1}}async function xp(e,t,r){if(Ea.test(r))try{let n=r.split("-")[0],o=await yp(e,t,`project = "${n}" AND description ~ "Epic: ${r}"`);return o&&o.total>0?o:await yp(e,t,`parent = ${r}`)}catch{return}}async function yp(e,t,r){let n=await fetch(`${e}/rest/api/3/search/jql`,{method:"POST",headers:{...Se(t),"Content-Type":"application/json"},body:JSON.stringify({jql:r,maxResults:0})});if(!n.ok)return;let s=(await n.json()).total??0;if(s===0)return{total:0,incomplete:0};let i=await fetch(`${e}/rest/api/3/search/jql`,{method:"POST",headers:{...Se(t),"Content-Type":"application/json"},body:JSON.stringify({jql:`${r} AND statusCategory != "done"`,maxResults:0})});if(!i.ok)return;let u=(await i.json()).total??0;return{total:s,incomplete:u}}async function Oy(e,t,r,n){if(!Ea.test(r))return;let o;try{o=await fetch(`${e}/rest/api/3/issue/${r}/transitions`,{headers:Se(t)})}catch(u){console.warn(`\u26A0 Jira transitions request failed: ${u instanceof Error?u.message:String(u)}`);return}if(!o.ok)return;let s;try{s=await o.json()}catch{console.warn("\u26A0 Jira transitions returned invalid JSON");return}let i=hp.safeParse(s);if(!i.success){console.warn(`\u26A0 Unexpected Jira transitions response: ${i.error.message}`);return}return i.data.transitions.find(u=>u.name===n)?.id}async function kp(e,t,r,n){try{let o=await Oy(e,t,r,n);return o?(await fetch(`${e}/rest/api/3/issue/${r}/transitions`,{method:"POST",headers:{...Se(t),"Content-Type":"application/json"},body:JSON.stringify({transition:{id:o}})})).ok:(console.warn(`\u26A0 Jira transition "${n}" not found for ${r}`),!1)}catch{return!1}}function Sp(e){let t=bp(e.JIRA_USER,e.JIRA_API_TOKEN);return{async ping(){return _p(e.JIRA_BASE_URL,e.JIRA_PROJECT_KEY,t)},validateInputs(){if(!Rt(e.JIRA_PROJECT_KEY))return"\u2717 JIRA_PROJECT_KEY contains invalid characters";if(e.CLANCY_LABEL_BUILD&&!Rt(e.CLANCY_LABEL_BUILD))return"\u2717 CLANCY_LABEL_BUILD contains invalid characters";if(e.CLANCY_LABEL&&!Rt(e.CLANCY_LABEL))return"\u2717 CLANCY_LABEL contains invalid characters";if(e.CLANCY_JQL_STATUS&&!Rt(e.CLANCY_JQL_STATUS))return"\u2717 CLANCY_JQL_STATUS contains invalid characters"},async fetchTicket(r){return(await this.fetchTickets(r))[0]},async fetchTickets(r){let n=await wp(e.JIRA_BASE_URL,t,e.JIRA_PROJECT_KEY,e.CLANCY_JQL_STATUS??"To Do",e.CLANCY_JQL_SPRINT,r.buildLabel??e.CLANCY_LABEL,r.excludeHitl),o=e.CLANCY_JQL_STATUS??"To Do";return n.map(s=>{let i=s.blockers.length?`Blocked by: ${s.blockers.join(", ")}`:"None";return{key:s.key,title:s.title,description:s.description,parentInfo:s.epicKey??"none",blockers:i,labels:s.labels??[],status:o}})},async fetchBlockerStatus(r){return $p(e.JIRA_BASE_URL,t,r.key)},async fetchChildrenStatus(r){return xp(e.JIRA_BASE_URL,t,r)},async transitionTicket(r,n){let o=await kp(e.JIRA_BASE_URL,t,r.key,n);return o&&console.log(` \u2192 Transitioned to ${n}`),o},async ensureLabel(r){},async addLabel(r,n){try{if(!/^[A-Z][A-Z0-9]+-\d+$/.test(r))return;let o=await fetch(`${e.JIRA_BASE_URL}/rest/api/3/issue/${encodeURIComponent(r)}?fields=labels`,{headers:{Authorization:t,Accept:"application/json"}});if(!o.ok){console.warn(`\u26A0 addLabel GET failed: HTTP ${o.status}`);return}let i=Aa.parse(await o.json()).fields?.labels??[];if(i.includes(n))return;let a=await fetch(`${e.JIRA_BASE_URL}/rest/api/3/issue/${encodeURIComponent(r)}`,{method:"PUT",headers:{Authorization:t,"Content-Type":"application/json"},body:JSON.stringify({fields:{labels:[...i,n]}})});a.ok||console.warn(`\u26A0 addLabel PUT returned HTTP ${a.status}`)}catch(o){console.warn(`\u26A0 addLabel failed: ${o instanceof Error?o.message:String(o)}`)}},async removeLabel(r,n){try{if(!/^[A-Z][A-Z0-9]+-\d+$/.test(r))return;let o=await fetch(`${e.JIRA_BASE_URL}/rest/api/3/issue/${encodeURIComponent(r)}?fields=labels`,{headers:{Authorization:t,Accept:"application/json"}});if(!o.ok){console.warn(`\u26A0 removeLabel GET failed: HTTP ${o.status}`);return}let i=Aa.parse(await o.json()).fields?.labels??[];if(!i.includes(n))return;let a=await fetch(`${e.JIRA_BASE_URL}/rest/api/3/issue/${encodeURIComponent(r)}`,{method:"PUT",headers:{Authorization:t,"Content-Type":"application/json"},body:JSON.stringify({fields:{labels:i.filter(u=>u!==n)}})});a.ok||console.warn(`\u26A0 removeLabel PUT returned HTTP ${a.status}`)}catch(o){console.warn(`\u26A0 removeLabel failed: ${o instanceof Error?o.message:String(o)}`)}},sharedEnv(){return e}}}var Ly=c.object({id:c.string(),identifier:c.string(),title:c.string(),description:c.optional(c.nullable(c.string())),parent:c.optional(c.nullable(c.object({identifier:c.string(),title:c.optional(c.string())}))),labels:c.optional(c.object({nodes:c.array(c.object({name:c.string()}))}))}),vp=c.object({data:c.optional(c.object({viewer:c.optional(c.object({assignedIssues:c.optional(c.object({nodes:c.array(Ly)}))}))}))}),zp=c.object({data:c.optional(c.object({viewer:c.optional(c.object({id:c.optional(c.string())}))}))}),Tp=c.object({data:c.optional(c.object({workflowStates:c.optional(c.object({nodes:c.array(c.object({id:c.string()}))}))}))}),Ip=c.object({data:c.optional(c.object({issueUpdate:c.optional(c.object({success:c.optional(c.boolean())}))}))}),Zy=c.object({type:c.string(),relatedIssue:c.optional(c.object({state:c.optional(c.object({type:c.optional(c.string())}))}))}),Pp=c.object({data:c.optional(c.object({issue:c.optional(c.object({relations:c.optional(c.object({nodes:c.array(Zy)}))}))}))}),jy=c.object({state:c.optional(c.object({type:c.optional(c.string())}))}),Ap=c.object({data:c.optional(c.object({issueSearch:c.optional(c.object({nodes:c.array(jy)}))}))}),Ep=c.object({data:c.optional(c.object({team:c.optional(c.object({labels:c.optional(c.object({nodes:c.array(c.object({id:c.string(),name:c.string()}))}))}))}))}),Rp=c.object({data:c.optional(c.object({issueLabels:c.optional(c.object({nodes:c.array(c.object({id:c.string(),name:c.string()}))}))}))}),Cp=c.object({data:c.optional(c.object({issueLabelCreate:c.optional(c.object({issueLabel:c.optional(c.object({id:c.string()})),success:c.optional(c.boolean())}))}))}),Ra=c.object({data:c.optional(c.object({issueSearch:c.optional(c.object({nodes:c.array(c.object({id:c.string(),labels:c.optional(c.object({nodes:c.array(c.object({id:c.string(),name:c.optional(c.string())}))}))}))}))}))});var Dy=/^[a-zA-Z0-9_-]+$/,Np="https://api.linear.app/graphql";function Op(e){return Dy.test(e)}async function V(e,t,r){let n;try{n=await fetch(Np,{method:"POST",headers:{Authorization:e,"Content-Type":"application/json"},body:JSON.stringify({query:t,variables:r})})}catch(o){console.warn(`\u26A0 Linear API request failed: ${o instanceof Error?o.message:String(o)}`);return}if(!n.ok){console.warn(`\u26A0 Linear API returned HTTP ${n.status}`);return}try{return await n.json()}catch{console.warn("\u26A0 Linear API returned invalid JSON");return}}async function Lp(e){let t;try{t=await fetch(Np,{method:"POST",headers:{Authorization:e,"Content-Type":"application/json"},body:JSON.stringify({query:"{ viewer { id } }"})})}catch{return{ok:!1,error:"\u2717 Could not reach Linear \u2014 check network"}}if(!t.ok)return t.status===401||t.status===403?{ok:!1,error:"\u2717 Linear auth failed \u2014 check LINEAR_API_KEY"}:{ok:!1,error:`\u2717 Linear API returned HTTP ${t.status}`};try{let r=await t.json(),n=zp.safeParse(r);if(n.success&&n.data.data?.viewer?.id)return{ok:!0}}catch{}return{ok:!1,error:"\u2717 Linear auth failed \u2014 check LINEAR_API_KEY"}}async function Zp(e,t,r=5){let n=e.CLANCY_LABEL?.trim(),o=!!n,s=o?"labels: { name: { eq: $label } }":"",i=["$teamId: String!",...o?["$label: String!"]:[]],a=['state: { type: { eq: "unstarted" } }',"team: { id: { eq: $teamId } }",s].filter(Boolean),u=`
|
|
123
123
|
query(${i.join(", ")}) {
|
|
124
124
|
viewer {
|
|
125
125
|
assignedIssues(
|
|
@@ -154,7 +154,7 @@ ${n}`:n}return{ok:!0,env:t,warning:r}}import{execFileSync as zt}from"node:child_
|
|
|
154
154
|
}
|
|
155
155
|
}
|
|
156
156
|
}
|
|
157
|
-
`,{issueId:t}),o=Pp.safeParse(n);if(!o.success)return!1;let s=o.data.data?.issue?.relations?.nodes??[],i=new Set(["completed","canceled"]);return s.some(a=>{if(a.type!=="blockedBy")return!1;let u=a.relatedIssue?.state?.type;return u?!i.has(u):!1})}async function Dp(e,t,r){try{if(r){let n=await
|
|
157
|
+
`,{issueId:t}),o=Pp.safeParse(n);if(!o.success)return!1;let s=o.data.data?.issue?.relations?.nodes??[],i=new Set(["completed","canceled"]);return s.some(a=>{if(a.type!=="blockedBy")return!1;let u=a.relatedIssue?.state?.type;return u?!i.has(u):!1})}async function Dp(e,t,r){try{if(r){let n=await My(e,`Epic: ${r}`);if(n&&n.total>0)return n}return await By(e,t)}catch{return}}async function My(e,t){let n=await V(e,`
|
|
158
158
|
query($filter: String!) {
|
|
159
159
|
issueSearch(query: $filter) {
|
|
160
160
|
nodes {
|
|
@@ -162,7 +162,7 @@ ${n}`:n}return{ok:!0,env:t,warning:r}}import{execFileSync as zt}from"node:child_
|
|
|
162
162
|
}
|
|
163
163
|
}
|
|
164
164
|
}
|
|
165
|
-
`,{filter:t}),o=Ap.safeParse(n);if(!o.success)return;let s=o.data.data?.issueSearch?.nodes??[],i=s.length,a=new Set(["completed","canceled"]),u=s.filter(l=>!l.state?.type||!a.has(l.state.type)).length;return{total:i,incomplete:u}}async function
|
|
165
|
+
`,{filter:t}),o=Ap.safeParse(n);if(!o.success)return;let s=o.data.data?.issueSearch?.nodes??[],i=s.length,a=new Set(["completed","canceled"]),u=s.filter(l=>!l.state?.type||!a.has(l.state.type)).length;return{total:i,incomplete:u}}async function By(e,t){let n=await V(e,`
|
|
166
166
|
query($issueId: String!) {
|
|
167
167
|
issue(id: $issueId) {
|
|
168
168
|
children {
|
|
@@ -172,7 +172,7 @@ ${n}`:n}return{ok:!0,env:t,warning:r}}import{execFileSync as zt}from"node:child_
|
|
|
172
172
|
}
|
|
173
173
|
}
|
|
174
174
|
}
|
|
175
|
-
`,{issueId:t});if(!n||typeof n!="object")return;let s=n.data?.issue?.children?.nodes;if(!s)return;let i=s.length,a=new Set(["completed","canceled"]),u=s.filter(l=>!l.state?.type||!a.has(l.state.type)).length;return{total:i,incomplete:u}}async function
|
|
175
|
+
`,{issueId:t});if(!n||typeof n!="object")return;let s=n.data?.issue?.children?.nodes;if(!s)return;let i=s.length,a=new Set(["completed","canceled"]),u=s.filter(l=>!l.state?.type||!a.has(l.state.type)).length;return{total:i,incomplete:u}}async function Uy(e,t,r){let o=await V(e,`
|
|
176
176
|
query($teamId: String!, $name: String!) {
|
|
177
177
|
workflowStates(filter: {
|
|
178
178
|
team: { id: { eq: $teamId } }
|
|
@@ -181,13 +181,13 @@ ${n}`:n}return{ok:!0,env:t,warning:r}}import{execFileSync as zt}from"node:child_
|
|
|
181
181
|
nodes { id }
|
|
182
182
|
}
|
|
183
183
|
}
|
|
184
|
-
`,{teamId:t,name:r}),s=Tp.safeParse(o);if(!s.success){console.warn(`\u26A0 Unexpected Linear workflowStates response: ${s.error.message}`);return}return s.data.data?.workflowStates?.nodes?.[0]?.id}async function
|
|
184
|
+
`,{teamId:t,name:r}),s=Tp.safeParse(o);if(!s.success){console.warn(`\u26A0 Unexpected Linear workflowStates response: ${s.error.message}`);return}return s.data.data?.workflowStates?.nodes?.[0]?.id}async function Fy(e,t,r){let o=await V(e,`
|
|
185
185
|
mutation($issueId: String!, $stateId: String!) {
|
|
186
186
|
issueUpdate(id: $issueId, input: { stateId: $stateId }) {
|
|
187
187
|
success
|
|
188
188
|
}
|
|
189
189
|
}
|
|
190
|
-
`,{issueId:t,stateId:r}),s=Ip.safeParse(o);return s.success?s.data.data?.issueUpdate?.success===!0:(console.warn(`\u26A0 Unexpected Linear issueUpdate response: ${s.error.message}`),!1)}async function Mp(e,t,r,n){try{let o=await
|
|
190
|
+
`,{issueId:t,stateId:r}),s=Ip.safeParse(o);return s.success?s.data.data?.issueUpdate?.success===!0:(console.warn(`\u26A0 Unexpected Linear issueUpdate response: ${s.error.message}`),!1)}async function Mp(e,t,r,n){try{let o=await Uy(e,t,n);return o?await Fy(e,r,o):(console.warn(`\u26A0 Linear workflow state "${n}" not found \u2014 check team configuration`),!1)}catch{return!1}}function Bp(e){let t=new Map;return{async ping(){return Lp(e.LINEAR_API_KEY)},validateInputs(){if(!Op(e.LINEAR_TEAM_ID))return"\u2717 LINEAR_TEAM_ID contains invalid characters"},async fetchTicket(r){return(await this.fetchTickets(r))[0]},async fetchTickets(r){return(await Zp({LINEAR_API_KEY:e.LINEAR_API_KEY,LINEAR_TEAM_ID:e.LINEAR_TEAM_ID,CLANCY_LABEL:r.buildLabel??e.CLANCY_LABEL},r.excludeHitl)).map(o=>({key:o.key,title:o.title,description:o.description,parentInfo:o.parentIdentifier??"none",blockers:"None",linearIssueId:o.issueId,issueId:o.issueId,labels:o.labels??[],status:"unstarted"}))},async fetchBlockerStatus(r){return r.issueId?jp(e.LINEAR_API_KEY,r.issueId):!1},async fetchChildrenStatus(r,n){return Dp(e.LINEAR_API_KEY,n??r,r)},async transitionTicket(r,n){if(!r.linearIssueId)return!1;let o=await Mp(e.LINEAR_API_KEY,e.LINEAR_TEAM_ID,r.linearIssueId,n);return o&&console.log(` \u2192 Transitioned to ${n}`),o},async ensureLabel(r){try{if(t.has(r))return;let o=await V(e.LINEAR_API_KEY,`
|
|
191
191
|
query($teamId: String!) {
|
|
192
192
|
team(id: $teamId) {
|
|
193
193
|
labels { nodes { id name } }
|
|
@@ -236,4 +236,4 @@ ${n}`:n}return{ok:!0,env:t,warning:r}}import{execFileSync as zt}from"node:child_
|
|
|
236
236
|
success
|
|
237
237
|
}
|
|
238
238
|
}
|
|
239
|
-
`,{issueId:u.id,labelIds:f})}catch(o){console.warn(`\u26A0 removeLabel failed: ${o instanceof Error?o.message:String(o)}`)}},sharedEnv(){return e}}}var Up=c.object({plain_text:c.string()}),Uy=c.object({type:c.literal("status"),status:c.nullable(c.object({id:c.optional(c.string()),name:c.string(),color:c.optional(c.string())}))}),Fy=c.object({type:c.literal("select"),select:c.nullable(c.object({id:c.optional(c.string()),name:c.string(),color:c.optional(c.string())}))}),Hy=c.object({id:c.optional(c.string()),name:c.string(),color:c.optional(c.string())}),qy=c.object({type:c.literal("multi_select"),multi_select:c.array(Hy)}),Jy=c.object({type:c.literal("people"),people:c.array(c.object({id:c.string(),name:c.optional(c.nullable(c.string()))}))}),Ky=c.object({type:c.literal("relation"),relation:c.array(c.object({id:c.string()}))}),Yy=c.object({type:c.literal("title"),title:c.array(Up)}),Gy=c.object({type:c.literal("rich_text"),rich_text:c.array(Up)}),Wy=c.union([Uy,Fy,qy,Jy,Ky,Yy,Gy,c.object({type:c.string()})]),Ca=c.object({id:c.string(),url:c.optional(c.string()),properties:c.record(c.string(),Wy)}),Fp=c.object({results:c.array(Ca),has_more:c.boolean(),next_cursor:c.nullable(c.optional(c.string()))}),Hp=c.object({id:c.string(),type:c.optional(c.string()),name:c.optional(c.nullable(c.string())),avatar_url:c.optional(c.nullable(c.string()))});function Vy(e){if(!e)return;let t=parseInt(e,10);if(!Number.isNaN(t)&&t>=0)return t*1e3;let r=new Date(e);if(!Number.isNaN(r.getTime())){let n=r.getTime()-Date.now();return n>0?n:0}}function Na(e,t,r){let n=t*2**e;return Math.min(n,r)}function Qy(e){return e===429||e>=500&&e<=599}async function Ct(e,t,r){let n=Math.max(0,r?.maxRetries??3),o=r?.baseDelayMs??1e3,s=r?.maxDelayMs??1e4,i;for(let a=0;a<=n;a++)try{let u=await fetch(e,t);if(!Qy(u.status)||a===n)return u;let l;u.status===429?l=Vy(u.headers.get("Retry-After"))??Na(a,o,s):l=Na(a,o,s),await u.arrayBuffer().catch(()=>{}),await new Promise(p=>setTimeout(p,l))}catch(u){if(i=u,a===n)throw i;let l=Na(a,o,s);await new Promise(p=>setTimeout(p,l))}throw i}var Mr="https://api.notion.com/v1",Xy="2022-06-28";function Br(e){return{Authorization:`Bearer ${e}`,"Notion-Version":Xy,"Content-Type":"application/json"}}async function Jp(e){let t;try{t=await Ct(`${Mr}/users/me`,{headers:Br(e)})}catch{return{ok:!1,error:"\u2717 Could not reach Notion \u2014 check network"}}if(!t.ok)return t.status===401||t.status===403?{ok:!1,error:"\u2717 Notion auth failed \u2014 check NOTION_TOKEN"}:{ok:!1,error:`\u2717 Notion API returned HTTP ${t.status}`};try{let r=await t.json(),n=Hp.safeParse(r);if(n.success&&n.data.id)return{ok:!0}}catch{}return{ok:!1,error:"\u2717 Notion auth failed \u2014 check NOTION_TOKEN"}}async function Ur(e,t,r,n,o){let s={};r&&(s.filter=r),n&&(s.sorts=n),o&&(s.start_cursor=o);let i;try{i=await Ct(`${Mr}/databases/${t}/query`,{method:"POST",headers:Br(e),body:JSON.stringify(s)})}catch(l){console.warn(`\u26A0 Notion API request failed: ${l instanceof Error?l.message:String(l)}`);return}if(!i.ok){console.warn(`\u26A0 Notion API returned HTTP ${i.status}`);return}let a;try{a=await i.json()}catch{console.warn("\u26A0 Notion API returned invalid JSON");return}let u=Fp.safeParse(a);if(!u.success){console.warn(`\u26A0 Unexpected Notion response shape: ${u.error.message}`);return}return u.data}async function Nt(e,t,r){let n=[],o;for(let i=0;i<10;i++){let a=await Ur(e,t,r,void 0,o);if(!a||(n.push(...a.results),!a.has_more||!a.next_cursor))break;o=a.next_cursor}return n}async function qp(e,t){try{let r=await Ct(`${Mr}/pages/${t}`,{headers:Br(e)});if(!r.ok)return;let n=await r.json(),o=Ca.safeParse(n);return o.success?o.data:void 0}catch{return}}async function Ot(e,t,r){try{return(await Ct(`${Mr}/pages/${t}`,{method:"PATCH",headers:Br(e),body:JSON.stringify({properties:r})})).ok}catch{return!1}}async function Kp(e,t,r,n="Status"){try{let o=await qp(e,r);if(!o)return!1;let s=eb(o,"Blocked by");if(s?.type==="relation"){let u=s.relation;if(u.length>0){for(let l of u){let p=await qp(e,l.id);if(!p)continue;let f=F(p,n,"status");if(f&&!Dr(f))return!0}return!1}}let i=r.replace(/-/g,"").slice(0,8),a=Gp(o);if(a){let u=a.match(/Blocked by (notion-[a-f0-9]{8})/gi);if(u){let l=await Nt(e,t);if(!l.length)return!1;for(let p of u){let f=p.replace(/blocked by notion-/i,"").toLowerCase();if(f!==i){for(let m of l)if(m.id.replace(/-/g,"").slice(0,8)===f){let b=F(m,n,"status");if(b&&!Dr(b))return!0}}}}}return!1}catch{return!1}}async function Yp(e,t,r,n="Epic",o="Status"){try{let s=await tb(e,t,`Epic: ${r}`,o);if(s&&s.total>0)return s;let i=await nb(e,t,r);return i?await rb(e,t,i.id,n,o):void 0}catch{return}}function F(e,t,r){let n=e.properties[t];if(!(!n||n.type!==r))switch(r){case"status":return n.status?.name;case"select":return n.select?.name;case"title":return n.title.map(s=>s.plain_text).join("");case"rich_text":return n.rich_text.map(s=>s.plain_text).join("");case"multi_select":return n.multi_select.map(s=>s.name);case"people":return n.people.map(s=>s.id);case"relation":return n.relation.map(s=>s.id);default:return}}function eb(e,t){if(e.properties[t])return e.properties[t];let r=t.toLowerCase();for(let[n,o]of Object.entries(e.properties))if(n.toLowerCase()===r)return o}function Dr(e){let t=e.toLowerCase();return t==="done"||t==="complete"||t==="completed"||t==="closed"}function Gp(e){for(let t of["Description","description","Body","body"]){let r=F(e,t,"rich_text");if(r)return r}}async function tb(e,t,r,n="Status"){let o=await Nt(e,t);if(!o.length)return;let s=o.filter(u=>Gp(u)?.includes(r)),i=s.length;if(i===0)return{total:0,incomplete:0};let a=s.filter(u=>{let l=F(u,n,"status")??F(u,n,"select");return!l||!Dr(l)}).length;return{total:i,incomplete:a}}async function rb(e,t,r,n,o="Status"){let s=await Ur(e,t,{property:n,relation:{contains:r}});if(!s)return;let i=s.results.length;if(i===0)return{total:0,incomplete:0};let a=s.results.filter(u=>{let l=F(u,o,"status")??F(u,o,"select");return!l||!Dr(l)}).length;return{total:i,incomplete:a}}async function nb(e,t,r){let n=r.replace("notion-","");return n?(await Nt(e,t)).find(s=>s.id.replace(/-/g,"").slice(0,8)===n):void 0}var ob="Status",sb="Assignee",ib="Labels",ab="Epic";function Vp(e){let t=e.CLANCY_NOTION_STATUS??ob,r=e.CLANCY_NOTION_ASSIGNEE??sb,n=e.CLANCY_NOTION_LABELS??ib,o=e.CLANCY_NOTION_PARENT??ab;return{async ping(){return Jp(e.NOTION_TOKEN)},validateInputs(){if(!/^[0-9a-f]{8}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{12}$/i.test(e.NOTION_DATABASE_ID))return"\u2717 NOTION_DATABASE_ID does not look like a valid UUID. Use the database ID from the Notion URL, not the full URL."},async fetchTicket(s){return(await this.fetchTickets(s))[0]},async fetchTickets(s){let i=cb(t,"To-do"),a=await Ur(e.NOTION_TOKEN,e.NOTION_DATABASE_ID,i);if(!a)return[];let u=a.results;s.excludeHitl&&(u=u.filter(p=>!F(p,n,"multi_select")?.includes("clancy:hitl")));let l=s.buildLabel??e.CLANCY_LABEL;return l&&(u=u.filter(p=>F(p,n,"multi_select")?.includes(l))),u.slice(0,5).map(p=>ub(p,{labelsProp:n,parentProp:o,assigneeProp:r}))},async fetchBlockerStatus(s){let i=s.issueId;return i?Kp(e.NOTION_TOKEN,e.NOTION_DATABASE_ID,i,t):!1},async fetchChildrenStatus(s){return Yp(e.NOTION_TOKEN,e.NOTION_DATABASE_ID,s,o,t)},async transitionTicket(s,i){let a=s.issueId;if(!a)return!1;if(await Ot(e.NOTION_TOKEN,a,{[t]:{status:{name:i}}}))return console.log(` \u2192 Transitioned to ${i}`),!0;let l=await Ot(e.NOTION_TOKEN,a,{[t]:{select:{name:i}}});return l&&console.log(` \u2192 Transitioned to ${i}`),l},async ensureLabel(s){},async addLabel(s,i){try{let a=await Wp(e.NOTION_TOKEN,e.NOTION_DATABASE_ID,s);if(!a)return;let u=F(a,n,"multi_select")??[];if(u.includes(i))return;let l=[...u,i].map(p=>({name:p}));await Ot(e.NOTION_TOKEN,a.id,{[n]:{multi_select:l}})}catch(a){console.warn(`\u26A0 addLabel failed: ${a instanceof Error?a.message:String(a)}`)}},async removeLabel(s,i){try{let a=await Wp(e.NOTION_TOKEN,e.NOTION_DATABASE_ID,s);if(!a)return;let u=F(a,n,"multi_select")??[];if(!u.includes(i))return;let l=u.filter(p=>p!==i).map(p=>({name:p}));await Ot(e.NOTION_TOKEN,a.id,{[n]:{multi_select:l}})}catch(a){console.warn(`\u26A0 removeLabel failed: ${a instanceof Error?a.message:String(a)}`)}},sharedEnv(){return e}}}function cb(e,t){let r=t??"To-do";return{or:[{property:e,status:{equals:r}},{property:e,select:{equals:r}}]}}function ub(e,t){let n=`notion-${e.id.replace(/-/g,"").slice(0,8)}`,o="";for(let[l,p]of Object.entries(e.properties))if(p.type==="title"){o=F(e,l,"title")??"";break}let s="";for(let l of["Description","description","Body","body"]){let p=F(e,l,"rich_text");if(p){s=p;break}}let i=F(e,t.parentProp,"relation"),a=i&&i.length>0?`notion-${i[0].replace(/-/g,"").slice(0,8)}`:"none",u=F(e,t.labelsProp,"multi_select")??[];return{key:n,title:o,description:s,parentInfo:a,blockers:"None",issueId:e.id,labels:u,status:"To-do"}}async function Wp(e,t,r){let n=r.replace("notion-","");return n?(await Nt(e,t)).find(s=>s.id.replace(/-/g,"").slice(0,8)===n):void 0}var lb=c.object({verb:c.string(),subject_id:c.number(),object_id:c.number()}),Oa=c.object({id:c.number(),name:c.string(),description:c.optional(c.nullable(c.string())),story_type:c.optional(c.string()),blocked:c.optional(c.boolean()),story_links:c.optional(c.array(lb)),label_ids:c.optional(c.array(c.number())),labels:c.optional(c.array(c.object({id:c.number(),name:c.string()}))),epic_id:c.optional(c.nullable(c.number())),workflow_state_id:c.optional(c.number()),owner_ids:c.optional(c.array(c.string()))}),La=c.object({data:c.array(Oa),next:c.optional(c.nullable(c.string())),total:c.optional(c.number())}),Fr=Oa,pb=c.object({id:c.number(),name:c.string(),type:c.string()}),fb=c.object({id:c.number(),name:c.string(),states:c.array(pb)}),Qp=c.array(fb),Xp=c.object({id:c.number(),name:c.string()}),ef=c.array(Xp),tf=Xp,rf=c.array(Oa),nf=c.object({id:c.string(),mention_name:c.optional(c.string())});var ne="https://api.app.shortcut.com/api/v3";function oe(e){return{"Shortcut-Token":e,"Content-Type":"application/json"}}var Hr;var Lt;async function of(e){let t;try{t=await fetch(`${ne}/member-info`,{headers:oe(e)})}catch{return{ok:!1,error:"\u2717 Could not reach Shortcut \u2014 check network"}}if(!t.ok)return t.status===401||t.status===403?{ok:!1,error:"\u2717 Shortcut auth failed \u2014 check SHORTCUT_API_TOKEN"}:{ok:!1,error:`\u2717 Shortcut API returned HTTP ${t.status}`};try{let r=await t.json(),n=nf.safeParse(r);if(n.success&&n.data.id)return{ok:!0}}catch{}return{ok:!1,error:"\u2717 Shortcut auth failed \u2014 check SHORTCUT_API_TOKEN"}}async function Zt(e){if(Hr)return Hr;try{let t=await fetch(`${ne}/workflows`,{headers:oe(e)});if(!t.ok)return console.warn(`\u26A0 Shortcut /workflows returned HTTP ${t.status}`),[];let r=await t.json(),n=Qp.safeParse(r);return n.success?(Hr=n.data,Hr):(console.warn(`\u26A0 Unexpected Shortcut workflows response: ${n.error.message}`),[])}catch(t){return console.warn(`\u26A0 Shortcut /workflows request failed: ${t instanceof Error?t.message:String(t)}`),[]}}async function sf(e,t,r){let n=await Zt(e);for(let o of n){if(r&&o.name!==r)continue;let s=o.states.find(i=>i.name.toLowerCase()===t.toLowerCase());if(s)return s.id}}async function af(e,t,r){let n=await Zt(e),o=[];for(let s of n)if(!(r&&s.name!==r))for(let i of s.states)i.type===t&&o.push(i.id);return o}async function cf(e,t,r,n,o,s=5){if(!t.length)return[];let i,a={};t.length&&(a.workflow_state_ids=t),n&&(a.owner_ids=[n]),r&&(a.label_name=r);try{i=await fetch(`${ne}/stories/search`,{method:"POST",headers:oe(e),body:JSON.stringify(a)})}catch(f){return console.warn(`\u26A0 Shortcut API request failed: ${f instanceof Error?f.message:String(f)}`),[]}if(!i.ok)return console.warn(`\u26A0 Shortcut API returned HTTP ${i.status}`),[];let u;try{u=await i.json()}catch{return console.warn("\u26A0 Shortcut API returned invalid JSON"),[]}let l=La.safeParse(u);if(!l.success)return console.warn(`\u26A0 Unexpected Shortcut response shape: ${l.error.message}`),[];let p=l.data.data;return o&&(p=p.filter(f=>!f.labels?.some(m=>m.name==="clancy:hitl"))),p.slice(0,s).map(f=>({key:`sc-${f.id}`,title:f.name,description:f.description??"",provider:"shortcut",storyId:f.id,epicId:f.epic_id??void 0,labels:f.labels?.map(m=>m.name).filter(m=>!!m)}))}async function uf(e,t){try{let r=await fetch(`${ne}/stories/${t}`,{headers:oe(e)});if(!r.ok)return!1;let n=await r.json(),o=Fr.safeParse(n);if(!o.success)return!1;let s=o.data;if(!s.blocked)return!1;let i=(s.story_links??[]).filter(l=>l.verb==="is blocked by");if(!i.length)return!1;let a=await Zt(e),u=new Set;for(let l of a)for(let p of l.states)p.type==="done"&&u.add(p.id);for(let l of i){let p=l.object_id,f=await fetch(`${ne}/stories/${p}`,{headers:oe(e)});if(!f.ok)continue;let m=await f.json(),h=Fr.safeParse(m);if(h.success&&h.data.workflow_state_id!==void 0&&!u.has(h.data.workflow_state_id))return!0}return!1}catch{return!1}}async function lf(e,t,r){try{if(r){let n=await db(e,`Epic: ${r}`);if(n&&n.total>0)return n}return await mb(e,t)}catch{return}}async function db(e,t){try{let r=await fetch(`${ne}/stories/search`,{method:"POST",headers:oe(e),body:JSON.stringify({query:t})});if(!r.ok)return;let n=await r.json(),o=La.safeParse(n);if(!o.success)return;let s=o.data.data,i=s.length;if(i===0)return{total:0,incomplete:0};let a=await Zt(e),u=new Set;for(let p of a)for(let f of p.states)f.type==="done"&&u.add(f.id);let l=s.filter(p=>p.workflow_state_id===void 0||!u.has(p.workflow_state_id)).length;return{total:i,incomplete:l}}catch{return}}async function mb(e,t){try{let r=await fetch(`${ne}/epics/${t}/stories`,{headers:oe(e)});if(!r.ok)return;let n=await r.json(),o=rf.safeParse(n);if(!o.success)return;let s=o.data,i=s.length;if(i===0)return{total:0,incomplete:0};let a=await Zt(e),u=new Set;for(let p of a)for(let f of p.states)f.type==="done"&&u.add(f.id);let l=s.filter(p=>p.workflow_state_id===void 0||!u.has(p.workflow_state_id)).length;return{total:i,incomplete:l}}catch{return}}async function pf(e,t,r){try{return(await fetch(`${ne}/stories/${t}`,{method:"PUT",headers:oe(e),body:JSON.stringify({workflow_state_id:r})})).ok}catch{return!1}}async function qr(e){if(Lt)return Lt;try{let t=await fetch(`${ne}/labels`,{headers:oe(e)});if(!t.ok)return console.warn(`\u26A0 Shortcut /labels returned HTTP ${t.status}`),[];let r=await t.json(),n=ef.safeParse(r);return n.success?(Lt=n.data,Lt):(console.warn(`\u26A0 Unexpected Shortcut labels response: ${n.error.message}`),[])}catch(t){return console.warn(`\u26A0 Shortcut /labels request failed: ${t instanceof Error?t.message:String(t)}`),[]}}async function ff(e,t){try{let r=await fetch(`${ne}/labels`,{method:"POST",headers:oe(e),body:JSON.stringify({name:t,color:"#0075ca"})});if(!r.ok){console.warn(`\u26A0 Shortcut label create returned HTTP ${r.status}`);return}let n=await r.json(),o=tf.safeParse(n);return o.success?(Lt=void 0,o.data.id):void 0}catch(r){console.warn(`\u26A0 Shortcut label create failed: ${r instanceof Error?r.message:String(r)}`);return}}async function Za(e,t){try{let r=await fetch(`${ne}/stories/${t}`,{headers:oe(e)});if(!r.ok)return;let n=await r.json(),o=Fr.safeParse(n);return o.success?o.data.label_ids??[]:void 0}catch{return}}async function ja(e,t,r){try{let n=await fetch(`${ne}/stories/${t}`,{method:"PUT",headers:oe(e),body:JSON.stringify({label_ids:r})});return n.ok||console.warn(`\u26A0 Shortcut story label update returned HTTP ${n.status}`),n.ok}catch(n){return console.warn(`\u26A0 Shortcut story label update failed: ${n instanceof Error?n.message:String(n)}`),!1}}function df(e){return{async ping(){return of(e.SHORTCUT_API_TOKEN)},validateInputs(){},async fetchTicket(t){return(await this.fetchTickets(t))[0]},async fetchTickets(t){let r=await af(e.SHORTCUT_API_TOKEN,"unstarted",e.SHORTCUT_WORKFLOW);return(await cf(e.SHORTCUT_API_TOKEN,r,t.buildLabel??e.CLANCY_LABEL,void 0,t.excludeHitl)).map(o=>({key:o.key,title:o.title,description:o.description,parentInfo:o.epicId?`epic-${o.epicId}`:"none",blockers:"None",issueId:String(o.storyId),labels:o.labels??[],status:"unstarted"}))},async fetchBlockerStatus(t){let r=Jr(t.key);return r===void 0?!1:uf(e.SHORTCUT_API_TOKEN,r)},async fetchChildrenStatus(t,r){let n=r??t.replace(/^(sc-|epic-)/,""),o=parseInt(n,10);if(!Number.isNaN(o))return lf(e.SHORTCUT_API_TOKEN,o,t)},async transitionTicket(t,r){let n=Jr(t.key);if(n===void 0)return!1;let o=await sf(e.SHORTCUT_API_TOKEN,r,e.SHORTCUT_WORKFLOW);if(o===void 0)return console.warn(`\u26A0 Shortcut workflow state "${r}" not found \u2014 check workflow configuration`),!1;let s=await pf(e.SHORTCUT_API_TOKEN,n,o);return s&&console.log(` \u2192 Transitioned to ${r}`),s},async ensureLabel(t){try{if((await qr(e.SHORTCUT_API_TOKEN)).find(o=>o.name===t))return;await ff(e.SHORTCUT_API_TOKEN,t)}catch(r){console.warn(`\u26A0 ensureLabel failed: ${r instanceof Error?r.message:String(r)}`)}},async addLabel(t,r){try{await this.ensureLabel(r);let n=Jr(t);if(n===void 0)return;let s=(await qr(e.SHORTCUT_API_TOKEN)).find(a=>a.name===r);if(!s)return;let i=await Za(e.SHORTCUT_API_TOKEN,n);if(!i||i.includes(s.id))return;await ja(e.SHORTCUT_API_TOKEN,n,[...i,s.id])}catch(n){console.warn(`\u26A0 addLabel failed: ${n instanceof Error?n.message:String(n)}`)}},async removeLabel(t,r){try{let n=Jr(t);if(n===void 0)return;let s=(await qr(e.SHORTCUT_API_TOKEN)).find(a=>a.name===r);if(!s)return;let i=await Za(e.SHORTCUT_API_TOKEN,n);if(!i||!i.includes(s.id))return;await ja(e.SHORTCUT_API_TOKEN,n,i.filter(a=>a!==s.id))}catch(n){console.warn(`\u26A0 removeLabel failed: ${n instanceof Error?n.message:String(n)}`)}},sharedEnv(){return e}}}function Jr(e){let t=parseInt(e.replace("sc-",""),10);return Number.isNaN(t)?void 0:t}function mf(e){switch(e.provider){case"jira":return Sp(e.env);case"github":return dp(e.env);case"linear":return Bp(e.env);case"shortcut":return df(e.env);case"notion":return Vp(e.env);case"azdo":return ip(e.env)}}async function hf(e){console.log($("\u250C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510")),console.log($("\u2502")+Ne(" \u{1F916} Clancy \u2014 once mode ")+$("\u2502")),console.log($("\u2502")+$(` "Let's roll." `)+$("\u2502")),console.log($("\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518")),console.log("");let t=Cr(e.cwd);if(!t.ok)return console.log(t.error),!1;t.warning&&console.log(t.warning);let r=Pr(t.env);if(typeof r=="string")return console.log(r),!1;let n=r,o=mf(n),s=o.validateInputs();if(s)return console.log(s),!1;let i=await o.ping();return i.ok?(console.log(N("\u2705 Preflight passed")),e.config=n,e.board=o,!0):(console.log(i.error),!1)}async function gf(e){let t=e.config;try{let r=await Al(t);r&&(e.isRework=!0,e.ticket=r.ticket,e.prFeedback=r.feedback,e.reworkPrNumber=r.prNumber,e.reworkDiscussionIds=r.discussionIds,e.reworkReviewers=r.reviewers,console.log(v(` \u21BB PR rework: [${e.ticket.key}] ${e.ticket.title}`)))}catch{}return!0}function hb(e){return e.CLANCY_LABEL_BUILD||e.CLANCY_LABEL||void 0}function gb(e){return e.CLANCY_LABEL_PLAN||e.CLANCY_PLAN_LABEL||void 0}function yb(e){return e?.isAfk??process.env.CLANCY_AFK_MODE==="1"}async function yf(e,t){let r=yb(t),n=e.sharedEnv(),o=hb(n),s=gb(n),i=await e.fetchTickets({excludeHitl:r,buildLabel:o});if(i.length)for(let a of i){if(s&&a.labels?.includes(s)){console.log(`Skipping ${a.key} \u2014 still has plan label`);continue}if(!await e.fetchBlockerStatus(a))return console.log(`Selected ${a.key}${a.status?` (status: ${a.status})`:""}`),a;console.log(`Skipping ${a.key} \u2014 blocked`)}}async function bf(e){let t=e.config;if(e.ticket||(e.ticket=await yf(e.board)),!e.ticket)return console.log($("No tickets found. All done!")),!1;if(e.isRework){let a=parseInt(Z(t).CLANCY_MAX_REWORK??"3",10),u=Number.isFinite(a)&&a>0?a:3;if(Fu(e.cwd,e.ticket.key)>=u)return console.log(v(`\u26A0 ${e.ticket.key} has reached max rework cycles (${u}) \u2014 needs human intervention`)),R(e.cwd,e.ticket.key,e.ticket.title,"SKIPPED"),!1}let r=t.env.CLANCY_BASE_BRANCH??"main",n=e.ticket.parentInfo!=="none"?e.ticket.parentInfo:void 0,o=We(t.provider,e.ticket.key),s=Ve(t.provider,r,n);e.baseBranch=r,e.ticketBranch=o,e.targetBranch=s,e.hasParent=e.ticket.parentInfo!=="none";let i=t.provider==="github"?"Milestone":"Epic";return console.log(""),console.log(`\u{1F3AB} ${Ne(`[${e.ticket.key}]`)} ${e.ticket.title}`),console.log($(` ${i}: ${e.ticket.parentInfo} | Branch: ${o} \u2192 ${s}`)),t.provider!=="github"&&e.ticket.blockers!=="None"&&console.log(v(` Blockers: ${e.ticket.blockers}`)),console.log(""),!0}async function _f(e){let t=e.config,r=e.board,n=e.ticket,o=t.env.CLANCY_STATUS_IN_PROGRESS;return o&&await r.transitionTicket(n,o),!0}async function wb(e){let t=Ha(e);if(await Kl(t))try{if(!await hf(t)||!await Nl(t)||!await Yl(t)||!await gf(t)||!await bf(t)||!Cl(t)||!Dl(t)||!await bl(t)||!await _f(t)||!Fl(t)||!await Rl(t))return;kl(t),await wl(t)}catch(r){let n=r instanceof Error?r.message:String(r),o=Ce(Date.now()-t.startTime);if(console.error(""),console.error(Oe("\u274C Clancy stopped")+$(` (${o})`)),console.error(Oe(` ${n}`)),console.error($(` "I'd rather let Herman go."`)),t.originalBranch)try{L(t.originalBranch)}catch{}}finally{t.lockOwner&&(Ft(t.cwd),Ht(t.cwd))}}process.argv[1]&&_b(import.meta.url)===bb(process.argv[1])&&wb(process.argv);export{wb as run};
|
|
239
|
+
`,{issueId:u.id,labelIds:f})}catch(o){console.warn(`\u26A0 removeLabel failed: ${o instanceof Error?o.message:String(o)}`)}},sharedEnv(){return e}}}var Up=c.object({plain_text:c.string()}),Hy=c.object({type:c.literal("status"),status:c.nullable(c.object({id:c.optional(c.string()),name:c.string(),color:c.optional(c.string())}))}),qy=c.object({type:c.literal("select"),select:c.nullable(c.object({id:c.optional(c.string()),name:c.string(),color:c.optional(c.string())}))}),Jy=c.object({id:c.optional(c.string()),name:c.string(),color:c.optional(c.string())}),Ky=c.object({type:c.literal("multi_select"),multi_select:c.array(Jy)}),Yy=c.object({type:c.literal("people"),people:c.array(c.object({id:c.string(),name:c.optional(c.nullable(c.string()))}))}),Gy=c.object({type:c.literal("relation"),relation:c.array(c.object({id:c.string()}))}),Wy=c.object({type:c.literal("title"),title:c.array(Up)}),Vy=c.object({type:c.literal("rich_text"),rich_text:c.array(Up)}),Qy=c.union([Hy,qy,Ky,Yy,Gy,Wy,Vy,c.object({type:c.string()})]),Ca=c.object({id:c.string(),url:c.optional(c.string()),properties:c.record(c.string(),Qy)}),Fp=c.object({results:c.array(Ca),has_more:c.boolean(),next_cursor:c.nullable(c.optional(c.string()))}),Hp=c.object({id:c.string(),type:c.optional(c.string()),name:c.optional(c.nullable(c.string())),avatar_url:c.optional(c.nullable(c.string()))});function Xy(e){if(!e)return;let t=parseInt(e,10);if(!Number.isNaN(t)&&t>=0)return t*1e3;let r=new Date(e);if(!Number.isNaN(r.getTime())){let n=r.getTime()-Date.now();return n>0?n:0}}function Na(e,t,r){let n=t*2**e;return Math.min(n,r)}function eb(e){return e===429||e>=500&&e<=599}async function Ct(e,t,r){let n=Math.max(0,r?.maxRetries??3),o=r?.baseDelayMs??1e3,s=r?.maxDelayMs??1e4,i;for(let a=0;a<=n;a++)try{let u=await fetch(e,t);if(!eb(u.status)||a===n)return u;let l;u.status===429?l=Xy(u.headers.get("Retry-After"))??Na(a,o,s):l=Na(a,o,s),await u.arrayBuffer().catch(()=>{}),await new Promise(p=>setTimeout(p,l))}catch(u){if(i=u,a===n)throw i;let l=Na(a,o,s);await new Promise(p=>setTimeout(p,l))}throw i}var Mr="https://api.notion.com/v1",tb="2022-06-28";function Br(e){return{Authorization:`Bearer ${e}`,"Notion-Version":tb,"Content-Type":"application/json"}}async function Jp(e){let t;try{t=await Ct(`${Mr}/users/me`,{headers:Br(e)})}catch{return{ok:!1,error:"\u2717 Could not reach Notion \u2014 check network"}}if(!t.ok)return t.status===401||t.status===403?{ok:!1,error:"\u2717 Notion auth failed \u2014 check NOTION_TOKEN"}:{ok:!1,error:`\u2717 Notion API returned HTTP ${t.status}`};try{let r=await t.json(),n=Hp.safeParse(r);if(n.success&&n.data.id)return{ok:!0}}catch{}return{ok:!1,error:"\u2717 Notion auth failed \u2014 check NOTION_TOKEN"}}async function Ur(e,t,r,n,o){let s={};r&&(s.filter=r),n&&(s.sorts=n),o&&(s.start_cursor=o);let i;try{i=await Ct(`${Mr}/databases/${t}/query`,{method:"POST",headers:Br(e),body:JSON.stringify(s)})}catch(l){console.warn(`\u26A0 Notion API request failed: ${l instanceof Error?l.message:String(l)}`);return}if(!i.ok){console.warn(`\u26A0 Notion API returned HTTP ${i.status}`);return}let a;try{a=await i.json()}catch{console.warn("\u26A0 Notion API returned invalid JSON");return}let u=Fp.safeParse(a);if(!u.success){console.warn(`\u26A0 Unexpected Notion response shape: ${u.error.message}`);return}return u.data}async function Nt(e,t,r){let n=[],o;for(let i=0;i<10;i++){let a=await Ur(e,t,r,void 0,o);if(!a||(n.push(...a.results),!a.has_more||!a.next_cursor))break;o=a.next_cursor}return n}async function qp(e,t){try{let r=await Ct(`${Mr}/pages/${t}`,{headers:Br(e)});if(!r.ok)return;let n=await r.json(),o=Ca.safeParse(n);return o.success?o.data:void 0}catch{return}}async function Ot(e,t,r){try{return(await Ct(`${Mr}/pages/${t}`,{method:"PATCH",headers:Br(e),body:JSON.stringify({properties:r})})).ok}catch{return!1}}async function Kp(e,t,r,n="Status"){try{let o=await qp(e,r);if(!o)return!1;let s=rb(o,"Blocked by");if(s?.type==="relation"){let u=s.relation;if(u.length>0){for(let l of u){let p=await qp(e,l.id);if(!p)continue;let f=F(p,n,"status");if(f&&!Dr(f))return!0}return!1}}let i=r.replace(/-/g,"").slice(0,8),a=Gp(o);if(a){let u=a.match(/Blocked by (notion-[a-f0-9]{8})/gi);if(u){let l=await Nt(e,t);if(!l.length)return!1;for(let p of u){let f=p.replace(/blocked by notion-/i,"").toLowerCase();if(f!==i){for(let m of l)if(m.id.replace(/-/g,"").slice(0,8)===f){let b=F(m,n,"status");if(b&&!Dr(b))return!0}}}}}return!1}catch{return!1}}async function Yp(e,t,r,n="Epic",o="Status"){try{let s=await nb(e,t,`Epic: ${r}`,o);if(s&&s.total>0)return s;let i=await sb(e,t,r);return i?await ob(e,t,i.id,n,o):void 0}catch{return}}function F(e,t,r){let n=e.properties[t];if(!(!n||n.type!==r))switch(r){case"status":return n.status?.name;case"select":return n.select?.name;case"title":return n.title.map(s=>s.plain_text).join("");case"rich_text":return n.rich_text.map(s=>s.plain_text).join("");case"multi_select":return n.multi_select.map(s=>s.name);case"people":return n.people.map(s=>s.id);case"relation":return n.relation.map(s=>s.id);default:return}}function rb(e,t){if(e.properties[t])return e.properties[t];let r=t.toLowerCase();for(let[n,o]of Object.entries(e.properties))if(n.toLowerCase()===r)return o}function Dr(e){let t=e.toLowerCase();return t==="done"||t==="complete"||t==="completed"||t==="closed"}function Gp(e){for(let t of["Description","description","Body","body"]){let r=F(e,t,"rich_text");if(r)return r}}async function nb(e,t,r,n="Status"){let o=await Nt(e,t);if(!o.length)return;let s=o.filter(u=>Gp(u)?.includes(r)),i=s.length;if(i===0)return{total:0,incomplete:0};let a=s.filter(u=>{let l=F(u,n,"status")??F(u,n,"select");return!l||!Dr(l)}).length;return{total:i,incomplete:a}}async function ob(e,t,r,n,o="Status"){let s=await Ur(e,t,{property:n,relation:{contains:r}});if(!s)return;let i=s.results.length;if(i===0)return{total:0,incomplete:0};let a=s.results.filter(u=>{let l=F(u,o,"status")??F(u,o,"select");return!l||!Dr(l)}).length;return{total:i,incomplete:a}}async function sb(e,t,r){let n=r.replace("notion-","");return n?(await Nt(e,t)).find(s=>s.id.replace(/-/g,"").slice(0,8)===n):void 0}var ib="Status",ab="Assignee",cb="Labels",ub="Epic";function Vp(e){let t=e.CLANCY_NOTION_STATUS??ib,r=e.CLANCY_NOTION_ASSIGNEE??ab,n=e.CLANCY_NOTION_LABELS??cb,o=e.CLANCY_NOTION_PARENT??ub;return{async ping(){return Jp(e.NOTION_TOKEN)},validateInputs(){if(!/^[0-9a-f]{8}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{12}$/i.test(e.NOTION_DATABASE_ID))return"\u2717 NOTION_DATABASE_ID does not look like a valid UUID. Use the database ID from the Notion URL, not the full URL."},async fetchTicket(s){return(await this.fetchTickets(s))[0]},async fetchTickets(s){let i=lb(t,"To-do"),a=await Ur(e.NOTION_TOKEN,e.NOTION_DATABASE_ID,i);if(!a)return[];let u=a.results;s.excludeHitl&&(u=u.filter(p=>!F(p,n,"multi_select")?.includes("clancy:hitl")));let l=s.buildLabel??e.CLANCY_LABEL;return l&&(u=u.filter(p=>F(p,n,"multi_select")?.includes(l))),u.slice(0,5).map(p=>pb(p,{labelsProp:n,parentProp:o,assigneeProp:r}))},async fetchBlockerStatus(s){let i=s.issueId;return i?Kp(e.NOTION_TOKEN,e.NOTION_DATABASE_ID,i,t):!1},async fetchChildrenStatus(s){return Yp(e.NOTION_TOKEN,e.NOTION_DATABASE_ID,s,o,t)},async transitionTicket(s,i){let a=s.issueId;if(!a)return!1;if(await Ot(e.NOTION_TOKEN,a,{[t]:{status:{name:i}}}))return console.log(` \u2192 Transitioned to ${i}`),!0;let l=await Ot(e.NOTION_TOKEN,a,{[t]:{select:{name:i}}});return l&&console.log(` \u2192 Transitioned to ${i}`),l},async ensureLabel(s){},async addLabel(s,i){try{let a=await Wp(e.NOTION_TOKEN,e.NOTION_DATABASE_ID,s);if(!a)return;let u=F(a,n,"multi_select")??[];if(u.includes(i))return;let l=[...u,i].map(p=>({name:p}));await Ot(e.NOTION_TOKEN,a.id,{[n]:{multi_select:l}})}catch(a){console.warn(`\u26A0 addLabel failed: ${a instanceof Error?a.message:String(a)}`)}},async removeLabel(s,i){try{let a=await Wp(e.NOTION_TOKEN,e.NOTION_DATABASE_ID,s);if(!a)return;let u=F(a,n,"multi_select")??[];if(!u.includes(i))return;let l=u.filter(p=>p!==i).map(p=>({name:p}));await Ot(e.NOTION_TOKEN,a.id,{[n]:{multi_select:l}})}catch(a){console.warn(`\u26A0 removeLabel failed: ${a instanceof Error?a.message:String(a)}`)}},sharedEnv(){return e}}}function lb(e,t){let r=t??"To-do";return{or:[{property:e,status:{equals:r}},{property:e,select:{equals:r}}]}}function pb(e,t){let n=`notion-${e.id.replace(/-/g,"").slice(0,8)}`,o="";for(let[l,p]of Object.entries(e.properties))if(p.type==="title"){o=F(e,l,"title")??"";break}let s="";for(let l of["Description","description","Body","body"]){let p=F(e,l,"rich_text");if(p){s=p;break}}let i=F(e,t.parentProp,"relation"),a=i&&i.length>0?`notion-${i[0].replace(/-/g,"").slice(0,8)}`:"none",u=F(e,t.labelsProp,"multi_select")??[];return{key:n,title:o,description:s,parentInfo:a,blockers:"None",issueId:e.id,labels:u,status:"To-do"}}async function Wp(e,t,r){let n=r.replace("notion-","");return n?(await Nt(e,t)).find(s=>s.id.replace(/-/g,"").slice(0,8)===n):void 0}var fb=c.object({verb:c.string(),subject_id:c.number(),object_id:c.number()}),Oa=c.object({id:c.number(),name:c.string(),description:c.optional(c.nullable(c.string())),story_type:c.optional(c.string()),blocked:c.optional(c.boolean()),story_links:c.optional(c.array(fb)),label_ids:c.optional(c.array(c.number())),labels:c.optional(c.array(c.object({id:c.number(),name:c.string()}))),epic_id:c.optional(c.nullable(c.number())),workflow_state_id:c.optional(c.number()),owner_ids:c.optional(c.array(c.string()))}),La=c.object({data:c.array(Oa),next:c.optional(c.nullable(c.string())),total:c.optional(c.number())}),Fr=Oa,db=c.object({id:c.number(),name:c.string(),type:c.string()}),mb=c.object({id:c.number(),name:c.string(),states:c.array(db)}),Qp=c.array(mb),Xp=c.object({id:c.number(),name:c.string()}),ef=c.array(Xp),tf=Xp,rf=c.array(Oa),nf=c.object({id:c.string(),mention_name:c.optional(c.string())});var ne="https://api.app.shortcut.com/api/v3";function oe(e){return{"Shortcut-Token":e,"Content-Type":"application/json"}}var Hr;var Lt;async function of(e){let t;try{t=await fetch(`${ne}/member-info`,{headers:oe(e)})}catch{return{ok:!1,error:"\u2717 Could not reach Shortcut \u2014 check network"}}if(!t.ok)return t.status===401||t.status===403?{ok:!1,error:"\u2717 Shortcut auth failed \u2014 check SHORTCUT_API_TOKEN"}:{ok:!1,error:`\u2717 Shortcut API returned HTTP ${t.status}`};try{let r=await t.json(),n=nf.safeParse(r);if(n.success&&n.data.id)return{ok:!0}}catch{}return{ok:!1,error:"\u2717 Shortcut auth failed \u2014 check SHORTCUT_API_TOKEN"}}async function Zt(e){if(Hr)return Hr;try{let t=await fetch(`${ne}/workflows`,{headers:oe(e)});if(!t.ok)return console.warn(`\u26A0 Shortcut /workflows returned HTTP ${t.status}`),[];let r=await t.json(),n=Qp.safeParse(r);return n.success?(Hr=n.data,Hr):(console.warn(`\u26A0 Unexpected Shortcut workflows response: ${n.error.message}`),[])}catch(t){return console.warn(`\u26A0 Shortcut /workflows request failed: ${t instanceof Error?t.message:String(t)}`),[]}}async function sf(e,t,r){let n=await Zt(e);for(let o of n){if(r&&o.name!==r)continue;let s=o.states.find(i=>i.name.toLowerCase()===t.toLowerCase());if(s)return s.id}}async function af(e,t,r){let n=await Zt(e),o=[];for(let s of n)if(!(r&&s.name!==r))for(let i of s.states)i.type===t&&o.push(i.id);return o}async function cf(e,t,r,n,o,s=5){if(!t.length)return[];let i,a={};t.length&&(a.workflow_state_ids=t),n&&(a.owner_ids=[n]),r&&(a.label_name=r);try{i=await fetch(`${ne}/stories/search`,{method:"POST",headers:oe(e),body:JSON.stringify(a)})}catch(f){return console.warn(`\u26A0 Shortcut API request failed: ${f instanceof Error?f.message:String(f)}`),[]}if(!i.ok)return console.warn(`\u26A0 Shortcut API returned HTTP ${i.status}`),[];let u;try{u=await i.json()}catch{return console.warn("\u26A0 Shortcut API returned invalid JSON"),[]}let l=La.safeParse(u);if(!l.success)return console.warn(`\u26A0 Unexpected Shortcut response shape: ${l.error.message}`),[];let p=l.data.data;return o&&(p=p.filter(f=>!f.labels?.some(m=>m.name==="clancy:hitl"))),p.slice(0,s).map(f=>({key:`sc-${f.id}`,title:f.name,description:f.description??"",provider:"shortcut",storyId:f.id,epicId:f.epic_id??void 0,labels:f.labels?.map(m=>m.name).filter(m=>!!m)}))}async function uf(e,t){try{let r=await fetch(`${ne}/stories/${t}`,{headers:oe(e)});if(!r.ok)return!1;let n=await r.json(),o=Fr.safeParse(n);if(!o.success)return!1;let s=o.data;if(!s.blocked)return!1;let i=(s.story_links??[]).filter(l=>l.verb==="is blocked by");if(!i.length)return!1;let a=await Zt(e),u=new Set;for(let l of a)for(let p of l.states)p.type==="done"&&u.add(p.id);for(let l of i){let p=l.object_id,f=await fetch(`${ne}/stories/${p}`,{headers:oe(e)});if(!f.ok)continue;let m=await f.json(),h=Fr.safeParse(m);if(h.success&&h.data.workflow_state_id!==void 0&&!u.has(h.data.workflow_state_id))return!0}return!1}catch{return!1}}async function lf(e,t,r){try{if(r){let n=await hb(e,`Epic: ${r}`);if(n&&n.total>0)return n}return await gb(e,t)}catch{return}}async function hb(e,t){try{let r=await fetch(`${ne}/stories/search`,{method:"POST",headers:oe(e),body:JSON.stringify({query:t})});if(!r.ok)return;let n=await r.json(),o=La.safeParse(n);if(!o.success)return;let s=o.data.data,i=s.length;if(i===0)return{total:0,incomplete:0};let a=await Zt(e),u=new Set;for(let p of a)for(let f of p.states)f.type==="done"&&u.add(f.id);let l=s.filter(p=>p.workflow_state_id===void 0||!u.has(p.workflow_state_id)).length;return{total:i,incomplete:l}}catch{return}}async function gb(e,t){try{let r=await fetch(`${ne}/epics/${t}/stories`,{headers:oe(e)});if(!r.ok)return;let n=await r.json(),o=rf.safeParse(n);if(!o.success)return;let s=o.data,i=s.length;if(i===0)return{total:0,incomplete:0};let a=await Zt(e),u=new Set;for(let p of a)for(let f of p.states)f.type==="done"&&u.add(f.id);let l=s.filter(p=>p.workflow_state_id===void 0||!u.has(p.workflow_state_id)).length;return{total:i,incomplete:l}}catch{return}}async function pf(e,t,r){try{return(await fetch(`${ne}/stories/${t}`,{method:"PUT",headers:oe(e),body:JSON.stringify({workflow_state_id:r})})).ok}catch{return!1}}async function qr(e){if(Lt)return Lt;try{let t=await fetch(`${ne}/labels`,{headers:oe(e)});if(!t.ok)return console.warn(`\u26A0 Shortcut /labels returned HTTP ${t.status}`),[];let r=await t.json(),n=ef.safeParse(r);return n.success?(Lt=n.data,Lt):(console.warn(`\u26A0 Unexpected Shortcut labels response: ${n.error.message}`),[])}catch(t){return console.warn(`\u26A0 Shortcut /labels request failed: ${t instanceof Error?t.message:String(t)}`),[]}}async function ff(e,t){try{let r=await fetch(`${ne}/labels`,{method:"POST",headers:oe(e),body:JSON.stringify({name:t,color:"#0075ca"})});if(!r.ok){console.warn(`\u26A0 Shortcut label create returned HTTP ${r.status}`);return}let n=await r.json(),o=tf.safeParse(n);return o.success?(Lt=void 0,o.data.id):void 0}catch(r){console.warn(`\u26A0 Shortcut label create failed: ${r instanceof Error?r.message:String(r)}`);return}}async function Za(e,t){try{let r=await fetch(`${ne}/stories/${t}`,{headers:oe(e)});if(!r.ok)return;let n=await r.json(),o=Fr.safeParse(n);return o.success?o.data.label_ids??[]:void 0}catch{return}}async function ja(e,t,r){try{let n=await fetch(`${ne}/stories/${t}`,{method:"PUT",headers:oe(e),body:JSON.stringify({label_ids:r})});return n.ok||console.warn(`\u26A0 Shortcut story label update returned HTTP ${n.status}`),n.ok}catch(n){return console.warn(`\u26A0 Shortcut story label update failed: ${n instanceof Error?n.message:String(n)}`),!1}}function df(e){return{async ping(){return of(e.SHORTCUT_API_TOKEN)},validateInputs(){},async fetchTicket(t){return(await this.fetchTickets(t))[0]},async fetchTickets(t){let r=await af(e.SHORTCUT_API_TOKEN,"unstarted",e.SHORTCUT_WORKFLOW);return(await cf(e.SHORTCUT_API_TOKEN,r,t.buildLabel??e.CLANCY_LABEL,void 0,t.excludeHitl)).map(o=>({key:o.key,title:o.title,description:o.description,parentInfo:o.epicId?`epic-${o.epicId}`:"none",blockers:"None",issueId:String(o.storyId),labels:o.labels??[],status:"unstarted"}))},async fetchBlockerStatus(t){let r=Jr(t.key);return r===void 0?!1:uf(e.SHORTCUT_API_TOKEN,r)},async fetchChildrenStatus(t,r){let n=r??t.replace(/^(sc-|epic-)/,""),o=parseInt(n,10);if(!Number.isNaN(o))return lf(e.SHORTCUT_API_TOKEN,o,t)},async transitionTicket(t,r){let n=Jr(t.key);if(n===void 0)return!1;let o=await sf(e.SHORTCUT_API_TOKEN,r,e.SHORTCUT_WORKFLOW);if(o===void 0)return console.warn(`\u26A0 Shortcut workflow state "${r}" not found \u2014 check workflow configuration`),!1;let s=await pf(e.SHORTCUT_API_TOKEN,n,o);return s&&console.log(` \u2192 Transitioned to ${r}`),s},async ensureLabel(t){try{if((await qr(e.SHORTCUT_API_TOKEN)).find(o=>o.name===t))return;await ff(e.SHORTCUT_API_TOKEN,t)}catch(r){console.warn(`\u26A0 ensureLabel failed: ${r instanceof Error?r.message:String(r)}`)}},async addLabel(t,r){try{await this.ensureLabel(r);let n=Jr(t);if(n===void 0)return;let s=(await qr(e.SHORTCUT_API_TOKEN)).find(a=>a.name===r);if(!s)return;let i=await Za(e.SHORTCUT_API_TOKEN,n);if(!i||i.includes(s.id))return;await ja(e.SHORTCUT_API_TOKEN,n,[...i,s.id])}catch(n){console.warn(`\u26A0 addLabel failed: ${n instanceof Error?n.message:String(n)}`)}},async removeLabel(t,r){try{let n=Jr(t);if(n===void 0)return;let s=(await qr(e.SHORTCUT_API_TOKEN)).find(a=>a.name===r);if(!s)return;let i=await Za(e.SHORTCUT_API_TOKEN,n);if(!i||!i.includes(s.id))return;await ja(e.SHORTCUT_API_TOKEN,n,i.filter(a=>a!==s.id))}catch(n){console.warn(`\u26A0 removeLabel failed: ${n instanceof Error?n.message:String(n)}`)}},sharedEnv(){return e}}}function Jr(e){let t=parseInt(e.replace("sc-",""),10);return Number.isNaN(t)?void 0:t}function mf(e){switch(e.provider){case"jira":return Sp(e.env);case"github":return dp(e.env);case"linear":return Bp(e.env);case"shortcut":return df(e.env);case"notion":return Vp(e.env);case"azdo":return ip(e.env)}}async function hf(e){console.log($("\u250C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510")),console.log($("\u2502")+Ne(" \u{1F916} Clancy \u2014 once mode ")+$("\u2502")),console.log($("\u2502")+$(` "Let's roll." `)+$("\u2502")),console.log($("\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518")),console.log("");let t=Cr(e.cwd);if(!t.ok)return console.log(t.error),!1;t.warning&&console.log(t.warning);let r=Pr(t.env);if(typeof r=="string")return console.log(r),!1;let n=r,o=mf(n),s=o.validateInputs();if(s)return console.log(s),!1;let i=await o.ping();return i.ok?(console.log(N("\u2705 Preflight passed")),e.config=n,e.board=o,!0):(console.log(i.error),!1)}async function gf(e){let t=e.config;try{let r=await Al(t);r&&(e.isRework=!0,e.ticket=r.ticket,e.prFeedback=r.feedback,e.reworkPrNumber=r.prNumber,e.reworkDiscussionIds=r.discussionIds,e.reworkReviewers=r.reviewers,console.log(v(` \u21BB PR rework: [${e.ticket.key}] ${e.ticket.title}`)))}catch{}return!0}function yb(e){return e.CLANCY_LABEL_BUILD||e.CLANCY_LABEL||void 0}function bb(e){return e.CLANCY_LABEL_PLAN||e.CLANCY_PLAN_LABEL||void 0}function _b(e){return e?.isAfk??process.env.CLANCY_AFK_MODE==="1"}async function yf(e,t){let r=_b(t),n=e.sharedEnv(),o=yb(n),s=bb(n),i=await e.fetchTickets({excludeHitl:r,buildLabel:o});if(i.length)for(let a of i){if(s&&a.labels?.includes(s)){console.log(`Skipping ${a.key} \u2014 still has plan label`);continue}if(!await e.fetchBlockerStatus(a))return console.log(`Selected ${a.key}${a.status?` (status: ${a.status})`:""}`),a;console.log(`Skipping ${a.key} \u2014 blocked`)}}async function bf(e){let t=e.config;if(e.ticket||(e.ticket=await yf(e.board)),!e.ticket)return console.log($("No tickets found. All done!")),!1;if(e.isRework){let a=parseInt(Z(t).CLANCY_MAX_REWORK??"3",10),u=Number.isFinite(a)&&a>0?a:3;if(Fu(e.cwd,e.ticket.key)>=u)return console.log(v(`\u26A0 ${e.ticket.key} has reached max rework cycles (${u}) \u2014 needs human intervention`)),R(e.cwd,e.ticket.key,e.ticket.title,"SKIPPED"),!1}let r=t.env.CLANCY_BASE_BRANCH??"main",n=e.ticket.parentInfo!=="none"?e.ticket.parentInfo:void 0,o=We(t.provider,e.ticket.key),s=Ve(t.provider,r,n);e.baseBranch=r,e.ticketBranch=o,e.targetBranch=s,e.hasParent=e.ticket.parentInfo!=="none";let i=t.provider==="github"?"Milestone":"Epic";return console.log(""),console.log(`\u{1F3AB} ${Ne(`[${e.ticket.key}]`)} ${e.ticket.title}`),console.log($(` ${i}: ${e.ticket.parentInfo} | Branch: ${o} \u2192 ${s}`)),t.provider!=="github"&&e.ticket.blockers!=="None"&&console.log(v(` Blockers: ${e.ticket.blockers}`)),console.log(""),!0}async function _f(e){let t=e.config,r=e.board,n=e.ticket,o=t.env.CLANCY_STATUS_IN_PROGRESS;return o&&await r.transitionTicket(n,o),!0}async function xb(e){let t=Ha(e);if(await Kl(t))try{if(!await hf(t)||!await Nl(t)||!await Yl(t)||!await gf(t)||!await bf(t)||!Cl(t)||!Dl(t)||!await bl(t)||!await _f(t)||!Fl(t)||!await Rl(t))return;xl(t),await wl(t)}catch(r){let n=r instanceof Error?r.message:String(r),o=Ce(Date.now()-t.startTime);if(console.error(""),console.error(Oe("\u274C Clancy stopped")+$(` (${o})`)),console.error(Oe(` ${n}`)),console.error($(` "I'd rather let Herman go."`)),t.originalBranch)try{L(t.originalBranch)}catch{}}finally{t.lockOwner&&(Ft(t.cwd),Ht(t.cwd))}}process.argv[1]&&$b(import.meta.url)===wb(process.argv[1])&&xb(process.argv);export{xb as run};
|