chief-clancy 0.8.20 → 0.8.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,59 +1,59 @@
1
- var xf=Object.defineProperty;var ve=(e,t)=>{for(var r in t)xf(e,r,{get:t[r],enumerable:!0})};import{resolve as x_}from"node:path";import{fileURLToPath as k_}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 Yr(...e){return pe("git",e,{encoding:"utf8"}).trim()}function Fa(){return Yr("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 Gr(e,t){Xe(e)||Yr("checkout","-b",e,t)}function L(e,t=!1){Yr("checkout",...t?["-B"]:[],e)}function Ha(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 qa(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 Ja(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 kf,readFileSync as Sf,unlinkSync as Ka,writeFileSync as vf}from"node:fs";import{dirname as zf,join as Bt}from"node:path";function Ya(e,t){let r=Bt(e,".clancy","lock.json");kf(zf(r),{recursive:!0}),vf(r,JSON.stringify(t,null,2),"utf8")}function Ut(e){let t=Bt(e,".clancy","lock.json");try{let r=Sf(t,"utf8");return JSON.parse(r)}catch{return}}function Ft(e){let t=Bt(e,".clancy","lock.json");try{Ka(t)}catch{}}function Ht(e){let t=Bt(e,".clancy","verify-attempt.txt");try{Ka(t)}catch{}}function Tf(e){try{return process.kill(e,0),!0}catch(t){return t instanceof Error&&"code"in t&&t.code==="EPERM"}}function Ga(e){if(!Tf(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 _l}from"node:child_process";import{readFileSync as Yg}from"node:fs";import{join as Gg}from"node:path";var c={};ve(c,{$brand:()=>Vr,$input:()=>As,$output:()=>Es,NEVER:()=>Wr,TimePrecision:()=>ri,ZodMiniAny:()=>ru,ZodMiniArray:()=>au,ZodMiniBase64:()=>Yc,ZodMiniBase64URL:()=>Gc,ZodMiniBigInt:()=>kt,ZodMiniBigIntFormat:()=>ia,ZodMiniBoolean:()=>xt,ZodMiniCIDRv4:()=>qc,ZodMiniCIDRv6:()=>Jc,ZodMiniCUID:()=>jc,ZodMiniCUID2:()=>Dc,ZodMiniCatch:()=>zu,ZodMiniCodec:()=>fa,ZodMiniCustom:()=>da,ZodMiniCustomStringFormat:()=>wt,ZodMiniDate:()=>$r,ZodMiniDefault:()=>ku,ZodMiniDiscriminatedUnion:()=>lu,ZodMiniE164:()=>Wc,ZodMiniEmail:()=>Nc,ZodMiniEmoji:()=>Lc,ZodMiniEnum:()=>ca,ZodMiniExactOptional:()=>$u,ZodMiniFile:()=>bu,ZodMiniFunction:()=>Nu,ZodMiniGUID:()=>Oc,ZodMiniIPv4:()=>Fc,ZodMiniIPv6:()=>Hc,ZodMiniISODate:()=>zr,ZodMiniISODateTime:()=>vr,ZodMiniISODuration:()=>Ir,ZodMiniISOTime:()=>Tr,ZodMiniIntersection:()=>pu,ZodMiniJWT:()=>Vc,ZodMiniKSUID:()=>Uc,ZodMiniLazy:()=>Eu,ZodMiniLiteral:()=>_u,ZodMiniMAC:()=>Kc,ZodMiniMap:()=>hu,ZodMiniNaN:()=>Tu,ZodMiniNanoID:()=>Zc,ZodMiniNever:()=>ou,ZodMiniNonOptional:()=>la,ZodMiniNull:()=>eu,ZodMiniNullable:()=>xu,ZodMiniNumber:()=>$t,ZodMiniNumberFormat:()=>qe,ZodMiniObject:()=>xr,ZodMiniOptional:()=>ua,ZodMiniPipe:()=>pa,ZodMiniPrefault:()=>Su,ZodMiniPromise:()=>Ru,ZodMiniReadonly:()=>Iu,ZodMiniRecord:()=>kr,ZodMiniSet:()=>gu,ZodMiniString:()=>He,ZodMiniStringFormat:()=>A,ZodMiniSuccess:()=>vu,ZodMiniSymbol:()=>Qc,ZodMiniTemplateLiteral:()=>Pu,ZodMiniTransform:()=>wu,ZodMiniTuple:()=>fu,ZodMiniType:()=>S,ZodMiniULID:()=>Mc,ZodMiniURL:()=>sa,ZodMiniUUID:()=>bt,ZodMiniUndefined:()=>Xc,ZodMiniUnion:()=>aa,ZodMiniUnknown:()=>nu,ZodMiniVoid:()=>iu,ZodMiniXID:()=>Bc,ZodMiniXor:()=>uu,_default:()=>Wh,_function:()=>hg,any:()=>Sh,array:()=>K,base64:()=>ih,base64url:()=>ah,bigint:()=>bh,boolean:()=>Je,catch:()=>eg,catchall:()=>Lh,check:()=>ag,cidrv4:()=>nh,cidrv6:()=>oh,clone:()=>q,codec:()=>ng,coerce:()=>ha,config:()=>B,core:()=>Fe,cuid:()=>Wm,cuid2:()=>Vm,custom:()=>Cu,date:()=>zh,decode:()=>wn,decodeAsync:()=>xn,describe:()=>lg,discriminatedUnion:()=>jh,e164:()=>ch,email:()=>Mm,emoji:()=>Ym,encode:()=>bn,encodeAsync:()=>$n,endsWith:()=>Hi,enum:()=>yu,exactOptional:()=>Yh,extend:()=>ke,file:()=>Jh,flattenError:()=>hn,float32:()=>hh,float64:()=>gh,formatError:()=>gn,function:()=>hg,globalRegistry:()=>ae,gt:()=>gr,gte:()=>gt,guid:()=>Bm,hash:()=>dh,hex:()=>fh,hostname:()=>ph,httpUrl:()=>Km,includes:()=>Ui,instanceof:()=>fg,int:()=>mh,int32:()=>yh,int64:()=>wh,intersection:()=>Dh,ipv4:()=>th,ipv6:()=>rh,iso:()=>ma,json:()=>mg,jwt:()=>uh,keyof:()=>Th,ksuid:()=>eh,lazy:()=>Au,length:()=>Di,literal:()=>qh,locales:()=>mt,looseObject:()=>Ph,looseRecord:()=>Bh,lowercase:()=>Mi,lt:()=>hr,lte:()=>ht,mac:()=>sh,map:()=>Uh,maxLength:()=>ji,maxSize:()=>Oi,maximum:()=>ht,merge:()=>Ah,meta:()=>pg,mime:()=>Ji,minLength:()=>yt,minSize:()=>Li,minimum:()=>gt,multipleOf:()=>Ni,nan:()=>tg,nanoid:()=>Gm,nativeEnum:()=>Hh,negative:()=>Ai,never:()=>su,nonnegative:()=>Ci,nonoptional:()=>Qh,nonpositive:()=>Ri,normalize:()=>Ki,null:()=>tu,nullable:()=>Sr,nullish:()=>Gh,number:()=>xe,object:()=>I,omit:()=>Ch,optional:()=>w,overwrite:()=>_e,parse:()=>ge,parseAsync:()=>ye,partial:()=>Nh,partialRecord:()=>Mh,pick:()=>Rh,pipe:()=>rg,positive:()=>Ei,prefault:()=>Vh,prettifyError:()=>_n,promise:()=>ig,property:()=>qi,readonly:()=>og,record:()=>mu,refine:()=>cg,regex:()=>_t,regexes:()=>oe,registry:()=>dr,required:()=>Oh,safeDecode:()=>Sn,safeDecodeAsync:()=>zn,safeEncode:()=>kn,safeEncodeAsync:()=>vn,safeExtend:()=>Eh,safeParse:()=>Te,safeParseAsync:()=>Ie,set:()=>Fh,size:()=>Zi,startsWith:()=>Fi,strictObject:()=>Ih,string:()=>b,stringFormat:()=>lh,stringbool:()=>dg,success:()=>Xh,superRefine:()=>ug,symbol:()=>xh,templateLiteral:()=>sg,toJSONSchema:()=>_r,toLowerCase:()=>Gi,toUpperCase:()=>Wi,transform:()=>Kh,treeifyError:()=>yn,trim:()=>Yi,tuple:()=>du,uint32:()=>_h,uint64:()=>$h,ulid:()=>Qm,undefined:()=>kh,union:()=>cu,unknown:()=>wr,uppercase:()=>Bi,url:()=>Jm,util:()=>ne,uuid:()=>Um,uuidv4:()=>Fm,uuidv6:()=>Hm,uuidv7:()=>qm,void:()=>vh,xid:()=>Xm,xor:()=>Zh});var Fe={};ve(Fe,{$ZodAny:()=>Xo,$ZodArray:()=>os,$ZodAsyncError:()=>se,$ZodBase64:()=>Fo,$ZodBase64URL:()=>Ho,$ZodBigInt:()=>cr,$ZodBigIntFormat:()=>Go,$ZodBoolean:()=>pt,$ZodCIDRv4:()=>Mo,$ZodCIDRv6:()=>Bo,$ZodCUID:()=>Io,$ZodCUID2:()=>Po,$ZodCatch:()=>$s,$ZodCheck:()=>E,$ZodCheckBigIntFormat:()=>no,$ZodCheckEndsWith:()=>go,$ZodCheckGreaterThan:()=>tr,$ZodCheckIncludes:()=>mo,$ZodCheckLengthEquals:()=>uo,$ZodCheckLessThan:()=>er,$ZodCheckLowerCase:()=>po,$ZodCheckMaxLength:()=>ao,$ZodCheckMaxSize:()=>oo,$ZodCheckMimeType:()=>_o,$ZodCheckMinLength:()=>co,$ZodCheckMinSize:()=>so,$ZodCheckMultipleOf:()=>to,$ZodCheckNumberFormat:()=>ro,$ZodCheckOverwrite:()=>bo,$ZodCheckProperty:()=>yo,$ZodCheckRegex:()=>lo,$ZodCheckSizeEquals:()=>io,$ZodCheckStartsWith:()=>ho,$ZodCheckStringFormat:()=>Me,$ZodCheckUpperCase:()=>fo,$ZodCodec:()=>dt,$ZodCustom:()=>Ps,$ZodCustomStringFormat:()=>Ko,$ZodDate:()=>ns,$ZodDefault:()=>ys,$ZodDiscriminatedUnion:()=>is,$ZodE164:()=>qo,$ZodEmail:()=>So,$ZodEmoji:()=>zo,$ZodEncodeError:()=>Le,$ZodEnum:()=>ps,$ZodError:()=>mn,$ZodExactOptional:()=>hs,$ZodFile:()=>ds,$ZodFunction:()=>zs,$ZodGUID:()=>xo,$ZodIPv4:()=>Zo,$ZodIPv6:()=>jo,$ZodISODate:()=>No,$ZodISODateTime:()=>Co,$ZodISODuration:()=>Lo,$ZodISOTime:()=>Oo,$ZodIntersection:()=>as,$ZodJWT:()=>Jo,$ZodKSUID:()=>Ro,$ZodLazy:()=>Is,$ZodLiteral:()=>fs,$ZodMAC:()=>Do,$ZodMap:()=>us,$ZodNaN:()=>xs,$ZodNanoID:()=>To,$ZodNever:()=>ts,$ZodNonOptional:()=>bs,$ZodNull:()=>Qo,$ZodNullable:()=>gs,$ZodNumber:()=>ar,$ZodNumberFormat:()=>Yo,$ZodObject:()=>ur,$ZodObjectJIT:()=>kd,$ZodOptional:()=>pr,$ZodPipe:()=>ks,$ZodPrefault:()=>_s,$ZodPromise:()=>Ts,$ZodReadonly:()=>Ss,$ZodRealError:()=>W,$ZodRecord:()=>cs,$ZodRegistry:()=>fr,$ZodSet:()=>ls,$ZodString:()=>Be,$ZodStringFormat:()=>P,$ZodSuccess:()=>ws,$ZodSymbol:()=>Wo,$ZodTemplateLiteral:()=>vs,$ZodTransform:()=>ms,$ZodTuple:()=>lr,$ZodType:()=>x,$ZodULID:()=>Eo,$ZodURL:()=>vo,$ZodUUID:()=>ko,$ZodUndefined:()=>Vo,$ZodUnion:()=>ft,$ZodUnknown:()=>es,$ZodVoid:()=>rs,$ZodXID:()=>Ao,$ZodXor:()=>ss,$brand:()=>Vr,$constructor:()=>d,$input:()=>As,$output:()=>Es,Doc:()=>lt,JSONSchema:()=>Cc,JSONSchemaGenerator:()=>br,NEVER:()=>Wr,TimePrecision:()=>ri,_any:()=>ki,_array:()=>Id,_base64:()=>Qs,_base64url:()=>Xs,_bigint:()=>gi,_boolean:()=>mi,_catch:()=>Jd,_check:()=>Rc,_cidrv4:()=>Ws,_cidrv6:()=>Vs,_coercedBigint:()=>yi,_coercedBoolean:()=>hi,_coercedDate:()=>Ii,_coercedNumber:()=>ci,_coercedString:()=>Cs,_cuid:()=>Us,_cuid2:()=>Fs,_custom:()=>Qi,_date:()=>Ti,_decode:()=>nc,_decodeAsync:()=>sc,_default:()=>Fd,_discriminatedUnion:()=>Ad,_e164:()=>ei,_email:()=>Ns,_emoji:()=>Ms,_encode:()=>rc,_encodeAsync:()=>oc,_endsWith:()=>Hi,_enum:()=>Zd,_file:()=>Vi,_float32:()=>li,_float64:()=>pi,_gt:()=>gr,_gte:()=>gt,_guid:()=>Os,_includes:()=>Ui,_int:()=>ui,_int32:()=>fi,_int64:()=>_i,_intersection:()=>Rd,_ipv4:()=>Ks,_ipv6:()=>Ys,_isoDate:()=>oi,_isoDateTime:()=>ni,_isoDuration:()=>ii,_isoTime:()=>si,_jwt:()=>ti,_ksuid:()=>Js,_lazy:()=>Wd,_length:()=>Di,_literal:()=>Dd,_lowercase:()=>Mi,_lt:()=>hr,_lte:()=>ht,_mac:()=>Gs,_map:()=>Od,_max:()=>ht,_maxLength:()=>ji,_maxSize:()=>Oi,_mime:()=>Ji,_min:()=>gt,_minLength:()=>yt,_minSize:()=>Li,_multipleOf:()=>Ni,_nan:()=>Pi,_nanoid:()=>Bs,_nativeEnum:()=>jd,_negative:()=>Ai,_never:()=>vi,_nonnegative:()=>Ci,_nonoptional:()=>Hd,_nonpositive:()=>Ri,_normalize:()=>Ki,_null:()=>xi,_nullable:()=>Ud,_number:()=>ai,_optional:()=>Bd,_overwrite:()=>_e,_parse:()=>Yt,_parseAsync:()=>Gt,_pipe:()=>Kd,_positive:()=>Ei,_promise:()=>Vd,_property:()=>qi,_readonly:()=>Yd,_record:()=>Nd,_refine:()=>Xi,_regex:()=>_t,_safeDecode:()=>ac,_safeDecodeAsync:()=>uc,_safeEncode:()=>ic,_safeEncodeAsync:()=>cc,_safeParse:()=>Wt,_safeParseAsync:()=>Vt,_set:()=>Ld,_size:()=>Zi,_slugify:()=>Td,_startsWith:()=>Fi,_string:()=>Rs,_stringFormat:()=>Ue,_stringbool:()=>na,_success:()=>qd,_superRefine:()=>ea,_symbol:()=>wi,_templateLiteral:()=>Gd,_toLowerCase:()=>Gi,_toUpperCase:()=>Wi,_transform:()=>Md,_trim:()=>Yi,_tuple:()=>Cd,_uint32:()=>di,_uint64:()=>bi,_ulid:()=>Hs,_undefined:()=>$i,_union:()=>Pd,_unknown:()=>Si,_uppercase:()=>Bi,_url:()=>mr,_uuid:()=>Ls,_uuidv4:()=>Zs,_uuidv6:()=>js,_uuidv7:()=>Ds,_void:()=>zi,_xid:()=>qs,_xor:()=>Ed,clone:()=>q,config:()=>B,createStandardJSONSchemaMethod:()=>oa,createToJSONSchemaMethod:()=>Qd,decode:()=>wn,decodeAsync:()=>xn,describe:()=>ta,encode:()=>bn,encodeAsync:()=>$n,extractDefs:()=>we,finalize:()=>$e,flattenError:()=>hn,formatError:()=>gn,globalConfig:()=>tt,globalRegistry:()=>ae,initializeContext:()=>be,isValidBase64:()=>Uo,isValidBase64URL:()=>Tc,isValidJWT:()=>Ic,locales:()=>mt,meta:()=>ra,parse:()=>ge,parseAsync:()=>ye,prettifyError:()=>_n,process:()=>T,regexes:()=>oe,registry:()=>dr,safeDecode:()=>Sn,safeDecodeAsync:()=>zn,safeEncode:()=>kn,safeEncodeAsync:()=>vn,safeParse:()=>Te,safeParseAsync:()=>Ie,toDotPath:()=>tc,toJSONSchema:()=>_r,treeifyError:()=>yn,util:()=>ne,version:()=>wo});var Wr=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 Vr=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 ne={};ve(ne,{BIGINT_FORMAT_RANGES:()=>cn,Class:()=>Xr,NUMBER_FORMAT_RANGES:()=>an,aborted:()=>he,allowsEval:()=>nn,assert:()=>Rf,assertEqual:()=>If,assertIs:()=>Ef,assertNever:()=>Af,assertNotEqual:()=>Pf,assignProp:()=>de,base64ToUint8Array:()=>Qa,base64urlToUint8Array:()=>qf,cached:()=>Ze,captureStackTrace:()=>Jt,cleanEnum:()=>Hf,cleanRegex:()=>ot,clone:()=>q,cloneDef:()=>Of,createTransparentProxy:()=>Bf,defineLazy:()=>k,esc:()=>qt,escapeRegex:()=>re,extend:()=>Kt,finalizeIssue:()=>G,floatSafeRemainder:()=>tn,getElementAtPath:()=>Lf,getEnumValues:()=>nt,getLengthableOrigin:()=>at,getParsedType:()=>Mf,getSizableOrigin:()=>it,hexToUint8Array:()=>Kf,isObject:()=>ze,isPlainObject:()=>me,issue:()=>De,joinValues:()=>Cf,jsonStringifyReplacer:()=>en,merge:()=>Uf,mergeDefs:()=>ue,normalizeParams:()=>g,nullish:()=>fe,numKeys:()=>Df,objectClone:()=>Nf,omit:()=>ln,optionalKeys:()=>sn,parsedType:()=>Ff,partial:()=>fn,pick:()=>un,prefixIssues:()=>Q,primitiveTypes:()=>on,promiseAllObject:()=>Zf,propertyKeyTypes:()=>st,randomString:()=>jf,required:()=>dn,safeExtend:()=>pn,shallowClone:()=>je,slugify:()=>rn,stringifyPrimitive:()=>Va,uint8ArrayToBase64:()=>Xa,uint8ArrayToBase64url:()=>Jf,uint8ArrayToHex:()=>Yf,unwrapMessage:()=>rt});function If(e){return e}function Pf(e){return e}function Ef(e){}function Af(e){throw new Error("Unexpected value in exhaustive check")}function Rf(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 Cf(e,t="|"){return e.map(r=>Va(r)).join(t)}function en(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 tn(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 Wa=Symbol("evaluating");function k(e,t,r){let n;Object.defineProperty(e,t,{get(){if(n!==Wa)return n===void 0&&(n=Wa,n=r()),n},set(o){Object.defineProperty(e,t,{value:o})},configurable:!0})}function Nf(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 Of(e){return ue(e._zod.def)}function Lf(e,t){return t?t.reduce((r,n)=>r?.[n],e):e}function Zf(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 jf(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 rn(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 nn=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 Df(e){let t=0;for(let r in e)Object.prototype.hasOwnProperty.call(e,r)&&t++;return t}var Mf=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"]),on=new Set(["string","number","bigint","boolean","symbol","undefined"]);function re(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 Bf(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 Va(e){return typeof e=="bigint"?e.toString()+"n":typeof e=="string"?`"${e}"`:`${e}`}function sn(e){return Object.keys(e).filter(t=>e[t]._zod.optin==="optional"&&e[t]._zod.optout==="optional")}var an={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]},cn={int64:[BigInt("-9223372036854775808"),BigInt("9223372036854775807")],uint64:[BigInt(0),BigInt("18446744073709551615")]};function un(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 ln(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 pn(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 Uf(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 fn(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 dn(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 Ff(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 Hf(e){return Object.entries(e).filter(([t,r])=>Number.isNaN(Number.parseInt(t,10))).map(t=>t[1])}function Qa(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 Xa(e){let t="";for(let r=0;r<e.length;r++)t+=String.fromCharCode(e[r]);return btoa(t)}function qf(e){let t=e.replace(/-/g,"+").replace(/_/g,"/"),r="=".repeat((4-t.length%4)%4);return Qa(t+r)}function Jf(e){return Xa(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}function Kf(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 Yf(e){return Array.from(e).map(t=>t.toString(16).padStart(2,"0")).join("")}var Xr=class{constructor(...t){}};var ec=(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,en,2),Object.defineProperty(e,"toString",{value:()=>e.message,enumerable:!1})},mn=d("$ZodError",ec),W=d("$ZodError",ec,{Parent:Error});function hn(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 gn(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 yn(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 tc(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 _n(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 ${tc(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??mn)(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),rc=e=>(t,r,n)=>{let o=n?Object.assign(n,{direction:"backward"}):{direction:"backward"};return Yt(e)(t,r,o)},bn=rc(W),nc=e=>(t,r,n)=>Yt(e)(t,r,n),wn=nc(W),oc=e=>async(t,r,n)=>{let o=n?Object.assign(n,{direction:"backward"}):{direction:"backward"};return Gt(e)(t,r,o)},$n=oc(W),sc=e=>async(t,r,n)=>Gt(e)(t,r,n),xn=sc(W),ic=e=>(t,r,n)=>{let o=n?Object.assign(n,{direction:"backward"}):{direction:"backward"};return Wt(e)(t,r,o)},kn=ic(W),ac=e=>(t,r,n)=>Wt(e)(t,r,n),Sn=ac(W),cc=e=>async(t,r,n)=>{let o=n?Object.assign(n,{direction:"backward"}):{direction:"backward"};return Vt(e)(t,r,o)},vn=cc(W),uc=e=>async(t,r,n)=>Vt(e)(t,r,n),zn=uc(W);var oe={};ve(oe,{base64:()=>Un,base64url:()=>Qt,bigint:()=>Yn,boolean:()=>Wn,browserEmail:()=>nd,cidrv4:()=>Mn,cidrv6:()=>Bn,cuid:()=>Tn,cuid2:()=>In,date:()=>Hn,datetime:()=>Jn,domain:()=>id,duration:()=>Cn,e164:()=>Fn,email:()=>On,emoji:()=>Ln,extendedDuration:()=>Wf,guid:()=>Nn,hex:()=>ad,hostname:()=>sd,html5Email:()=>ed,idnEmail:()=>rd,integer:()=>Gn,ipv4:()=>Zn,ipv6:()=>jn,ksuid:()=>An,lowercase:()=>Xn,mac:()=>Dn,md5_base64:()=>ud,md5_base64url:()=>ld,md5_hex:()=>cd,nanoid:()=>Rn,null:()=>Vn,number:()=>Xt,rfc5322Email:()=>td,sha1_base64:()=>fd,sha1_base64url:()=>dd,sha1_hex:()=>pd,sha256_base64:()=>hd,sha256_base64url:()=>gd,sha256_hex:()=>md,sha384_base64:()=>_d,sha384_base64url:()=>bd,sha384_hex:()=>yd,sha512_base64:()=>$d,sha512_base64url:()=>xd,sha512_hex:()=>wd,string:()=>Kn,time:()=>qn,ulid:()=>Pn,undefined:()=>Qn,unicodeEmail:()=>lc,uppercase:()=>eo,uuid:()=>Pe,uuid4:()=>Vf,uuid6:()=>Qf,uuid7:()=>Xf,xid:()=>En});var Tn=/^[cC][^\s-]{8,}$/,In=/^[0-9a-z]+$/,Pn=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,En=/^[0-9a-vA-V]{20}$/,An=/^[A-Za-z0-9]{27}$/,Rn=/^[a-zA-Z0-9_-]{21}$/,Cn=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,Wf=/^[-+]?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)?)??$/,Nn=/^([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)$/,Vf=Pe(4),Qf=Pe(6),Xf=Pe(7),On=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,ed=/^[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])?)*$/,td=/^(([^<>()\[\]\\.,;:\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,}))$/,lc=/^[^\s@"]{1,64}@[^\s@]{1,255}$/u,rd=lc,nd=/^[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])?)*$/,od="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$";function Ln(){return new RegExp(od,"u")}var Zn=/^(?:(?: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])$/,jn=/^(([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}|:))$/,Dn=e=>{let t=re(e??":");return new RegExp(`^(?:[0-9A-F]{2}${t}){5}[0-9A-F]{2}$|^(?:[0-9a-f]{2}${t}){5}[0-9a-f]{2}$`)},Mn=/^((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])$/,Bn=/^(([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])$/,Un=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,Qt=/^[A-Za-z0-9_-]*$/,sd=/^(?=.{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])?)*\.?$/,id=/^([a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/,Fn=/^\+[1-9]\d{6,14}$/,pc="(?:(?:\\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])))",Hn=new RegExp(`^${pc}$`);function fc(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 qn(e){return new RegExp(`^${fc(e)}$`)}function Jn(e){let t=fc({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(`^${pc}T(?:${n})$`)}var Kn=e=>{let t=e?`[\\s\\S]{${e?.minimum??0},${e?.maximum??""}}`:"[\\s\\S]*";return new RegExp(`^${t}$`)},Yn=/^-?\d+n?$/,Gn=/^-?\d+$/,Xt=/^-?\d+(?:\.\d+)?$/,Wn=/^(?:true|false)$/i,Vn=/^null$/i;var Qn=/^undefined$/i;var Xn=/^[^A-Z]*$/,eo=/^[^a-z]*$/,ad=/^[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 cd=/^[0-9a-fA-F]{32}$/,ud=ct(22,"=="),ld=ut(22),pd=/^[0-9a-fA-F]{40}$/,fd=ct(27,"="),dd=ut(27),md=/^[0-9a-fA-F]{64}$/,hd=ct(43,"="),gd=ut(43),yd=/^[0-9a-fA-F]{96}$/,_d=ct(64,""),bd=ut(64),wd=/^[0-9a-fA-F]{128}$/,$d=ct(86,"=="),xd=ut(86);var E=d("$ZodCheck",(e,t)=>{var r;e._zod??(e._zod={}),e._zod.def=t,(r=e._zod).onattach??(r.onattach=[])}),mc={number:"number",bigint:"bigint",object:"date"},er=d("$ZodCheckLessThan",(e,t)=>{E.init(e,t);let r=mc[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)=>{E.init(e,t);let r=mc[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})}}),to=d("$ZodCheckMultipleOf",(e,t)=>{E.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):tn(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})}}),ro=d("$ZodCheckNumberFormat",(e,t)=>{E.init(e,t),t.format=t.format||"float64";let r=t.format?.includes("int"),n=r?"int":"number",[o,s]=an[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=Gn)}),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})}}),no=d("$ZodCheckBigIntFormat",(e,t)=>{E.init(e,t);let[r,n]=cn[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})}}),oo=d("$ZodCheckMaxSize",(e,t)=>{var r;E.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})}}),so=d("$ZodCheckMinSize",(e,t)=>{var r;E.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})}}),io=d("$ZodCheckSizeEquals",(e,t)=>{var r;E.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})}}),ao=d("$ZodCheckMaxLength",(e,t)=>{var r;E.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})}}),co=d("$ZodCheckMinLength",(e,t)=>{var r;E.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})}}),uo=d("$ZodCheckLengthEquals",(e,t)=>{var r;E.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;E.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=()=>{})}),lo=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})}}),po=d("$ZodCheckLowerCase",(e,t)=>{t.pattern??(t.pattern=Xn),Me.init(e,t)}),fo=d("$ZodCheckUpperCase",(e,t)=>{t.pattern??(t.pattern=eo),Me.init(e,t)}),mo=d("$ZodCheckIncludes",(e,t)=>{E.init(e,t);let r=re(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})}}),ho=d("$ZodCheckStartsWith",(e,t)=>{E.init(e,t);let r=new RegExp(`^${re(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})}}),go=d("$ZodCheckEndsWith",(e,t)=>{E.init(e,t);let r=new RegExp(`.*${re(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 dc(e,t,r){e.issues.length&&t.issues.push(...Q(r,e.issues))}var yo=d("$ZodCheckProperty",(e,t)=>{E.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=>dc(o,r,t.property));dc(n,r,t.property)}}),_o=d("$ZodCheckMimeType",(e,t)=>{E.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)=>{E.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 Sf=Object.defineProperty;var ve=(e,t)=>{for(var r in t)Sf(e,r,{get:t[r],enumerable:!0})};import{resolve as k_}from"node:path";import{fileURLToPath as x_}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 Gr(...e){return pe("git",e,{encoding:"utf8"}).trim()}function qa(){return Gr("rev-parse","--abbrev-ref","HEAD")}function Mt(){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 Wr(e,t){Xe(e)||Gr("checkout","-b",e,t)}function Z(e,t=!1){Gr("checkout",...t?["-B"]:[],e)}function Ja(e){try{return pe("git",["ls-remote","--heads","origin",e],{encoding:"utf8",timeout:15e3}).trim().length>0}catch{return!1}}function Bt(e){try{return pe("git",["fetch","origin",`${e}:${e}`],{encoding:"utf8",stdio:["pipe","pipe","pipe"]}),!0}catch{return!1}}function Ka(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 O=e=>`\x1B[32m${e}\x1B[0m`,Oe=e=>`\x1B[31m${e}\x1B[0m`,z=e=>`\x1B[33m${e}\x1B[0m`;function Ya(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 vf,readFileSync as zf,unlinkSync as Ga,writeFileSync as Tf}from"node:fs";import{dirname as If,join as Ut}from"node:path";function Wa(e,t){let r=Ut(e,".clancy","lock.json");vf(If(r),{recursive:!0}),Tf(r,JSON.stringify(t,null,2),"utf8")}function Ft(e){let t=Ut(e,".clancy","lock.json");try{let r=zf(t,"utf8");return JSON.parse(r)}catch{return}}function Ht(e){let t=Ut(e,".clancy","lock.json");try{Ga(t)}catch{}}function qt(e){let t=Ut(e,".clancy","verify-attempt.txt");try{Ga(t)}catch{}}function Pf(e){try{return process.kill(e,0),!0}catch(t){return t instanceof Error&&"code"in t&&t.code==="EPERM"}}function Va(e){if(!Pf(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 $l}from"node:child_process";import{readFileSync as Vg}from"node:fs";import{join as Qg}from"node:path";var c={};ve(c,{$brand:()=>Qr,$input:()=>Rs,$output:()=>As,NEVER:()=>Vr,TimePrecision:()=>ni,ZodMiniAny:()=>ou,ZodMiniArray:()=>uu,ZodMiniBase64:()=>Wc,ZodMiniBase64URL:()=>Vc,ZodMiniBigInt:()=>xt,ZodMiniBigIntFormat:()=>aa,ZodMiniBoolean:()=>kt,ZodMiniCIDRv4:()=>Kc,ZodMiniCIDRv6:()=>Yc,ZodMiniCUID:()=>Mc,ZodMiniCUID2:()=>Bc,ZodMiniCatch:()=>Iu,ZodMiniCodec:()=>da,ZodMiniCustom:()=>ma,ZodMiniCustomStringFormat:()=>wt,ZodMiniDate:()=>kr,ZodMiniDefault:()=>vu,ZodMiniDiscriminatedUnion:()=>fu,ZodMiniE164:()=>Qc,ZodMiniEmail:()=>Lc,ZodMiniEmoji:()=>jc,ZodMiniEnum:()=>ua,ZodMiniExactOptional:()=>xu,ZodMiniFile:()=>$u,ZodMiniFunction:()=>Lu,ZodMiniGUID:()=>Zc,ZodMiniIPv4:()=>qc,ZodMiniIPv6:()=>Jc,ZodMiniISODate:()=>Tr,ZodMiniISODateTime:()=>zr,ZodMiniISODuration:()=>Pr,ZodMiniISOTime:()=>Ir,ZodMiniIntersection:()=>du,ZodMiniJWT:()=>Xc,ZodMiniKSUID:()=>Hc,ZodMiniLazy:()=>Ru,ZodMiniLiteral:()=>wu,ZodMiniMAC:()=>Gc,ZodMiniMap:()=>yu,ZodMiniNaN:()=>Pu,ZodMiniNanoID:()=>Dc,ZodMiniNever:()=>iu,ZodMiniNonOptional:()=>pa,ZodMiniNull:()=>ru,ZodMiniNullable:()=>Su,ZodMiniNumber:()=>$t,ZodMiniNumberFormat:()=>qe,ZodMiniObject:()=>xr,ZodMiniOptional:()=>la,ZodMiniPipe:()=>fa,ZodMiniPrefault:()=>zu,ZodMiniPromise:()=>Nu,ZodMiniReadonly:()=>Eu,ZodMiniRecord:()=>Sr,ZodMiniSet:()=>_u,ZodMiniString:()=>He,ZodMiniStringFormat:()=>R,ZodMiniSuccess:()=>Tu,ZodMiniSymbol:()=>eu,ZodMiniTemplateLiteral:()=>Au,ZodMiniTransform:()=>ku,ZodMiniTuple:()=>mu,ZodMiniType:()=>v,ZodMiniULID:()=>Uc,ZodMiniURL:()=>ia,ZodMiniUUID:()=>bt,ZodMiniUndefined:()=>tu,ZodMiniUnion:()=>ca,ZodMiniUnknown:()=>su,ZodMiniVoid:()=>cu,ZodMiniXID:()=>Fc,ZodMiniXor:()=>pu,_default:()=>Qh,_function:()=>yg,any:()=>zh,array:()=>Y,base64:()=>ch,base64url:()=>uh,bigint:()=>$h,boolean:()=>Je,catch:()=>rg,catchall:()=>jh,check:()=>ug,cidrv4:()=>sh,cidrv6:()=>ih,clone:()=>J,codec:()=>sg,coerce:()=>ga,config:()=>F,core:()=>Fe,cuid:()=>Qm,cuid2:()=>Xm,custom:()=>Ou,date:()=>Ih,decode:()=>$n,decodeAsync:()=>xn,describe:()=>fg,discriminatedUnion:()=>Mh,e164:()=>lh,email:()=>Um,emoji:()=>Wm,encode:()=>wn,encodeAsync:()=>kn,endsWith:()=>qi,enum:()=>bu,exactOptional:()=>Wh,extend:()=>xe,file:()=>Yh,flattenError:()=>gn,float32:()=>yh,float64:()=>_h,formatError:()=>yn,function:()=>yg,globalRegistry:()=>ae,gt:()=>yr,gte:()=>gt,guid:()=>Fm,hash:()=>hh,hex:()=>mh,hostname:()=>dh,httpUrl:()=>Gm,includes:()=>Fi,instanceof:()=>mg,int:()=>gh,int32:()=>bh,int64:()=>kh,intersection:()=>Bh,ipv4:()=>nh,ipv6:()=>oh,iso:()=>ha,json:()=>gg,jwt:()=>ph,keyof:()=>Ph,ksuid:()=>rh,lazy:()=>Cu,length:()=>Mi,literal:()=>Kh,locales:()=>mt,looseObject:()=>Ah,looseRecord:()=>Fh,lowercase:()=>Bi,lt:()=>gr,lte:()=>ht,mac:()=>ah,map:()=>Hh,maxLength:()=>Di,maxSize:()=>Li,maximum:()=>ht,merge:()=>Ch,meta:()=>dg,mime:()=>Ki,minLength:()=>yt,minSize:()=>Zi,minimum:()=>gt,multipleOf:()=>Oi,nan:()=>ng,nanoid:()=>Vm,nativeEnum:()=>Jh,negative:()=>Ri,never:()=>au,nonnegative:()=>Ni,nonoptional:()=>eg,nonpositive:()=>Ci,normalize:()=>Yi,null:()=>nu,nullable:()=>vr,nullish:()=>Vh,number:()=>ke,object:()=>I,omit:()=>Oh,optional:()=>w,overwrite:()=>_e,parse:()=>ge,parseAsync:()=>ye,partial:()=>Lh,partialRecord:()=>Uh,pick:()=>Nh,pipe:()=>og,positive:()=>Ai,prefault:()=>Xh,prettifyError:()=>bn,promise:()=>cg,property:()=>Ji,readonly:()=>ig,record:()=>gu,refine:()=>lg,regex:()=>_t,regexes:()=>oe,registry:()=>mr,required:()=>Zh,safeDecode:()=>vn,safeDecodeAsync:()=>Tn,safeEncode:()=>Sn,safeEncodeAsync:()=>zn,safeExtend:()=>Rh,safeParse:()=>Te,safeParseAsync:()=>Ie,set:()=>qh,size:()=>ji,startsWith:()=>Hi,strictObject:()=>Eh,string:()=>b,stringFormat:()=>fh,stringbool:()=>hg,success:()=>tg,superRefine:()=>pg,symbol:()=>Sh,templateLiteral:()=>ag,toJSONSchema:()=>br,toLowerCase:()=>Wi,toUpperCase:()=>Vi,transform:()=>Gh,treeifyError:()=>_n,trim:()=>Gi,tuple:()=>hu,uint32:()=>wh,uint64:()=>xh,ulid:()=>eh,undefined:()=>vh,union:()=>lu,unknown:()=>$r,uppercase:()=>Ui,url:()=>Ym,util:()=>ne,uuid:()=>Hm,uuidv4:()=>qm,uuidv6:()=>Jm,uuidv7:()=>Km,void:()=>Th,xid:()=>th,xor:()=>Dh});var Fe={};ve(Fe,{$ZodAny:()=>es,$ZodArray:()=>ss,$ZodAsyncError:()=>se,$ZodBase64:()=>Ho,$ZodBase64URL:()=>qo,$ZodBigInt:()=>ur,$ZodBigIntFormat:()=>Wo,$ZodBoolean:()=>pt,$ZodCIDRv4:()=>Bo,$ZodCIDRv6:()=>Uo,$ZodCUID:()=>Po,$ZodCUID2:()=>Eo,$ZodCatch:()=>ks,$ZodCheck:()=>A,$ZodCheckBigIntFormat:()=>oo,$ZodCheckEndsWith:()=>yo,$ZodCheckGreaterThan:()=>rr,$ZodCheckIncludes:()=>ho,$ZodCheckLengthEquals:()=>lo,$ZodCheckLessThan:()=>tr,$ZodCheckLowerCase:()=>fo,$ZodCheckMaxLength:()=>co,$ZodCheckMaxSize:()=>so,$ZodCheckMimeType:()=>bo,$ZodCheckMinLength:()=>uo,$ZodCheckMinSize:()=>io,$ZodCheckMultipleOf:()=>ro,$ZodCheckNumberFormat:()=>no,$ZodCheckOverwrite:()=>wo,$ZodCheckProperty:()=>_o,$ZodCheckRegex:()=>po,$ZodCheckSizeEquals:()=>ao,$ZodCheckStartsWith:()=>go,$ZodCheckStringFormat:()=>Me,$ZodCheckUpperCase:()=>mo,$ZodCodec:()=>dt,$ZodCustom:()=>Es,$ZodCustomStringFormat:()=>Yo,$ZodDate:()=>os,$ZodDefault:()=>_s,$ZodDiscriminatedUnion:()=>as,$ZodE164:()=>Jo,$ZodEmail:()=>vo,$ZodEmoji:()=>To,$ZodEncodeError:()=>Le,$ZodEnum:()=>fs,$ZodError:()=>hn,$ZodExactOptional:()=>gs,$ZodFile:()=>ms,$ZodFunction:()=>Ts,$ZodGUID:()=>xo,$ZodIPv4:()=>jo,$ZodIPv6:()=>Do,$ZodISODate:()=>Oo,$ZodISODateTime:()=>No,$ZodISODuration:()=>Zo,$ZodISOTime:()=>Lo,$ZodIntersection:()=>cs,$ZodJWT:()=>Ko,$ZodKSUID:()=>Co,$ZodLazy:()=>Ps,$ZodLiteral:()=>ds,$ZodMAC:()=>Mo,$ZodMap:()=>ls,$ZodNaN:()=>xs,$ZodNanoID:()=>Io,$ZodNever:()=>rs,$ZodNonOptional:()=>ws,$ZodNull:()=>Xo,$ZodNullable:()=>ys,$ZodNumber:()=>cr,$ZodNumberFormat:()=>Go,$ZodObject:()=>lr,$ZodObjectJIT:()=>vd,$ZodOptional:()=>fr,$ZodPipe:()=>Ss,$ZodPrefault:()=>bs,$ZodPromise:()=>Is,$ZodReadonly:()=>vs,$ZodRealError:()=>W,$ZodRecord:()=>us,$ZodRegistry:()=>dr,$ZodSet:()=>ps,$ZodString:()=>Be,$ZodStringFormat:()=>E,$ZodSuccess:()=>$s,$ZodSymbol:()=>Vo,$ZodTemplateLiteral:()=>zs,$ZodTransform:()=>hs,$ZodTuple:()=>pr,$ZodType:()=>k,$ZodULID:()=>Ao,$ZodURL:()=>zo,$ZodUUID:()=>So,$ZodUndefined:()=>Qo,$ZodUnion:()=>ft,$ZodUnknown:()=>ts,$ZodVoid:()=>ns,$ZodXID:()=>Ro,$ZodXor:()=>is,$brand:()=>Qr,$constructor:()=>d,$input:()=>Rs,$output:()=>As,Doc:()=>lt,JSONSchema:()=>Oc,JSONSchemaGenerator:()=>wr,NEVER:()=>Vr,TimePrecision:()=>ni,_any:()=>Si,_array:()=>Ed,_base64:()=>Xs,_base64url:()=>ei,_bigint:()=>yi,_boolean:()=>hi,_catch:()=>Yd,_check:()=>Nc,_cidrv4:()=>Vs,_cidrv6:()=>Qs,_coercedBigint:()=>_i,_coercedBoolean:()=>gi,_coercedDate:()=>Pi,_coercedNumber:()=>ui,_coercedString:()=>Ns,_cuid:()=>Fs,_cuid2:()=>Hs,_custom:()=>Xi,_date:()=>Ii,_decode:()=>sc,_decodeAsync:()=>ac,_default:()=>qd,_discriminatedUnion:()=>Cd,_e164:()=>ti,_email:()=>Os,_emoji:()=>Bs,_encode:()=>oc,_encodeAsync:()=>ic,_endsWith:()=>qi,_enum:()=>Dd,_file:()=>Qi,_float32:()=>pi,_float64:()=>fi,_gt:()=>yr,_gte:()=>gt,_guid:()=>Ls,_includes:()=>Fi,_int:()=>li,_int32:()=>di,_int64:()=>bi,_intersection:()=>Nd,_ipv4:()=>Ys,_ipv6:()=>Gs,_isoDate:()=>si,_isoDateTime:()=>oi,_isoDuration:()=>ai,_isoTime:()=>ii,_jwt:()=>ri,_ksuid:()=>Ks,_lazy:()=>Qd,_length:()=>Mi,_literal:()=>Bd,_lowercase:()=>Bi,_lt:()=>gr,_lte:()=>ht,_mac:()=>Ws,_map:()=>Zd,_max:()=>ht,_maxLength:()=>Di,_maxSize:()=>Li,_mime:()=>Ki,_min:()=>gt,_minLength:()=>yt,_minSize:()=>Zi,_multipleOf:()=>Oi,_nan:()=>Ei,_nanoid:()=>Us,_nativeEnum:()=>Md,_negative:()=>Ri,_never:()=>zi,_nonnegative:()=>Ni,_nonoptional:()=>Jd,_nonpositive:()=>Ci,_normalize:()=>Yi,_null:()=>xi,_nullable:()=>Hd,_number:()=>ci,_optional:()=>Fd,_overwrite:()=>_e,_parse:()=>Gt,_parseAsync:()=>Wt,_pipe:()=>Gd,_positive:()=>Ai,_promise:()=>Xd,_property:()=>Ji,_readonly:()=>Wd,_record:()=>Ld,_refine:()=>ea,_regex:()=>_t,_safeDecode:()=>uc,_safeDecodeAsync:()=>pc,_safeEncode:()=>cc,_safeEncodeAsync:()=>lc,_safeParse:()=>Vt,_safeParseAsync:()=>Qt,_set:()=>jd,_size:()=>ji,_slugify:()=>Pd,_startsWith:()=>Hi,_string:()=>Cs,_stringFormat:()=>Ue,_stringbool:()=>oa,_success:()=>Kd,_superRefine:()=>ta,_symbol:()=>$i,_templateLiteral:()=>Vd,_toLowerCase:()=>Wi,_toUpperCase:()=>Vi,_transform:()=>Ud,_trim:()=>Gi,_tuple:()=>Od,_uint32:()=>mi,_uint64:()=>wi,_ulid:()=>qs,_undefined:()=>ki,_union:()=>Ad,_unknown:()=>vi,_uppercase:()=>Ui,_url:()=>hr,_uuid:()=>Zs,_uuidv4:()=>js,_uuidv6:()=>Ds,_uuidv7:()=>Ms,_void:()=>Ti,_xid:()=>Js,_xor:()=>Rd,clone:()=>J,config:()=>F,createStandardJSONSchemaMethod:()=>sa,createToJSONSchemaMethod:()=>em,decode:()=>$n,decodeAsync:()=>xn,describe:()=>ra,encode:()=>wn,encodeAsync:()=>kn,extractDefs:()=>we,finalize:()=>$e,flattenError:()=>gn,formatError:()=>yn,globalConfig:()=>tt,globalRegistry:()=>ae,initializeContext:()=>be,isValidBase64:()=>Fo,isValidBase64URL:()=>Pc,isValidJWT:()=>Ec,locales:()=>mt,meta:()=>na,parse:()=>ge,parseAsync:()=>ye,prettifyError:()=>bn,process:()=>T,regexes:()=>oe,registry:()=>mr,safeDecode:()=>vn,safeDecodeAsync:()=>Tn,safeEncode:()=>Sn,safeEncodeAsync:()=>zn,safeParse:()=>Te,safeParseAsync:()=>Ie,toDotPath:()=>nc,toJSONSchema:()=>br,treeifyError:()=>_n,util:()=>ne,version:()=>$o});var Vr=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 Qr=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 F(e){return e&&Object.assign(tt,e),tt}var ne={};ve(ne,{BIGINT_FORMAT_RANGES:()=>un,Class:()=>en,NUMBER_FORMAT_RANGES:()=>cn,aborted:()=>he,allowsEval:()=>on,assert:()=>Nf,assertEqual:()=>Ef,assertIs:()=>Rf,assertNever:()=>Cf,assertNotEqual:()=>Af,assignProp:()=>de,base64ToUint8Array:()=>ec,base64urlToUint8Array:()=>Kf,cached:()=>Ze,captureStackTrace:()=>Kt,cleanEnum:()=>Jf,cleanRegex:()=>ot,clone:()=>J,cloneDef:()=>Zf,createTransparentProxy:()=>Ff,defineLazy:()=>S,esc:()=>Jt,escapeRegex:()=>re,extend:()=>Yt,finalizeIssue:()=>G,floatSafeRemainder:()=>rn,getElementAtPath:()=>jf,getEnumValues:()=>nt,getLengthableOrigin:()=>at,getParsedType:()=>Uf,getSizableOrigin:()=>it,hexToUint8Array:()=>Gf,isObject:()=>ze,isPlainObject:()=>me,issue:()=>De,joinValues:()=>Of,jsonStringifyReplacer:()=>tn,merge:()=>Hf,mergeDefs:()=>ue,normalizeParams:()=>g,nullish:()=>fe,numKeys:()=>Bf,objectClone:()=>Lf,omit:()=>pn,optionalKeys:()=>an,parsedType:()=>qf,partial:()=>dn,pick:()=>ln,prefixIssues:()=>Q,primitiveTypes:()=>sn,promiseAllObject:()=>Df,propertyKeyTypes:()=>st,randomString:()=>Mf,required:()=>mn,safeExtend:()=>fn,shallowClone:()=>je,slugify:()=>nn,stringifyPrimitive:()=>Xa,uint8ArrayToBase64:()=>tc,uint8ArrayToBase64url:()=>Yf,uint8ArrayToHex:()=>Wf,unwrapMessage:()=>rt});function Ef(e){return e}function Af(e){return e}function Rf(e){}function Cf(e){throw new Error("Unexpected value in exhaustive check")}function Nf(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 Of(e,t="|"){return e.map(r=>Xa(r)).join(t)}function tn(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 rn(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 Qa=Symbol("evaluating");function S(e,t,r){let n;Object.defineProperty(e,t,{get(){if(n!==Qa)return n===void 0&&(n=Qa,n=r()),n},set(o){Object.defineProperty(e,t,{value:o})},configurable:!0})}function Lf(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 Zf(e){return ue(e._zod.def)}function jf(e,t){return t?t.reduce((r,n)=>r?.[n],e):e}function Df(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 Mf(e=10){let t="abcdefghijklmnopqrstuvwxyz",r="";for(let n=0;n<e;n++)r+=t[Math.floor(Math.random()*t.length)];return r}function Jt(e){return JSON.stringify(e)}function nn(e){return e.toLowerCase().trim().replace(/[^\w\s-]/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")}var Kt="captureStackTrace"in Error?Error.captureStackTrace:(...e)=>{};function ze(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var on=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 Bf(e){let t=0;for(let r in e)Object.prototype.hasOwnProperty.call(e,r)&&t++;return t}var Uf=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"]),sn=new Set(["string","number","bigint","boolean","symbol","undefined"]);function re(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function J(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 Ff(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 Xa(e){return typeof e=="bigint"?e.toString()+"n":typeof e=="string"?`"${e}"`:`${e}`}function an(e){return Object.keys(e).filter(t=>e[t]._zod.optin==="optional"&&e[t]._zod.optout==="optional")}var cn={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]},un={int64:[BigInt("-9223372036854775808"),BigInt("9223372036854775807")],uint64:[BigInt(0),BigInt("18446744073709551615")]};function ln(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 J(e,s)}function pn(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 J(e,s)}function Yt(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 J(e,o)}function fn(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 J(e,r)}function Hf(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 J(e,r)}function dn(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 J(t,i)}function mn(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 J(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 qf(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 Jf(e){return Object.entries(e).filter(([t,r])=>Number.isNaN(Number.parseInt(t,10))).map(t=>t[1])}function ec(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 tc(e){let t="";for(let r=0;r<e.length;r++)t+=String.fromCharCode(e[r]);return btoa(t)}function Kf(e){let t=e.replace(/-/g,"+").replace(/_/g,"/"),r="=".repeat((4-t.length%4)%4);return ec(t+r)}function Yf(e){return tc(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}function Gf(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 Wf(e){return Array.from(e).map(t=>t.toString(16).padStart(2,"0")).join("")}var en=class{constructor(...t){}};var rc=(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,tn,2),Object.defineProperty(e,"toString",{value:()=>e.message,enumerable:!1})},hn=d("$ZodError",rc),W=d("$ZodError",rc,{Parent:Error});function gn(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 yn(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 _n(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 nc(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 bn(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 ${nc(n.path)}`);return t.join(`
3
+ `)}var Gt=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,F())));throw Kt(a,o?.callee),a}return i.value},ge=Gt(W),Wt=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,F())));throw Kt(a,o?.callee),a}return i.value},ye=Wt(W),Vt=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??hn)(s.issues.map(i=>G(i,o,F())))}:{success:!0,data:s.value}},Te=Vt(W),Qt=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,F())))}:{success:!0,data:s.value}},Ie=Qt(W),oc=e=>(t,r,n)=>{let o=n?Object.assign(n,{direction:"backward"}):{direction:"backward"};return Gt(e)(t,r,o)},wn=oc(W),sc=e=>(t,r,n)=>Gt(e)(t,r,n),$n=sc(W),ic=e=>async(t,r,n)=>{let o=n?Object.assign(n,{direction:"backward"}):{direction:"backward"};return Wt(e)(t,r,o)},kn=ic(W),ac=e=>async(t,r,n)=>Wt(e)(t,r,n),xn=ac(W),cc=e=>(t,r,n)=>{let o=n?Object.assign(n,{direction:"backward"}):{direction:"backward"};return Vt(e)(t,r,o)},Sn=cc(W),uc=e=>(t,r,n)=>Vt(e)(t,r,n),vn=uc(W),lc=e=>async(t,r,n)=>{let o=n?Object.assign(n,{direction:"backward"}):{direction:"backward"};return Qt(e)(t,r,o)},zn=lc(W),pc=e=>async(t,r,n)=>Qt(e)(t,r,n),Tn=pc(W);var oe={};ve(oe,{base64:()=>Fn,base64url:()=>Xt,bigint:()=>Gn,boolean:()=>Vn,browserEmail:()=>sd,cidrv4:()=>Bn,cidrv6:()=>Un,cuid:()=>In,cuid2:()=>Pn,date:()=>qn,datetime:()=>Kn,domain:()=>cd,duration:()=>Nn,e164:()=>Hn,email:()=>Ln,emoji:()=>Zn,extendedDuration:()=>Qf,guid:()=>On,hex:()=>ud,hostname:()=>ad,html5Email:()=>rd,idnEmail:()=>od,integer:()=>Wn,ipv4:()=>jn,ipv6:()=>Dn,ksuid:()=>Rn,lowercase:()=>eo,mac:()=>Mn,md5_base64:()=>pd,md5_base64url:()=>fd,md5_hex:()=>ld,nanoid:()=>Cn,null:()=>Qn,number:()=>er,rfc5322Email:()=>nd,sha1_base64:()=>md,sha1_base64url:()=>hd,sha1_hex:()=>dd,sha256_base64:()=>yd,sha256_base64url:()=>_d,sha256_hex:()=>gd,sha384_base64:()=>wd,sha384_base64url:()=>$d,sha384_hex:()=>bd,sha512_base64:()=>xd,sha512_base64url:()=>Sd,sha512_hex:()=>kd,string:()=>Yn,time:()=>Jn,ulid:()=>En,undefined:()=>Xn,unicodeEmail:()=>fc,uppercase:()=>to,uuid:()=>Pe,uuid4:()=>Xf,uuid6:()=>ed,uuid7:()=>td,xid:()=>An});var In=/^[cC][^\s-]{8,}$/,Pn=/^[0-9a-z]+$/,En=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,An=/^[0-9a-vA-V]{20}$/,Rn=/^[A-Za-z0-9]{27}$/,Cn=/^[a-zA-Z0-9_-]{21}$/,Nn=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,Qf=/^[-+]?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)?)??$/,On=/^([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)$/,Xf=Pe(4),ed=Pe(6),td=Pe(7),Ln=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,rd=/^[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])?)*$/,nd=/^(([^<>()\[\]\\.,;:\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,}))$/,fc=/^[^\s@"]{1,64}@[^\s@]{1,255}$/u,od=fc,sd=/^[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])?)*$/,id="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$";function Zn(){return new RegExp(id,"u")}var jn=/^(?:(?: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])$/,Dn=/^(([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}|:))$/,Mn=e=>{let t=re(e??":");return new RegExp(`^(?:[0-9A-F]{2}${t}){5}[0-9A-F]{2}$|^(?:[0-9a-f]{2}${t}){5}[0-9a-f]{2}$`)},Bn=/^((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])$/,Un=/^(([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])$/,Fn=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,Xt=/^[A-Za-z0-9_-]*$/,ad=/^(?=.{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])?)*\.?$/,cd=/^([a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/,Hn=/^\+[1-9]\d{6,14}$/,dc="(?:(?:\\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])))",qn=new RegExp(`^${dc}$`);function mc(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 Jn(e){return new RegExp(`^${mc(e)}$`)}function Kn(e){let t=mc({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(`^${dc}T(?:${n})$`)}var Yn=e=>{let t=e?`[\\s\\S]{${e?.minimum??0},${e?.maximum??""}}`:"[\\s\\S]*";return new RegExp(`^${t}$`)},Gn=/^-?\d+n?$/,Wn=/^-?\d+$/,er=/^-?\d+(?:\.\d+)?$/,Vn=/^(?:true|false)$/i,Qn=/^null$/i;var Xn=/^undefined$/i;var eo=/^[^A-Z]*$/,to=/^[^a-z]*$/,ud=/^[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 ld=/^[0-9a-fA-F]{32}$/,pd=ct(22,"=="),fd=ut(22),dd=/^[0-9a-fA-F]{40}$/,md=ct(27,"="),hd=ut(27),gd=/^[0-9a-fA-F]{64}$/,yd=ct(43,"="),_d=ut(43),bd=/^[0-9a-fA-F]{96}$/,wd=ct(64,""),$d=ut(64),kd=/^[0-9a-fA-F]{128}$/,xd=ct(86,"=="),Sd=ut(86);var A=d("$ZodCheck",(e,t)=>{var r;e._zod??(e._zod={}),e._zod.def=t,(r=e._zod).onattach??(r.onattach=[])}),gc={number:"number",bigint:"bigint",object:"date"},tr=d("$ZodCheckLessThan",(e,t)=>{A.init(e,t);let r=gc[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})}}),rr=d("$ZodCheckGreaterThan",(e,t)=>{A.init(e,t);let r=gc[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})}}),ro=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):rn(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})}}),no=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]=cn[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=Wn)}),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})}}),oo=d("$ZodCheckBigIntFormat",(e,t)=>{A.init(e,t);let[r,n]=un[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})}}),so=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})}}),io=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})}}),ao=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})}}),co=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})}}),uo=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})}}),lo=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=()=>{})}),po=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})}}),fo=d("$ZodCheckLowerCase",(e,t)=>{t.pattern??(t.pattern=eo),Me.init(e,t)}),mo=d("$ZodCheckUpperCase",(e,t)=>{t.pattern??(t.pattern=to),Me.init(e,t)}),ho=d("$ZodCheckIncludes",(e,t)=>{A.init(e,t);let r=re(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})}}),go=d("$ZodCheckStartsWith",(e,t)=>{A.init(e,t);let r=new RegExp(`^${re(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})}}),yo=d("$ZodCheckEndsWith",(e,t)=>{A.init(e,t);let r=new RegExp(`.*${re(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 hc(e,t,r){e.issues.length&&t.issues.push(...Q(r,e.issues))}var _o=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=>hc(o,r,t.property));hc(n,r,t.property)}}),bo=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})}}),wo=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 wo={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=wo;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()??Kn(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)}),xo=d("$ZodGUID",(e,t)=>{t.pattern??(t.pattern=Nn),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)}),So=d("$ZodEmail",(e,t)=>{t.pattern??(t.pattern=On),P.init(e,t)}),vo=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})}}}),zo=d("$ZodEmoji",(e,t)=>{t.pattern??(t.pattern=Ln()),P.init(e,t)}),To=d("$ZodNanoID",(e,t)=>{t.pattern??(t.pattern=Rn),P.init(e,t)}),Io=d("$ZodCUID",(e,t)=>{t.pattern??(t.pattern=Tn),P.init(e,t)}),Po=d("$ZodCUID2",(e,t)=>{t.pattern??(t.pattern=In),P.init(e,t)}),Eo=d("$ZodULID",(e,t)=>{t.pattern??(t.pattern=Pn),P.init(e,t)}),Ao=d("$ZodXID",(e,t)=>{t.pattern??(t.pattern=En),P.init(e,t)}),Ro=d("$ZodKSUID",(e,t)=>{t.pattern??(t.pattern=An),P.init(e,t)}),Co=d("$ZodISODateTime",(e,t)=>{t.pattern??(t.pattern=Jn(t)),P.init(e,t)}),No=d("$ZodISODate",(e,t)=>{t.pattern??(t.pattern=Hn),P.init(e,t)}),Oo=d("$ZodISOTime",(e,t)=>{t.pattern??(t.pattern=qn(t)),P.init(e,t)}),Lo=d("$ZodISODuration",(e,t)=>{t.pattern??(t.pattern=Cn),P.init(e,t)}),Zo=d("$ZodIPv4",(e,t)=>{t.pattern??(t.pattern=Zn),P.init(e,t),e._zod.bag.format="ipv4"}),jo=d("$ZodIPv6",(e,t)=>{t.pattern??(t.pattern=jn),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})}}}),Do=d("$ZodMAC",(e,t)=>{t.pattern??(t.pattern=Dn(t.delimiter)),P.init(e,t),e._zod.bag.format="mac"}),Mo=d("$ZodCIDRv4",(e,t)=>{t.pattern??(t.pattern=Mn),P.init(e,t)}),Bo=d("$ZodCIDRv6",(e,t)=>{t.pattern??(t.pattern=Bn),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 Uo(e){if(e==="")return!0;if(e.length%4!==0)return!1;try{return atob(e),!0}catch{return!1}}var Fo=d("$ZodBase64",(e,t)=>{t.pattern??(t.pattern=Un),P.init(e,t),e._zod.bag.contentEncoding="base64",e._zod.check=r=>{Uo(r.value)||r.issues.push({code:"invalid_format",format:"base64",input:r.value,inst:e,continue:!t.abort})}});function Tc(e){if(!Qt.test(e))return!1;let t=e.replace(/[-_]/g,n=>n==="-"?"+":"/"),r=t.padEnd(Math.ceil(t.length/4)*4,"=");return Uo(r)}var Ho=d("$ZodBase64URL",(e,t)=>{t.pattern??(t.pattern=Qt),P.init(e,t),e._zod.bag.contentEncoding="base64url",e._zod.check=r=>{Tc(r.value)||r.issues.push({code:"invalid_format",format:"base64url",input:r.value,inst:e,continue:!t.abort})}}),qo=d("$ZodE164",(e,t)=>{t.pattern??(t.pattern=Fn),P.init(e,t)});function Ic(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 Jo=d("$ZodJWT",(e,t)=>{P.init(e,t),e._zod.check=r=>{Ic(r.value,t.alg)||r.issues.push({code:"invalid_format",format:"jwt",input:r.value,inst:e,continue:!t.abort})}}),Ko=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}}),Yo=d("$ZodNumberFormat",(e,t)=>{ro.init(e,t),ar.init(e,t)}),pt=d("$ZodBoolean",(e,t)=>{x.init(e,t),e._zod.pattern=Wn,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=Yn,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}}),Go=d("$ZodBigIntFormat",(e,t)=>{no.init(e,t),cr.init(e,t)}),Wo=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}}),Vo=d("$ZodUndefined",(e,t)=>{x.init(e,t),e._zod.pattern=Qn,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}}),Qo=d("$ZodNull",(e,t)=>{x.init(e,t),e._zod.pattern=Vn,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}}),Xo=d("$ZodAny",(e,t)=>{x.init(e,t),e._zod.parse=r=>r}),es=d("$ZodUnknown",(e,t)=>{x.init(e,t),e._zod.parse=r=>r}),ts=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)}),rs=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}}),ns=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 gc(e,t,r){e.issues.length&&t.issues.push(...Q(r,e.issues)),t.value[r]=e.value}var os=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=>gc(l,r,i))):gc(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 Pc(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=sn(e.shape);return{...e,keys:t,keySet:new Set(t),numKeys:t.length,optionalKeys:new Set(r)}}function Ec(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(()=>Pc(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],_=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,_))):ir(y,a,m,l,_)}return s?Ec(p,l,a,u,n.value,e):p.length?Promise.all(p).then(()=>a):a}}),kd=d("$ZodObjectJIT",(e,t)=>{ur.init(e,t);let r=e._zod.parse,n=Ze(()=>Pc(t)),o=m=>{let h=new lt(["shape","payload","ctx"]),_=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 _.keys)z[C]=`key_${H++}`;h.write("const newResult = {};");for(let C of _.keys){let M=z[C],O=qt(C),jt=m[C]?._zod?.optout==="optional";h.write(`const ${M} = ${y(C)};`),jt?h.write(`
6
- if (${M}.issues.length) {
7
- if (${O} in input) {
8
- payload.issues = payload.issues.concat(${M}.issues.map(iss => ({
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)}}S(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()??Yn(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}}),E=d("$ZodStringFormat",(e,t)=>{Me.init(e,t),Be.init(e,t)}),xo=d("$ZodGUID",(e,t)=>{t.pattern??(t.pattern=On),E.init(e,t)}),So=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());E.init(e,t)}),vo=d("$ZodEmail",(e,t)=>{t.pattern??(t.pattern=Ln),E.init(e,t)}),zo=d("$ZodURL",(e,t)=>{E.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})}}}),To=d("$ZodEmoji",(e,t)=>{t.pattern??(t.pattern=Zn()),E.init(e,t)}),Io=d("$ZodNanoID",(e,t)=>{t.pattern??(t.pattern=Cn),E.init(e,t)}),Po=d("$ZodCUID",(e,t)=>{t.pattern??(t.pattern=In),E.init(e,t)}),Eo=d("$ZodCUID2",(e,t)=>{t.pattern??(t.pattern=Pn),E.init(e,t)}),Ao=d("$ZodULID",(e,t)=>{t.pattern??(t.pattern=En),E.init(e,t)}),Ro=d("$ZodXID",(e,t)=>{t.pattern??(t.pattern=An),E.init(e,t)}),Co=d("$ZodKSUID",(e,t)=>{t.pattern??(t.pattern=Rn),E.init(e,t)}),No=d("$ZodISODateTime",(e,t)=>{t.pattern??(t.pattern=Kn(t)),E.init(e,t)}),Oo=d("$ZodISODate",(e,t)=>{t.pattern??(t.pattern=qn),E.init(e,t)}),Lo=d("$ZodISOTime",(e,t)=>{t.pattern??(t.pattern=Jn(t)),E.init(e,t)}),Zo=d("$ZodISODuration",(e,t)=>{t.pattern??(t.pattern=Nn),E.init(e,t)}),jo=d("$ZodIPv4",(e,t)=>{t.pattern??(t.pattern=jn),E.init(e,t),e._zod.bag.format="ipv4"}),Do=d("$ZodIPv6",(e,t)=>{t.pattern??(t.pattern=Dn),E.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})}}}),Mo=d("$ZodMAC",(e,t)=>{t.pattern??(t.pattern=Mn(t.delimiter)),E.init(e,t),e._zod.bag.format="mac"}),Bo=d("$ZodCIDRv4",(e,t)=>{t.pattern??(t.pattern=Bn),E.init(e,t)}),Uo=d("$ZodCIDRv6",(e,t)=>{t.pattern??(t.pattern=Un),E.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 Fo(e){if(e==="")return!0;if(e.length%4!==0)return!1;try{return atob(e),!0}catch{return!1}}var Ho=d("$ZodBase64",(e,t)=>{t.pattern??(t.pattern=Fn),E.init(e,t),e._zod.bag.contentEncoding="base64",e._zod.check=r=>{Fo(r.value)||r.issues.push({code:"invalid_format",format:"base64",input:r.value,inst:e,continue:!t.abort})}});function Pc(e){if(!Xt.test(e))return!1;let t=e.replace(/[-_]/g,n=>n==="-"?"+":"/"),r=t.padEnd(Math.ceil(t.length/4)*4,"=");return Fo(r)}var qo=d("$ZodBase64URL",(e,t)=>{t.pattern??(t.pattern=Xt),E.init(e,t),e._zod.bag.contentEncoding="base64url",e._zod.check=r=>{Pc(r.value)||r.issues.push({code:"invalid_format",format:"base64url",input:r.value,inst:e,continue:!t.abort})}}),Jo=d("$ZodE164",(e,t)=>{t.pattern??(t.pattern=Hn),E.init(e,t)});function Ec(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 Ko=d("$ZodJWT",(e,t)=>{E.init(e,t),e._zod.check=r=>{Ec(r.value,t.alg)||r.issues.push({code:"invalid_format",format:"jwt",input:r.value,inst:e,continue:!t.abort})}}),Yo=d("$ZodCustomStringFormat",(e,t)=>{E.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})}}),cr=d("$ZodNumber",(e,t)=>{k.init(e,t),e._zod.pattern=e._zod.bag.pattern??er,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}}),Go=d("$ZodNumberFormat",(e,t)=>{no.init(e,t),cr.init(e,t)}),pt=d("$ZodBoolean",(e,t)=>{k.init(e,t),e._zod.pattern=Vn,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}}),ur=d("$ZodBigInt",(e,t)=>{k.init(e,t),e._zod.pattern=Gn,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}}),Wo=d("$ZodBigIntFormat",(e,t)=>{oo.init(e,t),ur.init(e,t)}),Vo=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}}),Qo=d("$ZodUndefined",(e,t)=>{k.init(e,t),e._zod.pattern=Xn,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}}),Xo=d("$ZodNull",(e,t)=>{k.init(e,t),e._zod.pattern=Qn,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}}),es=d("$ZodAny",(e,t)=>{k.init(e,t),e._zod.parse=r=>r}),ts=d("$ZodUnknown",(e,t)=>{k.init(e,t),e._zod.parse=r=>r}),rs=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)}),ns=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}}),os=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 _c(e,t,r){e.issues.length&&t.issues.push(...Q(r,e.issues)),t.value[r]=e.value}var ss=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=>_c(l,r,i))):_c(u,r,i)}return s.length?Promise.all(s).then(()=>r):r}});function ar(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 Ac(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=an(e.shape);return{...e,keys:t,keySet:new Set(t),numKeys:t.length,optionalKeys:new Set(r)}}function Rc(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=>ar(h,r,f,t,p))):ar(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 lr=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(()=>Ac(t));S(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],y=h._zod.optout==="optional",_=h._zod.run({value:l[m],issues:[]},u);_ instanceof Promise?p.push(_.then(x=>ar(x,a,m,l,y))):ar(_,a,m,l,y)}return s?Rc(p,l,a,u,n.value,e):p.length?Promise.all(p).then(()=>a):a}}),vd=d("$ZodObjectJIT",(e,t)=>{lr.init(e,t);let r=e._zod.parse,n=Ze(()=>Ac(t)),o=m=>{let h=new lt(["shape","payload","ctx"]),y=n.value,_=N=>{let U=Jt(N);return`shape[${U}]._zod.run({ value: input[${U}], issues: [] }, ctx)`};h.write("const input = payload.value;");let x=Object.create(null),P=0;for(let N of y.keys)x[N]=`key_${P++}`;h.write("const newResult = {};");for(let N of y.keys){let U=x[N],L=Jt(N),Dt=m[N]?._zod?.optout==="optional";h.write(`const ${U} = ${_(N)};`),Dt?h.write(`
6
+ if (${U}.issues.length) {
7
+ if (${L} in input) {
8
+ payload.issues = payload.issues.concat(${U}.issues.map(iss => ({
9
9
  ...iss,
10
- path: iss.path ? [${O}, ...iss.path] : [${O}]
10
+ path: iss.path ? [${L}, ...iss.path] : [${L}]
11
11
  })));
12
12
  }
13
13
  }
14
14
 
15
- if (${M}.value === undefined) {
16
- if (${O} in input) {
17
- newResult[${O}] = undefined;
15
+ if (${U}.value === undefined) {
16
+ if (${L} in input) {
17
+ newResult[${L}] = undefined;
18
18
  }
19
19
  } else {
20
- newResult[${O}] = ${M}.value;
20
+ newResult[${L}] = ${U}.value;
21
21
  }
22
22
 
23
23
  `):h.write(`
24
- if (${M}.issues.length) {
25
- payload.issues = payload.issues.concat(${M}.issues.map(iss => ({
24
+ if (${U}.issues.length) {
25
+ payload.issues = payload.issues.concat(${U}.issues.map(iss => ({
26
26
  ...iss,
27
- path: iss.path ? [${O}, ...iss.path] : [${O}]
27
+ path: iss.path ? [${L}, ...iss.path] : [${L}]
28
28
  })));
29
29
  }
30
30
 
31
- if (${M}.value === undefined) {
32
- if (${O} in input) {
33
- newResult[${O}] = undefined;
31
+ if (${U}.value === undefined) {
32
+ if (${L} in input) {
33
+ newResult[${L}] = undefined;
34
34
  }
35
35
  } else {
36
- newResult[${O}] = ${M}.value;
36
+ newResult[${L}] = ${U}.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&&nn.value,p=t.catchall,f;e._zod.parse=(m,h)=>{f??(f=n.value);let _=m.value;return i(_)?a&&l&&h?.async===!1&&h.jitless!==!0?(s||(s=o(t.shape)),m=s(m,h),p?Ec([],_,m,h,f,e):m):r(m,h):(m.issues.push({expected:"object",code:"invalid_type",input:_,inst:e}),m)}});function yc(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=>yc(u,o,e,s)):yc(a,o,e,s)}});function _c(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 ss=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=>_c(u,o,e,s)):_c(a,o,e,s)}}),is=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)}}),as=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])=>bc(r,u,l)):bc(r,s,i)}});function $o(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=$o(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=$o(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 bc(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=$o(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 cs=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}}),us=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])=>{wc(p,f,r,i,o,e,n)})):wc(u,l,r,i,o,e,n)}return s.length?Promise.all(s).then(()=>r):r}});function wc(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 ls=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 ps=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"?re(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}}),fs=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"?re(n):n?re(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}}),ds=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}}),ms=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 xc(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=>xc(s,r.value)):xc(o,r.value)}return r.value===void 0?r:t.innerType._zod.run(r,n)}}),hs=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)}),gs=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)}),ys=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=>kc(s,t)):kc(o,t)}});function kc(e,t){return e.value===void 0&&(e.value=t.defaultValue),e}var _s=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=>Sc(s,e)):Sc(o,e)}});function Sc(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 ws=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)}}),$s=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)}}),xs=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)}),ks=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 Ss=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(vc):vc(o)}});function vc(e){return e.value=Object.freeze(e.value),e}var vs=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||on.has(typeof n))r.push(re(`${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)}),zs=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)),Ts=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))}),Is=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)}),Ps=d("$ZodCustom",(e,t)=>{E.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=>zc(s,r,n,e));zc(o,r,n,e)}});function zc(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:()=>vd});var vd={};var Ac,Es=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}(Ac=globalThis).__zod_globalRegistry??(Ac.__zod_globalRegistry=dr());var ae=globalThis.__zod_globalRegistry;function Rs(e,t){return new e({type:"string",...g(t)})}function Cs(e,t){return new e({type:"string",coerce:!0,...g(t)})}function Ns(e,t){return new e({type:"string",format:"email",check:"string_format",abort:!1,...g(t)})}function Os(e,t){return new e({type:"string",format:"guid",check:"string_format",abort:!1,...g(t)})}function Ls(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,...g(t)})}function Zs(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v4",...g(t)})}function js(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v6",...g(t)})}function Ds(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 Ms(e,t){return new e({type:"string",format:"emoji",check:"string_format",abort:!1,...g(t)})}function Bs(e,t){return new e({type:"string",format:"nanoid",check:"string_format",abort:!1,...g(t)})}function Us(e,t){return new e({type:"string",format:"cuid",check:"string_format",abort:!1,...g(t)})}function Fs(e,t){return new e({type:"string",format:"cuid2",check:"string_format",abort:!1,...g(t)})}function Hs(e,t){return new e({type:"string",format:"ulid",check:"string_format",abort:!1,...g(t)})}function qs(e,t){return new e({type:"string",format:"xid",check:"string_format",abort:!1,...g(t)})}function Js(e,t){return new e({type:"string",format:"ksuid",check:"string_format",abort:!1,...g(t)})}function Ks(e,t){return new e({type:"string",format:"ipv4",check:"string_format",abort:!1,...g(t)})}function Ys(e,t){return new e({type:"string",format:"ipv6",check:"string_format",abort:!1,...g(t)})}function Gs(e,t){return new e({type:"string",format:"mac",check:"string_format",abort:!1,...g(t)})}function Ws(e,t){return new e({type:"string",format:"cidrv4",check:"string_format",abort:!1,...g(t)})}function Vs(e,t){return new e({type:"string",format:"cidrv6",check:"string_format",abort:!1,...g(t)})}function Qs(e,t){return new e({type:"string",format:"base64",check:"string_format",abort:!1,...g(t)})}function Xs(e,t){return new e({type:"string",format:"base64url",check:"string_format",abort:!1,...g(t)})}function ei(e,t){return new e({type:"string",format:"e164",check:"string_format",abort:!1,...g(t)})}function ti(e,t){return new e({type:"string",format:"jwt",check:"string_format",abort:!1,...g(t)})}var ri={Any:null,Minute:-1,Second:0,Millisecond:3,Microsecond:6};function ni(e,t){return new e({type:"string",format:"datetime",check:"string_format",offset:!1,local:!1,precision:null,...g(t)})}function oi(e,t){return new e({type:"string",format:"date",check:"string_format",...g(t)})}function si(e,t){return new e({type:"string",format:"time",check:"string_format",precision:null,...g(t)})}function ii(e,t){return new e({type:"string",format:"duration",check:"string_format",...g(t)})}function ai(e,t){return new e({type:"number",checks:[],...g(t)})}function ci(e,t){return new e({type:"number",coerce:!0,checks:[],...g(t)})}function ui(e,t){return new e({type:"number",check:"number_format",abort:!1,format:"safeint",...g(t)})}function li(e,t){return new e({type:"number",check:"number_format",abort:!1,format:"float32",...g(t)})}function pi(e,t){return new e({type:"number",check:"number_format",abort:!1,format:"float64",...g(t)})}function fi(e,t){return new e({type:"number",check:"number_format",abort:!1,format:"int32",...g(t)})}function di(e,t){return new e({type:"number",check:"number_format",abort:!1,format:"uint32",...g(t)})}function mi(e,t){return new e({type:"boolean",...g(t)})}function hi(e,t){return new e({type:"boolean",coerce:!0,...g(t)})}function gi(e,t){return new e({type:"bigint",...g(t)})}function yi(e,t){return new e({type:"bigint",coerce:!0,...g(t)})}function _i(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 wi(e,t){return new e({type:"symbol",...g(t)})}function $i(e,t){return new e({type:"undefined",...g(t)})}function xi(e,t){return new e({type:"null",...g(t)})}function ki(e){return new e({type:"any"})}function Si(e){return new e({type:"unknown"})}function vi(e,t){return new e({type:"never",...g(t)})}function zi(e,t){return new e({type:"void",...g(t)})}function Ti(e,t){return new e({type:"date",...g(t)})}function Ii(e,t){return new e({type:"date",coerce:!0,...g(t)})}function Pi(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 Ei(e){return gr(0,e)}function Ai(e){return hr(0,e)}function Ri(e){return ht(0,e)}function Ci(e){return gt(0,e)}function Ni(e,t){return new to({check:"multiple_of",...g(t),value:e})}function Oi(e,t){return new oo({check:"max_size",...g(t),maximum:e})}function Li(e,t){return new so({check:"min_size",...g(t),minimum:e})}function Zi(e,t){return new io({check:"size_equals",...g(t),size:e})}function ji(e,t){return new ao({check:"max_length",...g(t),maximum:e})}function yt(e,t){return new co({check:"min_length",...g(t),minimum:e})}function Di(e,t){return new uo({check:"length_equals",...g(t),length:e})}function _t(e,t){return new lo({check:"string_format",format:"regex",...g(t),pattern:e})}function Mi(e){return new po({check:"string_format",format:"lowercase",...g(e)})}function Bi(e){return new fo({check:"string_format",format:"uppercase",...g(e)})}function Ui(e,t){return new mo({check:"string_format",format:"includes",...g(t),includes:e})}function Fi(e,t){return new ho({check:"string_format",format:"starts_with",...g(t),prefix:e})}function Hi(e,t){return new go({check:"string_format",format:"ends_with",...g(t),suffix:e})}function qi(e,t,r){return new yo({check:"property",property:e,schema:t,...g(r)})}function Ji(e,t){return new _o({check:"mime_type",mime:e,...g(t)})}function _e(e){return new bo({check:"overwrite",tx:e})}function Ki(e){return _e(t=>t.normalize(e))}function Yi(){return _e(e=>e.trim())}function Gi(){return _e(e=>e.toLowerCase())}function Wi(){return _e(e=>e.toUpperCase())}function Td(){return _e(e=>rn(e))}function Id(e,t,r){return new e({type:"array",element:t,...g(r)})}function Pd(e,t,r){return new e({type:"union",options:t,...g(r)})}function Ed(e,t,r){return new e({type:"union",options:t,inclusive:!1,...g(r)})}function Ad(e,t,r,n){return new e({type:"union",options:r,discriminator:t,...g(n)})}function Rd(e,t,r){return new e({type:"intersection",left:t,right:r})}function Cd(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 Nd(e,t,r,n){return new e({type:"record",keyType:t,valueType:r,...g(n)})}function Od(e,t,r,n){return new e({type:"map",keyType:t,valueType:r,...g(n)})}function Ld(e,t,r){return new e({type:"set",valueType:t,...g(r)})}function Zd(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 jd(e,t,r){return new e({type:"enum",entries:t,...g(r)})}function Dd(e,t,r){return new e({type:"literal",values:Array.isArray(t)?t:[t],...g(r)})}function Vi(e,t){return new e({type:"file",...g(t)})}function Md(e,t){return new e({type:"transform",transform:t})}function Bd(e,t){return new e({type:"optional",innerType:t})}function Ud(e,t){return new e({type:"nullable",innerType:t})}function Fd(e,t,r){return new e({type:"default",innerType:t,get defaultValue(){return typeof r=="function"?r():je(r)}})}function Hd(e,t,r){return new e({type:"nonoptional",innerType:t,...g(r)})}function qd(e,t){return new e({type:"success",innerType:t})}function Jd(e,t,r){return new e({type:"catch",innerType:t,catchValue:typeof r=="function"?r:()=>r})}function Kd(e,t,r){return new e({type:"pipe",in:t,out:r})}function Yd(e,t){return new e({type:"readonly",innerType:t})}function Gd(e,t,r){return new e({type:"template_literal",parts:t,...g(r)})}function Wd(e,t){return new e({type:"lazy",getter:t})}function Vd(e,t){return new e({type:"promise",innerType:t})}function Qi(e,t,r){let n=g(r);return n.abort??(n.abort=!0),new e({type:"custom",check:"custom",fn:t,...n})}function Xi(e,t,r){return new e({type:"custom",check:"custom",fn:t,...g(r)})}function ea(e){let t=Rc(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 Rc(e,t){let r=new E({check:"custom",...g(t)});return r._zod.check=e,r}function ta(e){let t=new E({check:"describe"});return t._zod.onattach=[r=>{let n=ae.get(r)??{};ae.add(r,{...n,description:e})}],t._zod.check=()=>{},t}function ra(e){let t=new E({check:"meta"});return t._zod.onattach=[r=>{let n=ae.get(r)??{};ae.add(r,{...n,...e})}],t._zod.check=()=>{},t}function na(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,_)=>{let y=h;return r.case!=="sensitive"&&(y=y.toLowerCase()),s.has(y)?!0:i.has(y)?!1:(_.issues.push({code:"invalid_value",expected:"stringbool",values:[...s,...i],input:_.value,inst:m,continue:!1}),{})}),reverseTransform:((h,_)=>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 be(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??(_=>_);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
-
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:oa(t,"input",e.processors),output:oa(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 Qd=(e,t={})=>r=>{let n=be({...r,processors:t});return T(e,n),we(n,e),$e(n,e)},oa=(e,t,r={})=>n=>{let{libraryOptions:o,target:s}=n??{},i=be({...o??{},target:s,io:t,processors:r});return T(e,i),we(i,e),$e(i,e)};var Xd={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string",regex:""},em=(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=Xd[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}))])}},tm=(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)},rm=(e,t,r,n)=>{r.type="boolean"},nm=(e,t,r,n)=>{if(t.unrepresentable==="throw")throw new Error("BigInt cannot be represented in JSON Schema")},om=(e,t,r,n)=>{if(t.unrepresentable==="throw")throw new Error("Symbols cannot be represented in JSON Schema")},sm=(e,t,r,n)=>{t.target==="openapi-3.0"?(r.type="string",r.nullable=!0,r.enum=[null]):r.type="null"},im=(e,t,r,n)=>{if(t.unrepresentable==="throw")throw new Error("Undefined cannot be represented in JSON Schema")},am=(e,t,r,n)=>{if(t.unrepresentable==="throw")throw new Error("Void cannot be represented in JSON Schema")},cm=(e,t,r,n)=>{r.not={}},um=(e,t,r,n)=>{},lm=(e,t,r,n)=>{},pm=(e,t,r,n)=>{if(t.unrepresentable==="throw")throw new Error("Date cannot be represented in JSON Schema")},fm=(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},dm=(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},mm=(e,t,r,n)=>{if(t.unrepresentable==="throw")throw new Error("NaN cannot be represented in JSON Schema")},hm=(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},gm=(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)},ym=(e,t,r,n)=>{r.type="boolean"},_m=(e,t,r,n)=>{if(t.unrepresentable==="throw")throw new Error("Custom types cannot be represented in JSON Schema")},bm=(e,t,r,n)=>{if(t.unrepresentable==="throw")throw new Error("Function types cannot be represented in JSON Schema")},wm=(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")},xm=(e,t,r,n)=>{if(t.unrepresentable==="throw")throw new Error("Set cannot be represented in JSON Schema")},km=(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"]})},Sm=(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)},vm=(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},zm=(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},Tm=(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)},Im=(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)}},Pm=(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"}]},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},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,r.default=JSON.parse(JSON.stringify(o.defaultValue))},Rm=(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)))},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;let i;try{i=o.catchValue(void 0)}catch{throw new Error("Dynamic catch values are not supported in JSON Schema")}r.default=i},Nm=(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},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,r.readOnly=!0},Lm=(e,t,r,n)=>{let o=e._zod.def;T(o.innerType,t,n);let s=t.seen.get(e);s.ref=o.innerType},Zm=(e,t,r,n)=>{let o=e._zod.def;T(o.innerType,t,n);let s=t.seen.get(e);s.ref=o.innerType},jm=(e,t,r,n)=>{let o=e._zod.innerType;T(o,t,n);let s=t.seen.get(e);s.ref=o},yr={string:em,number:tm,boolean:rm,bigint:nm,symbol:om,null:sm,undefined:im,void:am,never:cm,any:um,unknown:lm,date:pm,enum:fm,literal:dm,nan:mm,template_literal:hm,file:gm,success:ym,custom:_m,function:bm,transform:wm,map:$m,set:xm,array:km,object:Sm,union:vm,intersection:zm,tuple:Tm,record:Im,nullable:Pm,nonoptional:Em,default:Am,prefault:Rm,catch:Cm,pipe:Nm,readonly:Om,promise:Lm,optional:Zm,lazy:jm};function _r(e,t){if("_idmap"in e){let n=e,o=be({...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=be({...t,processors:yr});return T(e,r),we(r,e),$e(r,e)}var br=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=be({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 Cc={};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 b(e){return Rs(He,e)}var A=d("ZodMiniStringFormat",(e,t)=>{P.init(e,t),He.init(e,t)}),Nc=d("ZodMiniEmail",(e,t)=>{So.init(e,t),A.init(e,t)});function Mm(e){return Ns(Nc,e)}var Oc=d("ZodMiniGUID",(e,t)=>{xo.init(e,t),A.init(e,t)});function Bm(e){return Os(Oc,e)}var bt=d("ZodMiniUUID",(e,t)=>{ko.init(e,t),A.init(e,t)});function Um(e){return Ls(bt,e)}function Fm(e){return Zs(bt,e)}function Hm(e){return js(bt,e)}function qm(e){return Ds(bt,e)}var sa=d("ZodMiniURL",(e,t)=>{vo.init(e,t),A.init(e,t)});function Jm(e){return mr(sa,e)}function Km(e){return mr(sa,{protocol:/^https?$/,hostname:oe.domain,...g(e)})}var Lc=d("ZodMiniEmoji",(e,t)=>{zo.init(e,t),A.init(e,t)});function Ym(e){return Ms(Lc,e)}var Zc=d("ZodMiniNanoID",(e,t)=>{To.init(e,t),A.init(e,t)});function Gm(e){return Bs(Zc,e)}var jc=d("ZodMiniCUID",(e,t)=>{Io.init(e,t),A.init(e,t)});function Wm(e){return Us(jc,e)}var Dc=d("ZodMiniCUID2",(e,t)=>{Po.init(e,t),A.init(e,t)});function Vm(e){return Fs(Dc,e)}var Mc=d("ZodMiniULID",(e,t)=>{Eo.init(e,t),A.init(e,t)});function Qm(e){return Hs(Mc,e)}var Bc=d("ZodMiniXID",(e,t)=>{Ao.init(e,t),A.init(e,t)});function Xm(e){return qs(Bc,e)}var Uc=d("ZodMiniKSUID",(e,t)=>{Ro.init(e,t),A.init(e,t)});function eh(e){return Js(Uc,e)}var Fc=d("ZodMiniIPv4",(e,t)=>{Zo.init(e,t),A.init(e,t)});function th(e){return Ks(Fc,e)}var Hc=d("ZodMiniIPv6",(e,t)=>{jo.init(e,t),A.init(e,t)});function rh(e){return Ys(Hc,e)}var qc=d("ZodMiniCIDRv4",(e,t)=>{Mo.init(e,t),A.init(e,t)});function nh(e){return Ws(qc,e)}var Jc=d("ZodMiniCIDRv6",(e,t)=>{Bo.init(e,t),A.init(e,t)});function oh(e){return Vs(Jc,e)}var Kc=d("ZodMiniMAC",(e,t)=>{Do.init(e,t),A.init(e,t)});function sh(e){return Gs(Kc,e)}var Yc=d("ZodMiniBase64",(e,t)=>{Fo.init(e,t),A.init(e,t)});function ih(e){return Qs(Yc,e)}var Gc=d("ZodMiniBase64URL",(e,t)=>{Ho.init(e,t),A.init(e,t)});function ah(e){return Xs(Gc,e)}var Wc=d("ZodMiniE164",(e,t)=>{qo.init(e,t),A.init(e,t)});function ch(e){return ei(Wc,e)}var Vc=d("ZodMiniJWT",(e,t)=>{Jo.init(e,t),A.init(e,t)});function uh(e){return ti(Vc,e)}var wt=d("ZodMiniCustomStringFormat",(e,t)=>{Ko.init(e,t),A.init(e,t)});function lh(e,t,r={}){return Ue(wt,e,t,r)}function ph(e){return Ue(wt,"hostname",oe.hostname,e)}function fh(e){return Ue(wt,"hex",oe.hex,e)}function dh(e,t){let r=t?.enc??"hex",n=`${e}_${r}`,o=oe[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 ai($t,e)}var qe=d("ZodMiniNumberFormat",(e,t)=>{Yo.init(e,t),$t.init(e,t)});function mh(e){return ui(qe,e)}function hh(e){return li(qe,e)}function gh(e){return pi(qe,e)}function yh(e){return fi(qe,e)}function _h(e){return di(qe,e)}var xt=d("ZodMiniBoolean",(e,t)=>{pt.init(e,t),S.init(e,t)});function Je(e){return mi(xt,e)}var kt=d("ZodMiniBigInt",(e,t)=>{cr.init(e,t),S.init(e,t)});function bh(e){return gi(kt,e)}var ia=d("ZodMiniBigIntFormat",(e,t)=>{Go.init(e,t),kt.init(e,t)});function wh(e){return _i(ia,e)}function $h(e){return bi(ia,e)}var Qc=d("ZodMiniSymbol",(e,t)=>{Wo.init(e,t),S.init(e,t)});function xh(e){return wi(Qc,e)}var Xc=d("ZodMiniUndefined",(e,t)=>{Vo.init(e,t),S.init(e,t)});function kh(e){return $i(Xc,e)}var eu=d("ZodMiniNull",(e,t)=>{Qo.init(e,t),S.init(e,t)});function tu(e){return xi(eu,e)}var ru=d("ZodMiniAny",(e,t)=>{Xo.init(e,t),S.init(e,t)});function Sh(){return ki(ru)}var nu=d("ZodMiniUnknown",(e,t)=>{es.init(e,t),S.init(e,t)});function wr(){return Si(nu)}var ou=d("ZodMiniNever",(e,t)=>{ts.init(e,t),S.init(e,t)});function su(e){return vi(ou,e)}var iu=d("ZodMiniVoid",(e,t)=>{rs.init(e,t),S.init(e,t)});function vh(e){return zi(iu,e)}var $r=d("ZodMiniDate",(e,t)=>{ns.init(e,t),S.init(e,t)});function zh(e){return Ti($r,e)}var au=d("ZodMiniArray",(e,t)=>{os.init(e,t),S.init(e,t)});function K(e,t){return new au({type:"array",element:e,...g(t)})}function Th(e){let t=e._zod.def.shape;return yu(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 Ih(e,t){return new xr({type:"object",shape:e,catchall:su(),...g(t)})}function Ph(e,t){return new xr({type:"object",shape:e,catchall:wr(),...g(t)})}function ke(e,t){return Kt(e,t)}function Eh(e,t){return pn(e,t)}function Ah(e,t){return Kt(e,t)}function Rh(e,t){return un(e,t)}function Ch(e,t){return ln(e,t)}function Nh(e,t){return fn(ua,e,t)}function Oh(e,t){return dn(la,e,t)}function Lh(e,t){return e.clone({...e._zod.def,catchall:t})}var aa=d("ZodMiniUnion",(e,t)=>{ft.init(e,t),S.init(e,t)});function cu(e,t){return new aa({type:"union",options:e,...g(t)})}var uu=d("ZodMiniXor",(e,t)=>{aa.init(e,t),ss.init(e,t)});function Zh(e,t){return new uu({type:"union",options:e,inclusive:!1,...g(t)})}var lu=d("ZodMiniDiscriminatedUnion",(e,t)=>{is.init(e,t),S.init(e,t)});function jh(e,t,r){return new lu({type:"union",options:t,discriminator:e,...g(r)})}var pu=d("ZodMiniIntersection",(e,t)=>{as.init(e,t),S.init(e,t)});function Dh(e,t){return new pu({type:"intersection",left:e,right:t})}var fu=d("ZodMiniTuple",(e,t)=>{lr.init(e,t),S.init(e,t)});function du(e,t,r){let n=t instanceof x,o=n?r:t,s=n?t:null;return new fu({type:"tuple",items:e,rest:s,...g(o)})}var kr=d("ZodMiniRecord",(e,t)=>{cs.init(e,t),S.init(e,t)});function mu(e,t,r){return new kr({type:"record",keyType:e,valueType:t,...g(r)})}function Mh(e,t,r){let n=q(e);return n._zod.values=void 0,new kr({type:"record",keyType:n,valueType:t,...g(r)})}function Bh(e,t,r){return new kr({type:"record",keyType:e,valueType:t,mode:"loose",...g(r)})}var hu=d("ZodMiniMap",(e,t)=>{us.init(e,t),S.init(e,t)});function Uh(e,t,r){return new hu({type:"map",keyType:e,valueType:t,...g(r)})}var gu=d("ZodMiniSet",(e,t)=>{ls.init(e,t),S.init(e,t)});function Fh(e,t){return new gu({type:"set",valueType:e,...g(t)})}var ca=d("ZodMiniEnum",(e,t)=>{ps.init(e,t),S.init(e,t),e.options=Object.values(t.entries)});function yu(e,t){let r=Array.isArray(e)?Object.fromEntries(e.map(n=>[n,n])):e;return new ca({type:"enum",entries:r,...g(t)})}function Hh(e,t){return new ca({type:"enum",entries:e,...g(t)})}var _u=d("ZodMiniLiteral",(e,t)=>{fs.init(e,t),S.init(e,t)});function qh(e,t){return new _u({type:"literal",values:Array.isArray(e)?e:[e],...g(t)})}var bu=d("ZodMiniFile",(e,t)=>{ds.init(e,t),S.init(e,t)});function Jh(e){return Vi(bu,e)}var wu=d("ZodMiniTransform",(e,t)=>{ms.init(e,t),S.init(e,t)});function Kh(e){return new wu({type:"transform",transform:e})}var ua=d("ZodMiniOptional",(e,t)=>{pr.init(e,t),S.init(e,t)});function w(e){return new ua({type:"optional",innerType:e})}var $u=d("ZodMiniExactOptional",(e,t)=>{hs.init(e,t),S.init(e,t)});function Yh(e){return new $u({type:"optional",innerType:e})}var xu=d("ZodMiniNullable",(e,t)=>{gs.init(e,t),S.init(e,t)});function Sr(e){return new xu({type:"nullable",innerType:e})}function Gh(e){return w(Sr(e))}var ku=d("ZodMiniDefault",(e,t)=>{ys.init(e,t),S.init(e,t)});function Wh(e,t){return new ku({type:"default",innerType:e,get defaultValue(){return typeof t=="function"?t():je(t)}})}var Su=d("ZodMiniPrefault",(e,t)=>{_s.init(e,t),S.init(e,t)});function Vh(e,t){return new Su({type:"prefault",innerType:e,get defaultValue(){return typeof t=="function"?t():je(t)}})}var la=d("ZodMiniNonOptional",(e,t)=>{bs.init(e,t),S.init(e,t)});function Qh(e,t){return new la({type:"nonoptional",innerType:e,...g(t)})}var vu=d("ZodMiniSuccess",(e,t)=>{ws.init(e,t),S.init(e,t)});function Xh(e){return new vu({type:"success",innerType:e})}var zu=d("ZodMiniCatch",(e,t)=>{$s.init(e,t),S.init(e,t)});function eg(e,t){return new zu({type:"catch",innerType:e,catchValue:typeof t=="function"?t:()=>t})}var Tu=d("ZodMiniNaN",(e,t)=>{xs.init(e,t),S.init(e,t)});function tg(e){return Pi(Tu,e)}var pa=d("ZodMiniPipe",(e,t)=>{ks.init(e,t),S.init(e,t)});function rg(e,t){return new pa({type:"pipe",in:e,out:t})}var fa=d("ZodMiniCodec",(e,t)=>{pa.init(e,t),dt.init(e,t)});function ng(e,t,r){return new fa({type:"pipe",in:e,out:t,transform:r.decode,reverseTransform:r.encode})}var Iu=d("ZodMiniReadonly",(e,t)=>{Ss.init(e,t),S.init(e,t)});function og(e){return new Iu({type:"readonly",innerType:e})}var Pu=d("ZodMiniTemplateLiteral",(e,t)=>{vs.init(e,t),S.init(e,t)});function sg(e,t){return new Pu({type:"template_literal",parts:e,...g(t)})}var Eu=d("ZodMiniLazy",(e,t)=>{Is.init(e,t),S.init(e,t)});function Au(e){return new Eu({type:"lazy",getter:e})}var Ru=d("ZodMiniPromise",(e,t)=>{Ts.init(e,t),S.init(e,t)});function ig(e){return new Ru({type:"promise",innerType:e})}var da=d("ZodMiniCustom",(e,t)=>{Ps.init(e,t),S.init(e,t)});function ag(e,t){let r=new E({check:"custom",...g(t)});return r._zod.check=e,r}function Cu(e,t){return Qi(da,e??(()=>!0),t)}function cg(e,t={}){return Xi(da,e,t)}function ug(e){return ea(e)}var lg=ta,pg=ra;function fg(e,t={}){let r=Cu(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 dg=(...e)=>na({Codec:fa,Boolean:xt,String:He},...e);function mg(){let e=Au(()=>cu([b(),xe(),Je(),tu(),K(e),mu(b(),e)]));return e}var Nu=d("ZodMiniFunction",(e,t)=>{zs.init(e,t),S.init(e,t)});function hg(e){return new Nu({type:"function",input:Array.isArray(e?.input)?du(e?.input):e?.input??K(wr()),output:e?.output??wr()})}var ma={};ve(ma,{ZodMiniISODate:()=>zr,ZodMiniISODateTime:()=>vr,ZodMiniISODuration:()=>Ir,ZodMiniISOTime:()=>Tr,date:()=>yg,datetime:()=>gg,duration:()=>bg,time:()=>_g});var vr=d("ZodMiniISODateTime",(e,t)=>{Co.init(e,t),A.init(e,t)});function gg(e){return ni(vr,e)}var zr=d("ZodMiniISODate",(e,t)=>{No.init(e,t),A.init(e,t)});function yg(e){return oi(zr,e)}var Tr=d("ZodMiniISOTime",(e,t)=>{Oo.init(e,t),A.init(e,t)});function _g(e){return si(Tr,e)}var Ir=d("ZodMiniISODuration",(e,t)=>{Lo.init(e,t),A.init(e,t)});function bg(e){return ii(Ir,e)}var ha={};ve(ha,{bigint:()=>kg,boolean:()=>xg,date:()=>Sg,number:()=>$g,string:()=>wg});function wg(e){return Cs(He,e)}function $g(e){return ci($t,e)}function xg(e){return hi(xt,e)}function kg(e){return yi(kt,e)}function Sg(e){return Ii($r,e)}var X=b().check(yt(1)),vg=b().check(_t(/^https?:\/\/.+/)),Ke=I({CLANCY_BASE_BRANCH:w(b()),CLANCY_LABEL:w(b()),CLANCY_MODEL:w(b()),CLANCY_NOTIFY_WEBHOOK:w(b()),CLANCY_STATUS_IN_PROGRESS:w(b()),CLANCY_STATUS_DONE:w(b()),CLANCY_STATUS_REVIEW:w(b()),MAX_ITERATIONS:w(b()),PLAYWRIGHT_ENABLED:w(b()),PLAYWRIGHT_DEV_PORT:w(b()),CLANCY_ROLES:w(b()),CLANCY_PLAN_STATUS:w(b()),CLANCY_PLAN_LABEL:w(b()),CLANCY_PLAN_STATE_TYPE:w(b()),CLANCY_STATUS_PLANNED:w(b()),CLANCY_SKIP_COMMENTS:w(b()),GITHUB_TOKEN:w(b()),GITLAB_TOKEN:w(b()),BITBUCKET_USER:w(b()),BITBUCKET_TOKEN:w(b()),CLANCY_GIT_PLATFORM:w(b()),CLANCY_GIT_API_URL:w(b()),CLANCY_MAX_REWORK:w(b()),CLANCY_TDD:w(b()),CLANCY_MODE:w(b()),CLANCY_BRIEF_ISSUE_TYPE:w(b()),CLANCY_BRIEF_EPIC:w(b()),CLANCY_COMPONENT:w(b()),CLANCY_FIX_RETRIES:w(b()),CLANCY_VERIFY_COMMANDS:w(b()),CLANCY_TOKEN_RATE:w(b()),CLANCY_TIME_LIMIT:w(b()),CLANCY_BRANCH_GUARD:w(b()),CLANCY_LABEL_BRIEF:w(b()),CLANCY_LABEL_PLAN:w(b()),CLANCY_LABEL_BUILD:w(b())}),Lu=ke(Ke,{JIRA_BASE_URL:vg,JIRA_USER:X,JIRA_API_TOKEN:X,JIRA_PROJECT_KEY:X,CLANCY_JQL_STATUS:w(b()),CLANCY_JQL_SPRINT:w(b())}),Zu=ke(Ke,{GITHUB_TOKEN:X,GITHUB_REPO:X}),ju=ke(Ke,{LINEAR_API_KEY:X,LINEAR_TEAM_ID:X}),Du=ke(Ke,{SHORTCUT_API_TOKEN:X,SHORTCUT_WORKFLOW:w(b())}),Mu=ke(Ke,{NOTION_TOKEN:X,NOTION_DATABASE_ID:X,CLANCY_NOTION_STATUS:w(b()),CLANCY_NOTION_TODO:w(b()),CLANCY_NOTION_ASSIGNEE:w(b()),CLANCY_NOTION_LABELS:w(b()),CLANCY_NOTION_PARENT:w(b())}),Bu=ke(Ke,{AZDO_ORG:X,AZDO_PROJECT:X,AZDO_PAT:X,CLANCY_AZDO_STATUS:w(b()),CLANCY_AZDO_WIT:w(b())});function Pr(e){if(e.JIRA_BASE_URL){let t=Lu.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=Zu.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=ju.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=Du.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=Mu.safeParse(e);return t.success?{provider:"notion",env:t.data}:`\u2717 Notion env validation failed: ${t.error.message}`}if(e.AZDO_ORG){let t=Bu.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 Uu,mkdirSync as zg,readFileSync as Tg}from"node:fs";import{dirname as Ig,join as Fu}from"node:path";function Pg(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=Fu(e,".clancy","progress.txt");zg(Ig(i),{recursive:!0});let a=Pg(new Date);if(n==="BRIEF"||n==="APPROVE_BRIEF"){let f=`${a} | ${n} | ${t} | ${r}
42
- `;Uu(i,f,"utf8");return}let u=o!=null?` | pr:${o}`:"",l=s?` | parent:${s}`:"",p=`${a} | ${t} | ${r} | ${n}${u}${l}
43
- `;Uu(i,p,"utf8")}function ya(e){let t=Fu(e,".clancy","progress.txt"),r;try{r=Tg(t,"utf8")}catch{return[]}let n=[];for(let o of r.split(`
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 _=i[h],y=_.match(/^pr:(\d+)$/),z=_.match(/^parent:(.+)$/);y?p=parseInt(y[1],10):z?f=z[1]:h>=3&&!l&&_===_.toUpperCase()&&_.length>1?l=_:m.push(_)}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 Hu(e,t){let r=ya(e),n=t.toLowerCase(),o;for(let s of r)s.key.toLowerCase()===n&&(o=s);return o}function qu(e,t){let r=ya(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=ya(e),n=new Map;for(let o of r)n.set(o.key,o);return[...n.values()].filter(o=>o.status===t)}function Eg(e){return e.startsWith("epic/")||e.startsWith("milestone/")}function Ye(e,t,r,n,o){let s=[],i=r?Eg(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
- `)}function Ju(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 Ag}from"node:child_process";function Ku(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 Rg(e){let t=Ku(e);if(!t)return{host:"unknown",url:e};let{hostname:r,path:n}=t;switch(Cg(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 Cg(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=Ag("git",["remote","get-url","origin"],{encoding:"utf8"}).trim()}catch{return{host:"none"}}return t?e?Ng(t,e):Rg(t):{host:"none"}}function Ng(e,t){let r=Ku(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 Og=I({id:xe(),links:I({html:w(I({href:w(b())}))}),participants:K(I({state:w(b()),role:b()}))}),Yu=I({values:K(Og)}),Lg=I({content:I({raw:b()}),inline:w(I({path:w(b())})),created_on:b(),user:w(I({nickname:w(b())}))}),_a=I({values:K(Lg)}),Zg=I({id:xe(),links:I({self:w(K(I({href:w(b())})))}),reviewers:K(I({status:b()}))}),Gu=I({values:K(Zg)}),jg=I({text:b(),anchor:w(I({path:w(b())})),createdDate:xe(),author:w(I({slug:w(b())}))}),Dg=I({action:b(),comment:w(jg)}),ba=I({values:K(Dg)});async function Ee(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 Ae(e){return e.trim().replace(/^rework:\s*/i,"").trim()}async function Wu(e,t,r,n,o,s,i,a){return Ee(`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 Vu(e,t,r,n,o,s,i,a){return Ee(`${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 Qu(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 Xu(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 el(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=Yu.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=_a.parse(await m.json()),_=s?h.values.filter(Y=>Y.created_on>s):h.values,y=_.some(Y=>Y.inline!=null),z=_.some(Y=>Y.inline==null&&ie(Y.content.raw));return{changesRequested:y||z,prNumber:l.id,prUrl:p}}catch{return}}async function tl(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=_a.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(Ae(f.content.raw));return p}catch{return[]}}async function rl(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=Gu.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=ba.parse(await m.json()),_=s?Date.parse(s):void 0,y=h.values.filter(C=>C.action==="COMMENTED"&&C.comment&&(_==null||C.comment.createdDate>_)),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 nl(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=ba.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(Ae(m.text))}return p}catch{return[]}}var Mg=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())})))}),ol=c.array(Mg),Bg=c.object({id:c.number(),body:c.optional(c.nullable(c.string())),created_at:c.string(),user:c.optional(c.object({login:c.string()}))}),wa=c.array(Bg),Ug=c.object({number:c.number(),html_url:c.string(),state:c.string()}),sl=c.array(Ug),Fg=c.object({state:c.string(),user:c.object({login:c.string()}),submitted_at:c.string()}),il=c.array(Fg),Hg=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(Hg);var D="https://api.github.com";async function Er(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 Ar(e){return e?.trimStart().startsWith("[clancy]")??!1}async function al(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=sl.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()),_=wa.parse(await m.json()),y=h.filter(O=>!Ar(O.body)),z=_.filter(O=>!Ar(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 Ba=il.parse(await O.json()),jt=new Map;for(let le of Ba)le.state==="PENDING"||le.state==="DISMISSED"||jt.set(le.user.login,le.state);let Ua=[...jt.entries()].filter(([,le])=>le==="CHANGES_REQUESTED");Ua.length>0&&(C=!0,M=Ua.map(([le])=>le))}}catch{}return{changesRequested:C,prNumber:l.number,prUrl:l.html_url,reviewers:M}}catch{return}}async function cl(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=wa.parse(await u.json()),f=l.filter(_=>!Ar(_.body)),m=p.filter(_=>!Ar(_.body)),h=[];for(let _ of f){if(!_.body)continue;let y=_.path?`[${_.path}] `:"";h.push(`${y}${_.body}`)}for(let _ of m)_.body&&ie(_.body)&&h.push(Ae(_.body));return h}catch{return[]}}async function ul(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 ll(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 pl(e,t,r,n,o,s,i=D){return Ee(`${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 qg=I({iid:xe(),web_url:b(),detailed_merge_status:w(b())}),fl=K(qg),Jg=I({body:b(),resolvable:Je(),resolved:w(Je()),system:Je(),type:w(Sr(b())),created_at:w(b()),position:w(I({new_path:w(b())})),author:w(I({username:b()}))}),Kg=I({id:w(b()),notes:K(Jg)}),xa=K(Kg);async function dl(e,t,r,n,o,s,i){let a=encodeURIComponent(r);return Ee(`${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 ml(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 hl(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 gl(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=fl.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=xa.parse(await f.json()),h=!1;for(let _ of m){for(let y of _.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 yl(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=xa.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 _=h.position?.new_path?`[${h.position.new_path}] `:"";l.push(`${_}${h.body}`),m=!0}else ie(h.body)&&(l.push(Ae(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 pl(i.token,`${t.owner}/${t.repo}`,r,n,o,s,a);case"gitlab":return dl(i.token,a,t.projectPath,r,n,o,s);case"bitbucket":return Wu(i.username,i.token,t.workspace,t.repoSlug,r,n,o,s);case"bitbucket-server":return Vu(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 ka(e,t){let r=Ha(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(_l("git",["fetch","origin",t],{encoding:"utf8",stdio:["pipe","pipe","pipe"],timeout:15e3}),_l("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 Sa(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=Gg(process.cwd(),".clancy","verify-attempt.txt"),z=Yg(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}`,_=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,_);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 bl(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}`,_=Ju(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,_);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 wl(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=Fa();let u=!1;if(i&&!a){let p=await t.fetchChildrenStatus(r.parentInfo,r.linearIssueId,r.key);p&&p.total===1&&(u=!0)}e.skipEpicBranch=u;let l=i&&!u?o:s;if(e.effectiveTarget=l,a){if(i&&!u){if(!ka(o,s))return e.originalBranch&&L(e.originalBranch),!1}else Gr(l,s);Mt(n)?L(n):(L(l),L(n,!0))}else if(i&&!u){if(!ka(o,s))return e.originalBranch&&L(e.originalBranch),!1;L(o),L(n,!0)}else Gr(s,s),L(s),L(n,!0);try{Ya(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 Wg(e){return e.includes("hooks.slack.com")}function Vg(e){return JSON.stringify({text:e})}function Qg(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=Wg(e)?Vg(t):Qg(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 xl(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 Xg,mkdirSync as ey}from"node:fs";import{dirname as ty,join as ry}from"node:path";function kl(e,t,r,n=6600){let o=ry(e,".clancy","costs.log");ey(ty(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
- `;Xg(o,f,"utf8")}function Sl(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");kl(e.cwd,r.key,n.startedAt,Number.isFinite(o)&&o>0?o:6600)}}catch{}return!0}import{mkdirSync as ny,readFileSync as oy,renameSync as sy,writeFileSync as iy}from"node:fs";import{join as vl}from"node:path";function zl(e){return vl(e,".clancy","quality.json")}function Tl(e){try{let t=oy(zl(e),"utf8"),r=JSON.parse(t);if(r&&typeof r.tickets=="object"&&r.tickets!==null&&!Array.isArray(r.tickets))return va(r),r}catch{}return{tickets:{},summary:{totalTickets:0,avgReworkCycles:0,avgVerificationRetries:0,avgDuration:0}}}function va(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 Il(e,t){let r=zl(e),n=r+".tmp";ny(vl(e,".clancy"),{recursive:!0}),iy(n,JSON.stringify(t,null,2)+`
48
- `,"utf8"),sy(n,r)}function Pl(e,t){return e.tickets[t]||(e.tickets[t]={reworkCycles:0,verificationRetries:0}),e.tickets[t]}function El(e,t){try{let r=Tl(e),n=Pl(r,t);n.reworkCycles++,va(r),Il(e,r)}catch{}}function Al(e,t,r){try{let n=Tl(e),o=Pl(n,t);o.deliveredAt=new Date().toISOString(),o.duration=r,va(n),Il(e,n)}catch{}}function We(e,t){return e==="github"?`feature/issue-${t.replace("#","")}`:`feature/${t.toLowerCase()}`}function Ve(e,t,r){if(!r)return t;if(e==="github"){let n=r.match(/^#(\d+)$/);return n?`epic/${n[1]}`:`milestone/${r.toLowerCase().replace(/\s+/g,"-").replace(/[^a-z0-9-]/g,"")}`}return`epic/${r.toLowerCase()}`}async function Rl(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 _;switch(a.host){case"github":_=await al(u.token,`${a.owner}/${a.repo}`,m,a.owner,l,h);break;case"gitlab":_=await gl(u.token,l,a.projectPath,m,h);break;case"bitbucket":_=await el(u.username,u.token,a.workspace,a.repoSlug,m,h);break;case"bitbucket-server":_=await rl(u.token,l,a.projectKey,a.repoSlug,m,h);break}if(_?.changesRequested){let y=[],z;switch(a.host){case"github":y=await cl(u.token,`${a.owner}/${a.repo}`,_.prNumber,l,h);break;case"gitlab":{let Y=await yl(u.token,l,a.projectPath,_.prNumber,h);y=Y.comments,z=Y.discussionIds;break}case"bitbucket":y=await tl(u.username,u.token,a.workspace,a.repoSlug,_.prNumber,h);break;case"bitbucket-server":y=await nl(u.token,l,a.projectKey,a.repoSlug,_.prNumber,h);break}return{ticket:{key:f.key,title:f.summary,description:f.summary,parentInfo:f.parent??"none",blockers:"None"},feedback:y,prNumber:_.prNumber,discussionIds:z,reviewers:_.reviewers??[]}}}}function ay(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(`
39
+ `)}h.write("payload.value = newResult;"),h.write("return payload;");let B=h.compile();return(N,U)=>B(m,N,U)},s,i=ze,a=!tt.jitless,l=a&&on.value,p=t.catchall,f;e._zod.parse=(m,h)=>{f??(f=n.value);let y=m.value;return i(y)?a&&l&&h?.async===!1&&h.jitless!==!0?(s||(s=o(t.shape)),m=s(m,h),p?Rc([],y,m,h,f,e):m):r(m,h):(m.issues.push({expected:"object",code:"invalid_type",input:y,inst:e}),m)}});function bc(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,F())))}),t)}var ft=d("$ZodUnion",(e,t)=>{k.init(e,t),S(e._zod,"optin",()=>t.options.some(o=>o._zod.optin==="optional")?"optional":void 0),S(e._zod,"optout",()=>t.options.some(o=>o._zod.optout==="optional")?"optional":void 0),S(e._zod,"values",()=>{if(t.options.every(o=>o._zod.values))return new Set(t.options.flatMap(o=>Array.from(o._zod.values)))}),S(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=>bc(u,o,e,s)):bc(a,o,e,s)}});function wc(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,F())))}):t.issues.push({code:"invalid_union",input:t.value,inst:r,errors:[],inclusive:!1}),t)}var is=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=>wc(u,o,e,s)):wc(a,o,e,s)}}),as=d("$ZodDiscriminatedUnion",(e,t)=>{t.inclusive=!1,ft.init(e,t);let r=e._zod.parse;S(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)}}),cs=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])=>$c(r,u,l)):$c(r,s,i)}});function ko(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=ko(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=ko(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 $c(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=ko(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 pr=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=>nr(m,n,l))):nr(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=>nr(h,n,l))):nr(m,n,l)}}return i.length?Promise.all(i).then(()=>n):n}});function nr(e,t,r){e.issues.length&&t.issues.push(...Q(r,e.issues)),t.value[r]=e.value}var us=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"&&er.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,F())),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}}),ls=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])=>{kc(p,f,r,i,o,e,n)})):kc(u,l,r,i,o,e,n)}return s.length?Promise.all(s).then(()=>r):r}});function kc(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,F()))})),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,F()))})),r.value.set(e.value,t.value)}var ps=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=>xc(u,r))):xc(a,r)}return s.length?Promise.all(s).then(()=>r):r}});function xc(e,t){e.issues.length&&t.issues.push(...e.issues),t.value.add(e.value)}var fs=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"?re(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}}),ds=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"?re(n):n?re(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}}),ms=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}}),hs=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 Sc(e,t){return e.issues.length&&t===void 0?{issues:[],value:void 0}:e}var fr=d("$ZodOptional",(e,t)=>{k.init(e,t),e._zod.optin="optional",e._zod.optout="optional",S(e._zod,"values",()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,void 0]):void 0),S(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=>Sc(s,r.value)):Sc(o,r.value)}return r.value===void 0?r:t.innerType._zod.run(r,n)}}),gs=d("$ZodExactOptional",(e,t)=>{fr.init(e,t),S(e._zod,"values",()=>t.innerType._zod.values),S(e._zod,"pattern",()=>t.innerType._zod.pattern),e._zod.parse=(r,n)=>t.innerType._zod.run(r,n)}),ys=d("$ZodNullable",(e,t)=>{k.init(e,t),S(e._zod,"optin",()=>t.innerType._zod.optin),S(e._zod,"optout",()=>t.innerType._zod.optout),S(e._zod,"pattern",()=>{let r=t.innerType._zod.pattern;return r?new RegExp(`^(${ot(r.source)}|null)$`):void 0}),S(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)}),_s=d("$ZodDefault",(e,t)=>{k.init(e,t),e._zod.optin="optional",S(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=>vc(s,t)):vc(o,t)}});function vc(e,t){return e.value===void 0&&(e.value=t.defaultValue),e}var bs=d("$ZodPrefault",(e,t)=>{k.init(e,t),e._zod.optin="optional",S(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))}),ws=d("$ZodNonOptional",(e,t)=>{k.init(e,t),S(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=>zc(s,e)):zc(o,e)}});function zc(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)}}),ks=d("$ZodCatch",(e,t)=>{k.init(e,t),S(e._zod,"optin",()=>t.innerType._zod.optin),S(e._zod,"optout",()=>t.innerType._zod.optout),S(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,F()))},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,F()))},input:r.value}),r.issues=[]),r)}}),xs=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)}),Ss=d("$ZodPipe",(e,t)=>{k.init(e,t),S(e._zod,"values",()=>t.in._zod.values),S(e._zod,"optin",()=>t.in._zod.optin),S(e._zod,"optout",()=>t.out._zod.optout),S(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=>or(i,t.in,n)):or(s,t.in,n)}let o=t.in._zod.run(r,n);return o instanceof Promise?o.then(s=>or(s,t.out,n)):or(o,t.out,n)}});function or(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),S(e._zod,"values",()=>t.in._zod.values),S(e._zod,"optin",()=>t.in._zod.optin),S(e._zod,"optout",()=>t.out._zod.optout),S(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=>sr(i,t,n)):sr(s,t,n)}else{let s=t.out._zod.run(r,n);return s instanceof Promise?s.then(i=>sr(i,t,n)):sr(s,t,n)}}});function sr(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=>ir(e,s,t.out,r)):ir(e,o,t.out,r)}else{let o=t.reverseTransform(e.value,e);return o instanceof Promise?o.then(s=>ir(e,s,t.in,r)):ir(e,o,t.in,r)}}function ir(e,t,r,n){return e.issues.length?(e.aborted=!0,e):r._zod.run({value:t,issues:e.issues},n)}var vs=d("$ZodReadonly",(e,t)=>{k.init(e,t),S(e._zod,"propValues",()=>t.innerType._zod.propValues),S(e._zod,"values",()=>t.innerType._zod.values),S(e._zod,"optin",()=>t.innerType?._zod?.optin),S(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(Tc):Tc(o)}});function Tc(e){return e.value=Object.freeze(e.value),e}var zs=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||sn.has(typeof n))r.push(re(`${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)}),Ts=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 pr({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)),Is=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))}),Ps=d("$ZodLazy",(e,t)=>{k.init(e,t),S(e._zod,"innerType",()=>t.getter()),S(e._zod,"pattern",()=>e._zod.innerType?._zod?.pattern),S(e._zod,"propValues",()=>e._zod.innerType?._zod?.propValues),S(e._zod,"optin",()=>e._zod.innerType?._zod?.optin??void 0),S(e._zod,"optout",()=>e._zod.innerType?._zod?.optout??void 0),e._zod.parse=(r,n)=>e._zod.innerType._zod.run(r,n)}),Es=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=>Ic(s,r,n,e));Ic(o,r,n,e)}});function Ic(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:()=>Td});var Td={};var Cc,As=Symbol("ZodOutput"),Rs=Symbol("ZodInput"),dr=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 mr(){return new dr}(Cc=globalThis).__zod_globalRegistry??(Cc.__zod_globalRegistry=mr());var ae=globalThis.__zod_globalRegistry;function Cs(e,t){return new e({type:"string",...g(t)})}function Ns(e,t){return new e({type:"string",coerce:!0,...g(t)})}function Os(e,t){return new e({type:"string",format:"email",check:"string_format",abort:!1,...g(t)})}function Ls(e,t){return new e({type:"string",format:"guid",check:"string_format",abort:!1,...g(t)})}function Zs(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,...g(t)})}function js(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v4",...g(t)})}function Ds(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v6",...g(t)})}function Ms(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v7",...g(t)})}function hr(e,t){return new e({type:"string",format:"url",check:"string_format",abort:!1,...g(t)})}function Bs(e,t){return new e({type:"string",format:"emoji",check:"string_format",abort:!1,...g(t)})}function Us(e,t){return new e({type:"string",format:"nanoid",check:"string_format",abort:!1,...g(t)})}function Fs(e,t){return new e({type:"string",format:"cuid",check:"string_format",abort:!1,...g(t)})}function Hs(e,t){return new e({type:"string",format:"cuid2",check:"string_format",abort:!1,...g(t)})}function qs(e,t){return new e({type:"string",format:"ulid",check:"string_format",abort:!1,...g(t)})}function Js(e,t){return new e({type:"string",format:"xid",check:"string_format",abort:!1,...g(t)})}function Ks(e,t){return new e({type:"string",format:"ksuid",check:"string_format",abort:!1,...g(t)})}function Ys(e,t){return new e({type:"string",format:"ipv4",check:"string_format",abort:!1,...g(t)})}function Gs(e,t){return new e({type:"string",format:"ipv6",check:"string_format",abort:!1,...g(t)})}function Ws(e,t){return new e({type:"string",format:"mac",check:"string_format",abort:!1,...g(t)})}function Vs(e,t){return new e({type:"string",format:"cidrv4",check:"string_format",abort:!1,...g(t)})}function Qs(e,t){return new e({type:"string",format:"cidrv6",check:"string_format",abort:!1,...g(t)})}function Xs(e,t){return new e({type:"string",format:"base64",check:"string_format",abort:!1,...g(t)})}function ei(e,t){return new e({type:"string",format:"base64url",check:"string_format",abort:!1,...g(t)})}function ti(e,t){return new e({type:"string",format:"e164",check:"string_format",abort:!1,...g(t)})}function ri(e,t){return new e({type:"string",format:"jwt",check:"string_format",abort:!1,...g(t)})}var ni={Any:null,Minute:-1,Second:0,Millisecond:3,Microsecond:6};function oi(e,t){return new e({type:"string",format:"datetime",check:"string_format",offset:!1,local:!1,precision:null,...g(t)})}function si(e,t){return new e({type:"string",format:"date",check:"string_format",...g(t)})}function ii(e,t){return new e({type:"string",format:"time",check:"string_format",precision:null,...g(t)})}function ai(e,t){return new e({type:"string",format:"duration",check:"string_format",...g(t)})}function ci(e,t){return new e({type:"number",checks:[],...g(t)})}function ui(e,t){return new e({type:"number",coerce:!0,checks:[],...g(t)})}function li(e,t){return new e({type:"number",check:"number_format",abort:!1,format:"safeint",...g(t)})}function pi(e,t){return new e({type:"number",check:"number_format",abort:!1,format:"float32",...g(t)})}function fi(e,t){return new e({type:"number",check:"number_format",abort:!1,format:"float64",...g(t)})}function di(e,t){return new e({type:"number",check:"number_format",abort:!1,format:"int32",...g(t)})}function mi(e,t){return new e({type:"number",check:"number_format",abort:!1,format:"uint32",...g(t)})}function hi(e,t){return new e({type:"boolean",...g(t)})}function gi(e,t){return new e({type:"boolean",coerce:!0,...g(t)})}function yi(e,t){return new e({type:"bigint",...g(t)})}function _i(e,t){return new e({type:"bigint",coerce:!0,...g(t)})}function bi(e,t){return new e({type:"bigint",check:"bigint_format",abort:!1,format:"int64",...g(t)})}function wi(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 ki(e,t){return new e({type:"undefined",...g(t)})}function xi(e,t){return new e({type:"null",...g(t)})}function Si(e){return new e({type:"any"})}function vi(e){return new e({type:"unknown"})}function zi(e,t){return new e({type:"never",...g(t)})}function Ti(e,t){return new e({type:"void",...g(t)})}function Ii(e,t){return new e({type:"date",...g(t)})}function Pi(e,t){return new e({type:"date",coerce:!0,...g(t)})}function Ei(e,t){return new e({type:"nan",...g(t)})}function gr(e,t){return new tr({check:"less_than",...g(t),value:e,inclusive:!1})}function ht(e,t){return new tr({check:"less_than",...g(t),value:e,inclusive:!0})}function yr(e,t){return new rr({check:"greater_than",...g(t),value:e,inclusive:!1})}function gt(e,t){return new rr({check:"greater_than",...g(t),value:e,inclusive:!0})}function Ai(e){return yr(0,e)}function Ri(e){return gr(0,e)}function Ci(e){return ht(0,e)}function Ni(e){return gt(0,e)}function Oi(e,t){return new ro({check:"multiple_of",...g(t),value:e})}function Li(e,t){return new so({check:"max_size",...g(t),maximum:e})}function Zi(e,t){return new io({check:"min_size",...g(t),minimum:e})}function ji(e,t){return new ao({check:"size_equals",...g(t),size:e})}function Di(e,t){return new co({check:"max_length",...g(t),maximum:e})}function yt(e,t){return new uo({check:"min_length",...g(t),minimum:e})}function Mi(e,t){return new lo({check:"length_equals",...g(t),length:e})}function _t(e,t){return new po({check:"string_format",format:"regex",...g(t),pattern:e})}function Bi(e){return new fo({check:"string_format",format:"lowercase",...g(e)})}function Ui(e){return new mo({check:"string_format",format:"uppercase",...g(e)})}function Fi(e,t){return new ho({check:"string_format",format:"includes",...g(t),includes:e})}function Hi(e,t){return new go({check:"string_format",format:"starts_with",...g(t),prefix:e})}function qi(e,t){return new yo({check:"string_format",format:"ends_with",...g(t),suffix:e})}function Ji(e,t,r){return new _o({check:"property",property:e,schema:t,...g(r)})}function Ki(e,t){return new bo({check:"mime_type",mime:e,...g(t)})}function _e(e){return new wo({check:"overwrite",tx:e})}function Yi(e){return _e(t=>t.normalize(e))}function Gi(){return _e(e=>e.trim())}function Wi(){return _e(e=>e.toLowerCase())}function Vi(){return _e(e=>e.toUpperCase())}function Pd(){return _e(e=>nn(e))}function Ed(e,t,r){return new e({type:"array",element:t,...g(r)})}function Ad(e,t,r){return new e({type:"union",options:t,...g(r)})}function Rd(e,t,r){return new e({type:"union",options:t,inclusive:!1,...g(r)})}function Cd(e,t,r,n){return new e({type:"union",options:r,discriminator:t,...g(n)})}function Nd(e,t,r){return new e({type:"intersection",left:t,right:r})}function Od(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 Ld(e,t,r,n){return new e({type:"record",keyType:t,valueType:r,...g(n)})}function Zd(e,t,r,n){return new e({type:"map",keyType:t,valueType:r,...g(n)})}function jd(e,t,r){return new e({type:"set",valueType:t,...g(r)})}function Dd(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 Md(e,t,r){return new e({type:"enum",entries:t,...g(r)})}function Bd(e,t,r){return new e({type:"literal",values:Array.isArray(t)?t:[t],...g(r)})}function Qi(e,t){return new e({type:"file",...g(t)})}function Ud(e,t){return new e({type:"transform",transform:t})}function Fd(e,t){return new e({type:"optional",innerType:t})}function Hd(e,t){return new e({type:"nullable",innerType:t})}function qd(e,t,r){return new e({type:"default",innerType:t,get defaultValue(){return typeof r=="function"?r():je(r)}})}function Jd(e,t,r){return new e({type:"nonoptional",innerType:t,...g(r)})}function Kd(e,t){return new e({type:"success",innerType:t})}function Yd(e,t,r){return new e({type:"catch",innerType:t,catchValue:typeof r=="function"?r:()=>r})}function Gd(e,t,r){return new e({type:"pipe",in:t,out:r})}function Wd(e,t){return new e({type:"readonly",innerType:t})}function Vd(e,t,r){return new e({type:"template_literal",parts:t,...g(r)})}function Qd(e,t){return new e({type:"lazy",getter:t})}function Xd(e,t){return new e({type:"promise",innerType:t})}function Xi(e,t,r){let n=g(r);return n.abort??(n.abort=!0),new e({type:"custom",check:"custom",fn:t,...n})}function ea(e,t,r){return new e({type:"custom",check:"custom",fn:t,...g(r)})}function ta(e){let t=Nc(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 Nc(e,t){let r=new A({check:"custom",...g(t)});return r._zod.check=e,r}function ra(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 na(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 oa(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,y)=>{let _=h;return r.case!=="sensitive"&&(_=_.toLowerCase()),s.has(_)?!0:i.has(_)?!1:(y.issues.push({code:"invalid_value",expected:"stringbool",values:[...s,...i],input:y.value,inst:m,continue:!1}),{})}),reverseTransform:((h,y)=>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 be(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"&&K(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??(y=>y);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
+
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 _ in u)_==="$ref"||_==="allOf"||_ in l||delete u[_];if(h.$ref&&m.def)for(let _ in u)_==="$ref"||_==="allOf"||_ in m.def&&JSON.stringify(u[_])===JSON.stringify(m.def[_])&&delete u[_]}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:sa(t,"input",e.processors),output:sa(t,"output",e.processors)}},enumerable:!1,writable:!1}),i}catch{throw new Error("Error converting schema to JSON.")}}function K(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 K(n.element,r);if(n.type==="set")return K(n.valueType,r);if(n.type==="lazy")return K(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 K(n.innerType,r);if(n.type==="intersection")return K(n.left,r)||K(n.right,r);if(n.type==="record"||n.type==="map")return K(n.keyType,r)||K(n.valueType,r);if(n.type==="pipe")return K(n.in,r)||K(n.out,r);if(n.type==="object"){for(let o in n.shape)if(K(n.shape[o],r))return!0;return!1}if(n.type==="union"){for(let o of n.options)if(K(o,r))return!0;return!1}if(n.type==="tuple"){for(let o of n.items)if(K(o,r))return!0;return!!(n.rest&&K(n.rest,r))}return!1}var em=(e,t={})=>r=>{let n=be({...r,processors:t});return T(e,n),we(n,e),$e(n,e)},sa=(e,t,r={})=>n=>{let{libraryOptions:o,target:s}=n??{},i=be({...o??{},target:s,io:t,processors:r});return T(e,i),we(i,e),$e(i,e)};var tm={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string",regex:""},rm=(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=tm[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}))])}},nm=(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)},om=(e,t,r,n)=>{r.type="boolean"},sm=(e,t,r,n)=>{if(t.unrepresentable==="throw")throw new Error("BigInt cannot be represented in JSON Schema")},im=(e,t,r,n)=>{if(t.unrepresentable==="throw")throw new Error("Symbols cannot be represented in JSON Schema")},am=(e,t,r,n)=>{t.target==="openapi-3.0"?(r.type="string",r.nullable=!0,r.enum=[null]):r.type="null"},cm=(e,t,r,n)=>{if(t.unrepresentable==="throw")throw new Error("Undefined cannot be represented in JSON Schema")},um=(e,t,r,n)=>{if(t.unrepresentable==="throw")throw new Error("Void cannot be represented in JSON Schema")},lm=(e,t,r,n)=>{r.not={}},pm=(e,t,r,n)=>{},fm=(e,t,r,n)=>{},dm=(e,t,r,n)=>{if(t.unrepresentable==="throw")throw new Error("Date cannot be represented in JSON Schema")},mm=(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},hm=(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},gm=(e,t,r,n)=>{if(t.unrepresentable==="throw")throw new Error("NaN cannot be represented in JSON Schema")},ym=(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},_m=(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)},bm=(e,t,r,n)=>{r.type="boolean"},wm=(e,t,r,n)=>{if(t.unrepresentable==="throw")throw new Error("Custom types cannot be represented in JSON Schema")},$m=(e,t,r,n)=>{if(t.unrepresentable==="throw")throw new Error("Function types cannot be represented in JSON Schema")},km=(e,t,r,n)=>{if(t.unrepresentable==="throw")throw new Error("Transforms cannot be represented in JSON Schema")},xm=(e,t,r,n)=>{if(t.unrepresentable==="throw")throw new Error("Map cannot be represented in JSON Schema")},Sm=(e,t,r,n)=>{if(t.unrepresentable==="throw")throw new Error("Set cannot be represented in JSON Schema")},vm=(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"]})},zm=(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)},Tm=(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},Im=(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},Pm=(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)},Em=(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)}},Am=(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"}]},Rm=(e,t,r,n)=>{let o=e._zod.def;T(o.innerType,t,n);let s=t.seen.get(e);s.ref=o.innerType},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.default=JSON.parse(JSON.stringify(o.defaultValue))},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,t.io==="input"&&(r._prefault=JSON.parse(JSON.stringify(o.defaultValue)))},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;let i;try{i=o.catchValue(void 0)}catch{throw new Error("Dynamic catch values are not supported in JSON Schema")}r.default=i},Lm=(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},Zm=(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},jm=(e,t,r,n)=>{let o=e._zod.def;T(o.innerType,t,n);let s=t.seen.get(e);s.ref=o.innerType},Dm=(e,t,r,n)=>{let o=e._zod.def;T(o.innerType,t,n);let s=t.seen.get(e);s.ref=o.innerType},Mm=(e,t,r,n)=>{let o=e._zod.innerType;T(o,t,n);let s=t.seen.get(e);s.ref=o},_r={string:rm,number:nm,boolean:om,bigint:sm,symbol:im,null:am,undefined:cm,void:um,never:lm,any:pm,unknown:fm,date:dm,enum:mm,literal:hm,nan:gm,template_literal:ym,file:_m,success:bm,custom:wm,function:$m,transform:km,map:xm,set:Sm,array:vm,object:zm,union:Tm,intersection:Im,tuple:Pm,record:Em,nullable:Am,nonoptional:Rm,default:Cm,prefault:Nm,catch:Om,pipe:Lm,readonly:Zm,promise:jm,optional:Dm,lazy:Mm};function br(e,t){if("_idmap"in e){let n=e,o=be({...t,processors:_r}),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=be({...t,processors:_r});return T(e,r),we(r,e),$e(r,e)}var wr=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=be({processors:_r,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 Oc={};var v=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)=>J(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),v.init(e,t)});function b(e){return Cs(He,e)}var R=d("ZodMiniStringFormat",(e,t)=>{E.init(e,t),He.init(e,t)}),Lc=d("ZodMiniEmail",(e,t)=>{vo.init(e,t),R.init(e,t)});function Um(e){return Os(Lc,e)}var Zc=d("ZodMiniGUID",(e,t)=>{xo.init(e,t),R.init(e,t)});function Fm(e){return Ls(Zc,e)}var bt=d("ZodMiniUUID",(e,t)=>{So.init(e,t),R.init(e,t)});function Hm(e){return Zs(bt,e)}function qm(e){return js(bt,e)}function Jm(e){return Ds(bt,e)}function Km(e){return Ms(bt,e)}var ia=d("ZodMiniURL",(e,t)=>{zo.init(e,t),R.init(e,t)});function Ym(e){return hr(ia,e)}function Gm(e){return hr(ia,{protocol:/^https?$/,hostname:oe.domain,...g(e)})}var jc=d("ZodMiniEmoji",(e,t)=>{To.init(e,t),R.init(e,t)});function Wm(e){return Bs(jc,e)}var Dc=d("ZodMiniNanoID",(e,t)=>{Io.init(e,t),R.init(e,t)});function Vm(e){return Us(Dc,e)}var Mc=d("ZodMiniCUID",(e,t)=>{Po.init(e,t),R.init(e,t)});function Qm(e){return Fs(Mc,e)}var Bc=d("ZodMiniCUID2",(e,t)=>{Eo.init(e,t),R.init(e,t)});function Xm(e){return Hs(Bc,e)}var Uc=d("ZodMiniULID",(e,t)=>{Ao.init(e,t),R.init(e,t)});function eh(e){return qs(Uc,e)}var Fc=d("ZodMiniXID",(e,t)=>{Ro.init(e,t),R.init(e,t)});function th(e){return Js(Fc,e)}var Hc=d("ZodMiniKSUID",(e,t)=>{Co.init(e,t),R.init(e,t)});function rh(e){return Ks(Hc,e)}var qc=d("ZodMiniIPv4",(e,t)=>{jo.init(e,t),R.init(e,t)});function nh(e){return Ys(qc,e)}var Jc=d("ZodMiniIPv6",(e,t)=>{Do.init(e,t),R.init(e,t)});function oh(e){return Gs(Jc,e)}var Kc=d("ZodMiniCIDRv4",(e,t)=>{Bo.init(e,t),R.init(e,t)});function sh(e){return Vs(Kc,e)}var Yc=d("ZodMiniCIDRv6",(e,t)=>{Uo.init(e,t),R.init(e,t)});function ih(e){return Qs(Yc,e)}var Gc=d("ZodMiniMAC",(e,t)=>{Mo.init(e,t),R.init(e,t)});function ah(e){return Ws(Gc,e)}var Wc=d("ZodMiniBase64",(e,t)=>{Ho.init(e,t),R.init(e,t)});function ch(e){return Xs(Wc,e)}var Vc=d("ZodMiniBase64URL",(e,t)=>{qo.init(e,t),R.init(e,t)});function uh(e){return ei(Vc,e)}var Qc=d("ZodMiniE164",(e,t)=>{Jo.init(e,t),R.init(e,t)});function lh(e){return ti(Qc,e)}var Xc=d("ZodMiniJWT",(e,t)=>{Ko.init(e,t),R.init(e,t)});function ph(e){return ri(Xc,e)}var wt=d("ZodMiniCustomStringFormat",(e,t)=>{Yo.init(e,t),R.init(e,t)});function fh(e,t,r={}){return Ue(wt,e,t,r)}function dh(e){return Ue(wt,"hostname",oe.hostname,e)}function mh(e){return Ue(wt,"hex",oe.hex,e)}function hh(e,t){let r=t?.enc??"hex",n=`${e}_${r}`,o=oe[n];if(!o)throw new Error(`Unrecognized hash format: ${n}`);return Ue(wt,n,o,t)}var $t=d("ZodMiniNumber",(e,t)=>{cr.init(e,t),v.init(e,t)});function ke(e){return ci($t,e)}var qe=d("ZodMiniNumberFormat",(e,t)=>{Go.init(e,t),$t.init(e,t)});function gh(e){return li(qe,e)}function yh(e){return pi(qe,e)}function _h(e){return fi(qe,e)}function bh(e){return di(qe,e)}function wh(e){return mi(qe,e)}var kt=d("ZodMiniBoolean",(e,t)=>{pt.init(e,t),v.init(e,t)});function Je(e){return hi(kt,e)}var xt=d("ZodMiniBigInt",(e,t)=>{ur.init(e,t),v.init(e,t)});function $h(e){return yi(xt,e)}var aa=d("ZodMiniBigIntFormat",(e,t)=>{Wo.init(e,t),xt.init(e,t)});function kh(e){return bi(aa,e)}function xh(e){return wi(aa,e)}var eu=d("ZodMiniSymbol",(e,t)=>{Vo.init(e,t),v.init(e,t)});function Sh(e){return $i(eu,e)}var tu=d("ZodMiniUndefined",(e,t)=>{Qo.init(e,t),v.init(e,t)});function vh(e){return ki(tu,e)}var ru=d("ZodMiniNull",(e,t)=>{Xo.init(e,t),v.init(e,t)});function nu(e){return xi(ru,e)}var ou=d("ZodMiniAny",(e,t)=>{es.init(e,t),v.init(e,t)});function zh(){return Si(ou)}var su=d("ZodMiniUnknown",(e,t)=>{ts.init(e,t),v.init(e,t)});function $r(){return vi(su)}var iu=d("ZodMiniNever",(e,t)=>{rs.init(e,t),v.init(e,t)});function au(e){return zi(iu,e)}var cu=d("ZodMiniVoid",(e,t)=>{ns.init(e,t),v.init(e,t)});function Th(e){return Ti(cu,e)}var kr=d("ZodMiniDate",(e,t)=>{os.init(e,t),v.init(e,t)});function Ih(e){return Ii(kr,e)}var uu=d("ZodMiniArray",(e,t)=>{ss.init(e,t),v.init(e,t)});function Y(e,t){return new uu({type:"array",element:e,...g(t)})}function Ph(e){let t=e._zod.def.shape;return bu(Object.keys(t))}var xr=d("ZodMiniObject",(e,t)=>{lr.init(e,t),v.init(e,t),S(e,"shape",()=>t.shape)});function I(e,t){let r={type:"object",shape:e??{},...g(t)};return new xr(r)}function Eh(e,t){return new xr({type:"object",shape:e,catchall:au(),...g(t)})}function Ah(e,t){return new xr({type:"object",shape:e,catchall:$r(),...g(t)})}function xe(e,t){return Yt(e,t)}function Rh(e,t){return fn(e,t)}function Ch(e,t){return Yt(e,t)}function Nh(e,t){return ln(e,t)}function Oh(e,t){return pn(e,t)}function Lh(e,t){return dn(la,e,t)}function Zh(e,t){return mn(pa,e,t)}function jh(e,t){return e.clone({...e._zod.def,catchall:t})}var ca=d("ZodMiniUnion",(e,t)=>{ft.init(e,t),v.init(e,t)});function lu(e,t){return new ca({type:"union",options:e,...g(t)})}var pu=d("ZodMiniXor",(e,t)=>{ca.init(e,t),is.init(e,t)});function Dh(e,t){return new pu({type:"union",options:e,inclusive:!1,...g(t)})}var fu=d("ZodMiniDiscriminatedUnion",(e,t)=>{as.init(e,t),v.init(e,t)});function Mh(e,t,r){return new fu({type:"union",options:t,discriminator:e,...g(r)})}var du=d("ZodMiniIntersection",(e,t)=>{cs.init(e,t),v.init(e,t)});function Bh(e,t){return new du({type:"intersection",left:e,right:t})}var mu=d("ZodMiniTuple",(e,t)=>{pr.init(e,t),v.init(e,t)});function hu(e,t,r){let n=t instanceof k,o=n?r:t,s=n?t:null;return new mu({type:"tuple",items:e,rest:s,...g(o)})}var Sr=d("ZodMiniRecord",(e,t)=>{us.init(e,t),v.init(e,t)});function gu(e,t,r){return new Sr({type:"record",keyType:e,valueType:t,...g(r)})}function Uh(e,t,r){let n=J(e);return n._zod.values=void 0,new Sr({type:"record",keyType:n,valueType:t,...g(r)})}function Fh(e,t,r){return new Sr({type:"record",keyType:e,valueType:t,mode:"loose",...g(r)})}var yu=d("ZodMiniMap",(e,t)=>{ls.init(e,t),v.init(e,t)});function Hh(e,t,r){return new yu({type:"map",keyType:e,valueType:t,...g(r)})}var _u=d("ZodMiniSet",(e,t)=>{ps.init(e,t),v.init(e,t)});function qh(e,t){return new _u({type:"set",valueType:e,...g(t)})}var ua=d("ZodMiniEnum",(e,t)=>{fs.init(e,t),v.init(e,t),e.options=Object.values(t.entries)});function bu(e,t){let r=Array.isArray(e)?Object.fromEntries(e.map(n=>[n,n])):e;return new ua({type:"enum",entries:r,...g(t)})}function Jh(e,t){return new ua({type:"enum",entries:e,...g(t)})}var wu=d("ZodMiniLiteral",(e,t)=>{ds.init(e,t),v.init(e,t)});function Kh(e,t){return new wu({type:"literal",values:Array.isArray(e)?e:[e],...g(t)})}var $u=d("ZodMiniFile",(e,t)=>{ms.init(e,t),v.init(e,t)});function Yh(e){return Qi($u,e)}var ku=d("ZodMiniTransform",(e,t)=>{hs.init(e,t),v.init(e,t)});function Gh(e){return new ku({type:"transform",transform:e})}var la=d("ZodMiniOptional",(e,t)=>{fr.init(e,t),v.init(e,t)});function w(e){return new la({type:"optional",innerType:e})}var xu=d("ZodMiniExactOptional",(e,t)=>{gs.init(e,t),v.init(e,t)});function Wh(e){return new xu({type:"optional",innerType:e})}var Su=d("ZodMiniNullable",(e,t)=>{ys.init(e,t),v.init(e,t)});function vr(e){return new Su({type:"nullable",innerType:e})}function Vh(e){return w(vr(e))}var vu=d("ZodMiniDefault",(e,t)=>{_s.init(e,t),v.init(e,t)});function Qh(e,t){return new vu({type:"default",innerType:e,get defaultValue(){return typeof t=="function"?t():je(t)}})}var zu=d("ZodMiniPrefault",(e,t)=>{bs.init(e,t),v.init(e,t)});function Xh(e,t){return new zu({type:"prefault",innerType:e,get defaultValue(){return typeof t=="function"?t():je(t)}})}var pa=d("ZodMiniNonOptional",(e,t)=>{ws.init(e,t),v.init(e,t)});function eg(e,t){return new pa({type:"nonoptional",innerType:e,...g(t)})}var Tu=d("ZodMiniSuccess",(e,t)=>{$s.init(e,t),v.init(e,t)});function tg(e){return new Tu({type:"success",innerType:e})}var Iu=d("ZodMiniCatch",(e,t)=>{ks.init(e,t),v.init(e,t)});function rg(e,t){return new Iu({type:"catch",innerType:e,catchValue:typeof t=="function"?t:()=>t})}var Pu=d("ZodMiniNaN",(e,t)=>{xs.init(e,t),v.init(e,t)});function ng(e){return Ei(Pu,e)}var fa=d("ZodMiniPipe",(e,t)=>{Ss.init(e,t),v.init(e,t)});function og(e,t){return new fa({type:"pipe",in:e,out:t})}var da=d("ZodMiniCodec",(e,t)=>{fa.init(e,t),dt.init(e,t)});function sg(e,t,r){return new da({type:"pipe",in:e,out:t,transform:r.decode,reverseTransform:r.encode})}var Eu=d("ZodMiniReadonly",(e,t)=>{vs.init(e,t),v.init(e,t)});function ig(e){return new Eu({type:"readonly",innerType:e})}var Au=d("ZodMiniTemplateLiteral",(e,t)=>{zs.init(e,t),v.init(e,t)});function ag(e,t){return new Au({type:"template_literal",parts:e,...g(t)})}var Ru=d("ZodMiniLazy",(e,t)=>{Ps.init(e,t),v.init(e,t)});function Cu(e){return new Ru({type:"lazy",getter:e})}var Nu=d("ZodMiniPromise",(e,t)=>{Is.init(e,t),v.init(e,t)});function cg(e){return new Nu({type:"promise",innerType:e})}var ma=d("ZodMiniCustom",(e,t)=>{Es.init(e,t),v.init(e,t)});function ug(e,t){let r=new A({check:"custom",...g(t)});return r._zod.check=e,r}function Ou(e,t){return Xi(ma,e??(()=>!0),t)}function lg(e,t={}){return ea(ma,e,t)}function pg(e){return ta(e)}var fg=ra,dg=na;function mg(e,t={}){let r=Ou(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 hg=(...e)=>oa({Codec:da,Boolean:kt,String:He},...e);function gg(){let e=Cu(()=>lu([b(),ke(),Je(),nu(),Y(e),gu(b(),e)]));return e}var Lu=d("ZodMiniFunction",(e,t)=>{Ts.init(e,t),v.init(e,t)});function yg(e){return new Lu({type:"function",input:Array.isArray(e?.input)?hu(e?.input):e?.input??Y($r()),output:e?.output??$r()})}var ha={};ve(ha,{ZodMiniISODate:()=>Tr,ZodMiniISODateTime:()=>zr,ZodMiniISODuration:()=>Pr,ZodMiniISOTime:()=>Ir,date:()=>bg,datetime:()=>_g,duration:()=>$g,time:()=>wg});var zr=d("ZodMiniISODateTime",(e,t)=>{No.init(e,t),R.init(e,t)});function _g(e){return oi(zr,e)}var Tr=d("ZodMiniISODate",(e,t)=>{Oo.init(e,t),R.init(e,t)});function bg(e){return si(Tr,e)}var Ir=d("ZodMiniISOTime",(e,t)=>{Lo.init(e,t),R.init(e,t)});function wg(e){return ii(Ir,e)}var Pr=d("ZodMiniISODuration",(e,t)=>{Zo.init(e,t),R.init(e,t)});function $g(e){return ai(Pr,e)}var ga={};ve(ga,{bigint:()=>vg,boolean:()=>Sg,date:()=>zg,number:()=>xg,string:()=>kg});function kg(e){return Ns(He,e)}function xg(e){return ui($t,e)}function Sg(e){return gi(kt,e)}function vg(e){return _i(xt,e)}function zg(e){return Pi(kr,e)}var X=b().check(yt(1)),Tg=b().check(_t(/^https?:\/\/.+/)),Ke=I({CLANCY_BASE_BRANCH:w(b()),CLANCY_LABEL:w(b()),CLANCY_MODEL:w(b()),CLANCY_NOTIFY_WEBHOOK:w(b()),CLANCY_STATUS_IN_PROGRESS:w(b()),CLANCY_STATUS_DONE:w(b()),CLANCY_STATUS_REVIEW:w(b()),MAX_ITERATIONS:w(b()),PLAYWRIGHT_ENABLED:w(b()),PLAYWRIGHT_DEV_PORT:w(b()),CLANCY_ROLES:w(b()),CLANCY_PLAN_STATUS:w(b()),CLANCY_PLAN_LABEL:w(b()),CLANCY_PLAN_STATE_TYPE:w(b()),CLANCY_STATUS_PLANNED:w(b()),CLANCY_SKIP_COMMENTS:w(b()),GITHUB_TOKEN:w(b()),GITLAB_TOKEN:w(b()),BITBUCKET_USER:w(b()),BITBUCKET_TOKEN:w(b()),CLANCY_GIT_PLATFORM:w(b()),CLANCY_GIT_API_URL:w(b()),CLANCY_MAX_REWORK:w(b()),CLANCY_TDD:w(b()),CLANCY_MODE:w(b()),CLANCY_BRIEF_ISSUE_TYPE:w(b()),CLANCY_BRIEF_EPIC:w(b()),CLANCY_COMPONENT:w(b()),CLANCY_FIX_RETRIES:w(b()),CLANCY_VERIFY_COMMANDS:w(b()),CLANCY_TOKEN_RATE:w(b()),CLANCY_TIME_LIMIT:w(b()),CLANCY_BRANCH_GUARD:w(b()),CLANCY_LABEL_BRIEF:w(b()),CLANCY_LABEL_PLAN:w(b()),CLANCY_LABEL_BUILD:w(b())}),ju=xe(Ke,{JIRA_BASE_URL:Tg,JIRA_USER:X,JIRA_API_TOKEN:X,JIRA_PROJECT_KEY:X,CLANCY_JQL_STATUS:w(b()),CLANCY_JQL_SPRINT:w(b())}),Du=xe(Ke,{GITHUB_TOKEN:X,GITHUB_REPO:X}),Mu=xe(Ke,{LINEAR_API_KEY:X,LINEAR_TEAM_ID:X}),Bu=xe(Ke,{SHORTCUT_API_TOKEN:X,SHORTCUT_WORKFLOW:w(b())}),Uu=xe(Ke,{NOTION_TOKEN:X,NOTION_DATABASE_ID:X,CLANCY_NOTION_STATUS:w(b()),CLANCY_NOTION_TODO:w(b()),CLANCY_NOTION_ASSIGNEE:w(b()),CLANCY_NOTION_LABELS:w(b()),CLANCY_NOTION_PARENT:w(b())}),Fu=xe(Ke,{AZDO_ORG:X,AZDO_PROJECT:X,AZDO_PAT:X,CLANCY_AZDO_STATUS:w(b()),CLANCY_AZDO_WIT:w(b())});function Er(e){if(e.JIRA_BASE_URL){let t=ju.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=Du.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=Mu.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=Bu.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=Uu.safeParse(e);return t.success?{provider:"notion",env:t.data}:`\u2717 Notion env validation failed: ${t.error.message}`}if(e.AZDO_ORG){let t=Fu.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 D(e){return e.env}import{appendFileSync as Hu,mkdirSync as Ig,readFileSync as Pg}from"node:fs";import{dirname as Eg,join as qu}from"node:path";function Ag(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 C(e,t,r,n,o,s){let i=qu(e,".clancy","progress.txt");Ig(Eg(i),{recursive:!0});let a=Ag(new Date);if(n==="BRIEF"||n==="APPROVE_BRIEF"){let f=`${a} | ${n} | ${t} | ${r}
42
+ `;Hu(i,f,"utf8");return}let u=o!=null?` | pr:${o}`:"",l=s?` | parent:${s}`:"",p=`${a} | ${t} | ${r} | ${n}${u}${l}
43
+ `;Hu(i,p,"utf8")}function _a(e){let t=qu(e,".clancy","progress.txt"),r;try{r=Pg(t,"utf8")}catch{return[]}let n=[];for(let o of r.split(`
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 y=i[h],_=y.match(/^pr:(\d+)$/),x=y.match(/^parent:(.+)$/);_?p=parseInt(_[1],10):x?f=x[1]:h>=3&&!l&&y===y.toUpperCase()&&y.length>1?l=y:m.push(y)}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 Ju(e,t){let r=_a(e),n=t.toLowerCase(),o;for(let s of r)s.key.toLowerCase()===n&&(o=s);return o}function Ku(e,t){let r=_a(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=_a(e),n=new Map;for(let o of r)n.set(o.key,o);return[...n.values()].filter(o=>o.status===t)}function ba(e){return e.startsWith("epic/")||e.startsWith("milestone/")}function Ye(e,t,r,n,o,s){let i=[],a=r?ba(r):!1;if(s&&a){i.push(`## Part of epic ${s.parentKey}`);let u=s.siblingsDelivered,l=u===0?"No siblings delivered yet":`${u} sibling${u===1?"":"s"} previously delivered to \`${s.epicBranch}\``;i.push(l),i.push(""),i.push(`> This PR targets \`${s.epicBranch}\`. A final epic PR will be created when all children are complete.`),i.push("")}switch(e.provider){case"github":i.push(a?`Part of ${t.key}`:`Closes ${t.key}`),o&&!a&&i.push(`Closes ${o}`);break;case"jira":i.push(`**Jira:** [${t.key}](${e.env.JIRA_BASE_URL}/browse/${t.key})`);break;case"linear":i.push(`**Linear:** ${t.key}`);break}return i.push(""),t.description&&(i.push("## Description"),i.push(""),i.push(t.description),i.push("")),n&&(i.push("## \u26A0 Verification Warning"),i.push(""),i.push(n),i.push(""),i.push("This PR may need manual fixes before merging."),i.push("")),i.push("---"),i.push("*Created by [Clancy](https://github.com/Pushedskydiver/clancy)*"),i.push(""),i.push("---"),i.push("<details>"),i.push("<summary><strong>Rework instructions</strong> (click to expand)</summary>"),i.push(""),i.push("To request changes:"),i.push("- **Code comments** \u2014 leave inline comments on specific lines. These are always picked up automatically."),i.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."),i.push(""),i.push("Example: `Rework: The form validation doesn't handle empty passwords`"),i.push(""),i.push("</details>"),i.join(`
45
+ `)}function Yu(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 Rg}from"node:child_process";function Gu(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 Cg(e){let t=Gu(e);if(!t)return{host:"unknown",url:e};let{hostname:r,path:n}=t;switch(Ng(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 Ng(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=Rg("git",["remote","get-url","origin"],{encoding:"utf8"}).trim()}catch{return{host:"none"}}return t?e?Og(t,e):Cg(t):{host:"none"}}function Og(e,t){let r=Gu(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 vt=new Set(["PR_CREATED","PUSHED","REWORK","RESUMED"]);function wa(e){return e.CLANCY_LABEL_BUILD||e.CLANCY_LABEL||void 0}function Lg(e){return e.CLANCY_LABEL_PLAN||e.CLANCY_PLAN_LABEL||void 0}function Zg(e){return e?.isAfk??process.env.CLANCY_AFK_MODE==="1"}async function Wu(e,t){let r=Zg(t),n=e.sharedEnv(),o=wa(n),s=Lg(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`)}}var jg=I({id:ke(),links:I({html:w(I({href:w(b())}))}),participants:Y(I({state:w(b()),role:b()}))}),Vu=I({values:Y(jg)}),Dg=I({content:I({raw:b()}),inline:w(I({path:w(b())})),created_on:b(),user:w(I({nickname:w(b())}))}),$a=I({values:Y(Dg)}),Mg=I({id:ke(),links:I({self:w(Y(I({href:w(b())})))}),reviewers:Y(I({status:b()}))}),Qu=I({values:Y(Mg)}),Bg=I({text:b(),anchor:w(I({path:w(b())})),createdDate:ke(),author:w(I({slug:w(b())}))}),Ug=I({action:b(),comment:w(Bg)}),ka=I({values:Y(Ug)});async function Ee(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 Ae(e){return e.trim().replace(/^rework:\s*/i,"").trim()}async function Xu(e,t,r,n,o,s,i,a){return Ee(`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 el(e,t,r,n,o,s,i,a){return Ee(`${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 tl(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 rl(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 nl(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=Vu.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=$a.parse(await m.json()),y=s?h.values.filter(B=>B.created_on>s):h.values,_=y.some(B=>B.inline!=null),x=y.some(B=>B.inline==null&&ie(B.content.raw));return{changesRequested:_||x,prNumber:l.id,prUrl:p}}catch{return}}async function ol(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=$a.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(Ae(f.content.raw));return p}catch{return[]}}async function sl(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=Qu.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=ka.parse(await m.json()),y=s?Date.parse(s):void 0,_=h.values.filter(N=>N.action==="COMMENTED"&&N.comment&&(y==null||N.comment.createdDate>y)),x=_.some(N=>N.comment.anchor!=null),P=_.some(N=>N.comment.anchor==null&&ie(N.comment.text));return{changesRequested:x||P,prNumber:l.id,prUrl:p}}catch{return}}async function il(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=ka.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(Ae(m.text))}return p}catch{return[]}}var Fg=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())})))}),al=c.array(Fg),Hg=c.object({id:c.number(),body:c.optional(c.nullable(c.string())),created_at:c.string(),user:c.optional(c.object({login:c.string()}))}),xa=c.array(Hg),qg=c.object({number:c.number(),html_url:c.string(),state:c.string()}),cl=c.array(qg),Jg=c.object({state:c.string(),user:c.object({login:c.string()}),submitted_at:c.string()}),ul=c.array(Jg),Kg=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()}))}),Sa=c.array(Kg);var M="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 H(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 Rr(e){return e?.trimStart().startsWith("[clancy]")??!1}async function ll(e,t,r,n,o=M,s){try{let i=H(e),a=await fetch(`${o}/repos/${t}/pulls?head=${n}:${r}&state=open`,{headers:i});if(!a.ok)return;let u=cl.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=Sa.parse(await f.json()),y=xa.parse(await m.json()),_=h.filter(L=>!Rr(L.body)),x=y.filter(L=>!Rr(L.body)),P=_.length>0,B=x.some(L=>L.body&&ie(L.body)),N=P||B,U;if(!N)try{let L=await fetch(`${o}/repos/${t}/pulls/${l.number}/reviews?per_page=100`,{headers:i});if(L.ok){let Fa=ul.parse(await L.json()),Dt=new Map;for(let le of Fa)le.state==="PENDING"||le.state==="DISMISSED"||Dt.set(le.user.login,le.state);let Ha=[...Dt.entries()].filter(([,le])=>le==="CHANGES_REQUESTED");Ha.length>0&&(N=!0,U=Ha.map(([le])=>le))}}catch{}return{changesRequested:N,prNumber:l.number,prUrl:l.html_url,reviewers:U}}catch{return}}async function pl(e,t,r,n=M,o){try{let s=H(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=Sa.parse(await a.json()),p=xa.parse(await u.json()),f=l.filter(y=>!Rr(y.body)),m=p.filter(y=>!Rr(y.body)),h=[];for(let y of f){if(!y.body)continue;let _=y.path?`[${y.path}] `:"";h.push(`${_}${y.body}`)}for(let y of m)y.body&&ie(y.body)&&h.push(Ae(y.body));return h}catch{return[]}}async function fl(e,t,r,n,o=M){try{return(await fetch(`${o}/repos/${t}/issues/${r}/comments`,{method:"POST",headers:{...H(e),"Content-Type":"application/json"},body:JSON.stringify({body:n})})).ok}catch{return!1}}async function dl(e,t,r,n,o=M){try{return(await fetch(`${o}/repos/${t}/pulls/${r}/requested_reviewers`,{method:"POST",headers:{...H(e),"Content-Type":"application/json"},body:JSON.stringify({reviewers:n})})).ok}catch{return!1}}async function ml(e,t,r,n,o,s,i=M){return Ee(`${i}/repos/${t}/pulls`,H(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 Yg=I({iid:ke(),web_url:b(),detailed_merge_status:w(b())}),hl=Y(Yg),Gg=I({body:b(),resolvable:Je(),resolved:w(Je()),system:Je(),type:w(vr(b())),created_at:w(b()),position:w(I({new_path:w(b())})),author:w(I({username:b()}))}),Wg=I({id:w(b()),notes:Y(Gg)}),va=Y(Wg);async function gl(e,t,r,n,o,s,i){let a=encodeURIComponent(r);return Ee(`${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 yl(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 _l(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 bl(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=hl.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=va.parse(await f.json()),h=!1;for(let y of m){for(let _ of y.notes)if(!_.system&&!(o&&_.created_at&&_.created_at<=o)){if(_.type==="DiffNote"&&_.resolvable!==!1&&_.resolved!==!0){h=!0;break}if(ie(_.body)){h=!0;break}}if(h)break}return{changesRequested:h,prNumber:l.iid,prUrl:l.web_url}}catch{return}}async function wl(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=va.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 y=h.position?.new_path?`[${h.position.new_path}] `:"";l.push(`${y}${h.body}`),m=!0}else ie(h.body)&&(l.push(Ae(h.body)),m=!0);m&&f.id&&p.push(f.id)}return{comments:l,discussionIds:p}}catch{return{comments:[],discussionIds:[]}}}function zt(e,t){let r=D(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=zt(e,t);if(!i)return;let a=St(t,D(e).CLANCY_GIT_API_URL);if(a)switch(t.host){case"github":return ml(i.token,`${t.owner}/${t.repo}`,r,n,o,s,a);case"gitlab":return gl(i.token,a,t.projectPath,r,n,o,s);case"bitbucket":return Xu(i.username,i.token,t.workspace,t.repoSlug,r,n,o,s);case"bitbucket-server":return el(i.token,a,t.projectKey,t.repoSlug,r,n,o,s);default:return}}function Cr(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 za(e,t){let r=Ja(e),n=Xe(e);if(r)return Bt(e)?!0:(console.log(z(`\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(z(" 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($l("git",["fetch","origin",t],{encoding:"utf8",stdio:["pipe","pipe","pipe"],timeout:15e3}),$l("git",["checkout","-b",e,`origin/${t}`],{encoding:"utf8"}),et(e))console.log(O(` \u2713 Created epic branch ${e}`));else return console.log(z(`\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 Ta(e,t,r,n,o,s=!1,i,a,u){if(!et(r)){console.log(z(`\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||C(process.cwd(),t.key,t.title,"PUSH_FAILED",void 0,i),Z(n);let x=Ce(Date.now()-o);return console.log(""),console.log(z(`\u26A0 ${t.key} implemented but push failed`)+$(` (${x})`)),!1}console.log(O(` \u2713 Pushed ${r}`));let p;try{let x=Qg(process.cwd(),".clancy","verify-attempt.txt"),P=Vg(x,"utf8").trim(),B=parseInt(P,10);B>0&&(p=`Verification checks did not fully pass (${B} attempt(s)). Review carefully.`)}catch{}let f=D(e).CLANCY_GIT_PLATFORM,m=ce(f),h=`feat(${t.key}): ${t.title}`,y;if(i&&ba(n)){let x=[...vt].flatMap(P=>j(process.cwd(),P)).filter(P=>P.parent===i&&P.key!==t.key);y={parentKey:i,siblingsDelivered:x.length,epicBranch:n}}let _=Ye(e,{key:t.key,title:t.title,description:t.description,provider:e.provider},n,p,u,y);if(m.host!=="none"&&m.host!=="unknown"&&m.host!=="azure"){let x=await Re(e,m,r,n,h,_);if(x?.ok)console.log(O(` \u2713 PR created: ${x.url}`)),s||C(process.cwd(),t.key,t.title,"PR_CREATED",x.number,i);else if(x&&!x.ok&&x.alreadyExists)console.log(z(` \u26A0 A PR/MR already exists for ${r}. Branch pushed.`)),s||C(process.cwd(),t.key,t.title,"PUSHED",void 0,i);else if(x&&!x.ok){console.log(z(` \u26A0 PR/MR creation failed: ${x.error}`));let P=Cr(m,r,n);console.log(P?$(` Create one manually: ${P}`):$(" Branch pushed \u2014 create a PR/MR manually.")),s||C(process.cwd(),t.key,t.title,"PUSHED",void 0,i)}else{let P=Cr(m,r,n);console.log(P?$(` Create a PR: ${P}`):$(" Branch pushed to remote. Create a PR/MR manually.")),s||C(process.cwd(),t.key,t.title,"PUSHED",void 0,i)}}else m.host==="none"?(console.log(z(`\u26A0 No git remote configured. Branch available locally: ${r}`)),s||C(process.cwd(),t.key,t.title,"LOCAL",void 0,i)):(console.log($(" Branch pushed to remote. Create a PR/MR manually.")),s||C(process.cwd(),t.key,t.title,"PUSHED",void 0,i));if(e.provider!=="github"&&a){let x=e.env.CLANCY_STATUS_REVIEW??e.env.CLANCY_STATUS_DONE;x&&await a.transitionTicket(t,x)}return Z(n),!0}async function kl(e,t,r,n,o,s){console.log(""),console.log(O(`\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(P=>P.parent===t),f=D(e).CLANCY_GIT_PLATFORM,m=ce(f),h=`feat(${t}): ${r}`,y=Yu(t,r,p,e.provider);if(m.host==="none"||m.host==="unknown"||m.host==="azure")return console.log(z("\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 _=await Re(e,m,n,o,h,y);if(_?.ok){if(console.log(O(` \u2713 Epic PR created: ${_.url}`)),C(process.cwd(),t,r,"EPIC_PR_CREATED",_.number),e.provider==="github"&&s){let P=wa(e.env);P&&(await s.addLabel(t,P),console.log($(` Requested ${P} on ${t} (best-effort)`)))}else if(s){let P=e.env.CLANCY_STATUS_REVIEW??e.env.CLANCY_STATUS_DONE;P&&await s.transitionTicket({key:t,title:r,description:"",parentInfo:"none",blockers:"None"},P)}return!0}if(_&&!_.ok&&_.alreadyExists)return console.log(z(` \u26A0 An epic PR already exists for ${n}.`)),C(process.cwd(),t,r,"EPIC_PR_CREATED"),!0;console.log(z(`\u26A0 Epic PR creation failed: ${_?.error??"unknown error"}`)),console.log($(" Create it manually:")),console.log($(` Branch: ${n} \u2192 ${o}`));let x=Cr(m,n,o);return x&&console.log($(` ${x}`)),!1}async function xl(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=qa();let u=!1;if(i&&!a){let p=await t.fetchChildrenStatus(r.parentInfo,r.linearIssueId,r.key);p&&p.total===1&&(u=!0)}e.skipEpicBranch=u;let l=i&&!u?o:s;if(e.effectiveTarget=l,a){if(i&&!u){if(!za(o,s))return e.originalBranch&&Z(e.originalBranch),!1}else Wr(l,s);Bt(n)?Z(n):(Z(l),Z(n,!0))}else if(i&&!u){if(!za(o,s))return e.originalBranch&&Z(e.originalBranch),!1;Z(o),Z(n,!0)}else Wr(s,s),Z(s),Z(n,!0);try{Wa(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 Xg(e){return e.includes("hooks.slack.com")}function ey(e){return JSON.stringify({text:e})}function ty(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 Sl(e,t){let r=Xg(e)?ey(t):ty(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 vl(e){let t=e.config,r=e.ticket,n=Ce(Date.now()-e.startTime);console.log(""),console.log(O(`\u{1F3C1} ${r.key} complete`)+$(` (${n})`)),console.log($(` "Bake 'em away, toys."`));let o=t.env.CLANCY_NOTIFY_WEBHOOK;return o&&await Sl(o,`\u2713 Clancy completed [${r.key}] ${r.title}`),!0}import{appendFileSync as ry,mkdirSync as ny}from"node:fs";import{dirname as oy,join as sy}from"node:path";function zl(e,t,r,n=6600){let o=sy(e,".clancy","costs.log");ny(oy(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
+ `;ry(o,f,"utf8")}function Tl(e){let t=e.config,r=e.ticket;try{let n=Ft(e.cwd);if(n){let o=Number(t.env.CLANCY_TOKEN_RATE??"6600");zl(e.cwd,r.key,n.startedAt,Number.isFinite(o)&&o>0?o:6600)}}catch{}return!0}import{mkdirSync as iy,readFileSync as ay,renameSync as cy,writeFileSync as uy}from"node:fs";import{join as Il}from"node:path";function Pl(e){return Il(e,".clancy","quality.json")}function El(e){try{let t=ay(Pl(e),"utf8"),r=JSON.parse(t);if(r&&typeof r.tickets=="object"&&r.tickets!==null&&!Array.isArray(r.tickets))return Ia(r),r}catch{}return{tickets:{},summary:{totalTickets:0,avgReworkCycles:0,avgVerificationRetries:0,avgDuration:0}}}function Ia(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 Al(e,t){let r=Pl(e),n=r+".tmp";iy(Il(e,".clancy"),{recursive:!0}),uy(n,JSON.stringify(t,null,2)+`
48
+ `,"utf8"),cy(n,r)}function Rl(e,t){return e.tickets[t]||(e.tickets[t]={reworkCycles:0,verificationRetries:0}),e.tickets[t]}function Cl(e,t){try{let r=El(e),n=Rl(r,t);n.reworkCycles++,Ia(r),Al(e,r)}catch{}}function Nl(e,t,r){try{let n=El(e),o=Rl(n,t);o.deliveredAt=new Date().toISOString(),o.duration=r,Ia(n),Al(e,n)}catch{}}function We(e,t){return e==="github"?`feature/issue-${t.replace("#","")}`:`feature/${t.toLowerCase()}`}function Ve(e,t,r){if(!r)return t;if(e==="github"){let n=r.match(/^#(\d+)$/);return n?`epic/${n[1]}`:`milestone/${r.toLowerCase().replace(/\s+/g,"-").replace(/[^a-z0-9-]/g,"")}`}return`epic/${r.toLowerCase()}`}async function Ol(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=D(e).CLANCY_GIT_PLATFORM,a=ce(i);if(a.host==="none"||a.host==="unknown"||a.host==="azure")return;let u=zt(e,a);if(!u)return;let l=St(a,D(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 _=new Date(f.timestamp.replace(" ","T")+"Z");h=Number.isNaN(_.getTime())?void 0:_.toISOString()}let y;switch(a.host){case"github":y=await ll(u.token,`${a.owner}/${a.repo}`,m,a.owner,l,h);break;case"gitlab":y=await bl(u.token,l,a.projectPath,m,h);break;case"bitbucket":y=await nl(u.username,u.token,a.workspace,a.repoSlug,m,h);break;case"bitbucket-server":y=await sl(u.token,l,a.projectKey,a.repoSlug,m,h);break}if(y?.changesRequested){let _=[],x;switch(a.host){case"github":_=await pl(u.token,`${a.owner}/${a.repo}`,y.prNumber,l,h);break;case"gitlab":{let B=await wl(u.token,l,a.projectPath,y.prNumber,h);_=B.comments,x=B.discussionIds;break}case"bitbucket":_=await ol(u.username,u.token,a.workspace,a.repoSlug,y.prNumber,h);break;case"bitbucket-server":_=await il(u.token,l,a.projectKey,a.repoSlug,y.prNumber,h);break}return{ticket:{key:f.key,title:f.summary,description:f.summary,parentInfo:f.parent??"none",blockers:"None"},feedback:_,prNumber:y.prNumber,discussionIds:x,reviewers:y.reviewers??[]}}}}function ly(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 Cl(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=ay(r);try{let p=!1;switch(i.host){case"github":p=await ul(a.token,`${i.owner}/${i.repo}`,t,l,u);break;case"gitlab":p=await ml(a.token,u,i.projectPath,t,l);break;case"bitbucket":p=await Qu(a.username,a.token,i.workspace,i.repoSlug,t,l);break;case"bitbucket-server":p=await Xu(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 hl(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 ll(a.token,`${i.owner}/${i.repo}`,t,o,u)&&console.log($(` \u2713 Re-requested review from ${o.join(", ")}`))}catch{}}async function Nl(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 Sa(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),El(e.cwd,r.key),e.reworkPrNumber!=null&&await Cl(t,e.reworkPrNumber,e.prFeedback??[],e.reworkDiscussionIds,e.reworkReviewers)}else{if(!await Sa(t,r,n,o,e.startTime,!1,u,e.board,f))return!1;Al(e.cwd,r.key,Date.now()-e.startTime)}return!0}function Ol(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 Ll(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 bl(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:
52
+ ${r}${n}`}async function Ll(e,t,r,n,o){let s=D(e).CLANCY_GIT_PLATFORM,i=ce(s);if(i.host==="none"||i.host==="unknown"||i.host==="azure")return;let a=zt(e,i);if(!a)return;let u=St(i,D(e).CLANCY_GIT_API_URL);if(!u)return;let l=ly(r);try{let p=!1;switch(i.host){case"github":p=await fl(a.token,`${i.owner}/${i.repo}`,t,l,u);break;case"gitlab":p=await yl(a.token,u,i.projectPath,t,l);break;case"bitbucket":p=await tl(a.username,a.token,i.workspace,i.repoSlug,t,l);break;case"bitbucket-server":p=await rl(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 _l(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 dl(a.token,`${i.owner}/${i.repo}`,t,o,u)&&console.log($(` \u2713 Re-requested review from ${o.join(", ")}`))}catch{}}async function Zl(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 Ta(t,r,n,o,e.startTime,!0,u,e.board))return C(e.cwd,r.key,r.title,"PUSH_FAILED",void 0,u),!1;C(e.cwd,r.key,r.title,"REWORK",e.reworkPrNumber,u),Cl(e.cwd,r.key),e.reworkPrNumber!=null&&await Ll(t,e.reworkPrNumber,e.prFeedback??[],e.reworkDiscussionIds,e.reworkReviewers)}else{if(!await Ta(t,r,n,o,e.startTime,!1,u,e.board,f))return!1;Nl(e.cwd,r.key,Date.now()-e.startTime)}return!0}function jl(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(z("\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(z("\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 Dl(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 kl(t,p,p,m,l,r);console.log(h?O(` \u2713 Epic ${p} complete \u2014 PR created`):z(`\u26A0 Epic PR creation failed for ${p}. Create manually:
53
53
  git push origin ${m}
54
- Then create a PR targeting ${l}`))}}}catch{}return!0}import{spawnSync as Zl}from"node:child_process";function jl(e,t){let r=["-p","--dangerously-skip-permissions"];t&&r.push("--model",t);let n=Zl("claude",r,{input:e,stdio:["pipe","pipe","pipe"],encoding:"utf8"});return{stdout:n.stdout??"",ok:n.status===0&&!n.error}}function Dl(e,t){let r=["--dangerously-skip-permissions"];t&&r.push("--model",t);let n=Zl("claude",r,{input:e,stdio:["pipe","inherit","inherit"],encoding:"utf8"});return n.status===0&&!n.error}function cy(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
- `)}function uy(e){let t=e.trim().split(`
56
- `).pop()?.trim()??"";return/^INFEASIBLE/i.test(t)?{feasible:!1,reason:t.replace(/^INFEASIBLE:?\s*/i,"").trim()||void 0}:{feasible:!0}}function Ml(e,t){let r=cy(e),{stdout:n,ok:o}=jl(r,t);return o?uy(n):{feasible:!0}}function Bl(e){let t=e.config,r=e.ticket;if(!e.isRework&&!e.skipFeasibility){console.log($(" Checking feasibility..."));let n=Ml({key:r.key,title:r.title,description:r.description},t.env.CLANCY_MODEL);if(!n.feasible){let o=n.reason??"not implementable as code changes";return console.log(v(`\u23ED\uFE0F Ticket skipped [${r.key}]: ${o}`)),R(e.cwd,r.key,r.title,"SKIPPED"),!1}console.log(N(" \u2713 Feasibility check passed"))}return console.log(""),!0}var Ul=`
54
+ Then create a PR targeting ${l}`))}}}catch{}return!0}import{spawnSync as Ml}from"node:child_process";function Bl(e,t){let r=["-p","--dangerously-skip-permissions"];t&&r.push("--model",t);let n=Ml("claude",r,{input:e,stdio:["pipe","pipe","pipe"],encoding:"utf8"});return{stdout:n.stdout??"",ok:n.status===0&&!n.error}}function Ul(e,t){let r=["--dangerously-skip-permissions"];t&&r.push("--model",t);let n=Ml("claude",r,{input:e,stdio:["pipe","inherit","inherit"],encoding:"utf8"});return n.status===0&&!n.error}function py(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
+ `)}function fy(e){let t=e.trim().split(`
56
+ `).pop()?.trim()??"";return/^INFEASIBLE/i.test(t)?{feasible:!1,reason:t.replace(/^INFEASIBLE:?\s*/i,"").trim()||void 0}:{feasible:!0}}function Fl(e,t){let r=py(e),{stdout:n,ok:o}=Bl(r,t);return o?fy(n):{feasible:!0}}function Hl(e){let t=e.config,r=e.ticket;if(!e.isRework&&!e.skipFeasibility){console.log($(" Checking feasibility..."));let n=Fl({key:r.key,title:r.title,description:r.description},t.env.CLANCY_MODEL);if(!n.feasible){let o=n.reason??"not implementable as code changes";return console.log(z(`\u23ED\uFE0F Ticket skipped [${r.key}]: ${o}`)),C(e.cwd,r.key,r.title,"SKIPPED"),!1}console.log(O(" \u2713 Feasibility check passed"))}return console.log(""),!0}var ql=`
57
57
  ## Test-Driven Development
58
58
 
59
59
  You MUST follow the red-green-refactor cycle for every behaviour change:
@@ -67,7 +67,7 @@ You MUST follow the red-green-refactor cycle for every behaviour change:
67
67
 
68
68
  Repeat for each behaviour. Do not write implementation code without a failing test first.
69
69
  Design interfaces for testability \u2014 prefer pure functions and thin boundaries
70
- so modules are easy to test in isolation.`;function ly(e){switch(e){case"jira":return"Jira ticket";case"github":return"GitHub Issue";case"linear":return"Linear issue";case"shortcut":return"Shortcut story";case"notion":return"Notion page";case"azdo":return"Azure DevOps work item"}}function py(e){return e==="github"?"Milestone":e==="notion"?"Parent page":"Epic"}function Fl(e){let t=e.feedbackComments.length>0?e.feedbackComments.map((n,o)=>`${o+1}. ${n}`).join(`
70
+ so modules are easy to test in isolation.`;function dy(e){switch(e){case"jira":return"Jira ticket";case"github":return"GitHub Issue";case"linear":return"Linear issue";case"shortcut":return"Shortcut story";case"notion":return"Notion page";case"azdo":return"Azure DevOps work item"}}function my(e){return e==="github"?"Milestone":e==="notion"?"Parent page":"Epic"}function Jl(e){let t=e.feedbackComments.length>0?e.feedbackComments.map((n,o)=>`${o+1}. ${n}`).join(`
71
71
  `):"No reviewer comments found. Review the existing implementation and fix any issues.",r=e.previousContext?`
72
72
 
73
73
  ## Previous Implementation
@@ -83,7 +83,7 @@ ${e.description}
83
83
 
84
84
  ${t}${r}
85
85
 
86
- Address the specific feedback above. Don't re-implement unrelated areas. Focus only on what was flagged.${e.tdd?Ul:""}
86
+ Address the specific feedback above. Don't re-implement unrelated areas. Focus only on what was flagged.${e.tdd?ql:""}
87
87
 
88
88
  Steps:
89
89
  1. Read core docs in .clancy/docs/: STACK.md, ARCHITECTURE.md, CONVENTIONS.md, GIT.md, DEFINITION-OF-DONE.md, CONCERNS.md
@@ -91,7 +91,7 @@ Steps:
91
91
  2. Follow the conventions in GIT.md exactly
92
92
  3. Fix the issues identified in the reviewer feedback
93
93
  4. Commit your work following the conventions in GIT.md
94
- 5. When done, confirm you are finished.`}function Hl(e){let t=ly(e.provider),r=py(e.provider),n=e.blockers&&e.provider!=="github"?`
94
+ 5. When done, confirm you are finished.`}function Kl(e){let t=dy(e.provider),r=my(e.provider),n=e.blockers&&e.provider!=="github"?`
95
95
  Blockers: ${e.blockers}`:"";return`You are implementing ${t} ${e.key}.
96
96
 
97
97
  ${e.provider==="github"?"Title":"Summary"}: ${e.title}
@@ -111,15 +111,15 @@ If you must SKIP this ${e.provider==="github"?"issue":"ticket"}:
111
111
  3. Append to .clancy/progress.txt: YYYY-MM-DD HH:MM | ${e.key} | {reason} | SKIPPED
112
112
  4. Stop \u2014 no branches, no file changes, no git operations.
113
113
 
114
- If the ${e.provider==="github"?"issue":"ticket"} IS implementable, continue:${e.tdd?Ul:""}
114
+ If the ${e.provider==="github"?"issue":"ticket"} IS implementable, continue:${e.tdd?ql:""}
115
115
  1. Read core docs in .clancy/docs/: STACK.md, ARCHITECTURE.md, CONVENTIONS.md, GIT.md, DEFINITION-OF-DONE.md, CONCERNS.md
116
116
  Also read if relevant to this ticket: INTEGRATIONS.md (external APIs/services/auth), TESTING.md (tests/specs/coverage), DESIGN-SYSTEM.md (UI/components/styles), ACCESSIBILITY.md (accessibility/ARIA/WCAG)
117
117
  2. Follow the conventions in GIT.md exactly
118
118
  3. Implement the ${e.provider==="github"?"issue":"ticket"} fully
119
119
  4. Commit your work following the conventions in GIT.md
120
- 5. When done, confirm you are finished.`}function ql(e){let t=e.config,r=e.ticket,n=e.isRework??!1,o=e.targetBranch,s=t.env.CLANCY_TDD==="true",i;n?i=Fl({key:r.key,title:r.title,description:r.description,provider:t.provider,feedbackComments:e.prFeedback??[],previousContext:qa(o),tdd:s}):i=Hl({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=Dl(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 za}from"node:child_process";import{existsSync as fy,readFileSync as dy}from"node:fs";import{join as my}from"node:path";function hy(e){let t={};for(let r of e.split(`
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 Jl(e){let t=my(e,".clancy",".env");if(!fy(t))return;let r=dy(t,"utf8");return hy(r)}function gy(e){try{return za("which",[e],{stdio:"ignore"}),!0}catch{return!1}}function yy(){try{return za("git",["rev-parse","--git-dir"],{stdio:"ignore"}),!0}catch{return!1}}function Cr(e){for(let n of["claude","git"])if(!gy(n))return{ok:!1,error:`\u2717 ${n} is required but not found`};let t=Jl(e);if(!t)return{ok:!1,error:"\u2717 .clancy/.env not found \u2014 run /clancy:init first"};if(!yy())return{ok:!1,error:"\u2717 Not inside a git repository"};let r;try{za("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";var Ta=new Set(["PR_CREATED","PUSHED","REWORK","RESUMED"]);function Kl(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){let s=Hu(process.cwd(),e.ticketKey);return s&&Ta.has(s.status)?{branch:t,hasUncommitted:!1,hasUnpushed:!1,alreadyDelivered:!0}:void 0}return{branch:t,hasUncommitted:n,hasUnpushed:o,alreadyDelivered:!1}}async function Yl(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 Gl(e){let t=Ut(e.cwd);if(!t)return!0;if(!Ga(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=Kl(t);if(r?.alreadyDelivered)return console.log(N(` \u2713 ${t.ticketKey} was already delivered \u2014 skipping.`)),!0;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 Yl(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 Wl(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}`,_=Ye(t,{key:l.key,title:l.summary,description:l.summary,provider:t.provider},m),y=await Re(t,a,f,m,h,_);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 Ia=c.object({id:c.number(),url:c.optional(c.string())}),Vl=c.object({workItems:c.array(Ia)}),_y=c.object({rel:c.string(),url:c.string(),attributes:c.optional(c.object({name:c.optional(c.string())}))}),by=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())}),Pa=c.object({id:c.number(),fields:by,relations:c.optional(c.nullable(c.array(_y)))}),Ql=c.object({value:c.array(Pa),count:c.optional(c.number())}),Xl=c.object({id:c.string(),name:c.string(),state:c.optional(c.string())}),wy=c.object({source:c.optional(c.nullable(Ia)),target:c.optional(c.nullable(Ia))}),ep=c.object({workItemRelations:c.optional(c.array(wy))});var Qe="7.1";function tp(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 Et(e,t){return`https://dev.azure.com/${encodeURIComponent(e)}/${encodeURIComponent(t)}/_apis`}function At(e){return{Authorization:tp(e),"Content-Type":"application/json"}}function $y(e){return{Authorization:tp(e),"Content-Type":"application/json-patch+json"}}async function rp(e,t,r){let n;try{n=await fetch(`https://dev.azure.com/${encodeURIComponent(e)}/_apis/projects/${encodeURIComponent(t)}?api-version=${Qe}`,{headers:At(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=Xl.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 np(e,t,r,n){try{let o=await fetch(`${Et(e,t)}/wit/wiql?api-version=${Qe}`,{method:"POST",headers:At(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=Vl.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 Ea(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(`${Et(e,t)}/wit/workitems?ids=${a}&$expand=relations&api-version=${Qe}`,{headers:At(r)});if(!u.ok){console.warn(`\u26A0 Azure DevOps work items batch returned HTTP ${u.status}`);continue}let l=await u.json(),p=Ql.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(`${Et(e,t)}/wit/workitems/${n}?$expand=relations&api-version=${Qe}`,{headers:At(r)});if(!o.ok)return;let s=await o.json(),i=Pa.safeParse(s);return i.success?i.data:void 0}catch{return}}async function Nr(e,t,r,n,o){try{return(await fetch(`${Et(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 Aa(e){return e.join("; ")}function op(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 sp(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 np(e,t,r,a);if(!u.length)return[];let l=u.slice(0,i*2),f=(await Ea(e,t,r,l)).map(m=>xy(m));return s&&(f=f.filter(m=>!m.labels?.some(h=>h==="clancy:hitl"))),f.slice(0,i)}function xy(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=op(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 Ra=new Set(["Done","Closed","Completed","Resolved"]);async function ip(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=op(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||!Ra.has(l))return!0}return!1}catch{return!1}}async function ap(e,t,r,n,o){try{if(o){let s=`Epic: ${o}`,i=await ky(e,t,r,s);if(i&&i.total>0)return i}return await Sy(e,t,r,n)}catch{return}}async function ky(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 np(e,t,r,o);if(!s.length)return{total:0,incomplete:0};let i=await Ea(e,t,r,s),a=i.length,u=i.filter(l=>{let p=l.fields["System.State"];return!p||!Ra.has(p)}).length;return{total:a,incomplete:u}}catch{return}}async function Sy(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(`${Et(e,t)}/wit/wiql?api-version=${Qe}`,{method:"POST",headers:At(r),body:JSON.stringify({query:o})});if(!s.ok)return;let i=await s.json(),a=ep.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 Ea(e,t,r,l),f=p.length,m=p.filter(h=>{let _=h.fields["System.State"];return!_||!Ra.has(_)}).length;return{total:f,incomplete:m}}catch{return}}function cp(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 rp(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 sp(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:ip(t,r,n,a)},async fetchChildrenStatus(i,a){let u=a??i.replace("azdo-",""),l=parseInt(u,10);if(!Number.isNaN(l))return ap(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:Aa(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:Aa(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 vy=c.object({login:c.string()}),zy=/^[a-zA-Z0-9_.-]+\/[a-zA-Z0-9_.-]+$/,Zr;function jr(e){return zy.test(e)}async function lp(e,t){return Er(`${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 pp(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=vy.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 fp(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=ol.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 dp(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 mp(e,t,r,n){if(jr(t))try{let o=await up(e,t,`Epic: #${r}`);if(o&&o.total>0)return o;let s=await up(e,t,`Parent: #${r}`);return s&&s.total>0?s:!o||!s?void 0:n?{total:1,incomplete:1}:s}catch{return}}async function up(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 Ty=/^(?:Epic|Parent): (#\d+)/m;function Iy(e){return e.match(Ty)?.[1]}function hp(e){return{async ping(){return lp(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 pp(e.GITHUB_TOKEN);return(await fp(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??Iy(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:dp(e.GITHUB_TOKEN,e.GITHUB_REPO,r,t.description)},async fetchChildrenStatus(t,r,n){let o=parseInt(t.replace("#",""),10);if(!Number.isNaN(o))return mp(e.GITHUB_TOKEN,e.GITHUB_REPO,o,n)},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 Py=c.object({type:c.optional(c.object({name:c.optional(c.string())})),inwardIssue:c.optional(c.object({key:c.optional(c.string())}))}),Ey=c.object({summary:c.string(),description:c.optional(c.unknown()),issuelinks:c.optional(c.array(Py)),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()))}),Ay=c.object({key:c.string(),fields:Ey}),gp=c.object({total:c.optional(c.number()),isLast:c.optional(c.boolean()),issues:c.array(Ay)}),Ry=c.object({id:c.string(),name:c.string()}),yp=c.object({transitions:c.array(Ry)}),Cy=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())}))}))}))}))}),_p=c.object({fields:c.optional(c.object({issuelinks:c.optional(c.array(Cy))}))}),Ca=c.object({fields:c.optional(c.object({labels:c.optional(c.array(c.string()))}))});var Ny=/^[a-zA-Z0-9 _\-'.]+$/,Na=/^[A-Z][A-Z0-9]+-\d+$/;function wp(e,t){return Buffer.from(`${e}:${t}`).toString("base64")}function Rt(e){return Ny.test(e)}async function $p(e,t,r){return Er(`${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 Oy(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 Ly(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 xp(e,t,r,n,o,s,i,a=5){let u=Oy(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=gp.safeParse(p);return f.success?f.data.issues.map(m=>{let h=m.fields,_=(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:Ly(h.description),provider:"jira",epicKey:y,blockers:_,labels:h.labels}}):(console.warn(`\u26A0 Unexpected Jira response shape: ${f.error.message}`),[])}async function kp(e,t,r){if(!Na.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=_p.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 Sp(e,t,r){if(Na.test(r))try{let n=r.split("-")[0],o=await bp(e,t,`project = "${n}" AND description ~ "Epic: ${r}"`);return o&&o.total>0?o:await bp(e,t,`parent = ${r}`)}catch{return}}async function bp(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 Zy(e,t,r,n){if(!Na.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=yp.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 vp(e,t,r,n){try{let o=await Zy(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 zp(e){let t=wp(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 xp(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 kp(e.JIRA_BASE_URL,t,r.key)},async fetchChildrenStatus(r){return Sp(e.JIRA_BASE_URL,t,r)},async transitionTicket(r,n){let o=await vp(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=Ca.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=Ca.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 jy=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()}))}))}),Tp=c.object({data:c.optional(c.object({viewer:c.optional(c.object({assignedIssues:c.optional(c.object({nodes:c.array(jy)}))}))}))}),Ip=c.object({data:c.optional(c.object({viewer:c.optional(c.object({id:c.optional(c.string())}))}))}),Pp=c.object({data:c.optional(c.object({workflowStates:c.optional(c.object({nodes:c.array(c.object({id:c.string()}))}))}))}),Ep=c.object({data:c.optional(c.object({issueUpdate:c.optional(c.object({success:c.optional(c.boolean())}))}))}),Dy=c.object({type:c.string(),relatedIssue:c.optional(c.object({state:c.optional(c.object({type:c.optional(c.string())}))}))}),Ap=c.object({data:c.optional(c.object({issue:c.optional(c.object({relations:c.optional(c.object({nodes:c.array(Dy)}))}))}))}),My=c.object({state:c.optional(c.object({type:c.optional(c.string())}))}),Rp=c.object({data:c.optional(c.object({issueSearch:c.optional(c.object({nodes:c.array(My)}))}))}),Cp=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()}))}))}))}))}),Np=c.object({data:c.optional(c.object({issueLabels:c.optional(c.object({nodes:c.array(c.object({id:c.string(),name:c.string()}))}))}))}),Op=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())}))}))}),Oa=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 By=/^[a-zA-Z0-9_-]+$/,Lp="https://api.linear.app/graphql";function Zp(e){return By.test(e)}async function V(e,t,r){let n;try{n=await fetch(Lp,{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 jp(e){let t;try{t=await fetch(Lp,{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=Ip.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 Dp(e,t,r=5){let n=e.CLANCY_LABEL?.trim(),o=!!n,s=o?"labels: { name: { eq: $label } }":"",i=["$teamId: ID!",...o?["$label: String!"]:[]],a=['state: { type: { eq: "unstarted" } }',"team: { id: { eq: $teamId } }",s].filter(Boolean),u=`
120
+ 5. When done, confirm you are finished.`}function Yl(e){let t=e.config,r=e.ticket,n=e.isRework??!1,o=e.targetBranch,s=t.env.CLANCY_TDD==="true",i;n?i=Jl({key:r.key,title:r.title,description:r.description,provider:t.provider,feedbackComments:e.prFeedback??[],previousContext:Ka(o),tdd:s}):i=Kl({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=Ul(i,t.env.CLANCY_MODEL)}finally{delete process.env.CLANCY_ONCE_ACTIVE}return a?!0:(console.log(z("\u26A0 Claude session exited with an error. Skipping merge.")),!1)}import{execFileSync as Pa}from"node:child_process";import{existsSync as hy,readFileSync as gy}from"node:fs";import{join as yy}from"node:path";function _y(e){let t={};for(let r of e.split(`
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 Gl(e){let t=yy(e,".clancy",".env");if(!hy(t))return;let r=gy(t,"utf8");return _y(r)}function by(e){try{return Pa("which",[e],{stdio:"ignore"}),!0}catch{return!1}}function wy(){try{return Pa("git",["rev-parse","--git-dir"],{stdio:"ignore"}),!0}catch{return!1}}function Nr(e){for(let n of["claude","git"])if(!by(n))return{ok:!1,error:`\u2717 ${n} is required but not found`};let t=Gl(e);if(!t)return{ok:!1,error:"\u2717 .clancy/.env not found \u2014 run /clancy:init first"};if(!wy())return{ok:!1,error:"\u2717 Not inside a git repository"};let r;try{Pa("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(Mt()){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 Tt}from"node:child_process";function Wl(e){let t=e.ticketBranch;if(!Xe(t))return;let r;try{r=Tt("git",["rev-parse","--abbrev-ref","HEAD"],{encoding:"utf8"}).trim()}catch{return}try{Z(t)}catch{return}let n=!1,o=!1;try{n=Mt()}catch{}try{o=Tt("git",["log",`origin/${t}..${t}`,"--oneline"],{encoding:"utf8"}).trim().length>0}catch{try{o=Tt("git",["log",`origin/${e.targetBranch}..${t}`,"--oneline"],{encoding:"utf8"}).trim().length>0}catch{}}try{Z(r)}catch{}if(!n&&!o){let s=Ju(process.cwd(),e.ticketKey);return s&&vt.has(s.status)?{branch:t,hasUncommitted:!1,hasUnpushed:!1,alreadyDelivered:!0}:void 0}return{branch:t,hasUncommitted:n,hasUnpushed:o,alreadyDelivered:!1}}async function Vl(e,t,r){try{if(Z(r.branch),r.hasUncommitted)try{Tt("git",["add","-A"],{encoding:"utf8"}),Tt("git",["commit","-m",`fix(${t.ticketKey}): resume after crash`],{encoding:"utf8"}),console.log(O(` \u2713 Committed in-progress work for ${t.ticketKey}`))}catch{return console.log(z(` \u26A0 Could not commit changes on ${r.branch}`)),!1}if(!et(r.branch))return console.log(z(` \u26A0 Could not push ${r.branch} to origin`)),!1;console.log(O(` \u2713 Pushed ${r.branch}`));let o=D(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(O(` \u2713 PR created: ${u.url}`)),C(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.")),C(process.cwd(),t.ticketKey,t.ticketTitle,"RESUMED",void 0,t.parentKey&&t.parentKey!=="none"?t.parentKey:void 0))}else C(process.cwd(),t.ticketKey,t.ticketTitle,"RESUMED",void 0,t.parentKey&&t.parentKey!=="none"?t.parentKey:void 0);try{Z(t.targetBranch)}catch{}return!0}catch(n){return console.log(z(` \u26A0 Resume failed: ${n instanceof Error?n.message:String(n)}`)),!1}}async function Ql(e){let t=Ft(e.cwd);if(!t)return!0;if(!Va(t))return console.log(z(`\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...`)),Ht(e.cwd),qt(e.cwd);try{let r=Wl(t);if(r?.alreadyDelivered)return console.log(O(` \u2713 ${t.ticketKey} was already delivered \u2014 skipping.`)),!0;if(r)if(e.isAfk){console.log(z(` \u21BB Resuming crashed session: ${t.ticketKey} on ${r.branch}`));let n=Nr(e.cwd);if(n.ok){let o=Er(n.env);if(typeof o!="string"&&await Vl(o,t,r))return console.log(O(` \u2713 Resumed ${t.ticketKey}`)),!1}}else console.log(z(` 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 Xl(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=D(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;C(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(z(` \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}`,y=Ye(t,{key:l.key,title:l.summary,description:l.summary,provider:t.provider},m),_=await Re(t,a,f,m,h,y);_?.ok?(console.log(O(` \u2713 PR created: ${_.url}`)),C(e.cwd,l.key,l.summary,"PR_CREATED",_.number,p)):_&&!_.ok&&_.alreadyExists?(console.log($(` PR already exists for ${l.key}`)),C(e.cwd,l.key,l.summary,"PR_CREATED",void 0,p)):console.log(z(` \u26A0 PR retry failed for ${l.key}${_&&!_.ok?`: ${_.error}`:""} \u2014 create manually`))}}catch{}return!0}var Ea=c.object({id:c.number(),url:c.optional(c.string())}),ep=c.object({workItems:c.array(Ea)}),$y=c.object({rel:c.string(),url:c.string(),attributes:c.optional(c.object({name:c.optional(c.string())}))}),ky=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())}),Aa=c.object({id:c.number(),fields:ky,relations:c.optional(c.nullable(c.array($y)))}),tp=c.object({value:c.array(Aa),count:c.optional(c.number())}),rp=c.object({id:c.string(),name:c.string(),state:c.optional(c.string())}),xy=c.object({source:c.optional(c.nullable(Ea)),target:c.optional(c.nullable(Ea))}),np=c.object({workItemRelations:c.optional(c.array(xy))});var Qe="7.1";function op(e){return`Basic ${btoa(`:${e}`)}`}function Et(e){return!(e.includes("'")||e.includes("\\")||e.includes("--")||e.includes(";")||e.includes("/*")||/[^\x20-\x7E\t\n\r]/.test(e))}function It(e){if(!Et(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 Rt(e){return{Authorization:op(e),"Content-Type":"application/json"}}function Sy(e){return{Authorization:op(e),"Content-Type":"application/json-patch+json"}}async function sp(e,t,r){let n;try{n=await fetch(`https://dev.azure.com/${encodeURIComponent(e)}/_apis/projects/${encodeURIComponent(t)}?api-version=${Qe}`,{headers:Rt(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=rp.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 ip(e,t,r,n){try{let o=await fetch(`${At(e,t)}/wit/wiql?api-version=${Qe}`,{method:"POST",headers:Rt(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=ep.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 Ra(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:Rt(r)});if(!u.ok){console.warn(`\u26A0 Azure DevOps work items batch returned HTTP ${u.status}`);continue}let l=await u.json(),p=tp.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 Pt(e,t,r,n){try{let o=await fetch(`${At(e,t)}/wit/workitems/${n}?$expand=relations&api-version=${Qe}`,{headers:Rt(r)});if(!o.ok)return;let s=await o.json(),i=Aa.safeParse(s);return i.success?i.data:void 0}catch{return}}async function Or(e,t,r,n,o){try{return(await fetch(`${At(e,t)}/wit/workitems/${n}?api-version=${Qe}`,{method:"PATCH",headers:Sy(r),body:JSON.stringify(o)})).ok}catch{return!1}}function Lr(e){return e?e.split(";").map(t=>t.trim()).filter(Boolean):[]}function Ca(e){return e.join("; ")}function ap(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 cp(e,t,r,n,o,s,i=5){let a=`SELECT [System.Id] FROM WorkItems WHERE [System.TeamProject] = '${It(t)}' AND [System.State] = '${It(n)}' AND [System.AssignedTo] = @Me`;o&&(a+=` AND [System.WorkItemType] = '${It(o)}'`),a+=" ORDER BY [System.CreatedDate] ASC";let u=await ip(e,t,r,a);if(!u.length)return[];let l=u.slice(0,i*2),f=(await Ra(e,t,r,l)).map(m=>vy(m));return s&&(f=f.filter(m=>!m.labels?.some(h=>h==="clancy:hitl"))),f.slice(0,i)}function vy(e){let t=Lr(e.fields["System.Tags"]),r;if(e.relations){for(let n of e.relations)if(n.rel==="System.LinkTypes.Hierarchy-Reverse"){r=ap(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 Na=new Set(["Done","Closed","Completed","Resolved"]);async function up(e,t,r,n){try{let o=await Pt(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=ap(i.url);if(a===void 0)continue;let u=await Pt(e,t,r,a);if(!u)continue;let l=u.fields["System.State"];if(!l||!Na.has(l))return!0}return!1}catch{return!1}}async function lp(e,t,r,n,o){try{if(o){let s=`Epic: ${o}`,i=await zy(e,t,r,s);if(i&&i.total>0)return i}return await Ty(e,t,r,n)}catch{return}}async function zy(e,t,r,n){try{let o=`SELECT [System.Id] FROM WorkItems WHERE [System.TeamProject] = '${It(t)}' AND [System.Description] CONTAINS '${It(n)}'`,s=await ip(e,t,r,o);if(!s.length)return{total:0,incomplete:0};let i=await Ra(e,t,r,s),a=i.length,u=i.filter(l=>{let p=l.fields["System.State"];return!p||!Na.has(p)}).length;return{total:a,incomplete:u}}catch{return}}async function Ty(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:Rt(r),body:JSON.stringify({query:o})});if(!s.ok)return;let i=await s.json(),a=np.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 Ra(e,t,r,l),f=p.length,m=p.filter(h=>{let y=h.fields["System.State"];return!y||!Na.has(y)}).length;return{total:f,incomplete:m}}catch{return}}function pp(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 sp(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(!Et(r))return"\u2717 AZDO_PROJECT contains unsafe characters for WIQL queries";if(!Et(o))return"\u2717 CLANCY_AZDO_STATUS contains unsafe characters for WIQL queries";if(s&&!Et(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 cp(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=Zr(i.key);return a===void 0?!1:up(t,r,n,a)},async fetchChildrenStatus(i,a){let u=a??i.replace("azdo-",""),l=parseInt(u,10);if(!Number.isNaN(l))return lp(t,r,n,l,i)},async transitionTicket(i,a){let u=Zr(i.key);if(u===void 0)return!1;let l=await Or(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=Zr(i);if(u===void 0)return;let l=await Pt(t,r,n,u);if(!l)return;let p=Lr(l.fields["System.Tags"]);if(p.includes(a))return;let f=[...p,a];await Or(t,r,n,u,[{op:"replace",path:"/fields/System.Tags",value:Ca(f)}])}catch(u){console.warn(`\u26A0 addLabel failed: ${u instanceof Error?u.message:String(u)}`)}},async removeLabel(i,a){try{let u=Zr(i);if(u===void 0)return;let l=await Pt(t,r,n,u);if(!l)return;let p=Lr(l.fields["System.Tags"]);if(!p.includes(a))return;let f=p.filter(m=>m!==a);await Or(t,r,n,u,[{op:"replace",path:"/fields/System.Tags",value:Ca(f)}])}catch(u){console.warn(`\u26A0 removeLabel failed: ${u instanceof Error?u.message:String(u)}`)}},sharedEnv(){return e}}}function Zr(e){let t=parseInt(e.replace("azdo-",""),10);return Number.isNaN(t)?void 0:t}var Iy=c.object({login:c.string()}),Py=/^[a-zA-Z0-9_.-]+\/[a-zA-Z0-9_.-]+$/,jr;function Dr(e){return Py.test(e)}async function dp(e,t){return Ar(`${M}/repos/${t}`,H(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 mp(e,t){if(jr)return jr;try{let r=await fetch(`${t??M}/user`,{headers:H(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=Iy.safeParse(n);if(o.success)return jr=o.data.login,jr;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 hp(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(`${M}/repos/${t}/issues?${a}`,{headers:H(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=al.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 gp(e,t,r,n){if(!Dr(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(`${M}/repos/${t}/issues/${a}`,{headers:H(e)});if(!u.ok)continue;if((await u.json()).state!=="closed")return!0}return!1}catch{return!1}}async function yp(e,t,r,n){if(Dr(t))try{let o=await fp(e,t,`Epic: #${r}`);if(o&&o.total>0)return o;let s=await fp(e,t,`Parent: #${r}`);return s&&s.total>0?s:!o||!s?void 0:n?{total:1,incomplete:1}:s}catch{return}}async function fp(e,t,r){let n=H(e),o=`"${r}" repo:${t} is:issue`,s=new URLSearchParams({q:o,per_page:"1"}),i=await fetch(`${M}/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(`${M}/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 Ey=/^(?:Epic|Parent): (#\d+)/m;function Ay(e){return e.match(Ey)?.[1]}function _p(e){return{async ping(){return dp(e.GITHUB_TOKEN,e.GITHUB_REPO)},validateInputs(){if(!Dr(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 mp(e.GITHUB_TOKEN);return(await hp(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??Ay(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:gp(e.GITHUB_TOKEN,e.GITHUB_REPO,r,t.description)},async fetchChildrenStatus(t,r,n){let o=parseInt(t.replace("#",""),10);if(!Number.isNaN(o))return yp(e.GITHUB_TOKEN,e.GITHUB_REPO,o,n)},async transitionTicket(){return!1},async ensureLabel(t){try{let r=H(e.GITHUB_TOKEN),n=await fetch(`${M}/repos/${e.GITHUB_REPO}/labels/${encodeURIComponent(t)}`,{headers:r});if(n.ok)return;if(n.status===404){let o=await fetch(`${M}/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=H(e.GITHUB_TOKEN),s=await fetch(`${M}/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=H(e.GITHUB_TOKEN),s=await fetch(`${M}/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 Ry=c.object({type:c.optional(c.object({name:c.optional(c.string())})),inwardIssue:c.optional(c.object({key:c.optional(c.string())}))}),Cy=c.object({summary:c.string(),description:c.optional(c.unknown()),issuelinks:c.optional(c.array(Ry)),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()))}),Ny=c.object({key:c.string(),fields:Cy}),bp=c.object({total:c.optional(c.number()),isLast:c.optional(c.boolean()),issues:c.array(Ny)}),Oy=c.object({id:c.string(),name:c.string()}),wp=c.object({transitions:c.array(Oy)}),Ly=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())}))}))}))}))}),$p=c.object({fields:c.optional(c.object({issuelinks:c.optional(c.array(Ly))}))}),Oa=c.object({fields:c.optional(c.object({labels:c.optional(c.array(c.string()))}))});var Zy=/^[a-zA-Z0-9 _\-'.]+$/,La=/^[A-Z][A-Z0-9]+-\d+$/;function xp(e,t){return Buffer.from(`${e}:${t}`).toString("base64")}function Ct(e){return Zy.test(e)}async function Sp(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 jy(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 Dy(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 vp(e,t,r,n,o,s,i,a=5){let u=jy(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=bp.safeParse(p);return f.success?f.data.issues.map(m=>{let h=m.fields,y=(h.issuelinks??[]).filter(x=>x.type?.name==="Blocks"&&x.inwardIssue?.key).map(x=>x.inwardIssue?.key).filter(x=>!!x),_=h.parent?.key??h.customfield_10014??void 0;return{key:m.key,title:h.summary,description:Dy(h.description),provider:"jira",epicKey:_,blockers:y,labels:h.labels}}):(console.warn(`\u26A0 Unexpected Jira response shape: ${f.error.message}`),[])}async function zp(e,t,r){if(!La.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=$p.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 Tp(e,t,r){if(La.test(r))try{let n=r.split("-")[0],o=await kp(e,t,`project = "${n}" AND description ~ "Epic: ${r}"`);return o&&o.total>0?o:await kp(e,t,`parent = ${r}`)}catch{return}}async function kp(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 My(e,t,r,n){if(!La.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=wp.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 Ip(e,t,r,n){try{let o=await My(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 Pp(e){let t=xp(e.JIRA_USER,e.JIRA_API_TOKEN);return{async ping(){return Sp(e.JIRA_BASE_URL,e.JIRA_PROJECT_KEY,t)},validateInputs(){if(!Ct(e.JIRA_PROJECT_KEY))return"\u2717 JIRA_PROJECT_KEY contains invalid characters";if(e.CLANCY_LABEL_BUILD&&!Ct(e.CLANCY_LABEL_BUILD))return"\u2717 CLANCY_LABEL_BUILD contains invalid characters";if(e.CLANCY_LABEL&&!Ct(e.CLANCY_LABEL))return"\u2717 CLANCY_LABEL contains invalid characters";if(e.CLANCY_JQL_STATUS&&!Ct(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 vp(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 zp(e.JIRA_BASE_URL,t,r.key)},async fetchChildrenStatus(r){return Tp(e.JIRA_BASE_URL,t,r)},async transitionTicket(r,n){let o=await Ip(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=Oa.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=Oa.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 By=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()}))}))}),Ep=c.object({data:c.optional(c.object({viewer:c.optional(c.object({assignedIssues:c.optional(c.object({nodes:c.array(By)}))}))}))}),Ap=c.object({data:c.optional(c.object({viewer:c.optional(c.object({id:c.optional(c.string())}))}))}),Rp=c.object({data:c.optional(c.object({workflowStates:c.optional(c.object({nodes:c.array(c.object({id:c.string()}))}))}))}),Cp=c.object({data:c.optional(c.object({issueUpdate:c.optional(c.object({success:c.optional(c.boolean())}))}))}),Uy=c.object({type:c.string(),relatedIssue:c.optional(c.object({state:c.optional(c.object({type:c.optional(c.string())}))}))}),Np=c.object({data:c.optional(c.object({issue:c.optional(c.object({relations:c.optional(c.object({nodes:c.array(Uy)}))}))}))}),Fy=c.object({state:c.optional(c.object({type:c.optional(c.string())}))}),Op=c.object({data:c.optional(c.object({issueSearch:c.optional(c.object({nodes:c.array(Fy)}))}))}),Lp=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()}))}))}))}))}),Zp=c.object({data:c.optional(c.object({issueLabels:c.optional(c.object({nodes:c.array(c.object({id:c.string(),name:c.string()}))}))}))}),jp=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())}))}))}),Za=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 Hy=/^[a-zA-Z0-9_-]+$/,Dp="https://api.linear.app/graphql";function Mp(e){return Hy.test(e)}async function V(e,t,r){let n;try{n=await fetch(Dp,{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 Bp(e){let t;try{t=await fetch(Dp,{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=Ap.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 Up(e,t,r=5){let n=e.CLANCY_LABEL?.trim(),o=!!n,s=o?"labels: { name: { eq: $label } }":"",i=["$teamId: ID!",...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(
@@ -141,7 +141,7 @@ ${n}`:n}return{ok:!0,env:t,warning:r}}import{execFileSync as zt}from"node:child_
141
141
  }
142
142
  }
143
143
  }
144
- `,l={teamId:e.LINEAR_TEAM_ID};o&&(l.label=n);let p=await V(e.LINEAR_API_KEY,u,l),f=Tp.safeParse(p);if(!f.success)return console.warn(`\u26A0 Unexpected Linear response shape: ${f.error.message}`),[];let m=f.data.data?.viewer?.assignedIssues?.nodes;return m?.length?(t&&(m=m.filter(h=>!h.labels?.nodes?.some(_=>_.name==="clancy:hitl"))),m=m.slice(0,r),m.map(h=>({key:h.identifier,title:h.title,description:h.description??"",provider:"linear",issueId:h.id,parentIdentifier:h.parent?.identifier,labels:h.labels?.nodes?.map(_=>_.name).filter(_=>!!_)}))):[]}async function Mp(e,t){let n=await V(e,`
144
+ `,l={teamId:e.LINEAR_TEAM_ID};o&&(l.label=n);let p=await V(e.LINEAR_API_KEY,u,l),f=Ep.safeParse(p);if(!f.success)return console.warn(`\u26A0 Unexpected Linear response shape: ${f.error.message}`),[];let m=f.data.data?.viewer?.assignedIssues?.nodes;return m?.length?(t&&(m=m.filter(h=>!h.labels?.nodes?.some(y=>y.name==="clancy:hitl"))),m=m.slice(0,r),m.map(h=>({key:h.identifier,title:h.title,description:h.description??"",provider:"linear",issueId:h.id,parentIdentifier:h.parent?.identifier,labels:h.labels?.nodes?.map(y=>y.name).filter(y=>!!y)}))):[]}async function Fp(e,t){let n=await V(e,`
145
145
  query($issueId: String!) {
146
146
  issue(id: $issueId) {
147
147
  relations {
@@ -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=Ap.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 Bp(e,t,r){try{if(r){let n=await Uy(e,`Epic: ${r}`);if(n&&n.total>0)return n}return await Fy(e,t)}catch{return}}async function Uy(e,t){let n=await V(e,`
157
+ `,{issueId:t}),o=Np.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 Hp(e,t,r){try{if(r){let n=await qy(e,`Epic: ${r}`);if(n&&n.total>0)return n}return await Jy(e,t)}catch{return}}async function qy(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=Rp.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 Fy(e,t){let n=await V(e,`
165
+ `,{filter:t}),o=Op.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 Jy(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 Hy(e,t,r){let o=await V(e,`
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 Ky(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,32 +181,32 @@ ${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=Pp.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 qy(e,t,r){let o=await V(e,`
184
+ `,{teamId:t,name:r}),s=Rp.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 Yy(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=Ep.safeParse(o);return s.success?s.data.data?.issueUpdate?.success===!0:(console.warn(`\u26A0 Unexpected Linear issueUpdate response: ${s.error.message}`),!1)}async function Up(e,t,r,n){try{let o=await Hy(e,t,n);return o?await qy(e,r,o):(console.warn(`\u26A0 Linear workflow state "${n}" not found \u2014 check team configuration`),!1)}catch{return!1}}function Fp(e){let t=new Map;return{async ping(){return jp(e.LINEAR_API_KEY)},validateInputs(){if(!Zp(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 Dp({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?Mp(e.LINEAR_API_KEY,r.issueId):!1},async fetchChildrenStatus(r,n){return Bp(e.LINEAR_API_KEY,n??r,r)},async transitionTicket(r,n){if(!r.linearIssueId)return!1;let o=await Up(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,`
190
+ `,{issueId:t,stateId:r}),s=Cp.safeParse(o);return s.success?s.data.data?.issueUpdate?.success===!0:(console.warn(`\u26A0 Unexpected Linear issueUpdate response: ${s.error.message}`),!1)}async function qp(e,t,r,n){try{let o=await Ky(e,t,n);return o?await Yy(e,r,o):(console.warn(`\u26A0 Linear workflow state "${n}" not found \u2014 check team configuration`),!1)}catch{return!1}}function Jp(e){let t=new Map;return{async ping(){return Bp(e.LINEAR_API_KEY)},validateInputs(){if(!Mp(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 Up({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?Fp(e.LINEAR_API_KEY,r.issueId):!1},async fetchChildrenStatus(r,n){return Hp(e.LINEAR_API_KEY,n??r,r)},async transitionTicket(r,n){if(!r.linearIssueId)return!1;let o=await qp(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 } }
194
194
  }
195
195
  }
196
- `,{teamId:e.LINEAR_TEAM_ID}),i=Cp.parse(o)?.data?.team?.labels?.nodes?.find(y=>y.name===r);if(i){t.set(r,i.id);return}let u=await V(e.LINEAR_API_KEY,`
196
+ `,{teamId:e.LINEAR_TEAM_ID}),i=Lp.parse(o)?.data?.team?.labels?.nodes?.find(_=>_.name===r);if(i){t.set(r,i.id);return}let u=await V(e.LINEAR_API_KEY,`
197
197
  query($name: String!) {
198
198
  issueLabels(filter: { name: { eq: $name } }) {
199
199
  nodes { id name }
200
200
  }
201
201
  }
202
- `,{name:r}),p=Np.parse(u)?.data?.issueLabels?.nodes?.[0];if(p){t.set(r,p.id);return}let m=await V(e.LINEAR_API_KEY,`
202
+ `,{name:r}),p=Zp.parse(u)?.data?.issueLabels?.nodes?.[0];if(p){t.set(r,p.id);return}let m=await V(e.LINEAR_API_KEY,`
203
203
  mutation($teamId: String!, $name: String!) {
204
204
  issueLabelCreate(input: { teamId: $teamId, name: $name, color: "#0075ca" }) {
205
205
  issueLabel { id }
206
206
  success
207
207
  }
208
208
  }
209
- `,{teamId:e.LINEAR_TEAM_ID,name:r}),_=Op.parse(m)?.data?.issueLabelCreate?.issueLabel?.id;_&&t.set(r,_)}catch(n){console.warn(`\u26A0 ensureLabel failed: ${n instanceof Error?n.message:String(n)}`)}},async addLabel(r,n){try{await this.ensureLabel(n);let o=t.get(n);if(!o)return;let i=await V(e.LINEAR_API_KEY,`
209
+ `,{teamId:e.LINEAR_TEAM_ID,name:r}),y=jp.parse(m)?.data?.issueLabelCreate?.issueLabel?.id;y&&t.set(r,y)}catch(n){console.warn(`\u26A0 ensureLabel failed: ${n instanceof Error?n.message:String(n)}`)}},async addLabel(r,n){try{await this.ensureLabel(n);let o=t.get(n);if(!o)return;let i=await V(e.LINEAR_API_KEY,`
210
210
  query($identifier: String!) {
211
211
  issueSearch: issues(filter: { identifier: { eq: $identifier } }, first: 1) {
212
212
  nodes {
@@ -215,7 +215,7 @@ ${n}`:n}return{ok:!0,env:t,warning:r}}import{execFileSync as zt}from"node:child_
215
215
  }
216
216
  }
217
217
  }
218
- `,{identifier:r}),u=Oa.parse(i)?.data?.issueSearch?.nodes?.[0];if(!u)return;let l=u.labels?.nodes?.map(f=>f.id)??[];if(l.includes(o))return;await V(e.LINEAR_API_KEY,`
218
+ `,{identifier:r}),u=Za.parse(i)?.data?.issueSearch?.nodes?.[0];if(!u)return;let l=u.labels?.nodes?.map(f=>f.id)??[];if(l.includes(o))return;await V(e.LINEAR_API_KEY,`
219
219
  mutation($issueId: String!, $labelIds: [String!]!) {
220
220
  issueUpdate(id: $issueId, input: { labelIds: $labelIds }) {
221
221
  success
@@ -230,10 +230,10 @@ ${n}`:n}return{ok:!0,env:t,warning:r}}import{execFileSync as zt}from"node:child_
230
230
  }
231
231
  }
232
232
  }
233
- `,{identifier:r}),u=Oa.parse(i)?.data?.issueSearch?.nodes?.[0];if(!u)return;let l=u.labels?.nodes??[],p=o??l.find(h=>h.name===n)?.id;if(!p)return;let f=l.map(h=>h.id).filter(h=>h!==p);if(f.length===l.length)return;await V(e.LINEAR_API_KEY,`
233
+ `,{identifier:r}),u=Za.parse(i)?.data?.issueSearch?.nodes?.[0];if(!u)return;let l=u.labels?.nodes??[],p=o??l.find(h=>h.name===n)?.id;if(!p)return;let f=l.map(h=>h.id).filter(h=>h!==p);if(f.length===l.length)return;await V(e.LINEAR_API_KEY,`
234
234
  mutation($issueId: String!, $labelIds: [String!]!) {
235
235
  issueUpdate(id: $issueId, input: { labelIds: $labelIds }) {
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 Hp=c.object({plain_text:c.string()}),Jy=c.object({type:c.literal("status"),status:c.nullable(c.object({id:c.optional(c.string()),name:c.string(),color:c.optional(c.string())}))}),Ky=c.object({type:c.literal("select"),select:c.nullable(c.object({id:c.optional(c.string()),name:c.string(),color:c.optional(c.string())}))}),Yy=c.object({id:c.optional(c.string()),name:c.string(),color:c.optional(c.string())}),Gy=c.object({type:c.literal("multi_select"),multi_select:c.array(Yy)}),Wy=c.object({type:c.literal("people"),people:c.array(c.object({id:c.string(),name:c.optional(c.nullable(c.string()))}))}),Vy=c.object({type:c.literal("relation"),relation:c.array(c.object({id:c.string()}))}),Qy=c.object({type:c.literal("title"),title:c.array(Hp)}),Xy=c.object({type:c.literal("rich_text"),rich_text:c.array(Hp)}),e_=c.union([Jy,Ky,Gy,Wy,Vy,Qy,Xy,c.object({type:c.string()})]),La=c.object({id:c.string(),url:c.optional(c.string()),properties:c.record(c.string(),e_)}),qp=c.object({results:c.array(La),has_more:c.boolean(),next_cursor:c.nullable(c.optional(c.string()))}),Jp=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 t_(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 Za(e,t,r){let n=t*2**e;return Math.min(n,r)}function r_(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(!r_(u.status)||a===n)return u;let l;u.status===429?l=t_(u.headers.get("Retry-After"))??Za(a,o,s):l=Za(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=Za(a,o,s);await new Promise(p=>setTimeout(p,l))}throw i}var Mr="https://api.notion.com/v1",n_="2022-06-28";function Br(e){return{Authorization:`Bearer ${e}`,"Notion-Version":n_,"Content-Type":"application/json"}}async function Yp(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=Jp.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=qp.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 Kp(e,t){try{let r=await Ct(`${Mr}/pages/${t}`,{headers:Br(e)});if(!r.ok)return;let n=await r.json(),o=La.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 Gp(e,t,r,n="Status"){try{let o=await Kp(e,r);if(!o)return!1;let s=o_(o,"Blocked by");if(s?.type==="relation"){let u=s.relation;if(u.length>0){for(let l of u){let p=await Kp(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=Vp(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 _=F(m,n,"status");if(_&&!Dr(_))return!0}}}}}return!1}catch{return!1}}async function Wp(e,t,r,n="Epic",o="Status"){try{let s=await s_(e,t,`Epic: ${r}`,o);if(s&&s.total>0)return s;let i=await a_(e,t,r);return i?await i_(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 o_(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 Vp(e){for(let t of["Description","description","Body","body"]){let r=F(e,t,"rich_text");if(r)return r}}async function s_(e,t,r,n="Status"){let o=await Nt(e,t);if(!o.length)return;let s=o.filter(u=>Vp(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 i_(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 a_(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 c_="Status",u_="Assignee",l_="Labels",p_="Epic";function Xp(e){let t=e.CLANCY_NOTION_STATUS??c_,r=e.CLANCY_NOTION_ASSIGNEE??u_,n=e.CLANCY_NOTION_LABELS??l_,o=e.CLANCY_NOTION_PARENT??p_;return{async ping(){return Yp(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=e.CLANCY_NOTION_TODO??"To-do",a=f_(t,i),u=await Ur(e.NOTION_TOKEN,e.NOTION_DATABASE_ID,a);if(!u)return[];let l=u.results;s.excludeHitl&&(l=l.filter(f=>!F(f,n,"multi_select")?.includes("clancy:hitl")));let p=s.buildLabel??e.CLANCY_LABEL;return p&&(l=l.filter(f=>F(f,n,"multi_select")?.includes(p))),l.slice(0,5).map(f=>d_(f,{labelsProp:n,parentProp:o,assigneeProp:r}))},async fetchBlockerStatus(s){let i=s.issueId;return i?Gp(e.NOTION_TOKEN,e.NOTION_DATABASE_ID,i,t):!1},async fetchChildrenStatus(s){return Wp(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 Qp(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 Qp(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 f_(e,t){return{property:e,status:{equals:t??"To-do"}}}function d_(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 Qp(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 m_=c.object({verb:c.string(),subject_id:c.number(),object_id:c.number()}),ja=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(m_)),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()))}),Fr=c.object({data:c.array(ja),next:c.optional(c.nullable(c.string())),total:c.optional(c.number())}),Hr=ja,h_=c.object({id:c.number(),name:c.string(),type:c.string()}),g_=c.object({id:c.number(),name:c.string(),states:c.array(h_)}),ef=c.array(g_),tf=c.object({id:c.number(),name:c.string()}),rf=c.array(tf),nf=tf,of=c.array(ja),sf=c.object({id:c.string(),mention_name:c.optional(c.string())});var ee="https://api.app.shortcut.com/api/v3";function te(e){return{"Shortcut-Token":e,"Content-Type":"application/json"}}var qr;var Lt;async function af(e){let t;try{t=await fetch(`${ee}/member-info`,{headers:te(e)}),t.ok||(t=await fetch(`${ee}/workflows`,{headers:te(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=sf.safeParse(r);if(n.success&&n.data.id)return{ok:!0};if(Array.isArray(r))return{ok:!0}}catch{}return{ok:!1,error:"\u2717 Shortcut auth failed \u2014 check SHORTCUT_API_TOKEN"}}async function Zt(e){if(qr)return qr;try{let t=await fetch(`${ee}/workflows`,{headers:te(e)});if(!t.ok)return console.warn(`\u26A0 Shortcut /workflows returned HTTP ${t.status}`),[];let r=await t.json(),n=ef.safeParse(r);return n.success?(qr=n.data,qr):(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 cf(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 uf(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 lf(e,t,r,n,o,s=5){if(!t.length)return[];let i,a={};(t.length===1||t.length>1)&&(a.workflow_state_id=t[0]),n&&(a.owner_ids=[n]),r&&(a.label_name=r);try{i=await fetch(`${ee}/stories/search`,{method:"POST",headers:te(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=Fr.safeParse(u),p;if(l.success)p=l.data.data;else if(Array.isArray(u)){let f=Fr.safeParse({data:u});if(!f.success)return console.warn(`\u26A0 Unexpected Shortcut response shape: ${f.error.message}`),[];p=f.data.data}else return console.warn(`\u26A0 Unexpected Shortcut response shape: ${l.error.message}`),[];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 pf(e,t){try{let r=await fetch(`${ee}/stories/${t}`,{headers:te(e)});if(!r.ok)return!1;let n=await r.json(),o=Hr.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(`${ee}/stories/${p}`,{headers:te(e)});if(!f.ok)continue;let m=await f.json(),h=Hr.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 ff(e,t,r){try{if(r){let n=await y_(e,`Epic: ${r}`);if(n&&n.total>0)return n}return await __(e,t)}catch{return}}async function y_(e,t){try{let r=await fetch(`${ee}/stories/search`,{method:"POST",headers:te(e),body:JSON.stringify({query:t})});if(!r.ok)return;let n=await r.json(),o=Fr.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 __(e,t){try{let r=await fetch(`${ee}/epics/${t}/stories`,{headers:te(e)});if(!r.ok)return;let n=await r.json(),o=of.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 df(e,t,r){try{return(await fetch(`${ee}/stories/${t}`,{method:"PUT",headers:te(e),body:JSON.stringify({workflow_state_id:r})})).ok}catch{return!1}}async function Jr(e){if(Lt)return Lt;try{let t=await fetch(`${ee}/labels`,{headers:te(e)});if(!t.ok)return console.warn(`\u26A0 Shortcut /labels returned HTTP ${t.status}`),[];let r=await t.json(),n=rf.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 mf(e,t){try{let r=await fetch(`${ee}/labels`,{method:"POST",headers:te(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=nf.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 Da(e,t){try{let r=await fetch(`${ee}/stories/${t}`,{headers:te(e)});if(!r.ok)return;let n=await r.json(),o=Hr.safeParse(n);return o.success?o.data.label_ids??[]:void 0}catch{return}}async function Ma(e,t,r){try{let n=await fetch(`${ee}/stories/${t}`,{method:"PUT",headers:te(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 hf(e){return{async ping(){return af(e.SHORTCUT_API_TOKEN)},validateInputs(){},async fetchTicket(t){return(await this.fetchTickets(t))[0]},async fetchTickets(t){let r=await uf(e.SHORTCUT_API_TOKEN,"unstarted",e.SHORTCUT_WORKFLOW);return(await lf(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=Kr(t.key);return r===void 0?!1:pf(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 ff(e.SHORTCUT_API_TOKEN,o,t)},async transitionTicket(t,r){let n=Kr(t.key);if(n===void 0)return!1;let o=await cf(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 df(e.SHORTCUT_API_TOKEN,n,o);return s&&console.log(` \u2192 Transitioned to ${r}`),s},async ensureLabel(t){try{if((await Jr(e.SHORTCUT_API_TOKEN)).find(o=>o.name===t))return;await mf(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=Kr(t);if(n===void 0)return;let s=(await Jr(e.SHORTCUT_API_TOKEN)).find(a=>a.name===r);if(!s)return;let i=await Da(e.SHORTCUT_API_TOKEN,n);if(!i||i.includes(s.id))return;await Ma(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=Kr(t);if(n===void 0)return;let s=(await Jr(e.SHORTCUT_API_TOKEN)).find(a=>a.name===r);if(!s)return;let i=await Da(e.SHORTCUT_API_TOKEN,n);if(!i||!i.includes(s.id))return;await Ma(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 Kr(e){let t=parseInt(e.replace("sc-",""),10);return Number.isNaN(t)?void 0:t}function gf(e){switch(e.provider){case"jira":return zp(e.env);case"github":return hp(e.env);case"linear":return Fp(e.env);case"shortcut":return hf(e.env);case"notion":return Xp(e.env);case"azdo":return cp(e.env)}}async function yf(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=gf(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 _f(e){let t=e.config;try{let r=await Rl(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 b_(e){return e.CLANCY_LABEL_BUILD||e.CLANCY_LABEL||void 0}function w_(e){return e.CLANCY_LABEL_PLAN||e.CLANCY_PLAN_LABEL||void 0}function $_(e){return e?.isAfk??process.env.CLANCY_AFK_MODE==="1"}async function bf(e,t){let r=$_(t),n=e.sharedEnv(),o=b_(n),s=w_(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 wf(e){let t=e.config;if(e.ticket||(e.ticket=await bf(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(qu(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 S_(e){let t=Ja(e);if(await Gl(t))try{if(!await yf(t)||!await Ll(t)||!await Wl(t)||!await _f(t)||!await wf(t)||!Ol(t)||!Bl(t)||!await wl(t)||!await $f(t)||!ql(t)||!await Nl(t))return;Sl(t),await xl(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]&&k_(import.meta.url)===x_(process.argv[1])&&S_(process.argv);export{S_ 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 Kp=c.object({plain_text:c.string()}),Gy=c.object({type:c.literal("status"),status:c.nullable(c.object({id:c.optional(c.string()),name:c.string(),color:c.optional(c.string())}))}),Wy=c.object({type:c.literal("select"),select:c.nullable(c.object({id:c.optional(c.string()),name:c.string(),color:c.optional(c.string())}))}),Vy=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(Vy)}),Xy=c.object({type:c.literal("people"),people:c.array(c.object({id:c.string(),name:c.optional(c.nullable(c.string()))}))}),e_=c.object({type:c.literal("relation"),relation:c.array(c.object({id:c.string()}))}),t_=c.object({type:c.literal("title"),title:c.array(Kp)}),r_=c.object({type:c.literal("rich_text"),rich_text:c.array(Kp)}),n_=c.union([Gy,Wy,Qy,Xy,e_,t_,r_,c.object({type:c.string()})]),ja=c.object({id:c.string(),url:c.optional(c.string()),properties:c.record(c.string(),n_)}),Yp=c.object({results:c.array(ja),has_more:c.boolean(),next_cursor:c.nullable(c.optional(c.string()))}),Gp=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 o_(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 Da(e,t,r){let n=t*2**e;return Math.min(n,r)}function s_(e){return e===429||e>=500&&e<=599}async function Nt(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(!s_(u.status)||a===n)return u;let l;u.status===429?l=o_(u.headers.get("Retry-After"))??Da(a,o,s):l=Da(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=Da(a,o,s);await new Promise(p=>setTimeout(p,l))}throw i}var Br="https://api.notion.com/v1",i_="2022-06-28";function Ur(e){return{Authorization:`Bearer ${e}`,"Notion-Version":i_,"Content-Type":"application/json"}}async function Vp(e){let t;try{t=await Nt(`${Br}/users/me`,{headers:Ur(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=Gp.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 Fr(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 Nt(`${Br}/databases/${t}/query`,{method:"POST",headers:Ur(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=Yp.safeParse(a);if(!u.success){console.warn(`\u26A0 Unexpected Notion response shape: ${u.error.message}`);return}return u.data}async function Ot(e,t,r){let n=[],o;for(let i=0;i<10;i++){let a=await Fr(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 Wp(e,t){try{let r=await Nt(`${Br}/pages/${t}`,{headers:Ur(e)});if(!r.ok)return;let n=await r.json(),o=ja.safeParse(n);return o.success?o.data:void 0}catch{return}}async function Lt(e,t,r){try{return(await Nt(`${Br}/pages/${t}`,{method:"PATCH",headers:Ur(e),body:JSON.stringify({properties:r})})).ok}catch{return!1}}async function Qp(e,t,r,n="Status"){try{let o=await Wp(e,r);if(!o)return!1;let s=a_(o,"Blocked by");if(s?.type==="relation"){let u=s.relation;if(u.length>0){for(let l of u){let p=await Wp(e,l.id);if(!p)continue;let f=q(p,n,"status");if(f&&!Mr(f))return!0}return!1}}let i=r.replace(/-/g,"").slice(0,8),a=ef(o);if(a){let u=a.match(/Blocked by (notion-[a-f0-9]{8})/gi);if(u){let l=await Ot(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 y=q(m,n,"status");if(y&&!Mr(y))return!0}}}}}return!1}catch{return!1}}async function Xp(e,t,r,n="Epic",o="Status"){try{let s=await c_(e,t,`Epic: ${r}`,o);if(s&&s.total>0)return s;let i=await l_(e,t,r);return i?await u_(e,t,i.id,n,o):void 0}catch{return}}function q(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 a_(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 Mr(e){let t=e.toLowerCase();return t==="done"||t==="complete"||t==="completed"||t==="closed"}function ef(e){for(let t of["Description","description","Body","body"]){let r=q(e,t,"rich_text");if(r)return r}}async function c_(e,t,r,n="Status"){let o=await Ot(e,t);if(!o.length)return;let s=o.filter(u=>ef(u)?.includes(r)),i=s.length;if(i===0)return{total:0,incomplete:0};let a=s.filter(u=>{let l=q(u,n,"status")??q(u,n,"select");return!l||!Mr(l)}).length;return{total:i,incomplete:a}}async function u_(e,t,r,n,o="Status"){let s=await Fr(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=q(u,o,"status")??q(u,o,"select");return!l||!Mr(l)}).length;return{total:i,incomplete:a}}async function l_(e,t,r){let n=r.replace("notion-","");return n?(await Ot(e,t)).find(s=>s.id.replace(/-/g,"").slice(0,8)===n):void 0}var p_="Status",f_="Assignee",d_="Labels",m_="Epic";function rf(e){let t=e.CLANCY_NOTION_STATUS??p_,r=e.CLANCY_NOTION_ASSIGNEE??f_,n=e.CLANCY_NOTION_LABELS??d_,o=e.CLANCY_NOTION_PARENT??m_;return{async ping(){return Vp(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=e.CLANCY_NOTION_TODO??"To-do",a=h_(t,i),u=await Fr(e.NOTION_TOKEN,e.NOTION_DATABASE_ID,a);if(!u)return[];let l=u.results;s.excludeHitl&&(l=l.filter(f=>!q(f,n,"multi_select")?.includes("clancy:hitl")));let p=s.buildLabel??e.CLANCY_LABEL;return p&&(l=l.filter(f=>q(f,n,"multi_select")?.includes(p))),l.slice(0,5).map(f=>g_(f,{labelsProp:n,parentProp:o,assigneeProp:r}))},async fetchBlockerStatus(s){let i=s.issueId;return i?Qp(e.NOTION_TOKEN,e.NOTION_DATABASE_ID,i,t):!1},async fetchChildrenStatus(s){return Xp(e.NOTION_TOKEN,e.NOTION_DATABASE_ID,s,o,t)},async transitionTicket(s,i){let a=s.issueId;if(!a)return!1;if(await Lt(e.NOTION_TOKEN,a,{[t]:{status:{name:i}}}))return console.log(` \u2192 Transitioned to ${i}`),!0;let l=await Lt(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 tf(e.NOTION_TOKEN,e.NOTION_DATABASE_ID,s);if(!a)return;let u=q(a,n,"multi_select")??[];if(u.includes(i))return;let l=[...u,i].map(p=>({name:p}));await Lt(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 tf(e.NOTION_TOKEN,e.NOTION_DATABASE_ID,s);if(!a)return;let u=q(a,n,"multi_select")??[];if(!u.includes(i))return;let l=u.filter(p=>p!==i).map(p=>({name:p}));await Lt(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 h_(e,t){return{property:e,status:{equals:t??"To-do"}}}function g_(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=q(e,l,"title")??"";break}let s="";for(let l of["Description","description","Body","body"]){let p=q(e,l,"rich_text");if(p){s=p;break}}let i=q(e,t.parentProp,"relation"),a=i&&i.length>0?`notion-${i[0].replace(/-/g,"").slice(0,8)}`:"none",u=q(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 tf(e,t,r){let n=r.replace("notion-","");return n?(await Ot(e,t)).find(s=>s.id.replace(/-/g,"").slice(0,8)===n):void 0}var y_=c.object({verb:c.string(),subject_id:c.number(),object_id:c.number()}),Ma=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(y_)),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()))}),Hr=c.object({data:c.array(Ma),next:c.optional(c.nullable(c.string())),total:c.optional(c.number())}),qr=Ma,__=c.object({id:c.number(),name:c.string(),type:c.string()}),b_=c.object({id:c.number(),name:c.string(),states:c.array(__)}),nf=c.array(b_),of=c.object({id:c.number(),name:c.string()}),sf=c.array(of),af=of,cf=c.array(Ma),uf=c.object({id:c.string(),mention_name:c.optional(c.string())});var ee="https://api.app.shortcut.com/api/v3";function te(e){return{"Shortcut-Token":e,"Content-Type":"application/json"}}var Jr;var Zt;async function lf(e){let t;try{t=await fetch(`${ee}/member-info`,{headers:te(e)}),t.ok||(t=await fetch(`${ee}/workflows`,{headers:te(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=uf.safeParse(r);if(n.success&&n.data.id)return{ok:!0};if(Array.isArray(r))return{ok:!0}}catch{}return{ok:!1,error:"\u2717 Shortcut auth failed \u2014 check SHORTCUT_API_TOKEN"}}async function jt(e){if(Jr)return Jr;try{let t=await fetch(`${ee}/workflows`,{headers:te(e)});if(!t.ok)return console.warn(`\u26A0 Shortcut /workflows returned HTTP ${t.status}`),[];let r=await t.json(),n=nf.safeParse(r);return n.success?(Jr=n.data,Jr):(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 pf(e,t,r){let n=await jt(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 ff(e,t,r){let n=await jt(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 df(e,t,r,n,o,s=5){if(!t.length)return[];let i,a={};(t.length===1||t.length>1)&&(a.workflow_state_id=t[0]),n&&(a.owner_ids=[n]),r&&(a.label_name=r);try{i=await fetch(`${ee}/stories/search`,{method:"POST",headers:te(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=Hr.safeParse(u),p;if(l.success)p=l.data.data;else if(Array.isArray(u)){let f=Hr.safeParse({data:u});if(!f.success)return console.warn(`\u26A0 Unexpected Shortcut response shape: ${f.error.message}`),[];p=f.data.data}else return console.warn(`\u26A0 Unexpected Shortcut response shape: ${l.error.message}`),[];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 mf(e,t){try{let r=await fetch(`${ee}/stories/${t}`,{headers:te(e)});if(!r.ok)return!1;let n=await r.json(),o=qr.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 jt(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(`${ee}/stories/${p}`,{headers:te(e)});if(!f.ok)continue;let m=await f.json(),h=qr.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 hf(e,t,r){try{if(r){let n=await w_(e,`Epic: ${r}`);if(n&&n.total>0)return n}return await $_(e,t)}catch{return}}async function w_(e,t){try{let r=await fetch(`${ee}/stories/search`,{method:"POST",headers:te(e),body:JSON.stringify({query:t})});if(!r.ok)return;let n=await r.json(),o=Hr.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 jt(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 $_(e,t){try{let r=await fetch(`${ee}/epics/${t}/stories`,{headers:te(e)});if(!r.ok)return;let n=await r.json(),o=cf.safeParse(n);if(!o.success)return;let s=o.data,i=s.length;if(i===0)return{total:0,incomplete:0};let a=await jt(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 gf(e,t,r){try{return(await fetch(`${ee}/stories/${t}`,{method:"PUT",headers:te(e),body:JSON.stringify({workflow_state_id:r})})).ok}catch{return!1}}async function Kr(e){if(Zt)return Zt;try{let t=await fetch(`${ee}/labels`,{headers:te(e)});if(!t.ok)return console.warn(`\u26A0 Shortcut /labels returned HTTP ${t.status}`),[];let r=await t.json(),n=sf.safeParse(r);return n.success?(Zt=n.data,Zt):(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 yf(e,t){try{let r=await fetch(`${ee}/labels`,{method:"POST",headers:te(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=af.safeParse(n);return o.success?(Zt=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 Ba(e,t){try{let r=await fetch(`${ee}/stories/${t}`,{headers:te(e)});if(!r.ok)return;let n=await r.json(),o=qr.safeParse(n);return o.success?o.data.label_ids??[]:void 0}catch{return}}async function Ua(e,t,r){try{let n=await fetch(`${ee}/stories/${t}`,{method:"PUT",headers:te(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 _f(e){return{async ping(){return lf(e.SHORTCUT_API_TOKEN)},validateInputs(){},async fetchTicket(t){return(await this.fetchTickets(t))[0]},async fetchTickets(t){let r=await ff(e.SHORTCUT_API_TOKEN,"unstarted",e.SHORTCUT_WORKFLOW);return(await df(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=Yr(t.key);return r===void 0?!1:mf(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 hf(e.SHORTCUT_API_TOKEN,o,t)},async transitionTicket(t,r){let n=Yr(t.key);if(n===void 0)return!1;let o=await pf(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 gf(e.SHORTCUT_API_TOKEN,n,o);return s&&console.log(` \u2192 Transitioned to ${r}`),s},async ensureLabel(t){try{if((await Kr(e.SHORTCUT_API_TOKEN)).find(o=>o.name===t))return;await yf(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=Yr(t);if(n===void 0)return;let s=(await Kr(e.SHORTCUT_API_TOKEN)).find(a=>a.name===r);if(!s)return;let i=await Ba(e.SHORTCUT_API_TOKEN,n);if(!i||i.includes(s.id))return;await Ua(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=Yr(t);if(n===void 0)return;let s=(await Kr(e.SHORTCUT_API_TOKEN)).find(a=>a.name===r);if(!s)return;let i=await Ba(e.SHORTCUT_API_TOKEN,n);if(!i||!i.includes(s.id))return;await Ua(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 Yr(e){let t=parseInt(e.replace("sc-",""),10);return Number.isNaN(t)?void 0:t}function bf(e){switch(e.provider){case"jira":return Pp(e.env);case"github":return _p(e.env);case"linear":return Jp(e.env);case"shortcut":return _f(e.env);case"notion":return rf(e.env);case"azdo":return pp(e.env)}}async function wf(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=Nr(e.cwd);if(!t.ok)return console.log(t.error),!1;t.warning&&console.log(t.warning);let r=Er(t.env);if(typeof r=="string")return console.log(r),!1;let n=r,o=bf(n),s=o.validateInputs();if(s)return console.log(s),!1;let i=await o.ping();return i.ok?(console.log(O("\u2705 Preflight passed")),e.config=n,e.board=o,!0):(console.log(i.error),!1)}async function $f(e){let t=e.config;try{let r=await Ol(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(z(` \u21BB PR rework: [${e.ticket.key}] ${e.ticket.title}`)))}catch{}return!0}async function kf(e){let t=e.config;if(e.ticket||(e.ticket=await Wu(e.board)),!e.ticket)return console.log($("No tickets found. All done!")),!1;if(e.isRework){let a=parseInt(D(t).CLANCY_MAX_REWORK??"3",10),u=Number.isFinite(a)&&a>0?a:3;if(Ku(e.cwd,e.ticket.key)>=u)return console.log(z(`\u26A0 ${e.ticket.key} has reached max rework cycles (${u}) \u2014 needs human intervention`)),C(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(z(` Blockers: ${e.ticket.blockers}`)),console.log(""),!0}async function xf(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 S_(e){let t=Ya(e);if(await Ql(t))try{if(!await wf(t)||!await Dl(t)||!await Xl(t)||!await $f(t)||!await kf(t)||!jl(t)||!Hl(t)||!await xl(t)||!await xf(t)||!Yl(t)||!await Zl(t))return;Tl(t),await vl(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{Z(t.originalBranch)}catch{}}finally{t.lockOwner&&(Ht(t.cwd),qt(t.cwd))}}process.argv[1]&&x_(import.meta.url)===k_(process.argv[1])&&S_(process.argv);export{S_ as run};