chief-clancy 0.8.17 → 0.8.18

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,8 +1,8 @@
1
- var wf=Object.defineProperty;var ve=(e,t)=>{for(var r in t)wf(e,r,{get:t[r],enumerable:!0})};import{resolve as wb}from"node:path";import{fileURLToPath as $b}from"node:url";function Ce(e){let t=Math.floor(e/1e3);if(t<60)return`${t}s`;let r=Math.floor(t/60),n=t%60;if(r<60)return n>0?`${r}m ${n}s`:`${r}m`;let o=Math.floor(r/60),s=r%60;return s>0?`${o}h ${s}m`:`${o}h`}import{execFileSync as pe}from"node:child_process";function Kr(...e){return pe("git",e,{encoding:"utf8"}).trim()}function Ba(){return Kr("rev-parse","--abbrev-ref","HEAD")}function Dt(){try{return pe("git",["diff","--quiet"],{stdio:"ignore"}),pe("git",["diff","--cached","--quiet"],{stdio:"ignore"}),!1}catch{return!0}}function Xe(e){try{return pe("git",["show-ref","--verify","--quiet",`refs/heads/${e}`],{stdio:"ignore"}),!0}catch{return!1}}function Yr(e,t){Xe(e)||Kr("checkout","-b",e,t)}function L(e,t=!1){Kr("checkout",...t?["-B"]:[],e)}function Ua(e){try{return pe("git",["ls-remote","--heads","origin",e],{encoding:"utf8",timeout:15e3}).trim().length>0}catch{return!1}}function Mt(e){try{return pe("git",["fetch","origin",`${e}:${e}`],{encoding:"utf8",stdio:["pipe","pipe","pipe"]}),!0}catch{return!1}}function Fa(e,t=8e3){try{let r=pe("git",["diff",`${e}...HEAD`,"--stat"],{encoding:"utf8",timeout:1e4}).trim();return r?r.length>t?r.slice(0,t)+`
2
- ... (truncated)`:r:void 0}catch{return}}function et(e){try{return pe("git",["push","-u","origin",e],{encoding:"utf8",stdio:["pipe","pipe","pipe"]}),!0}catch{return!1}}var $=e=>`\x1B[2m${e}\x1B[0m`,Ne=e=>`\x1B[1m${e}\x1B[0m`;var N=e=>`\x1B[32m${e}\x1B[0m`,Oe=e=>`\x1B[31m${e}\x1B[0m`,v=e=>`\x1B[33m${e}\x1B[0m`;function Ha(e){return{argv:e,dryRun:e.includes("--dry-run"),skipFeasibility:e.includes("--skip-feasibility"),startTime:Date.now(),cwd:process.cwd(),isAfk:process.env.CLANCY_AFK_MODE==="1"}}import{mkdirSync as $f,readFileSync as xf,unlinkSync as qa,writeFileSync as kf}from"node:fs";import{dirname as Sf,join as Bt}from"node:path";function Ja(e,t){let r=Bt(e,".clancy","lock.json");$f(Sf(r),{recursive:!0}),kf(r,JSON.stringify(t,null,2),"utf8")}function Ut(e){let t=Bt(e,".clancy","lock.json");try{let r=xf(t,"utf8");return JSON.parse(r)}catch{return}}function Ft(e){let t=Bt(e,".clancy","lock.json");try{qa(t)}catch{}}function Ht(e){let t=Bt(e,".clancy","verify-attempt.txt");try{qa(t)}catch{}}function vf(e){try{return process.kill(e,0),!0}catch(t){return t instanceof Error&&"code"in t&&t.code==="EPERM"}}function Ka(e){if(!vf(e.pid))return!0;let t=Date.now()-new Date(e.startedAt).getTime();if(Number.isNaN(t))return!0;let r=1440*60*1e3;return t>r}import{execFileSync as gl}from"node:child_process";import{readFileSync as Jg}from"node:fs";import{join as Kg}from"node:path";var c={};ve(c,{$brand:()=>Wr,$input:()=>As,$output:()=>Ps,NEVER:()=>Gr,TimePrecision:()=>ti,ZodMiniAny:()=>eu,ZodMiniArray:()=>su,ZodMiniBase64:()=>Jc,ZodMiniBase64URL:()=>Kc,ZodMiniBigInt:()=>kt,ZodMiniBigIntFormat:()=>sa,ZodMiniBoolean:()=>xt,ZodMiniCIDRv4:()=>Fc,ZodMiniCIDRv6:()=>Hc,ZodMiniCUID:()=>Lc,ZodMiniCUID2:()=>Zc,ZodMiniCatch:()=>Su,ZodMiniCodec:()=>pa,ZodMiniCustom:()=>fa,ZodMiniCustomStringFormat:()=>wt,ZodMiniDate:()=>$r,ZodMiniDefault:()=>$u,ZodMiniDiscriminatedUnion:()=>cu,ZodMiniE164:()=>Yc,ZodMiniEmail:()=>Rc,ZodMiniEmoji:()=>Nc,ZodMiniEnum:()=>aa,ZodMiniExactOptional:()=>_u,ZodMiniFile:()=>yu,ZodMiniFunction:()=>Ru,ZodMiniGUID:()=>Cc,ZodMiniIPv4:()=>Bc,ZodMiniIPv6:()=>Uc,ZodMiniISODate:()=>zr,ZodMiniISODateTime:()=>vr,ZodMiniISODuration:()=>Ir,ZodMiniISOTime:()=>Tr,ZodMiniIntersection:()=>uu,ZodMiniJWT:()=>Gc,ZodMiniKSUID:()=>Mc,ZodMiniLazy:()=>Iu,ZodMiniLiteral:()=>gu,ZodMiniMAC:()=>qc,ZodMiniMap:()=>du,ZodMiniNaN:()=>vu,ZodMiniNanoID:()=>Oc,ZodMiniNever:()=>ru,ZodMiniNonOptional:()=>ua,ZodMiniNull:()=>Qc,ZodMiniNullable:()=>wu,ZodMiniNumber:()=>$t,ZodMiniNumberFormat:()=>qe,ZodMiniObject:()=>xr,ZodMiniOptional:()=>ca,ZodMiniPipe:()=>la,ZodMiniPrefault:()=>xu,ZodMiniPromise:()=>Au,ZodMiniReadonly:()=>zu,ZodMiniRecord:()=>kr,ZodMiniSet:()=>mu,ZodMiniString:()=>He,ZodMiniStringFormat:()=>E,ZodMiniSuccess:()=>ku,ZodMiniSymbol:()=>Wc,ZodMiniTemplateLiteral:()=>Tu,ZodMiniTransform:()=>bu,ZodMiniTuple:()=>lu,ZodMiniType:()=>S,ZodMiniULID:()=>jc,ZodMiniURL:()=>oa,ZodMiniUUID:()=>_t,ZodMiniUndefined:()=>Vc,ZodMiniUnion:()=>ia,ZodMiniUnknown:()=>tu,ZodMiniVoid:()=>ou,ZodMiniXID:()=>Dc,ZodMiniXor:()=>au,_default:()=>Yh,_function:()=>dg,any:()=>xh,array:()=>K,base64:()=>oh,base64url:()=>sh,bigint:()=>yh,boolean:()=>Je,catch:()=>Qh,catchall:()=>Nh,check:()=>sg,cidrv4:()=>th,cidrv6:()=>rh,clone:()=>q,codec:()=>tg,coerce:()=>ma,config:()=>B,core:()=>Fe,cuid:()=>Ym,cuid2:()=>Gm,custom:()=>Eu,date:()=>Sh,decode:()=>_n,decodeAsync:()=>$n,describe:()=>cg,discriminatedUnion:()=>Lh,e164:()=>ih,email:()=>jm,emoji:()=>Jm,encode:()=>bn,encodeAsync:()=>wn,endsWith:()=>Fi,enum:()=>hu,exactOptional:()=>Jh,extend:()=>ke,file:()=>Hh,flattenError:()=>mn,float32:()=>dh,float64:()=>mh,formatError:()=>hn,function:()=>dg,globalRegistry:()=>ae,gt:()=>gr,gte:()=>gt,guid:()=>Dm,hash:()=>ph,hex:()=>lh,hostname:()=>uh,httpUrl:()=>qm,includes:()=>Bi,instanceof:()=>lg,int:()=>fh,int32:()=>hh,int64:()=>bh,intersection:()=>Zh,ipv4:()=>Xm,ipv6:()=>eh,iso:()=>da,json:()=>fg,jwt:()=>ah,keyof:()=>vh,ksuid:()=>Qm,lazy:()=>Pu,length:()=>ji,literal:()=>Fh,locales:()=>mt,looseObject:()=>Th,looseRecord:()=>Dh,lowercase:()=>Di,lt:()=>hr,lte:()=>ht,mac:()=>nh,map:()=>Mh,maxLength:()=>Zi,maxSize:()=>Ni,maximum:()=>ht,merge:()=>Ph,meta:()=>ug,mime:()=>qi,minLength:()=>yt,minSize:()=>Oi,minimum:()=>gt,multipleOf:()=>Ci,nan:()=>Xh,nanoid:()=>Km,nativeEnum:()=>Uh,negative:()=>Ai,never:()=>nu,nonnegative:()=>Ri,nonoptional:()=>Wh,nonpositive:()=>Ei,normalize:()=>Ji,null:()=>Xc,nullable:()=>Sr,nullish:()=>Kh,number:()=>xe,object:()=>I,omit:()=>Eh,optional:()=>w,overwrite:()=>be,parse:()=>ge,parseAsync:()=>ye,partial:()=>Rh,partialRecord:()=>jh,pick:()=>Ah,pipe:()=>eg,positive:()=>Pi,prefault:()=>Gh,prettifyError:()=>yn,promise:()=>og,property:()=>Hi,readonly:()=>rg,record:()=>fu,refine:()=>ig,regex:()=>bt,regexes:()=>re,registry:()=>dr,required:()=>Ch,safeDecode:()=>kn,safeDecodeAsync:()=>vn,safeEncode:()=>xn,safeEncodeAsync:()=>Sn,safeExtend:()=>Ih,safeParse:()=>Te,safeParseAsync:()=>Ie,set:()=>Bh,size:()=>Li,startsWith:()=>Ui,strictObject:()=>zh,string:()=>_,stringFormat:()=>ch,stringbool:()=>pg,success:()=>Vh,superRefine:()=>ag,symbol:()=>wh,templateLiteral:()=>ng,toJSONSchema:()=>br,toLowerCase:()=>Yi,toUpperCase:()=>Gi,transform:()=>qh,treeifyError:()=>gn,trim:()=>Ki,tuple:()=>pu,uint32:()=>gh,uint64:()=>_h,ulid:()=>Wm,undefined:()=>$h,union:()=>iu,unknown:()=>wr,uppercase:()=>Mi,url:()=>Hm,util:()=>te,uuid:()=>Mm,uuidv4:()=>Bm,uuidv6:()=>Um,uuidv7:()=>Fm,void:()=>kh,xid:()=>Vm,xor:()=>Oh});var Fe={};ve(Fe,{$ZodAny:()=>Qo,$ZodArray:()=>ns,$ZodAsyncError:()=>se,$ZodBase64:()=>Uo,$ZodBase64URL:()=>Fo,$ZodBigInt:()=>cr,$ZodBigIntFormat:()=>Yo,$ZodBoolean:()=>pt,$ZodCIDRv4:()=>Do,$ZodCIDRv6:()=>Mo,$ZodCUID:()=>To,$ZodCUID2:()=>Io,$ZodCatch:()=>ws,$ZodCheck:()=>A,$ZodCheckBigIntFormat:()=>ro,$ZodCheckEndsWith:()=>ho,$ZodCheckGreaterThan:()=>tr,$ZodCheckIncludes:()=>fo,$ZodCheckLengthEquals:()=>co,$ZodCheckLessThan:()=>er,$ZodCheckLowerCase:()=>lo,$ZodCheckMaxLength:()=>io,$ZodCheckMaxSize:()=>no,$ZodCheckMimeType:()=>yo,$ZodCheckMinLength:()=>ao,$ZodCheckMinSize:()=>oo,$ZodCheckMultipleOf:()=>eo,$ZodCheckNumberFormat:()=>to,$ZodCheckOverwrite:()=>bo,$ZodCheckProperty:()=>go,$ZodCheckRegex:()=>uo,$ZodCheckSizeEquals:()=>so,$ZodCheckStartsWith:()=>mo,$ZodCheckStringFormat:()=>Me,$ZodCheckUpperCase:()=>po,$ZodCodec:()=>dt,$ZodCustom:()=>Is,$ZodCustomStringFormat:()=>Jo,$ZodDate:()=>rs,$ZodDefault:()=>gs,$ZodDiscriminatedUnion:()=>ss,$ZodE164:()=>Ho,$ZodEmail:()=>ko,$ZodEmoji:()=>vo,$ZodEncodeError:()=>Le,$ZodEnum:()=>ls,$ZodError:()=>dn,$ZodExactOptional:()=>ms,$ZodFile:()=>fs,$ZodFunction:()=>vs,$ZodGUID:()=>$o,$ZodIPv4:()=>Lo,$ZodIPv6:()=>Zo,$ZodISODate:()=>Co,$ZodISODateTime:()=>Ro,$ZodISODuration:()=>Oo,$ZodISOTime:()=>No,$ZodIntersection:()=>is,$ZodJWT:()=>qo,$ZodKSUID:()=>Eo,$ZodLazy:()=>Ts,$ZodLiteral:()=>ps,$ZodMAC:()=>jo,$ZodMap:()=>cs,$ZodNaN:()=>$s,$ZodNanoID:()=>zo,$ZodNever:()=>es,$ZodNonOptional:()=>bs,$ZodNull:()=>Vo,$ZodNullable:()=>hs,$ZodNumber:()=>ar,$ZodNumberFormat:()=>Ko,$ZodObject:()=>ur,$ZodObjectJIT:()=>$d,$ZodOptional:()=>pr,$ZodPipe:()=>xs,$ZodPrefault:()=>ys,$ZodPromise:()=>zs,$ZodReadonly:()=>ks,$ZodRealError:()=>W,$ZodRecord:()=>as,$ZodRegistry:()=>fr,$ZodSet:()=>us,$ZodString:()=>Be,$ZodStringFormat:()=>P,$ZodSuccess:()=>_s,$ZodSymbol:()=>Go,$ZodTemplateLiteral:()=>Ss,$ZodTransform:()=>ds,$ZodTuple:()=>lr,$ZodType:()=>x,$ZodULID:()=>Po,$ZodURL:()=>So,$ZodUUID:()=>xo,$ZodUndefined:()=>Wo,$ZodUnion:()=>ft,$ZodUnknown:()=>Xo,$ZodVoid:()=>ts,$ZodXID:()=>Ao,$ZodXor:()=>os,$brand:()=>Wr,$constructor:()=>d,$input:()=>As,$output:()=>Ps,Doc:()=>lt,JSONSchema:()=>Ec,JSONSchemaGenerator:()=>_r,NEVER:()=>Gr,TimePrecision:()=>ti,_any:()=>xi,_array:()=>zd,_base64:()=>Vs,_base64url:()=>Qs,_bigint:()=>hi,_boolean:()=>di,_catch:()=>Hd,_check:()=>Ac,_cidrv4:()=>Gs,_cidrv6:()=>Ws,_coercedBigint:()=>gi,_coercedBoolean:()=>mi,_coercedDate:()=>Ti,_coercedNumber:()=>ai,_coercedString:()=>Rs,_cuid:()=>Bs,_cuid2:()=>Us,_custom:()=>Vi,_date:()=>zi,_decode:()=>tc,_decodeAsync:()=>nc,_default:()=>Bd,_discriminatedUnion:()=>Pd,_e164:()=>Xs,_email:()=>Cs,_emoji:()=>Ds,_encode:()=>ec,_encodeAsync:()=>rc,_endsWith:()=>Fi,_enum:()=>Od,_file:()=>Wi,_float32:()=>ui,_float64:()=>li,_gt:()=>gr,_gte:()=>gt,_guid:()=>Ns,_includes:()=>Bi,_int:()=>ci,_int32:()=>pi,_int64:()=>yi,_intersection:()=>Ad,_ipv4:()=>Js,_ipv6:()=>Ks,_isoDate:()=>ni,_isoDateTime:()=>ri,_isoDuration:()=>si,_isoTime:()=>oi,_jwt:()=>ei,_ksuid:()=>qs,_lazy:()=>Yd,_length:()=>ji,_literal:()=>Zd,_lowercase:()=>Di,_lt:()=>hr,_lte:()=>ht,_mac:()=>Ys,_map:()=>Cd,_max:()=>ht,_maxLength:()=>Zi,_maxSize:()=>Ni,_mime:()=>qi,_min:()=>gt,_minLength:()=>yt,_minSize:()=>Oi,_multipleOf:()=>Ci,_nan:()=>Ii,_nanoid:()=>Ms,_nativeEnum:()=>Ld,_negative:()=>Ai,_never:()=>Si,_nonnegative:()=>Ri,_nonoptional:()=>Ud,_nonpositive:()=>Ei,_normalize:()=>Ji,_null:()=>$i,_nullable:()=>Md,_number:()=>ii,_optional:()=>Dd,_overwrite:()=>be,_parse:()=>Yt,_parseAsync:()=>Gt,_pipe:()=>qd,_positive:()=>Pi,_promise:()=>Gd,_property:()=>Hi,_readonly:()=>Jd,_record:()=>Rd,_refine:()=>Qi,_regex:()=>bt,_safeDecode:()=>sc,_safeDecodeAsync:()=>ac,_safeEncode:()=>oc,_safeEncodeAsync:()=>ic,_safeParse:()=>Wt,_safeParseAsync:()=>Vt,_set:()=>Nd,_size:()=>Li,_slugify:()=>vd,_startsWith:()=>Ui,_string:()=>Es,_stringFormat:()=>Ue,_stringbool:()=>ra,_success:()=>Fd,_superRefine:()=>Xi,_symbol:()=>_i,_templateLiteral:()=>Kd,_toLowerCase:()=>Yi,_toUpperCase:()=>Gi,_transform:()=>jd,_trim:()=>Ki,_tuple:()=>Ed,_uint32:()=>fi,_uint64:()=>bi,_ulid:()=>Fs,_undefined:()=>wi,_union:()=>Td,_unknown:()=>ki,_uppercase:()=>Mi,_url:()=>mr,_uuid:()=>Os,_uuidv4:()=>Ls,_uuidv6:()=>Zs,_uuidv7:()=>js,_void:()=>vi,_xid:()=>Hs,_xor:()=>Id,clone:()=>q,config:()=>B,createStandardJSONSchemaMethod:()=>na,createToJSONSchemaMethod:()=>Wd,decode:()=>_n,decodeAsync:()=>$n,describe:()=>ea,encode:()=>bn,encodeAsync:()=>wn,extractDefs:()=>we,finalize:()=>$e,flattenError:()=>mn,formatError:()=>hn,globalConfig:()=>tt,globalRegistry:()=>ae,initializeContext:()=>_e,isValidBase64:()=>Bo,isValidBase64URL:()=>vc,isValidJWT:()=>zc,locales:()=>mt,meta:()=>ta,parse:()=>ge,parseAsync:()=>ye,prettifyError:()=>yn,process:()=>T,regexes:()=>re,registry:()=>dr,safeDecode:()=>kn,safeDecodeAsync:()=>vn,safeEncode:()=>xn,safeEncodeAsync:()=>Sn,safeParse:()=>Te,safeParseAsync:()=>Ie,toDotPath:()=>Xa,toJSONSchema:()=>br,treeifyError:()=>gn,util:()=>te,version:()=>_o});var Gr=Object.freeze({status:"aborted"});function d(e,t,r){function n(a,u){if(a._zod||Object.defineProperty(a,"_zod",{value:{def:u,constr:i,traits:new Set},enumerable:!1}),a._zod.traits.has(e))return;a._zod.traits.add(e),t(a,u);let l=i.prototype,p=Object.keys(l);for(let f=0;f<p.length;f++){let m=p[f];m in a||(a[m]=l[m].bind(a))}}let o=r?.Parent??Object;class s extends o{}Object.defineProperty(s,"name",{value:e});function i(a){var u;let l=r?.Parent?new s:this;n(l,a),(u=l._zod).deferred??(u.deferred=[]);for(let p of l._zod.deferred)p();return l}return Object.defineProperty(i,"init",{value:n}),Object.defineProperty(i,Symbol.hasInstance,{value:a=>r?.Parent&&a instanceof r.Parent?!0:a?._zod?.traits?.has(e)}),Object.defineProperty(i,"name",{value:e}),i}var Wr=Symbol("zod_brand"),se=class extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}},Le=class extends Error{constructor(t){super(`Encountered unidirectional transform during encode: ${t}`),this.name="ZodEncodeError"}},tt={};function B(e){return e&&Object.assign(tt,e),tt}var te={};ve(te,{BIGINT_FORMAT_RANGES:()=>an,Class:()=>Qr,NUMBER_FORMAT_RANGES:()=>sn,aborted:()=>he,allowsEval:()=>rn,assert:()=>Af,assertEqual:()=>zf,assertIs:()=>If,assertNever:()=>Pf,assertNotEqual:()=>Tf,assignProp:()=>de,base64ToUint8Array:()=>Wa,base64urlToUint8Array:()=>Ff,cached:()=>Ze,captureStackTrace:()=>Jt,cleanEnum:()=>Uf,cleanRegex:()=>ot,clone:()=>q,cloneDef:()=>Cf,createTransparentProxy:()=>Df,defineLazy:()=>k,esc:()=>qt,escapeRegex:()=>ee,extend:()=>Kt,finalizeIssue:()=>G,floatSafeRemainder:()=>en,getElementAtPath:()=>Nf,getEnumValues:()=>nt,getLengthableOrigin:()=>at,getParsedType:()=>jf,getSizableOrigin:()=>it,hexToUint8Array:()=>qf,isObject:()=>ze,isPlainObject:()=>me,issue:()=>De,joinValues:()=>Ef,jsonStringifyReplacer:()=>Xr,merge:()=>Mf,mergeDefs:()=>ue,normalizeParams:()=>g,nullish:()=>fe,numKeys:()=>Zf,objectClone:()=>Rf,omit:()=>un,optionalKeys:()=>on,parsedType:()=>Bf,partial:()=>pn,pick:()=>cn,prefixIssues:()=>Q,primitiveTypes:()=>nn,promiseAllObject:()=>Of,propertyKeyTypes:()=>st,randomString:()=>Lf,required:()=>fn,safeExtend:()=>ln,shallowClone:()=>je,slugify:()=>tn,stringifyPrimitive:()=>Ga,uint8ArrayToBase64:()=>Va,uint8ArrayToBase64url:()=>Hf,uint8ArrayToHex:()=>Jf,unwrapMessage:()=>rt});function zf(e){return e}function Tf(e){return e}function If(e){}function Pf(e){throw new Error("Unexpected value in exhaustive check")}function Af(e){}function nt(e){let t=Object.values(e).filter(n=>typeof n=="number");return Object.entries(e).filter(([n,o])=>t.indexOf(+n)===-1).map(([n,o])=>o)}function Ef(e,t="|"){return e.map(r=>Ga(r)).join(t)}function Xr(e,t){return typeof t=="bigint"?t.toString():t}function Ze(e){return{get value(){{let r=e();return Object.defineProperty(this,"value",{value:r}),r}throw new Error("cached value already set")}}}function fe(e){return e==null}function ot(e){let t=e.startsWith("^")?1:0,r=e.endsWith("$")?e.length-1:e.length;return e.slice(t,r)}function en(e,t){let r=(e.toString().split(".")[1]||"").length,n=t.toString(),o=(n.split(".")[1]||"").length;if(o===0&&/\d?e-\d?/.test(n)){let u=n.match(/\d?e-(\d?)/);u?.[1]&&(o=Number.parseInt(u[1]))}let s=r>o?r:o,i=Number.parseInt(e.toFixed(s).replace(".","")),a=Number.parseInt(t.toFixed(s).replace(".",""));return i%a/10**s}var Ya=Symbol("evaluating");function k(e,t,r){let n;Object.defineProperty(e,t,{get(){if(n!==Ya)return n===void 0&&(n=Ya,n=r()),n},set(o){Object.defineProperty(e,t,{value:o})},configurable:!0})}function Rf(e){return Object.create(Object.getPrototypeOf(e),Object.getOwnPropertyDescriptors(e))}function de(e,t,r){Object.defineProperty(e,t,{value:r,writable:!0,enumerable:!0,configurable:!0})}function ue(...e){let t={};for(let r of e){let n=Object.getOwnPropertyDescriptors(r);Object.assign(t,n)}return Object.defineProperties({},t)}function Cf(e){return ue(e._zod.def)}function Nf(e,t){return t?t.reduce((r,n)=>r?.[n],e):e}function Of(e){let t=Object.keys(e),r=t.map(n=>e[n]);return Promise.all(r).then(n=>{let o={};for(let s=0;s<t.length;s++)o[t[s]]=n[s];return o})}function Lf(e=10){let t="abcdefghijklmnopqrstuvwxyz",r="";for(let n=0;n<e;n++)r+=t[Math.floor(Math.random()*t.length)];return r}function qt(e){return JSON.stringify(e)}function tn(e){return e.toLowerCase().trim().replace(/[^\w\s-]/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")}var Jt="captureStackTrace"in Error?Error.captureStackTrace:(...e)=>{};function ze(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var rn=Ze(()=>{if(typeof navigator<"u"&&navigator?.userAgent?.includes("Cloudflare"))return!1;try{let e=Function;return new e(""),!0}catch{return!1}});function me(e){if(ze(e)===!1)return!1;let t=e.constructor;if(t===void 0||typeof t!="function")return!0;let r=t.prototype;return!(ze(r)===!1||Object.prototype.hasOwnProperty.call(r,"isPrototypeOf")===!1)}function je(e){return me(e)?{...e}:Array.isArray(e)?[...e]:e}function Zf(e){let t=0;for(let r in e)Object.prototype.hasOwnProperty.call(e,r)&&t++;return t}var jf=e=>{let t=typeof e;switch(t){case"undefined":return"undefined";case"string":return"string";case"number":return Number.isNaN(e)?"nan":"number";case"boolean":return"boolean";case"function":return"function";case"bigint":return"bigint";case"symbol":return"symbol";case"object":return Array.isArray(e)?"array":e===null?"null":e.then&&typeof e.then=="function"&&e.catch&&typeof e.catch=="function"?"promise":typeof Map<"u"&&e instanceof Map?"map":typeof Set<"u"&&e instanceof Set?"set":typeof Date<"u"&&e instanceof Date?"date":typeof File<"u"&&e instanceof File?"file":"object";default:throw new Error(`Unknown data type: ${t}`)}},st=new Set(["string","number","symbol"]),nn=new Set(["string","number","bigint","boolean","symbol","undefined"]);function ee(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function q(e,t,r){let n=new e._zod.constr(t??e._zod.def);return(!t||r?.parent)&&(n._zod.parent=e),n}function g(e){let t=e;if(!t)return{};if(typeof t=="string")return{error:()=>t};if(t?.message!==void 0){if(t?.error!==void 0)throw new Error("Cannot specify both `message` and `error` params");t.error=t.message}return delete t.message,typeof t.error=="string"?{...t,error:()=>t.error}:t}function Df(e){let t;return new Proxy({},{get(r,n,o){return t??(t=e()),Reflect.get(t,n,o)},set(r,n,o,s){return t??(t=e()),Reflect.set(t,n,o,s)},has(r,n){return t??(t=e()),Reflect.has(t,n)},deleteProperty(r,n){return t??(t=e()),Reflect.deleteProperty(t,n)},ownKeys(r){return t??(t=e()),Reflect.ownKeys(t)},getOwnPropertyDescriptor(r,n){return t??(t=e()),Reflect.getOwnPropertyDescriptor(t,n)},defineProperty(r,n,o){return t??(t=e()),Reflect.defineProperty(t,n,o)}})}function Ga(e){return typeof e=="bigint"?e.toString()+"n":typeof e=="string"?`"${e}"`:`${e}`}function on(e){return Object.keys(e).filter(t=>e[t]._zod.optin==="optional"&&e[t]._zod.optout==="optional")}var sn={safeint:[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]},an={int64:[BigInt("-9223372036854775808"),BigInt("9223372036854775807")],uint64:[BigInt(0),BigInt("18446744073709551615")]};function cn(e,t){let r=e._zod.def,n=r.checks;if(n&&n.length>0)throw new Error(".pick() cannot be used on object schemas containing refinements");let s=ue(e._zod.def,{get shape(){let i={};for(let a in t){if(!(a in r.shape))throw new Error(`Unrecognized key: "${a}"`);t[a]&&(i[a]=r.shape[a])}return de(this,"shape",i),i},checks:[]});return q(e,s)}function un(e,t){let r=e._zod.def,n=r.checks;if(n&&n.length>0)throw new Error(".omit() cannot be used on object schemas containing refinements");let s=ue(e._zod.def,{get shape(){let i={...e._zod.def.shape};for(let a in t){if(!(a in r.shape))throw new Error(`Unrecognized key: "${a}"`);t[a]&&delete i[a]}return de(this,"shape",i),i},checks:[]});return q(e,s)}function Kt(e,t){if(!me(t))throw new Error("Invalid input to extend: expected a plain object");let r=e._zod.def.checks;if(r&&r.length>0){let s=e._zod.def.shape;for(let i in t)if(Object.getOwnPropertyDescriptor(s,i)!==void 0)throw new Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}let o=ue(e._zod.def,{get shape(){let s={...e._zod.def.shape,...t};return de(this,"shape",s),s}});return q(e,o)}function ln(e,t){if(!me(t))throw new Error("Invalid input to safeExtend: expected a plain object");let r=ue(e._zod.def,{get shape(){let n={...e._zod.def.shape,...t};return de(this,"shape",n),n}});return q(e,r)}function Mf(e,t){let r=ue(e._zod.def,{get shape(){let n={...e._zod.def.shape,...t._zod.def.shape};return de(this,"shape",n),n},get catchall(){return t._zod.def.catchall},checks:[]});return q(e,r)}function pn(e,t,r){let o=t._zod.def.checks;if(o&&o.length>0)throw new Error(".partial() cannot be used on object schemas containing refinements");let i=ue(t._zod.def,{get shape(){let a=t._zod.def.shape,u={...a};if(r)for(let l in r){if(!(l in a))throw new Error(`Unrecognized key: "${l}"`);r[l]&&(u[l]=e?new e({type:"optional",innerType:a[l]}):a[l])}else for(let l in a)u[l]=e?new e({type:"optional",innerType:a[l]}):a[l];return de(this,"shape",u),u},checks:[]});return q(t,i)}function fn(e,t,r){let n=ue(t._zod.def,{get shape(){let o=t._zod.def.shape,s={...o};if(r)for(let i in r){if(!(i in s))throw new Error(`Unrecognized key: "${i}"`);r[i]&&(s[i]=new e({type:"nonoptional",innerType:o[i]}))}else for(let i in o)s[i]=new e({type:"nonoptional",innerType:o[i]});return de(this,"shape",s),s}});return q(t,n)}function he(e,t=0){if(e.aborted===!0)return!0;for(let r=t;r<e.issues.length;r++)if(e.issues[r]?.continue!==!0)return!0;return!1}function Q(e,t){return t.map(r=>{var n;return(n=r).path??(n.path=[]),r.path.unshift(e),r})}function rt(e){return typeof e=="string"?e:e?.message}function G(e,t,r){let n={...e,path:e.path??[]};if(!e.message){let o=rt(e.inst?._zod.def?.error?.(e))??rt(t?.error?.(e))??rt(r.customError?.(e))??rt(r.localeError?.(e))??"Invalid input";n.message=o}return delete n.inst,delete n.continue,t?.reportInput||delete n.input,n}function it(e){return e instanceof Set?"set":e instanceof Map?"map":e instanceof File?"file":"unknown"}function at(e){return Array.isArray(e)?"array":typeof e=="string"?"string":"unknown"}function Bf(e){let t=typeof e;switch(t){case"number":return Number.isNaN(e)?"nan":"number";case"object":{if(e===null)return"null";if(Array.isArray(e))return"array";let r=e;if(r&&Object.getPrototypeOf(r)!==Object.prototype&&"constructor"in r&&r.constructor)return r.constructor.name}}return t}function De(...e){let[t,r,n]=e;return typeof t=="string"?{message:t,code:"custom",input:r,inst:n}:{...t}}function Uf(e){return Object.entries(e).filter(([t,r])=>Number.isNaN(Number.parseInt(t,10))).map(t=>t[1])}function Wa(e){let t=atob(e),r=new Uint8Array(t.length);for(let n=0;n<t.length;n++)r[n]=t.charCodeAt(n);return r}function Va(e){let t="";for(let r=0;r<e.length;r++)t+=String.fromCharCode(e[r]);return btoa(t)}function Ff(e){let t=e.replace(/-/g,"+").replace(/_/g,"/"),r="=".repeat((4-t.length%4)%4);return Wa(t+r)}function Hf(e){return Va(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}function qf(e){let t=e.replace(/^0x/,"");if(t.length%2!==0)throw new Error("Invalid hex string length");let r=new Uint8Array(t.length/2);for(let n=0;n<t.length;n+=2)r[n/2]=Number.parseInt(t.slice(n,n+2),16);return r}function Jf(e){return Array.from(e).map(t=>t.toString(16).padStart(2,"0")).join("")}var Qr=class{constructor(...t){}};var Qa=(e,t)=>{e.name="$ZodError",Object.defineProperty(e,"_zod",{value:e._zod,enumerable:!1}),Object.defineProperty(e,"issues",{value:t,enumerable:!1}),e.message=JSON.stringify(t,Xr,2),Object.defineProperty(e,"toString",{value:()=>e.message,enumerable:!1})},dn=d("$ZodError",Qa),W=d("$ZodError",Qa,{Parent:Error});function mn(e,t=r=>r.message){let r={},n=[];for(let o of e.issues)o.path.length>0?(r[o.path[0]]=r[o.path[0]]||[],r[o.path[0]].push(t(o))):n.push(t(o));return{formErrors:n,fieldErrors:r}}function hn(e,t=r=>r.message){let r={_errors:[]},n=o=>{for(let s of o.issues)if(s.code==="invalid_union"&&s.errors.length)s.errors.map(i=>n({issues:i}));else if(s.code==="invalid_key")n({issues:s.issues});else if(s.code==="invalid_element")n({issues:s.issues});else if(s.path.length===0)r._errors.push(t(s));else{let i=r,a=0;for(;a<s.path.length;){let u=s.path[a];a===s.path.length-1?(i[u]=i[u]||{_errors:[]},i[u]._errors.push(t(s))):i[u]=i[u]||{_errors:[]},i=i[u],a++}}};return n(e),r}function gn(e,t=r=>r.message){let r={errors:[]},n=(o,s=[])=>{var i,a;for(let u of o.issues)if(u.code==="invalid_union"&&u.errors.length)u.errors.map(l=>n({issues:l},u.path));else if(u.code==="invalid_key")n({issues:u.issues},u.path);else if(u.code==="invalid_element")n({issues:u.issues},u.path);else{let l=[...s,...u.path];if(l.length===0){r.errors.push(t(u));continue}let p=r,f=0;for(;f<l.length;){let m=l[f],h=f===l.length-1;typeof m=="string"?(p.properties??(p.properties={}),(i=p.properties)[m]??(i[m]={errors:[]}),p=p.properties[m]):(p.items??(p.items=[]),(a=p.items)[m]??(a[m]={errors:[]}),p=p.items[m]),h&&p.errors.push(t(u)),f++}}};return n(e),r}function Xa(e){let t=[],r=e.map(n=>typeof n=="object"?n.key:n);for(let n of r)typeof n=="number"?t.push(`[${n}]`):typeof n=="symbol"?t.push(`[${JSON.stringify(String(n))}]`):/[^\w$]/.test(n)?t.push(`[${JSON.stringify(n)}]`):(t.length&&t.push("."),t.push(n));return t.join("")}function yn(e){let t=[],r=[...e.issues].sort((n,o)=>(n.path??[]).length-(o.path??[]).length);for(let n of r)t.push(`\u2716 ${n.message}`),n.path?.length&&t.push(` \u2192 at ${Xa(n.path)}`);return t.join(`
3
- `)}var Yt=e=>(t,r,n,o)=>{let s=n?Object.assign(n,{async:!1}):{async:!1},i=t._zod.run({value:r,issues:[]},s);if(i instanceof Promise)throw new se;if(i.issues.length){let a=new(o?.Err??e)(i.issues.map(u=>G(u,s,B())));throw Jt(a,o?.callee),a}return i.value},ge=Yt(W),Gt=e=>async(t,r,n,o)=>{let s=n?Object.assign(n,{async:!0}):{async:!0},i=t._zod.run({value:r,issues:[]},s);if(i instanceof Promise&&(i=await i),i.issues.length){let a=new(o?.Err??e)(i.issues.map(u=>G(u,s,B())));throw Jt(a,o?.callee),a}return i.value},ye=Gt(W),Wt=e=>(t,r,n)=>{let o=n?{...n,async:!1}:{async:!1},s=t._zod.run({value:r,issues:[]},o);if(s instanceof Promise)throw new se;return s.issues.length?{success:!1,error:new(e??dn)(s.issues.map(i=>G(i,o,B())))}:{success:!0,data:s.value}},Te=Wt(W),Vt=e=>async(t,r,n)=>{let o=n?Object.assign(n,{async:!0}):{async:!0},s=t._zod.run({value:r,issues:[]},o);return s instanceof Promise&&(s=await s),s.issues.length?{success:!1,error:new e(s.issues.map(i=>G(i,o,B())))}:{success:!0,data:s.value}},Ie=Vt(W),ec=e=>(t,r,n)=>{let o=n?Object.assign(n,{direction:"backward"}):{direction:"backward"};return Yt(e)(t,r,o)},bn=ec(W),tc=e=>(t,r,n)=>Yt(e)(t,r,n),_n=tc(W),rc=e=>async(t,r,n)=>{let o=n?Object.assign(n,{direction:"backward"}):{direction:"backward"};return Gt(e)(t,r,o)},wn=rc(W),nc=e=>async(t,r,n)=>Gt(e)(t,r,n),$n=nc(W),oc=e=>(t,r,n)=>{let o=n?Object.assign(n,{direction:"backward"}):{direction:"backward"};return Wt(e)(t,r,o)},xn=oc(W),sc=e=>(t,r,n)=>Wt(e)(t,r,n),kn=sc(W),ic=e=>async(t,r,n)=>{let o=n?Object.assign(n,{direction:"backward"}):{direction:"backward"};return Vt(e)(t,r,o)},Sn=ic(W),ac=e=>async(t,r,n)=>Vt(e)(t,r,n),vn=ac(W);var re={};ve(re,{base64:()=>Bn,base64url:()=>Qt,bigint:()=>Kn,boolean:()=>Gn,browserEmail:()=>td,cidrv4:()=>Dn,cidrv6:()=>Mn,cuid:()=>zn,cuid2:()=>Tn,date:()=>Fn,datetime:()=>qn,domain:()=>od,duration:()=>Rn,e164:()=>Un,email:()=>Nn,emoji:()=>On,extendedDuration:()=>Yf,guid:()=>Cn,hex:()=>sd,hostname:()=>nd,html5Email:()=>Qf,idnEmail:()=>ed,integer:()=>Yn,ipv4:()=>Ln,ipv6:()=>Zn,ksuid:()=>An,lowercase:()=>Qn,mac:()=>jn,md5_base64:()=>ad,md5_base64url:()=>cd,md5_hex:()=>id,nanoid:()=>En,null:()=>Wn,number:()=>Xt,rfc5322Email:()=>Xf,sha1_base64:()=>ld,sha1_base64url:()=>pd,sha1_hex:()=>ud,sha256_base64:()=>dd,sha256_base64url:()=>md,sha256_hex:()=>fd,sha384_base64:()=>gd,sha384_base64url:()=>yd,sha384_hex:()=>hd,sha512_base64:()=>_d,sha512_base64url:()=>wd,sha512_hex:()=>bd,string:()=>Jn,time:()=>Hn,ulid:()=>In,undefined:()=>Vn,unicodeEmail:()=>cc,uppercase:()=>Xn,uuid:()=>Pe,uuid4:()=>Gf,uuid6:()=>Wf,uuid7:()=>Vf,xid:()=>Pn});var zn=/^[cC][^\s-]{8,}$/,Tn=/^[0-9a-z]+$/,In=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,Pn=/^[0-9a-vA-V]{20}$/,An=/^[A-Za-z0-9]{27}$/,En=/^[a-zA-Z0-9_-]{21}$/,Rn=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,Yf=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,Cn=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,Pe=e=>e?new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${e}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`):/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/,Gf=Pe(4),Wf=Pe(6),Vf=Pe(7),Nn=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,Qf=/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/,Xf=/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/,cc=/^[^\s@"]{1,64}@[^\s@]{1,255}$/u,ed=cc,td=/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/,rd="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$";function On(){return new RegExp(rd,"u")}var Ln=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,Zn=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/,jn=e=>{let t=ee(e??":");return new RegExp(`^(?:[0-9A-F]{2}${t}){5}[0-9A-F]{2}$|^(?:[0-9a-f]{2}${t}){5}[0-9a-f]{2}$`)},Dn=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,Mn=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,Bn=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,Qt=/^[A-Za-z0-9_-]*$/,nd=/^(?=.{1,253}\.?$)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[-0-9a-zA-Z]{0,61}[0-9a-zA-Z])?)*\.?$/,od=/^([a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/,Un=/^\+[1-9]\d{6,14}$/,uc="(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))",Fn=new RegExp(`^${uc}$`);function lc(e){let t="(?:[01]\\d|2[0-3]):[0-5]\\d";return typeof e.precision=="number"?e.precision===-1?`${t}`:e.precision===0?`${t}:[0-5]\\d`:`${t}:[0-5]\\d\\.\\d{${e.precision}}`:`${t}(?::[0-5]\\d(?:\\.\\d+)?)?`}function Hn(e){return new RegExp(`^${lc(e)}$`)}function qn(e){let t=lc({precision:e.precision}),r=["Z"];e.local&&r.push(""),e.offset&&r.push("([+-](?:[01]\\d|2[0-3]):[0-5]\\d)");let n=`${t}(?:${r.join("|")})`;return new RegExp(`^${uc}T(?:${n})$`)}var Jn=e=>{let t=e?`[\\s\\S]{${e?.minimum??0},${e?.maximum??""}}`:"[\\s\\S]*";return new RegExp(`^${t}$`)},Kn=/^-?\d+n?$/,Yn=/^-?\d+$/,Xt=/^-?\d+(?:\.\d+)?$/,Gn=/^(?:true|false)$/i,Wn=/^null$/i;var Vn=/^undefined$/i;var Qn=/^[^A-Z]*$/,Xn=/^[^a-z]*$/,sd=/^[0-9a-fA-F]*$/;function ct(e,t){return new RegExp(`^[A-Za-z0-9+/]{${e}}${t}$`)}function ut(e){return new RegExp(`^[A-Za-z0-9_-]{${e}}$`)}var id=/^[0-9a-fA-F]{32}$/,ad=ct(22,"=="),cd=ut(22),ud=/^[0-9a-fA-F]{40}$/,ld=ct(27,"="),pd=ut(27),fd=/^[0-9a-fA-F]{64}$/,dd=ct(43,"="),md=ut(43),hd=/^[0-9a-fA-F]{96}$/,gd=ct(64,""),yd=ut(64),bd=/^[0-9a-fA-F]{128}$/,_d=ct(86,"=="),wd=ut(86);var A=d("$ZodCheck",(e,t)=>{var r;e._zod??(e._zod={}),e._zod.def=t,(r=e._zod).onattach??(r.onattach=[])}),fc={number:"number",bigint:"bigint",object:"date"},er=d("$ZodCheckLessThan",(e,t)=>{A.init(e,t);let r=fc[typeof t.value];e._zod.onattach.push(n=>{let o=n._zod.bag,s=(t.inclusive?o.maximum:o.exclusiveMaximum)??Number.POSITIVE_INFINITY;t.value<s&&(t.inclusive?o.maximum=t.value:o.exclusiveMaximum=t.value)}),e._zod.check=n=>{(t.inclusive?n.value<=t.value:n.value<t.value)||n.issues.push({origin:r,code:"too_big",maximum:typeof t.value=="object"?t.value.getTime():t.value,input:n.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),tr=d("$ZodCheckGreaterThan",(e,t)=>{A.init(e,t);let r=fc[typeof t.value];e._zod.onattach.push(n=>{let o=n._zod.bag,s=(t.inclusive?o.minimum:o.exclusiveMinimum)??Number.NEGATIVE_INFINITY;t.value>s&&(t.inclusive?o.minimum=t.value:o.exclusiveMinimum=t.value)}),e._zod.check=n=>{(t.inclusive?n.value>=t.value:n.value>t.value)||n.issues.push({origin:r,code:"too_small",minimum:typeof t.value=="object"?t.value.getTime():t.value,input:n.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),eo=d("$ZodCheckMultipleOf",(e,t)=>{A.init(e,t),e._zod.onattach.push(r=>{var n;(n=r._zod.bag).multipleOf??(n.multipleOf=t.value)}),e._zod.check=r=>{if(typeof r.value!=typeof t.value)throw new Error("Cannot mix number and bigint in multiple_of check.");(typeof r.value=="bigint"?r.value%t.value===BigInt(0):en(r.value,t.value)===0)||r.issues.push({origin:typeof r.value,code:"not_multiple_of",divisor:t.value,input:r.value,inst:e,continue:!t.abort})}}),to=d("$ZodCheckNumberFormat",(e,t)=>{A.init(e,t),t.format=t.format||"float64";let r=t.format?.includes("int"),n=r?"int":"number",[o,s]=sn[t.format];e._zod.onattach.push(i=>{let a=i._zod.bag;a.format=t.format,a.minimum=o,a.maximum=s,r&&(a.pattern=Yn)}),e._zod.check=i=>{let a=i.value;if(r){if(!Number.isInteger(a)){i.issues.push({expected:n,format:t.format,code:"invalid_type",continue:!1,input:a,inst:e});return}if(!Number.isSafeInteger(a)){a>0?i.issues.push({input:a,code:"too_big",maximum:Number.MAX_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:n,inclusive:!0,continue:!t.abort}):i.issues.push({input:a,code:"too_small",minimum:Number.MIN_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:n,inclusive:!0,continue:!t.abort});return}}a<o&&i.issues.push({origin:"number",input:a,code:"too_small",minimum:o,inclusive:!0,inst:e,continue:!t.abort}),a>s&&i.issues.push({origin:"number",input:a,code:"too_big",maximum:s,inclusive:!0,inst:e,continue:!t.abort})}}),ro=d("$ZodCheckBigIntFormat",(e,t)=>{A.init(e,t);let[r,n]=an[t.format];e._zod.onattach.push(o=>{let s=o._zod.bag;s.format=t.format,s.minimum=r,s.maximum=n}),e._zod.check=o=>{let s=o.value;s<r&&o.issues.push({origin:"bigint",input:s,code:"too_small",minimum:r,inclusive:!0,inst:e,continue:!t.abort}),s>n&&o.issues.push({origin:"bigint",input:s,code:"too_big",maximum:n,inclusive:!0,inst:e,continue:!t.abort})}}),no=d("$ZodCheckMaxSize",(e,t)=>{var r;A.init(e,t),(r=e._zod.def).when??(r.when=n=>{let o=n.value;return!fe(o)&&o.size!==void 0}),e._zod.onattach.push(n=>{let o=n._zod.bag.maximum??Number.POSITIVE_INFINITY;t.maximum<o&&(n._zod.bag.maximum=t.maximum)}),e._zod.check=n=>{let o=n.value;o.size<=t.maximum||n.issues.push({origin:it(o),code:"too_big",maximum:t.maximum,inclusive:!0,input:o,inst:e,continue:!t.abort})}}),oo=d("$ZodCheckMinSize",(e,t)=>{var r;A.init(e,t),(r=e._zod.def).when??(r.when=n=>{let o=n.value;return!fe(o)&&o.size!==void 0}),e._zod.onattach.push(n=>{let o=n._zod.bag.minimum??Number.NEGATIVE_INFINITY;t.minimum>o&&(n._zod.bag.minimum=t.minimum)}),e._zod.check=n=>{let o=n.value;o.size>=t.minimum||n.issues.push({origin:it(o),code:"too_small",minimum:t.minimum,inclusive:!0,input:o,inst:e,continue:!t.abort})}}),so=d("$ZodCheckSizeEquals",(e,t)=>{var r;A.init(e,t),(r=e._zod.def).when??(r.when=n=>{let o=n.value;return!fe(o)&&o.size!==void 0}),e._zod.onattach.push(n=>{let o=n._zod.bag;o.minimum=t.size,o.maximum=t.size,o.size=t.size}),e._zod.check=n=>{let o=n.value,s=o.size;if(s===t.size)return;let i=s>t.size;n.issues.push({origin:it(o),...i?{code:"too_big",maximum:t.size}:{code:"too_small",minimum:t.size},inclusive:!0,exact:!0,input:n.value,inst:e,continue:!t.abort})}}),io=d("$ZodCheckMaxLength",(e,t)=>{var r;A.init(e,t),(r=e._zod.def).when??(r.when=n=>{let o=n.value;return!fe(o)&&o.length!==void 0}),e._zod.onattach.push(n=>{let o=n._zod.bag.maximum??Number.POSITIVE_INFINITY;t.maximum<o&&(n._zod.bag.maximum=t.maximum)}),e._zod.check=n=>{let o=n.value;if(o.length<=t.maximum)return;let i=at(o);n.issues.push({origin:i,code:"too_big",maximum:t.maximum,inclusive:!0,input:o,inst:e,continue:!t.abort})}}),ao=d("$ZodCheckMinLength",(e,t)=>{var r;A.init(e,t),(r=e._zod.def).when??(r.when=n=>{let o=n.value;return!fe(o)&&o.length!==void 0}),e._zod.onattach.push(n=>{let o=n._zod.bag.minimum??Number.NEGATIVE_INFINITY;t.minimum>o&&(n._zod.bag.minimum=t.minimum)}),e._zod.check=n=>{let o=n.value;if(o.length>=t.minimum)return;let i=at(o);n.issues.push({origin:i,code:"too_small",minimum:t.minimum,inclusive:!0,input:o,inst:e,continue:!t.abort})}}),co=d("$ZodCheckLengthEquals",(e,t)=>{var r;A.init(e,t),(r=e._zod.def).when??(r.when=n=>{let o=n.value;return!fe(o)&&o.length!==void 0}),e._zod.onattach.push(n=>{let o=n._zod.bag;o.minimum=t.length,o.maximum=t.length,o.length=t.length}),e._zod.check=n=>{let o=n.value,s=o.length;if(s===t.length)return;let i=at(o),a=s>t.length;n.issues.push({origin:i,...a?{code:"too_big",maximum:t.length}:{code:"too_small",minimum:t.length},inclusive:!0,exact:!0,input:n.value,inst:e,continue:!t.abort})}}),Me=d("$ZodCheckStringFormat",(e,t)=>{var r,n;A.init(e,t),e._zod.onattach.push(o=>{let s=o._zod.bag;s.format=t.format,t.pattern&&(s.patterns??(s.patterns=new Set),s.patterns.add(t.pattern))}),t.pattern?(r=e._zod).check??(r.check=o=>{t.pattern.lastIndex=0,!t.pattern.test(o.value)&&o.issues.push({origin:"string",code:"invalid_format",format:t.format,input:o.value,...t.pattern?{pattern:t.pattern.toString()}:{},inst:e,continue:!t.abort})}):(n=e._zod).check??(n.check=()=>{})}),uo=d("$ZodCheckRegex",(e,t)=>{Me.init(e,t),e._zod.check=r=>{t.pattern.lastIndex=0,!t.pattern.test(r.value)&&r.issues.push({origin:"string",code:"invalid_format",format:"regex",input:r.value,pattern:t.pattern.toString(),inst:e,continue:!t.abort})}}),lo=d("$ZodCheckLowerCase",(e,t)=>{t.pattern??(t.pattern=Qn),Me.init(e,t)}),po=d("$ZodCheckUpperCase",(e,t)=>{t.pattern??(t.pattern=Xn),Me.init(e,t)}),fo=d("$ZodCheckIncludes",(e,t)=>{A.init(e,t);let r=ee(t.includes),n=new RegExp(typeof t.position=="number"?`^.{${t.position}}${r}`:r);t.pattern=n,e._zod.onattach.push(o=>{let s=o._zod.bag;s.patterns??(s.patterns=new Set),s.patterns.add(n)}),e._zod.check=o=>{o.value.includes(t.includes,t.position)||o.issues.push({origin:"string",code:"invalid_format",format:"includes",includes:t.includes,input:o.value,inst:e,continue:!t.abort})}}),mo=d("$ZodCheckStartsWith",(e,t)=>{A.init(e,t);let r=new RegExp(`^${ee(t.prefix)}.*`);t.pattern??(t.pattern=r),e._zod.onattach.push(n=>{let o=n._zod.bag;o.patterns??(o.patterns=new Set),o.patterns.add(r)}),e._zod.check=n=>{n.value.startsWith(t.prefix)||n.issues.push({origin:"string",code:"invalid_format",format:"starts_with",prefix:t.prefix,input:n.value,inst:e,continue:!t.abort})}}),ho=d("$ZodCheckEndsWith",(e,t)=>{A.init(e,t);let r=new RegExp(`.*${ee(t.suffix)}$`);t.pattern??(t.pattern=r),e._zod.onattach.push(n=>{let o=n._zod.bag;o.patterns??(o.patterns=new Set),o.patterns.add(r)}),e._zod.check=n=>{n.value.endsWith(t.suffix)||n.issues.push({origin:"string",code:"invalid_format",format:"ends_with",suffix:t.suffix,input:n.value,inst:e,continue:!t.abort})}});function pc(e,t,r){e.issues.length&&t.issues.push(...Q(r,e.issues))}var go=d("$ZodCheckProperty",(e,t)=>{A.init(e,t),e._zod.check=r=>{let n=t.schema._zod.run({value:r.value[t.property],issues:[]},{});if(n instanceof Promise)return n.then(o=>pc(o,r,t.property));pc(n,r,t.property)}}),yo=d("$ZodCheckMimeType",(e,t)=>{A.init(e,t);let r=new Set(t.mime);e._zod.onattach.push(n=>{n._zod.bag.mime=t.mime}),e._zod.check=n=>{r.has(n.value.type)||n.issues.push({code:"invalid_value",values:t.mime,input:n.value.type,inst:e,continue:!t.abort})}}),bo=d("$ZodCheckOverwrite",(e,t)=>{A.init(e,t),e._zod.check=r=>{r.value=t.tx(r.value)}});var lt=class{constructor(t=[]){this.content=[],this.indent=0,this&&(this.args=t)}indented(t){this.indent+=1,t(this),this.indent-=1}write(t){if(typeof t=="function"){t(this,{execution:"sync"}),t(this,{execution:"async"});return}let n=t.split(`
1
+ var $f=Object.defineProperty;var ve=(e,t)=>{for(var r in t)$f(e,r,{get:t[r],enumerable:!0})};import{resolve as $b}from"node:path";import{fileURLToPath as kb}from"node:url";function Ce(e){let t=Math.floor(e/1e3);if(t<60)return`${t}s`;let r=Math.floor(t/60),n=t%60;if(r<60)return n>0?`${r}m ${n}s`:`${r}m`;let o=Math.floor(r/60),s=r%60;return s>0?`${o}h ${s}m`:`${o}h`}import{execFileSync as pe}from"node:child_process";function Kr(...e){return pe("git",e,{encoding:"utf8"}).trim()}function Ua(){return Kr("rev-parse","--abbrev-ref","HEAD")}function Dt(){try{return pe("git",["diff","--quiet"],{stdio:"ignore"}),pe("git",["diff","--cached","--quiet"],{stdio:"ignore"}),!1}catch{return!0}}function Xe(e){try{return pe("git",["show-ref","--verify","--quiet",`refs/heads/${e}`],{stdio:"ignore"}),!0}catch{return!1}}function Yr(e,t){Xe(e)||Kr("checkout","-b",e,t)}function L(e,t=!1){Kr("checkout",...t?["-B"]:[],e)}function Fa(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 Ha(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 qa(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 xf,unlinkSync as Ja,writeFileSync as Sf}from"node:fs";import{dirname as vf,join as Bt}from"node:path";function Ka(e,t){let r=Bt(e,".clancy","lock.json");kf(vf(r),{recursive:!0}),Sf(r,JSON.stringify(t,null,2),"utf8")}function Ut(e){let t=Bt(e,".clancy","lock.json");try{let r=xf(t,"utf8");return JSON.parse(r)}catch{return}}function Ft(e){let t=Bt(e,".clancy","lock.json");try{Ja(t)}catch{}}function Ht(e){let t=Bt(e,".clancy","verify-attempt.txt");try{Ja(t)}catch{}}function zf(e){try{return process.kill(e,0),!0}catch(t){return t instanceof Error&&"code"in t&&t.code==="EPERM"}}function Ya(e){if(!zf(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 yl}from"node:child_process";import{readFileSync as Kg}from"node:fs";import{join as Yg}from"node:path";var c={};ve(c,{$brand:()=>Wr,$input:()=>Es,$output:()=>Ps,NEVER:()=>Gr,TimePrecision:()=>ti,ZodMiniAny:()=>tu,ZodMiniArray:()=>iu,ZodMiniBase64:()=>Kc,ZodMiniBase64URL:()=>Yc,ZodMiniBigInt:()=>xt,ZodMiniBigIntFormat:()=>sa,ZodMiniBoolean:()=>kt,ZodMiniCIDRv4:()=>Hc,ZodMiniCIDRv6:()=>qc,ZodMiniCUID:()=>Zc,ZodMiniCUID2:()=>jc,ZodMiniCatch:()=>vu,ZodMiniCodec:()=>pa,ZodMiniCustom:()=>fa,ZodMiniCustomStringFormat:()=>wt,ZodMiniDate:()=>$r,ZodMiniDefault:()=>ku,ZodMiniDiscriminatedUnion:()=>uu,ZodMiniE164:()=>Gc,ZodMiniEmail:()=>Cc,ZodMiniEmoji:()=>Oc,ZodMiniEnum:()=>aa,ZodMiniExactOptional:()=>wu,ZodMiniFile:()=>bu,ZodMiniFunction:()=>Cu,ZodMiniGUID:()=>Nc,ZodMiniIPv4:()=>Uc,ZodMiniIPv6:()=>Fc,ZodMiniISODate:()=>zr,ZodMiniISODateTime:()=>vr,ZodMiniISODuration:()=>Ir,ZodMiniISOTime:()=>Tr,ZodMiniIntersection:()=>lu,ZodMiniJWT:()=>Wc,ZodMiniKSUID:()=>Bc,ZodMiniLazy:()=>Pu,ZodMiniLiteral:()=>yu,ZodMiniMAC:()=>Jc,ZodMiniMap:()=>mu,ZodMiniNaN:()=>zu,ZodMiniNanoID:()=>Lc,ZodMiniNever:()=>nu,ZodMiniNonOptional:()=>ua,ZodMiniNull:()=>Xc,ZodMiniNullable:()=>$u,ZodMiniNumber:()=>$t,ZodMiniNumberFormat:()=>qe,ZodMiniObject:()=>kr,ZodMiniOptional:()=>ca,ZodMiniPipe:()=>la,ZodMiniPrefault:()=>xu,ZodMiniPromise:()=>Au,ZodMiniReadonly:()=>Tu,ZodMiniRecord:()=>xr,ZodMiniSet:()=>hu,ZodMiniString:()=>He,ZodMiniStringFormat:()=>A,ZodMiniSuccess:()=>Su,ZodMiniSymbol:()=>Vc,ZodMiniTemplateLiteral:()=>Iu,ZodMiniTransform:()=>_u,ZodMiniTuple:()=>pu,ZodMiniType:()=>S,ZodMiniULID:()=>Dc,ZodMiniURL:()=>oa,ZodMiniUUID:()=>_t,ZodMiniUndefined:()=>Qc,ZodMiniUnion:()=>ia,ZodMiniUnknown:()=>ru,ZodMiniVoid:()=>su,ZodMiniXID:()=>Mc,ZodMiniXor:()=>cu,_default:()=>Gh,_function:()=>mg,any:()=>xh,array:()=>K,base64:()=>sh,base64url:()=>ih,bigint:()=>bh,boolean:()=>Je,catch:()=>Xh,catchall:()=>Oh,check:()=>ig,cidrv4:()=>rh,cidrv6:()=>nh,clone:()=>q,codec:()=>rg,coerce:()=>ma,config:()=>B,core:()=>Fe,cuid:()=>Gm,cuid2:()=>Wm,custom:()=>Ru,date:()=>vh,decode:()=>_n,decodeAsync:()=>$n,describe:()=>ug,discriminatedUnion:()=>Zh,e164:()=>ah,email:()=>Dm,emoji:()=>Km,encode:()=>bn,encodeAsync:()=>wn,endsWith:()=>Fi,enum:()=>gu,exactOptional:()=>Kh,extend:()=>xe,file:()=>qh,flattenError:()=>mn,float32:()=>mh,float64:()=>hh,formatError:()=>hn,function:()=>mg,globalRegistry:()=>ae,gt:()=>gr,gte:()=>gt,guid:()=>Mm,hash:()=>fh,hex:()=>ph,hostname:()=>lh,httpUrl:()=>Jm,includes:()=>Bi,instanceof:()=>pg,int:()=>dh,int32:()=>gh,int64:()=>_h,intersection:()=>jh,ipv4:()=>eh,ipv6:()=>th,iso:()=>da,json:()=>dg,jwt:()=>ch,keyof:()=>zh,ksuid:()=>Xm,lazy:()=>Eu,length:()=>ji,literal:()=>Hh,locales:()=>mt,looseObject:()=>Ih,looseRecord:()=>Mh,lowercase:()=>Di,lt:()=>hr,lte:()=>ht,mac:()=>oh,map:()=>Bh,maxLength:()=>Zi,maxSize:()=>Ni,maximum:()=>ht,merge:()=>Eh,meta:()=>lg,mime:()=>qi,minLength:()=>yt,minSize:()=>Oi,minimum:()=>gt,multipleOf:()=>Ci,nan:()=>eg,nanoid:()=>Ym,nativeEnum:()=>Fh,negative:()=>Ei,never:()=>ou,nonnegative:()=>Ri,nonoptional:()=>Vh,nonpositive:()=>Ai,normalize:()=>Ji,null:()=>eu,nullable:()=>Sr,nullish:()=>Yh,number:()=>ke,object:()=>I,omit:()=>Rh,optional:()=>w,overwrite:()=>be,parse:()=>ge,parseAsync:()=>ye,partial:()=>Ch,partialRecord:()=>Dh,pick:()=>Ah,pipe:()=>tg,positive:()=>Pi,prefault:()=>Wh,prettifyError:()=>yn,promise:()=>sg,property:()=>Hi,readonly:()=>ng,record:()=>du,refine:()=>ag,regex:()=>bt,regexes:()=>re,registry:()=>dr,required:()=>Nh,safeDecode:()=>xn,safeDecodeAsync:()=>vn,safeEncode:()=>kn,safeEncodeAsync:()=>Sn,safeExtend:()=>Ph,safeParse:()=>Te,safeParseAsync:()=>Ie,set:()=>Uh,size:()=>Li,startsWith:()=>Ui,strictObject:()=>Th,string:()=>_,stringFormat:()=>uh,stringbool:()=>fg,success:()=>Qh,superRefine:()=>cg,symbol:()=>$h,templateLiteral:()=>og,toJSONSchema:()=>br,toLowerCase:()=>Yi,toUpperCase:()=>Gi,transform:()=>Jh,treeifyError:()=>gn,trim:()=>Ki,tuple:()=>fu,uint32:()=>yh,uint64:()=>wh,ulid:()=>Vm,undefined:()=>kh,union:()=>au,unknown:()=>wr,uppercase:()=>Mi,url:()=>qm,util:()=>te,uuid:()=>Bm,uuidv4:()=>Um,uuidv6:()=>Fm,uuidv7:()=>Hm,void:()=>Sh,xid:()=>Qm,xor:()=>Lh});var Fe={};ve(Fe,{$ZodAny:()=>Qo,$ZodArray:()=>ns,$ZodAsyncError:()=>se,$ZodBase64:()=>Uo,$ZodBase64URL:()=>Fo,$ZodBigInt:()=>cr,$ZodBigIntFormat:()=>Yo,$ZodBoolean:()=>pt,$ZodCIDRv4:()=>Do,$ZodCIDRv6:()=>Mo,$ZodCUID:()=>To,$ZodCUID2:()=>Io,$ZodCatch:()=>ws,$ZodCheck:()=>E,$ZodCheckBigIntFormat:()=>ro,$ZodCheckEndsWith:()=>ho,$ZodCheckGreaterThan:()=>tr,$ZodCheckIncludes:()=>fo,$ZodCheckLengthEquals:()=>co,$ZodCheckLessThan:()=>er,$ZodCheckLowerCase:()=>lo,$ZodCheckMaxLength:()=>io,$ZodCheckMaxSize:()=>no,$ZodCheckMimeType:()=>yo,$ZodCheckMinLength:()=>ao,$ZodCheckMinSize:()=>oo,$ZodCheckMultipleOf:()=>eo,$ZodCheckNumberFormat:()=>to,$ZodCheckOverwrite:()=>bo,$ZodCheckProperty:()=>go,$ZodCheckRegex:()=>uo,$ZodCheckSizeEquals:()=>so,$ZodCheckStartsWith:()=>mo,$ZodCheckStringFormat:()=>Me,$ZodCheckUpperCase:()=>po,$ZodCodec:()=>dt,$ZodCustom:()=>Is,$ZodCustomStringFormat:()=>Jo,$ZodDate:()=>rs,$ZodDefault:()=>gs,$ZodDiscriminatedUnion:()=>ss,$ZodE164:()=>Ho,$ZodEmail:()=>xo,$ZodEmoji:()=>vo,$ZodEncodeError:()=>Le,$ZodEnum:()=>ls,$ZodError:()=>dn,$ZodExactOptional:()=>ms,$ZodFile:()=>fs,$ZodFunction:()=>vs,$ZodGUID:()=>$o,$ZodIPv4:()=>Lo,$ZodIPv6:()=>Zo,$ZodISODate:()=>Co,$ZodISODateTime:()=>Ro,$ZodISODuration:()=>Oo,$ZodISOTime:()=>No,$ZodIntersection:()=>is,$ZodJWT:()=>qo,$ZodKSUID:()=>Ao,$ZodLazy:()=>Ts,$ZodLiteral:()=>ps,$ZodMAC:()=>jo,$ZodMap:()=>cs,$ZodNaN:()=>$s,$ZodNanoID:()=>zo,$ZodNever:()=>es,$ZodNonOptional:()=>bs,$ZodNull:()=>Vo,$ZodNullable:()=>hs,$ZodNumber:()=>ar,$ZodNumberFormat:()=>Ko,$ZodObject:()=>ur,$ZodObjectJIT:()=>kd,$ZodOptional:()=>pr,$ZodPipe:()=>ks,$ZodPrefault:()=>ys,$ZodPromise:()=>zs,$ZodReadonly:()=>xs,$ZodRealError:()=>W,$ZodRecord:()=>as,$ZodRegistry:()=>fr,$ZodSet:()=>us,$ZodString:()=>Be,$ZodStringFormat:()=>P,$ZodSuccess:()=>_s,$ZodSymbol:()=>Go,$ZodTemplateLiteral:()=>Ss,$ZodTransform:()=>ds,$ZodTuple:()=>lr,$ZodType:()=>k,$ZodULID:()=>Po,$ZodURL:()=>So,$ZodUUID:()=>ko,$ZodUndefined:()=>Wo,$ZodUnion:()=>ft,$ZodUnknown:()=>Xo,$ZodVoid:()=>ts,$ZodXID:()=>Eo,$ZodXor:()=>os,$brand:()=>Wr,$constructor:()=>d,$input:()=>Es,$output:()=>Ps,Doc:()=>lt,JSONSchema:()=>Rc,JSONSchemaGenerator:()=>_r,NEVER:()=>Gr,TimePrecision:()=>ti,_any:()=>ki,_array:()=>Td,_base64:()=>Vs,_base64url:()=>Qs,_bigint:()=>hi,_boolean:()=>di,_catch:()=>qd,_check:()=>Ac,_cidrv4:()=>Gs,_cidrv6:()=>Ws,_coercedBigint:()=>gi,_coercedBoolean:()=>mi,_coercedDate:()=>Ti,_coercedNumber:()=>ai,_coercedString:()=>Rs,_cuid:()=>Bs,_cuid2:()=>Us,_custom:()=>Vi,_date:()=>zi,_decode:()=>rc,_decodeAsync:()=>oc,_default:()=>Ud,_discriminatedUnion:()=>Ed,_e164:()=>Xs,_email:()=>Cs,_emoji:()=>Ds,_encode:()=>tc,_encodeAsync:()=>nc,_endsWith:()=>Fi,_enum:()=>Ld,_file:()=>Wi,_float32:()=>ui,_float64:()=>li,_gt:()=>gr,_gte:()=>gt,_guid:()=>Ns,_includes:()=>Bi,_int:()=>ci,_int32:()=>pi,_int64:()=>yi,_intersection:()=>Ad,_ipv4:()=>Js,_ipv6:()=>Ks,_isoDate:()=>ni,_isoDateTime:()=>ri,_isoDuration:()=>si,_isoTime:()=>oi,_jwt:()=>ei,_ksuid:()=>qs,_lazy:()=>Gd,_length:()=>ji,_literal:()=>jd,_lowercase:()=>Di,_lt:()=>hr,_lte:()=>ht,_mac:()=>Ys,_map:()=>Nd,_max:()=>ht,_maxLength:()=>Zi,_maxSize:()=>Ni,_mime:()=>qi,_min:()=>gt,_minLength:()=>yt,_minSize:()=>Oi,_multipleOf:()=>Ci,_nan:()=>Ii,_nanoid:()=>Ms,_nativeEnum:()=>Zd,_negative:()=>Ei,_never:()=>Si,_nonnegative:()=>Ri,_nonoptional:()=>Fd,_nonpositive:()=>Ai,_normalize:()=>Ji,_null:()=>$i,_nullable:()=>Bd,_number:()=>ii,_optional:()=>Md,_overwrite:()=>be,_parse:()=>Yt,_parseAsync:()=>Gt,_pipe:()=>Jd,_positive:()=>Pi,_promise:()=>Wd,_property:()=>Hi,_readonly:()=>Kd,_record:()=>Cd,_refine:()=>Qi,_regex:()=>bt,_safeDecode:()=>ic,_safeDecodeAsync:()=>cc,_safeEncode:()=>sc,_safeEncodeAsync:()=>ac,_safeParse:()=>Wt,_safeParseAsync:()=>Vt,_set:()=>Od,_size:()=>Li,_slugify:()=>zd,_startsWith:()=>Ui,_string:()=>As,_stringFormat:()=>Ue,_stringbool:()=>ra,_success:()=>Hd,_superRefine:()=>Xi,_symbol:()=>_i,_templateLiteral:()=>Yd,_toLowerCase:()=>Yi,_toUpperCase:()=>Gi,_transform:()=>Dd,_trim:()=>Ki,_tuple:()=>Rd,_uint32:()=>fi,_uint64:()=>bi,_ulid:()=>Fs,_undefined:()=>wi,_union:()=>Id,_unknown:()=>xi,_uppercase:()=>Mi,_url:()=>mr,_uuid:()=>Os,_uuidv4:()=>Ls,_uuidv6:()=>Zs,_uuidv7:()=>js,_void:()=>vi,_xid:()=>Hs,_xor:()=>Pd,clone:()=>q,config:()=>B,createStandardJSONSchemaMethod:()=>na,createToJSONSchemaMethod:()=>Vd,decode:()=>_n,decodeAsync:()=>$n,describe:()=>ea,encode:()=>bn,encodeAsync:()=>wn,extractDefs:()=>we,finalize:()=>$e,flattenError:()=>mn,formatError:()=>hn,globalConfig:()=>tt,globalRegistry:()=>ae,initializeContext:()=>_e,isValidBase64:()=>Bo,isValidBase64URL:()=>zc,isValidJWT:()=>Tc,locales:()=>mt,meta:()=>ta,parse:()=>ge,parseAsync:()=>ye,prettifyError:()=>yn,process:()=>T,regexes:()=>re,registry:()=>dr,safeDecode:()=>xn,safeDecodeAsync:()=>vn,safeEncode:()=>kn,safeEncodeAsync:()=>Sn,safeParse:()=>Te,safeParseAsync:()=>Ie,toDotPath:()=>ec,toJSONSchema:()=>br,treeifyError:()=>gn,util:()=>te,version:()=>_o});var Gr=Object.freeze({status:"aborted"});function d(e,t,r){function n(a,u){if(a._zod||Object.defineProperty(a,"_zod",{value:{def:u,constr:i,traits:new Set},enumerable:!1}),a._zod.traits.has(e))return;a._zod.traits.add(e),t(a,u);let l=i.prototype,p=Object.keys(l);for(let f=0;f<p.length;f++){let m=p[f];m in a||(a[m]=l[m].bind(a))}}let o=r?.Parent??Object;class s extends o{}Object.defineProperty(s,"name",{value:e});function i(a){var u;let l=r?.Parent?new s:this;n(l,a),(u=l._zod).deferred??(u.deferred=[]);for(let p of l._zod.deferred)p();return l}return Object.defineProperty(i,"init",{value:n}),Object.defineProperty(i,Symbol.hasInstance,{value:a=>r?.Parent&&a instanceof r.Parent?!0:a?._zod?.traits?.has(e)}),Object.defineProperty(i,"name",{value:e}),i}var Wr=Symbol("zod_brand"),se=class extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}},Le=class extends Error{constructor(t){super(`Encountered unidirectional transform during encode: ${t}`),this.name="ZodEncodeError"}},tt={};function B(e){return e&&Object.assign(tt,e),tt}var te={};ve(te,{BIGINT_FORMAT_RANGES:()=>an,Class:()=>Qr,NUMBER_FORMAT_RANGES:()=>sn,aborted:()=>he,allowsEval:()=>rn,assert:()=>Af,assertEqual:()=>Tf,assertIs:()=>Pf,assertNever:()=>Ef,assertNotEqual:()=>If,assignProp:()=>de,base64ToUint8Array:()=>Va,base64urlToUint8Array:()=>Hf,cached:()=>Ze,captureStackTrace:()=>Jt,cleanEnum:()=>Ff,cleanRegex:()=>ot,clone:()=>q,cloneDef:()=>Nf,createTransparentProxy:()=>Mf,defineLazy:()=>x,esc:()=>qt,escapeRegex:()=>ee,extend:()=>Kt,finalizeIssue:()=>G,floatSafeRemainder:()=>en,getElementAtPath:()=>Of,getEnumValues:()=>nt,getLengthableOrigin:()=>at,getParsedType:()=>Df,getSizableOrigin:()=>it,hexToUint8Array:()=>Jf,isObject:()=>ze,isPlainObject:()=>me,issue:()=>De,joinValues:()=>Rf,jsonStringifyReplacer:()=>Xr,merge:()=>Bf,mergeDefs:()=>ue,normalizeParams:()=>g,nullish:()=>fe,numKeys:()=>jf,objectClone:()=>Cf,omit:()=>un,optionalKeys:()=>on,parsedType:()=>Uf,partial:()=>pn,pick:()=>cn,prefixIssues:()=>Q,primitiveTypes:()=>nn,promiseAllObject:()=>Lf,propertyKeyTypes:()=>st,randomString:()=>Zf,required:()=>fn,safeExtend:()=>ln,shallowClone:()=>je,slugify:()=>tn,stringifyPrimitive:()=>Wa,uint8ArrayToBase64:()=>Qa,uint8ArrayToBase64url:()=>qf,uint8ArrayToHex:()=>Kf,unwrapMessage:()=>rt});function Tf(e){return e}function If(e){return e}function Pf(e){}function Ef(e){throw new Error("Unexpected value in exhaustive check")}function Af(e){}function nt(e){let t=Object.values(e).filter(n=>typeof n=="number");return Object.entries(e).filter(([n,o])=>t.indexOf(+n)===-1).map(([n,o])=>o)}function Rf(e,t="|"){return e.map(r=>Wa(r)).join(t)}function Xr(e,t){return typeof t=="bigint"?t.toString():t}function Ze(e){return{get value(){{let r=e();return Object.defineProperty(this,"value",{value:r}),r}throw new Error("cached value already set")}}}function fe(e){return e==null}function ot(e){let t=e.startsWith("^")?1:0,r=e.endsWith("$")?e.length-1:e.length;return e.slice(t,r)}function en(e,t){let r=(e.toString().split(".")[1]||"").length,n=t.toString(),o=(n.split(".")[1]||"").length;if(o===0&&/\d?e-\d?/.test(n)){let u=n.match(/\d?e-(\d?)/);u?.[1]&&(o=Number.parseInt(u[1]))}let s=r>o?r:o,i=Number.parseInt(e.toFixed(s).replace(".","")),a=Number.parseInt(t.toFixed(s).replace(".",""));return i%a/10**s}var Ga=Symbol("evaluating");function x(e,t,r){let n;Object.defineProperty(e,t,{get(){if(n!==Ga)return n===void 0&&(n=Ga,n=r()),n},set(o){Object.defineProperty(e,t,{value:o})},configurable:!0})}function Cf(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 Nf(e){return ue(e._zod.def)}function Of(e,t){return t?t.reduce((r,n)=>r?.[n],e):e}function Lf(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 Zf(e=10){let t="abcdefghijklmnopqrstuvwxyz",r="";for(let n=0;n<e;n++)r+=t[Math.floor(Math.random()*t.length)];return r}function qt(e){return JSON.stringify(e)}function tn(e){return e.toLowerCase().trim().replace(/[^\w\s-]/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")}var Jt="captureStackTrace"in Error?Error.captureStackTrace:(...e)=>{};function ze(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var rn=Ze(()=>{if(typeof navigator<"u"&&navigator?.userAgent?.includes("Cloudflare"))return!1;try{let e=Function;return new e(""),!0}catch{return!1}});function me(e){if(ze(e)===!1)return!1;let t=e.constructor;if(t===void 0||typeof t!="function")return!0;let r=t.prototype;return!(ze(r)===!1||Object.prototype.hasOwnProperty.call(r,"isPrototypeOf")===!1)}function je(e){return me(e)?{...e}:Array.isArray(e)?[...e]:e}function jf(e){let t=0;for(let r in e)Object.prototype.hasOwnProperty.call(e,r)&&t++;return t}var Df=e=>{let t=typeof e;switch(t){case"undefined":return"undefined";case"string":return"string";case"number":return Number.isNaN(e)?"nan":"number";case"boolean":return"boolean";case"function":return"function";case"bigint":return"bigint";case"symbol":return"symbol";case"object":return Array.isArray(e)?"array":e===null?"null":e.then&&typeof e.then=="function"&&e.catch&&typeof e.catch=="function"?"promise":typeof Map<"u"&&e instanceof Map?"map":typeof Set<"u"&&e instanceof Set?"set":typeof Date<"u"&&e instanceof Date?"date":typeof File<"u"&&e instanceof File?"file":"object";default:throw new Error(`Unknown data type: ${t}`)}},st=new Set(["string","number","symbol"]),nn=new Set(["string","number","bigint","boolean","symbol","undefined"]);function ee(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function q(e,t,r){let n=new e._zod.constr(t??e._zod.def);return(!t||r?.parent)&&(n._zod.parent=e),n}function g(e){let t=e;if(!t)return{};if(typeof t=="string")return{error:()=>t};if(t?.message!==void 0){if(t?.error!==void 0)throw new Error("Cannot specify both `message` and `error` params");t.error=t.message}return delete t.message,typeof t.error=="string"?{...t,error:()=>t.error}:t}function Mf(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 Wa(e){return typeof e=="bigint"?e.toString()+"n":typeof e=="string"?`"${e}"`:`${e}`}function on(e){return Object.keys(e).filter(t=>e[t]._zod.optin==="optional"&&e[t]._zod.optout==="optional")}var sn={safeint:[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]},an={int64:[BigInt("-9223372036854775808"),BigInt("9223372036854775807")],uint64:[BigInt(0),BigInt("18446744073709551615")]};function cn(e,t){let r=e._zod.def,n=r.checks;if(n&&n.length>0)throw new Error(".pick() cannot be used on object schemas containing refinements");let s=ue(e._zod.def,{get shape(){let i={};for(let a in t){if(!(a in r.shape))throw new Error(`Unrecognized key: "${a}"`);t[a]&&(i[a]=r.shape[a])}return de(this,"shape",i),i},checks:[]});return q(e,s)}function un(e,t){let r=e._zod.def,n=r.checks;if(n&&n.length>0)throw new Error(".omit() cannot be used on object schemas containing refinements");let s=ue(e._zod.def,{get shape(){let i={...e._zod.def.shape};for(let a in t){if(!(a in r.shape))throw new Error(`Unrecognized key: "${a}"`);t[a]&&delete i[a]}return de(this,"shape",i),i},checks:[]});return q(e,s)}function Kt(e,t){if(!me(t))throw new Error("Invalid input to extend: expected a plain object");let r=e._zod.def.checks;if(r&&r.length>0){let s=e._zod.def.shape;for(let i in t)if(Object.getOwnPropertyDescriptor(s,i)!==void 0)throw new Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}let o=ue(e._zod.def,{get shape(){let s={...e._zod.def.shape,...t};return de(this,"shape",s),s}});return q(e,o)}function ln(e,t){if(!me(t))throw new Error("Invalid input to safeExtend: expected a plain object");let r=ue(e._zod.def,{get shape(){let n={...e._zod.def.shape,...t};return de(this,"shape",n),n}});return q(e,r)}function Bf(e,t){let r=ue(e._zod.def,{get shape(){let n={...e._zod.def.shape,...t._zod.def.shape};return de(this,"shape",n),n},get catchall(){return t._zod.def.catchall},checks:[]});return q(e,r)}function pn(e,t,r){let o=t._zod.def.checks;if(o&&o.length>0)throw new Error(".partial() cannot be used on object schemas containing refinements");let i=ue(t._zod.def,{get shape(){let a=t._zod.def.shape,u={...a};if(r)for(let l in r){if(!(l in a))throw new Error(`Unrecognized key: "${l}"`);r[l]&&(u[l]=e?new e({type:"optional",innerType:a[l]}):a[l])}else for(let l in a)u[l]=e?new e({type:"optional",innerType:a[l]}):a[l];return de(this,"shape",u),u},checks:[]});return q(t,i)}function fn(e,t,r){let n=ue(t._zod.def,{get shape(){let o=t._zod.def.shape,s={...o};if(r)for(let i in r){if(!(i in s))throw new Error(`Unrecognized key: "${i}"`);r[i]&&(s[i]=new e({type:"nonoptional",innerType:o[i]}))}else for(let i in o)s[i]=new e({type:"nonoptional",innerType:o[i]});return de(this,"shape",s),s}});return q(t,n)}function he(e,t=0){if(e.aborted===!0)return!0;for(let r=t;r<e.issues.length;r++)if(e.issues[r]?.continue!==!0)return!0;return!1}function Q(e,t){return t.map(r=>{var n;return(n=r).path??(n.path=[]),r.path.unshift(e),r})}function rt(e){return typeof e=="string"?e:e?.message}function G(e,t,r){let n={...e,path:e.path??[]};if(!e.message){let o=rt(e.inst?._zod.def?.error?.(e))??rt(t?.error?.(e))??rt(r.customError?.(e))??rt(r.localeError?.(e))??"Invalid input";n.message=o}return delete n.inst,delete n.continue,t?.reportInput||delete n.input,n}function it(e){return e instanceof Set?"set":e instanceof Map?"map":e instanceof File?"file":"unknown"}function at(e){return Array.isArray(e)?"array":typeof e=="string"?"string":"unknown"}function Uf(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 Ff(e){return Object.entries(e).filter(([t,r])=>Number.isNaN(Number.parseInt(t,10))).map(t=>t[1])}function Va(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 Qa(e){let t="";for(let r=0;r<e.length;r++)t+=String.fromCharCode(e[r]);return btoa(t)}function Hf(e){let t=e.replace(/-/g,"+").replace(/_/g,"/"),r="=".repeat((4-t.length%4)%4);return Va(t+r)}function qf(e){return Qa(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}function Jf(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 Kf(e){return Array.from(e).map(t=>t.toString(16).padStart(2,"0")).join("")}var Qr=class{constructor(...t){}};var Xa=(e,t)=>{e.name="$ZodError",Object.defineProperty(e,"_zod",{value:e._zod,enumerable:!1}),Object.defineProperty(e,"issues",{value:t,enumerable:!1}),e.message=JSON.stringify(t,Xr,2),Object.defineProperty(e,"toString",{value:()=>e.message,enumerable:!1})},dn=d("$ZodError",Xa),W=d("$ZodError",Xa,{Parent:Error});function mn(e,t=r=>r.message){let r={},n=[];for(let o of e.issues)o.path.length>0?(r[o.path[0]]=r[o.path[0]]||[],r[o.path[0]].push(t(o))):n.push(t(o));return{formErrors:n,fieldErrors:r}}function hn(e,t=r=>r.message){let r={_errors:[]},n=o=>{for(let s of o.issues)if(s.code==="invalid_union"&&s.errors.length)s.errors.map(i=>n({issues:i}));else if(s.code==="invalid_key")n({issues:s.issues});else if(s.code==="invalid_element")n({issues:s.issues});else if(s.path.length===0)r._errors.push(t(s));else{let i=r,a=0;for(;a<s.path.length;){let u=s.path[a];a===s.path.length-1?(i[u]=i[u]||{_errors:[]},i[u]._errors.push(t(s))):i[u]=i[u]||{_errors:[]},i=i[u],a++}}};return n(e),r}function gn(e,t=r=>r.message){let r={errors:[]},n=(o,s=[])=>{var i,a;for(let u of o.issues)if(u.code==="invalid_union"&&u.errors.length)u.errors.map(l=>n({issues:l},u.path));else if(u.code==="invalid_key")n({issues:u.issues},u.path);else if(u.code==="invalid_element")n({issues:u.issues},u.path);else{let l=[...s,...u.path];if(l.length===0){r.errors.push(t(u));continue}let p=r,f=0;for(;f<l.length;){let m=l[f],h=f===l.length-1;typeof m=="string"?(p.properties??(p.properties={}),(i=p.properties)[m]??(i[m]={errors:[]}),p=p.properties[m]):(p.items??(p.items=[]),(a=p.items)[m]??(a[m]={errors:[]}),p=p.items[m]),h&&p.errors.push(t(u)),f++}}};return n(e),r}function ec(e){let t=[],r=e.map(n=>typeof n=="object"?n.key:n);for(let n of r)typeof n=="number"?t.push(`[${n}]`):typeof n=="symbol"?t.push(`[${JSON.stringify(String(n))}]`):/[^\w$]/.test(n)?t.push(`[${JSON.stringify(n)}]`):(t.length&&t.push("."),t.push(n));return t.join("")}function yn(e){let t=[],r=[...e.issues].sort((n,o)=>(n.path??[]).length-(o.path??[]).length);for(let n of r)t.push(`\u2716 ${n.message}`),n.path?.length&&t.push(` \u2192 at ${ec(n.path)}`);return t.join(`
3
+ `)}var Yt=e=>(t,r,n,o)=>{let s=n?Object.assign(n,{async:!1}):{async:!1},i=t._zod.run({value:r,issues:[]},s);if(i instanceof Promise)throw new se;if(i.issues.length){let a=new(o?.Err??e)(i.issues.map(u=>G(u,s,B())));throw Jt(a,o?.callee),a}return i.value},ge=Yt(W),Gt=e=>async(t,r,n,o)=>{let s=n?Object.assign(n,{async:!0}):{async:!0},i=t._zod.run({value:r,issues:[]},s);if(i instanceof Promise&&(i=await i),i.issues.length){let a=new(o?.Err??e)(i.issues.map(u=>G(u,s,B())));throw Jt(a,o?.callee),a}return i.value},ye=Gt(W),Wt=e=>(t,r,n)=>{let o=n?{...n,async:!1}:{async:!1},s=t._zod.run({value:r,issues:[]},o);if(s instanceof Promise)throw new se;return s.issues.length?{success:!1,error:new(e??dn)(s.issues.map(i=>G(i,o,B())))}:{success:!0,data:s.value}},Te=Wt(W),Vt=e=>async(t,r,n)=>{let o=n?Object.assign(n,{async:!0}):{async:!0},s=t._zod.run({value:r,issues:[]},o);return s instanceof Promise&&(s=await s),s.issues.length?{success:!1,error:new e(s.issues.map(i=>G(i,o,B())))}:{success:!0,data:s.value}},Ie=Vt(W),tc=e=>(t,r,n)=>{let o=n?Object.assign(n,{direction:"backward"}):{direction:"backward"};return Yt(e)(t,r,o)},bn=tc(W),rc=e=>(t,r,n)=>Yt(e)(t,r,n),_n=rc(W),nc=e=>async(t,r,n)=>{let o=n?Object.assign(n,{direction:"backward"}):{direction:"backward"};return Gt(e)(t,r,o)},wn=nc(W),oc=e=>async(t,r,n)=>Gt(e)(t,r,n),$n=oc(W),sc=e=>(t,r,n)=>{let o=n?Object.assign(n,{direction:"backward"}):{direction:"backward"};return Wt(e)(t,r,o)},kn=sc(W),ic=e=>(t,r,n)=>Wt(e)(t,r,n),xn=ic(W),ac=e=>async(t,r,n)=>{let o=n?Object.assign(n,{direction:"backward"}):{direction:"backward"};return Vt(e)(t,r,o)},Sn=ac(W),cc=e=>async(t,r,n)=>Vt(e)(t,r,n),vn=cc(W);var re={};ve(re,{base64:()=>Bn,base64url:()=>Qt,bigint:()=>Kn,boolean:()=>Gn,browserEmail:()=>rd,cidrv4:()=>Dn,cidrv6:()=>Mn,cuid:()=>zn,cuid2:()=>Tn,date:()=>Fn,datetime:()=>qn,domain:()=>sd,duration:()=>Rn,e164:()=>Un,email:()=>Nn,emoji:()=>On,extendedDuration:()=>Gf,guid:()=>Cn,hex:()=>id,hostname:()=>od,html5Email:()=>Xf,idnEmail:()=>td,integer:()=>Yn,ipv4:()=>Ln,ipv6:()=>Zn,ksuid:()=>En,lowercase:()=>Qn,mac:()=>jn,md5_base64:()=>cd,md5_base64url:()=>ud,md5_hex:()=>ad,nanoid:()=>An,null:()=>Wn,number:()=>Xt,rfc5322Email:()=>ed,sha1_base64:()=>pd,sha1_base64url:()=>fd,sha1_hex:()=>ld,sha256_base64:()=>md,sha256_base64url:()=>hd,sha256_hex:()=>dd,sha384_base64:()=>yd,sha384_base64url:()=>bd,sha384_hex:()=>gd,sha512_base64:()=>wd,sha512_base64url:()=>$d,sha512_hex:()=>_d,string:()=>Jn,time:()=>Hn,ulid:()=>In,undefined:()=>Vn,unicodeEmail:()=>uc,uppercase:()=>Xn,uuid:()=>Pe,uuid4:()=>Wf,uuid6:()=>Vf,uuid7:()=>Qf,xid:()=>Pn});var zn=/^[cC][^\s-]{8,}$/,Tn=/^[0-9a-z]+$/,In=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,Pn=/^[0-9a-vA-V]{20}$/,En=/^[A-Za-z0-9]{27}$/,An=/^[a-zA-Z0-9_-]{21}$/,Rn=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,Gf=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,Cn=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,Pe=e=>e?new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${e}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`):/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/,Wf=Pe(4),Vf=Pe(6),Qf=Pe(7),Nn=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,Xf=/^[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])?)*$/,ed=/^(([^<>()\[\]\\.,;:\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,}))$/,uc=/^[^\s@"]{1,64}@[^\s@]{1,255}$/u,td=uc,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="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$";function On(){return new RegExp(nd,"u")}var Ln=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,Zn=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/,jn=e=>{let t=ee(e??":");return new RegExp(`^(?:[0-9A-F]{2}${t}){5}[0-9A-F]{2}$|^(?:[0-9a-f]{2}${t}){5}[0-9a-f]{2}$`)},Dn=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,Mn=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,Bn=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,Qt=/^[A-Za-z0-9_-]*$/,od=/^(?=.{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])?)*\.?$/,sd=/^([a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/,Un=/^\+[1-9]\d{6,14}$/,lc="(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))",Fn=new RegExp(`^${lc}$`);function pc(e){let t="(?:[01]\\d|2[0-3]):[0-5]\\d";return typeof e.precision=="number"?e.precision===-1?`${t}`:e.precision===0?`${t}:[0-5]\\d`:`${t}:[0-5]\\d\\.\\d{${e.precision}}`:`${t}(?::[0-5]\\d(?:\\.\\d+)?)?`}function Hn(e){return new RegExp(`^${pc(e)}$`)}function qn(e){let t=pc({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(`^${lc}T(?:${n})$`)}var Jn=e=>{let t=e?`[\\s\\S]{${e?.minimum??0},${e?.maximum??""}}`:"[\\s\\S]*";return new RegExp(`^${t}$`)},Kn=/^-?\d+n?$/,Yn=/^-?\d+$/,Xt=/^-?\d+(?:\.\d+)?$/,Gn=/^(?:true|false)$/i,Wn=/^null$/i;var Vn=/^undefined$/i;var Qn=/^[^A-Z]*$/,Xn=/^[^a-z]*$/,id=/^[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 ad=/^[0-9a-fA-F]{32}$/,cd=ct(22,"=="),ud=ut(22),ld=/^[0-9a-fA-F]{40}$/,pd=ct(27,"="),fd=ut(27),dd=/^[0-9a-fA-F]{64}$/,md=ct(43,"="),hd=ut(43),gd=/^[0-9a-fA-F]{96}$/,yd=ct(64,""),bd=ut(64),_d=/^[0-9a-fA-F]{128}$/,wd=ct(86,"=="),$d=ut(86);var E=d("$ZodCheck",(e,t)=>{var r;e._zod??(e._zod={}),e._zod.def=t,(r=e._zod).onattach??(r.onattach=[])}),dc={number:"number",bigint:"bigint",object:"date"},er=d("$ZodCheckLessThan",(e,t)=>{E.init(e,t);let r=dc[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=dc[typeof t.value];e._zod.onattach.push(n=>{let o=n._zod.bag,s=(t.inclusive?o.minimum:o.exclusiveMinimum)??Number.NEGATIVE_INFINITY;t.value>s&&(t.inclusive?o.minimum=t.value:o.exclusiveMinimum=t.value)}),e._zod.check=n=>{(t.inclusive?n.value>=t.value:n.value>t.value)||n.issues.push({origin:r,code:"too_small",minimum:typeof t.value=="object"?t.value.getTime():t.value,input:n.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),eo=d("$ZodCheckMultipleOf",(e,t)=>{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):en(r.value,t.value)===0)||r.issues.push({origin:typeof r.value,code:"not_multiple_of",divisor:t.value,input:r.value,inst:e,continue:!t.abort})}}),to=d("$ZodCheckNumberFormat",(e,t)=>{E.init(e,t),t.format=t.format||"float64";let r=t.format?.includes("int"),n=r?"int":"number",[o,s]=sn[t.format];e._zod.onattach.push(i=>{let a=i._zod.bag;a.format=t.format,a.minimum=o,a.maximum=s,r&&(a.pattern=Yn)}),e._zod.check=i=>{let a=i.value;if(r){if(!Number.isInteger(a)){i.issues.push({expected:n,format:t.format,code:"invalid_type",continue:!1,input:a,inst:e});return}if(!Number.isSafeInteger(a)){a>0?i.issues.push({input:a,code:"too_big",maximum:Number.MAX_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:n,inclusive:!0,continue:!t.abort}):i.issues.push({input:a,code:"too_small",minimum:Number.MIN_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:n,inclusive:!0,continue:!t.abort});return}}a<o&&i.issues.push({origin:"number",input:a,code:"too_small",minimum:o,inclusive:!0,inst:e,continue:!t.abort}),a>s&&i.issues.push({origin:"number",input:a,code:"too_big",maximum:s,inclusive:!0,inst:e,continue:!t.abort})}}),ro=d("$ZodCheckBigIntFormat",(e,t)=>{E.init(e,t);let[r,n]=an[t.format];e._zod.onattach.push(o=>{let s=o._zod.bag;s.format=t.format,s.minimum=r,s.maximum=n}),e._zod.check=o=>{let s=o.value;s<r&&o.issues.push({origin:"bigint",input:s,code:"too_small",minimum:r,inclusive:!0,inst:e,continue:!t.abort}),s>n&&o.issues.push({origin:"bigint",input:s,code:"too_big",maximum:n,inclusive:!0,inst:e,continue:!t.abort})}}),no=d("$ZodCheckMaxSize",(e,t)=>{var r;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})}}),oo=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})}}),so=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})}}),io=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})}}),ao=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})}}),co=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=()=>{})}),uo=d("$ZodCheckRegex",(e,t)=>{Me.init(e,t),e._zod.check=r=>{t.pattern.lastIndex=0,!t.pattern.test(r.value)&&r.issues.push({origin:"string",code:"invalid_format",format:"regex",input:r.value,pattern:t.pattern.toString(),inst:e,continue:!t.abort})}}),lo=d("$ZodCheckLowerCase",(e,t)=>{t.pattern??(t.pattern=Qn),Me.init(e,t)}),po=d("$ZodCheckUpperCase",(e,t)=>{t.pattern??(t.pattern=Xn),Me.init(e,t)}),fo=d("$ZodCheckIncludes",(e,t)=>{E.init(e,t);let r=ee(t.includes),n=new RegExp(typeof t.position=="number"?`^.{${t.position}}${r}`:r);t.pattern=n,e._zod.onattach.push(o=>{let s=o._zod.bag;s.patterns??(s.patterns=new Set),s.patterns.add(n)}),e._zod.check=o=>{o.value.includes(t.includes,t.position)||o.issues.push({origin:"string",code:"invalid_format",format:"includes",includes:t.includes,input:o.value,inst:e,continue:!t.abort})}}),mo=d("$ZodCheckStartsWith",(e,t)=>{E.init(e,t);let r=new RegExp(`^${ee(t.prefix)}.*`);t.pattern??(t.pattern=r),e._zod.onattach.push(n=>{let o=n._zod.bag;o.patterns??(o.patterns=new Set),o.patterns.add(r)}),e._zod.check=n=>{n.value.startsWith(t.prefix)||n.issues.push({origin:"string",code:"invalid_format",format:"starts_with",prefix:t.prefix,input:n.value,inst:e,continue:!t.abort})}}),ho=d("$ZodCheckEndsWith",(e,t)=>{E.init(e,t);let r=new RegExp(`.*${ee(t.suffix)}$`);t.pattern??(t.pattern=r),e._zod.onattach.push(n=>{let o=n._zod.bag;o.patterns??(o.patterns=new Set),o.patterns.add(r)}),e._zod.check=n=>{n.value.endsWith(t.suffix)||n.issues.push({origin:"string",code:"invalid_format",format:"ends_with",suffix:t.suffix,input:n.value,inst:e,continue:!t.abort})}});function fc(e,t,r){e.issues.length&&t.issues.push(...Q(r,e.issues))}var go=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=>fc(o,r,t.property));fc(n,r,t.property)}}),yo=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(`
4
4
  `).filter(i=>i),o=Math.min(...n.map(i=>i.length-i.trimStart().length)),s=n.map(i=>i.slice(o)).map(i=>" ".repeat(this.indent*2)+i);for(let i of s)this.content.push(i)}compile(){let t=Function,r=this?.args,o=[...(this?.content??[""]).map(s=>` ${s}`)];return new t(...r,o.join(`
5
- `))}};var _o={major:4,minor:3,patch:6};var x=d("$ZodType",(e,t)=>{var r;e??(e={}),e._zod.def=t,e._zod.bag=e._zod.bag||{},e._zod.version=_o;let n=[...e._zod.def.checks??[]];e._zod.traits.has("$ZodCheck")&&n.unshift(e);for(let o of n)for(let s of o._zod.onattach)s(e);if(n.length===0)(r=e._zod).deferred??(r.deferred=[]),e._zod.deferred?.push(()=>{e._zod.run=e._zod.parse});else{let o=(i,a,u)=>{let l=he(i),p;for(let f of a){if(f._zod.def.when){if(!f._zod.def.when(i))continue}else if(l)continue;let m=i.issues.length,h=f._zod.check(i);if(h instanceof Promise&&u?.async===!1)throw new se;if(p||h instanceof Promise)p=(p??Promise.resolve()).then(async()=>{await h,i.issues.length!==m&&(l||(l=he(i,m)))});else{if(i.issues.length===m)continue;l||(l=he(i,m))}}return p?p.then(()=>i):i},s=(i,a,u)=>{if(he(i))return i.aborted=!0,i;let l=o(a,n,u);if(l instanceof Promise){if(u.async===!1)throw new se;return l.then(p=>e._zod.parse(p,u))}return e._zod.parse(l,u)};e._zod.run=(i,a)=>{if(a.skipChecks)return e._zod.parse(i,a);if(a.direction==="backward"){let l=e._zod.parse({value:i.value,issues:[]},{...a,skipChecks:!0});return l instanceof Promise?l.then(p=>s(p,i,a)):s(l,i,a)}let u=e._zod.parse(i,a);if(u instanceof Promise){if(a.async===!1)throw new se;return u.then(l=>o(l,n,a))}return o(u,n,a)}}k(e,"~standard",()=>({validate:o=>{try{let s=Te(e,o);return s.success?{value:s.data}:{issues:s.error?.issues}}catch{return Ie(e,o).then(i=>i.success?{value:i.data}:{issues:i.error?.issues})}},vendor:"zod",version:1}))}),Be=d("$ZodString",(e,t)=>{x.init(e,t),e._zod.pattern=[...e?._zod.bag?.patterns??[]].pop()??Jn(e._zod.bag),e._zod.parse=(r,n)=>{if(t.coerce)try{r.value=String(r.value)}catch{}return typeof r.value=="string"||r.issues.push({expected:"string",code:"invalid_type",input:r.value,inst:e}),r}}),P=d("$ZodStringFormat",(e,t)=>{Me.init(e,t),Be.init(e,t)}),$o=d("$ZodGUID",(e,t)=>{t.pattern??(t.pattern=Cn),P.init(e,t)}),xo=d("$ZodUUID",(e,t)=>{if(t.version){let n={v1:1,v2:2,v3:3,v4:4,v5:5,v6:6,v7:7,v8:8}[t.version];if(n===void 0)throw new Error(`Invalid UUID version: "${t.version}"`);t.pattern??(t.pattern=Pe(n))}else t.pattern??(t.pattern=Pe());P.init(e,t)}),ko=d("$ZodEmail",(e,t)=>{t.pattern??(t.pattern=Nn),P.init(e,t)}),So=d("$ZodURL",(e,t)=>{P.init(e,t),e._zod.check=r=>{try{let n=r.value.trim(),o=new URL(n);t.hostname&&(t.hostname.lastIndex=0,t.hostname.test(o.hostname)||r.issues.push({code:"invalid_format",format:"url",note:"Invalid hostname",pattern:t.hostname.source,input:r.value,inst:e,continue:!t.abort})),t.protocol&&(t.protocol.lastIndex=0,t.protocol.test(o.protocol.endsWith(":")?o.protocol.slice(0,-1):o.protocol)||r.issues.push({code:"invalid_format",format:"url",note:"Invalid protocol",pattern:t.protocol.source,input:r.value,inst:e,continue:!t.abort})),t.normalize?r.value=o.href:r.value=n;return}catch{r.issues.push({code:"invalid_format",format:"url",input:r.value,inst:e,continue:!t.abort})}}}),vo=d("$ZodEmoji",(e,t)=>{t.pattern??(t.pattern=On()),P.init(e,t)}),zo=d("$ZodNanoID",(e,t)=>{t.pattern??(t.pattern=En),P.init(e,t)}),To=d("$ZodCUID",(e,t)=>{t.pattern??(t.pattern=zn),P.init(e,t)}),Io=d("$ZodCUID2",(e,t)=>{t.pattern??(t.pattern=Tn),P.init(e,t)}),Po=d("$ZodULID",(e,t)=>{t.pattern??(t.pattern=In),P.init(e,t)}),Ao=d("$ZodXID",(e,t)=>{t.pattern??(t.pattern=Pn),P.init(e,t)}),Eo=d("$ZodKSUID",(e,t)=>{t.pattern??(t.pattern=An),P.init(e,t)}),Ro=d("$ZodISODateTime",(e,t)=>{t.pattern??(t.pattern=qn(t)),P.init(e,t)}),Co=d("$ZodISODate",(e,t)=>{t.pattern??(t.pattern=Fn),P.init(e,t)}),No=d("$ZodISOTime",(e,t)=>{t.pattern??(t.pattern=Hn(t)),P.init(e,t)}),Oo=d("$ZodISODuration",(e,t)=>{t.pattern??(t.pattern=Rn),P.init(e,t)}),Lo=d("$ZodIPv4",(e,t)=>{t.pattern??(t.pattern=Ln),P.init(e,t),e._zod.bag.format="ipv4"}),Zo=d("$ZodIPv6",(e,t)=>{t.pattern??(t.pattern=Zn),P.init(e,t),e._zod.bag.format="ipv6",e._zod.check=r=>{try{new URL(`http://[${r.value}]`)}catch{r.issues.push({code:"invalid_format",format:"ipv6",input:r.value,inst:e,continue:!t.abort})}}}),jo=d("$ZodMAC",(e,t)=>{t.pattern??(t.pattern=jn(t.delimiter)),P.init(e,t),e._zod.bag.format="mac"}),Do=d("$ZodCIDRv4",(e,t)=>{t.pattern??(t.pattern=Dn),P.init(e,t)}),Mo=d("$ZodCIDRv6",(e,t)=>{t.pattern??(t.pattern=Mn),P.init(e,t),e._zod.check=r=>{let n=r.value.split("/");try{if(n.length!==2)throw new Error;let[o,s]=n;if(!s)throw new Error;let i=Number(s);if(`${i}`!==s)throw new Error;if(i<0||i>128)throw new Error;new URL(`http://[${o}]`)}catch{r.issues.push({code:"invalid_format",format:"cidrv6",input:r.value,inst:e,continue:!t.abort})}}});function Bo(e){if(e==="")return!0;if(e.length%4!==0)return!1;try{return atob(e),!0}catch{return!1}}var Uo=d("$ZodBase64",(e,t)=>{t.pattern??(t.pattern=Bn),P.init(e,t),e._zod.bag.contentEncoding="base64",e._zod.check=r=>{Bo(r.value)||r.issues.push({code:"invalid_format",format:"base64",input:r.value,inst:e,continue:!t.abort})}});function vc(e){if(!Qt.test(e))return!1;let t=e.replace(/[-_]/g,n=>n==="-"?"+":"/"),r=t.padEnd(Math.ceil(t.length/4)*4,"=");return Bo(r)}var Fo=d("$ZodBase64URL",(e,t)=>{t.pattern??(t.pattern=Qt),P.init(e,t),e._zod.bag.contentEncoding="base64url",e._zod.check=r=>{vc(r.value)||r.issues.push({code:"invalid_format",format:"base64url",input:r.value,inst:e,continue:!t.abort})}}),Ho=d("$ZodE164",(e,t)=>{t.pattern??(t.pattern=Un),P.init(e,t)});function zc(e,t=null){try{let r=e.split(".");if(r.length!==3)return!1;let[n]=r;if(!n)return!1;let o=JSON.parse(atob(n));return!("typ"in o&&o?.typ!=="JWT"||!o.alg||t&&(!("alg"in o)||o.alg!==t))}catch{return!1}}var qo=d("$ZodJWT",(e,t)=>{P.init(e,t),e._zod.check=r=>{zc(r.value,t.alg)||r.issues.push({code:"invalid_format",format:"jwt",input:r.value,inst:e,continue:!t.abort})}}),Jo=d("$ZodCustomStringFormat",(e,t)=>{P.init(e,t),e._zod.check=r=>{t.fn(r.value)||r.issues.push({code:"invalid_format",format:t.format,input:r.value,inst:e,continue:!t.abort})}}),ar=d("$ZodNumber",(e,t)=>{x.init(e,t),e._zod.pattern=e._zod.bag.pattern??Xt,e._zod.parse=(r,n)=>{if(t.coerce)try{r.value=Number(r.value)}catch{}let o=r.value;if(typeof o=="number"&&!Number.isNaN(o)&&Number.isFinite(o))return r;let s=typeof o=="number"?Number.isNaN(o)?"NaN":Number.isFinite(o)?void 0:"Infinity":void 0;return r.issues.push({expected:"number",code:"invalid_type",input:o,inst:e,...s?{received:s}:{}}),r}}),Ko=d("$ZodNumberFormat",(e,t)=>{to.init(e,t),ar.init(e,t)}),pt=d("$ZodBoolean",(e,t)=>{x.init(e,t),e._zod.pattern=Gn,e._zod.parse=(r,n)=>{if(t.coerce)try{r.value=!!r.value}catch{}let o=r.value;return typeof o=="boolean"||r.issues.push({expected:"boolean",code:"invalid_type",input:o,inst:e}),r}}),cr=d("$ZodBigInt",(e,t)=>{x.init(e,t),e._zod.pattern=Kn,e._zod.parse=(r,n)=>{if(t.coerce)try{r.value=BigInt(r.value)}catch{}return typeof r.value=="bigint"||r.issues.push({expected:"bigint",code:"invalid_type",input:r.value,inst:e}),r}}),Yo=d("$ZodBigIntFormat",(e,t)=>{ro.init(e,t),cr.init(e,t)}),Go=d("$ZodSymbol",(e,t)=>{x.init(e,t),e._zod.parse=(r,n)=>{let o=r.value;return typeof o=="symbol"||r.issues.push({expected:"symbol",code:"invalid_type",input:o,inst:e}),r}}),Wo=d("$ZodUndefined",(e,t)=>{x.init(e,t),e._zod.pattern=Vn,e._zod.values=new Set([void 0]),e._zod.optin="optional",e._zod.optout="optional",e._zod.parse=(r,n)=>{let o=r.value;return typeof o>"u"||r.issues.push({expected:"undefined",code:"invalid_type",input:o,inst:e}),r}}),Vo=d("$ZodNull",(e,t)=>{x.init(e,t),e._zod.pattern=Wn,e._zod.values=new Set([null]),e._zod.parse=(r,n)=>{let o=r.value;return o===null||r.issues.push({expected:"null",code:"invalid_type",input:o,inst:e}),r}}),Qo=d("$ZodAny",(e,t)=>{x.init(e,t),e._zod.parse=r=>r}),Xo=d("$ZodUnknown",(e,t)=>{x.init(e,t),e._zod.parse=r=>r}),es=d("$ZodNever",(e,t)=>{x.init(e,t),e._zod.parse=(r,n)=>(r.issues.push({expected:"never",code:"invalid_type",input:r.value,inst:e}),r)}),ts=d("$ZodVoid",(e,t)=>{x.init(e,t),e._zod.parse=(r,n)=>{let o=r.value;return typeof o>"u"||r.issues.push({expected:"void",code:"invalid_type",input:o,inst:e}),r}}),rs=d("$ZodDate",(e,t)=>{x.init(e,t),e._zod.parse=(r,n)=>{if(t.coerce)try{r.value=new Date(r.value)}catch{}let o=r.value,s=o instanceof Date;return s&&!Number.isNaN(o.getTime())||r.issues.push({expected:"date",code:"invalid_type",input:o,...s?{received:"Invalid Date"}:{},inst:e}),r}});function mc(e,t,r){e.issues.length&&t.issues.push(...Q(r,e.issues)),t.value[r]=e.value}var ns=d("$ZodArray",(e,t)=>{x.init(e,t),e._zod.parse=(r,n)=>{let o=r.value;if(!Array.isArray(o))return r.issues.push({expected:"array",code:"invalid_type",input:o,inst:e}),r;r.value=Array(o.length);let s=[];for(let i=0;i<o.length;i++){let a=o[i],u=t.element._zod.run({value:a,issues:[]},n);u instanceof Promise?s.push(u.then(l=>mc(l,r,i))):mc(u,r,i)}return s.length?Promise.all(s).then(()=>r):r}});function ir(e,t,r,n,o){if(e.issues.length){if(o&&!(r in n))return;t.issues.push(...Q(r,e.issues))}e.value===void 0?r in n&&(t.value[r]=void 0):t.value[r]=e.value}function Tc(e){let t=Object.keys(e.shape);for(let n of t)if(!e.shape?.[n]?._zod?.traits?.has("$ZodType"))throw new Error(`Invalid element at key "${n}": expected a Zod schema`);let r=on(e.shape);return{...e,keys:t,keySet:new Set(t),numKeys:t.length,optionalKeys:new Set(r)}}function Ic(e,t,r,n,o,s){let i=[],a=o.keySet,u=o.catchall._zod,l=u.def.type,p=u.optout==="optional";for(let f in t){if(a.has(f))continue;if(l==="never"){i.push(f);continue}let m=u.run({value:t[f],issues:[]},n);m instanceof Promise?e.push(m.then(h=>ir(h,r,f,t,p))):ir(m,r,f,t,p)}return i.length&&r.issues.push({code:"unrecognized_keys",keys:i,input:t,inst:s}),e.length?Promise.all(e).then(()=>r):r}var ur=d("$ZodObject",(e,t)=>{if(x.init(e,t),!Object.getOwnPropertyDescriptor(t,"shape")?.get){let a=t.shape;Object.defineProperty(t,"shape",{get:()=>{let u={...a};return Object.defineProperty(t,"shape",{value:u}),u}})}let n=Ze(()=>Tc(t));k(e._zod,"propValues",()=>{let a=t.shape,u={};for(let l in a){let p=a[l]._zod;if(p.values){u[l]??(u[l]=new Set);for(let f of p.values)u[l].add(f)}}return u});let o=ze,s=t.catchall,i;e._zod.parse=(a,u)=>{i??(i=n.value);let l=a.value;if(!o(l))return a.issues.push({expected:"object",code:"invalid_type",input:l,inst:e}),a;a.value={};let p=[],f=i.shape;for(let m of i.keys){let h=f[m],b=h._zod.optout==="optional",y=h._zod.run({value:l[m],issues:[]},u);y instanceof Promise?p.push(y.then(z=>ir(z,a,m,l,b))):ir(y,a,m,l,b)}return s?Ic(p,l,a,u,n.value,e):p.length?Promise.all(p).then(()=>a):a}}),$d=d("$ZodObjectJIT",(e,t)=>{ur.init(e,t);let r=e._zod.parse,n=Ze(()=>Tc(t)),o=m=>{let h=new lt(["shape","payload","ctx"]),b=n.value,y=C=>{let M=qt(C);return`shape[${M}]._zod.run({ value: input[${M}], issues: [] }, ctx)`};h.write("const input = payload.value;");let z=Object.create(null),H=0;for(let C of b.keys)z[C]=`key_${H++}`;h.write("const newResult = {};");for(let C of b.keys){let M=z[C],O=qt(C),jt=m[C]?._zod?.optout==="optional";h.write(`const ${M} = ${y(C)};`),jt?h.write(`
5
+ `))}};var _o={major:4,minor:3,patch:6};var k=d("$ZodType",(e,t)=>{var r;e??(e={}),e._zod.def=t,e._zod.bag=e._zod.bag||{},e._zod.version=_o;let n=[...e._zod.def.checks??[]];e._zod.traits.has("$ZodCheck")&&n.unshift(e);for(let o of n)for(let s of o._zod.onattach)s(e);if(n.length===0)(r=e._zod).deferred??(r.deferred=[]),e._zod.deferred?.push(()=>{e._zod.run=e._zod.parse});else{let o=(i,a,u)=>{let l=he(i),p;for(let f of a){if(f._zod.def.when){if(!f._zod.def.when(i))continue}else if(l)continue;let m=i.issues.length,h=f._zod.check(i);if(h instanceof Promise&&u?.async===!1)throw new se;if(p||h instanceof Promise)p=(p??Promise.resolve()).then(async()=>{await h,i.issues.length!==m&&(l||(l=he(i,m)))});else{if(i.issues.length===m)continue;l||(l=he(i,m))}}return p?p.then(()=>i):i},s=(i,a,u)=>{if(he(i))return i.aborted=!0,i;let l=o(a,n,u);if(l instanceof Promise){if(u.async===!1)throw new se;return l.then(p=>e._zod.parse(p,u))}return e._zod.parse(l,u)};e._zod.run=(i,a)=>{if(a.skipChecks)return e._zod.parse(i,a);if(a.direction==="backward"){let l=e._zod.parse({value:i.value,issues:[]},{...a,skipChecks:!0});return l instanceof Promise?l.then(p=>s(p,i,a)):s(l,i,a)}let u=e._zod.parse(i,a);if(u instanceof Promise){if(a.async===!1)throw new se;return u.then(l=>o(l,n,a))}return o(u,n,a)}}x(e,"~standard",()=>({validate:o=>{try{let s=Te(e,o);return s.success?{value:s.data}:{issues:s.error?.issues}}catch{return Ie(e,o).then(i=>i.success?{value:i.data}:{issues:i.error?.issues})}},vendor:"zod",version:1}))}),Be=d("$ZodString",(e,t)=>{k.init(e,t),e._zod.pattern=[...e?._zod.bag?.patterns??[]].pop()??Jn(e._zod.bag),e._zod.parse=(r,n)=>{if(t.coerce)try{r.value=String(r.value)}catch{}return typeof r.value=="string"||r.issues.push({expected:"string",code:"invalid_type",input:r.value,inst:e}),r}}),P=d("$ZodStringFormat",(e,t)=>{Me.init(e,t),Be.init(e,t)}),$o=d("$ZodGUID",(e,t)=>{t.pattern??(t.pattern=Cn),P.init(e,t)}),ko=d("$ZodUUID",(e,t)=>{if(t.version){let n={v1:1,v2:2,v3:3,v4:4,v5:5,v6:6,v7:7,v8:8}[t.version];if(n===void 0)throw new Error(`Invalid UUID version: "${t.version}"`);t.pattern??(t.pattern=Pe(n))}else t.pattern??(t.pattern=Pe());P.init(e,t)}),xo=d("$ZodEmail",(e,t)=>{t.pattern??(t.pattern=Nn),P.init(e,t)}),So=d("$ZodURL",(e,t)=>{P.init(e,t),e._zod.check=r=>{try{let n=r.value.trim(),o=new URL(n);t.hostname&&(t.hostname.lastIndex=0,t.hostname.test(o.hostname)||r.issues.push({code:"invalid_format",format:"url",note:"Invalid hostname",pattern:t.hostname.source,input:r.value,inst:e,continue:!t.abort})),t.protocol&&(t.protocol.lastIndex=0,t.protocol.test(o.protocol.endsWith(":")?o.protocol.slice(0,-1):o.protocol)||r.issues.push({code:"invalid_format",format:"url",note:"Invalid protocol",pattern:t.protocol.source,input:r.value,inst:e,continue:!t.abort})),t.normalize?r.value=o.href:r.value=n;return}catch{r.issues.push({code:"invalid_format",format:"url",input:r.value,inst:e,continue:!t.abort})}}}),vo=d("$ZodEmoji",(e,t)=>{t.pattern??(t.pattern=On()),P.init(e,t)}),zo=d("$ZodNanoID",(e,t)=>{t.pattern??(t.pattern=An),P.init(e,t)}),To=d("$ZodCUID",(e,t)=>{t.pattern??(t.pattern=zn),P.init(e,t)}),Io=d("$ZodCUID2",(e,t)=>{t.pattern??(t.pattern=Tn),P.init(e,t)}),Po=d("$ZodULID",(e,t)=>{t.pattern??(t.pattern=In),P.init(e,t)}),Eo=d("$ZodXID",(e,t)=>{t.pattern??(t.pattern=Pn),P.init(e,t)}),Ao=d("$ZodKSUID",(e,t)=>{t.pattern??(t.pattern=En),P.init(e,t)}),Ro=d("$ZodISODateTime",(e,t)=>{t.pattern??(t.pattern=qn(t)),P.init(e,t)}),Co=d("$ZodISODate",(e,t)=>{t.pattern??(t.pattern=Fn),P.init(e,t)}),No=d("$ZodISOTime",(e,t)=>{t.pattern??(t.pattern=Hn(t)),P.init(e,t)}),Oo=d("$ZodISODuration",(e,t)=>{t.pattern??(t.pattern=Rn),P.init(e,t)}),Lo=d("$ZodIPv4",(e,t)=>{t.pattern??(t.pattern=Ln),P.init(e,t),e._zod.bag.format="ipv4"}),Zo=d("$ZodIPv6",(e,t)=>{t.pattern??(t.pattern=Zn),P.init(e,t),e._zod.bag.format="ipv6",e._zod.check=r=>{try{new URL(`http://[${r.value}]`)}catch{r.issues.push({code:"invalid_format",format:"ipv6",input:r.value,inst:e,continue:!t.abort})}}}),jo=d("$ZodMAC",(e,t)=>{t.pattern??(t.pattern=jn(t.delimiter)),P.init(e,t),e._zod.bag.format="mac"}),Do=d("$ZodCIDRv4",(e,t)=>{t.pattern??(t.pattern=Dn),P.init(e,t)}),Mo=d("$ZodCIDRv6",(e,t)=>{t.pattern??(t.pattern=Mn),P.init(e,t),e._zod.check=r=>{let n=r.value.split("/");try{if(n.length!==2)throw new Error;let[o,s]=n;if(!s)throw new Error;let i=Number(s);if(`${i}`!==s)throw new Error;if(i<0||i>128)throw new Error;new URL(`http://[${o}]`)}catch{r.issues.push({code:"invalid_format",format:"cidrv6",input:r.value,inst:e,continue:!t.abort})}}});function Bo(e){if(e==="")return!0;if(e.length%4!==0)return!1;try{return atob(e),!0}catch{return!1}}var Uo=d("$ZodBase64",(e,t)=>{t.pattern??(t.pattern=Bn),P.init(e,t),e._zod.bag.contentEncoding="base64",e._zod.check=r=>{Bo(r.value)||r.issues.push({code:"invalid_format",format:"base64",input:r.value,inst:e,continue:!t.abort})}});function zc(e){if(!Qt.test(e))return!1;let t=e.replace(/[-_]/g,n=>n==="-"?"+":"/"),r=t.padEnd(Math.ceil(t.length/4)*4,"=");return Bo(r)}var Fo=d("$ZodBase64URL",(e,t)=>{t.pattern??(t.pattern=Qt),P.init(e,t),e._zod.bag.contentEncoding="base64url",e._zod.check=r=>{zc(r.value)||r.issues.push({code:"invalid_format",format:"base64url",input:r.value,inst:e,continue:!t.abort})}}),Ho=d("$ZodE164",(e,t)=>{t.pattern??(t.pattern=Un),P.init(e,t)});function Tc(e,t=null){try{let r=e.split(".");if(r.length!==3)return!1;let[n]=r;if(!n)return!1;let o=JSON.parse(atob(n));return!("typ"in o&&o?.typ!=="JWT"||!o.alg||t&&(!("alg"in o)||o.alg!==t))}catch{return!1}}var qo=d("$ZodJWT",(e,t)=>{P.init(e,t),e._zod.check=r=>{Tc(r.value,t.alg)||r.issues.push({code:"invalid_format",format:"jwt",input:r.value,inst:e,continue:!t.abort})}}),Jo=d("$ZodCustomStringFormat",(e,t)=>{P.init(e,t),e._zod.check=r=>{t.fn(r.value)||r.issues.push({code:"invalid_format",format:t.format,input:r.value,inst:e,continue:!t.abort})}}),ar=d("$ZodNumber",(e,t)=>{k.init(e,t),e._zod.pattern=e._zod.bag.pattern??Xt,e._zod.parse=(r,n)=>{if(t.coerce)try{r.value=Number(r.value)}catch{}let o=r.value;if(typeof o=="number"&&!Number.isNaN(o)&&Number.isFinite(o))return r;let s=typeof o=="number"?Number.isNaN(o)?"NaN":Number.isFinite(o)?void 0:"Infinity":void 0;return r.issues.push({expected:"number",code:"invalid_type",input:o,inst:e,...s?{received:s}:{}}),r}}),Ko=d("$ZodNumberFormat",(e,t)=>{to.init(e,t),ar.init(e,t)}),pt=d("$ZodBoolean",(e,t)=>{k.init(e,t),e._zod.pattern=Gn,e._zod.parse=(r,n)=>{if(t.coerce)try{r.value=!!r.value}catch{}let o=r.value;return typeof o=="boolean"||r.issues.push({expected:"boolean",code:"invalid_type",input:o,inst:e}),r}}),cr=d("$ZodBigInt",(e,t)=>{k.init(e,t),e._zod.pattern=Kn,e._zod.parse=(r,n)=>{if(t.coerce)try{r.value=BigInt(r.value)}catch{}return typeof r.value=="bigint"||r.issues.push({expected:"bigint",code:"invalid_type",input:r.value,inst:e}),r}}),Yo=d("$ZodBigIntFormat",(e,t)=>{ro.init(e,t),cr.init(e,t)}),Go=d("$ZodSymbol",(e,t)=>{k.init(e,t),e._zod.parse=(r,n)=>{let o=r.value;return typeof o=="symbol"||r.issues.push({expected:"symbol",code:"invalid_type",input:o,inst:e}),r}}),Wo=d("$ZodUndefined",(e,t)=>{k.init(e,t),e._zod.pattern=Vn,e._zod.values=new Set([void 0]),e._zod.optin="optional",e._zod.optout="optional",e._zod.parse=(r,n)=>{let o=r.value;return typeof o>"u"||r.issues.push({expected:"undefined",code:"invalid_type",input:o,inst:e}),r}}),Vo=d("$ZodNull",(e,t)=>{k.init(e,t),e._zod.pattern=Wn,e._zod.values=new Set([null]),e._zod.parse=(r,n)=>{let o=r.value;return o===null||r.issues.push({expected:"null",code:"invalid_type",input:o,inst:e}),r}}),Qo=d("$ZodAny",(e,t)=>{k.init(e,t),e._zod.parse=r=>r}),Xo=d("$ZodUnknown",(e,t)=>{k.init(e,t),e._zod.parse=r=>r}),es=d("$ZodNever",(e,t)=>{k.init(e,t),e._zod.parse=(r,n)=>(r.issues.push({expected:"never",code:"invalid_type",input:r.value,inst:e}),r)}),ts=d("$ZodVoid",(e,t)=>{k.init(e,t),e._zod.parse=(r,n)=>{let o=r.value;return typeof o>"u"||r.issues.push({expected:"void",code:"invalid_type",input:o,inst:e}),r}}),rs=d("$ZodDate",(e,t)=>{k.init(e,t),e._zod.parse=(r,n)=>{if(t.coerce)try{r.value=new Date(r.value)}catch{}let o=r.value,s=o instanceof Date;return s&&!Number.isNaN(o.getTime())||r.issues.push({expected:"date",code:"invalid_type",input:o,...s?{received:"Invalid Date"}:{},inst:e}),r}});function hc(e,t,r){e.issues.length&&t.issues.push(...Q(r,e.issues)),t.value[r]=e.value}var ns=d("$ZodArray",(e,t)=>{k.init(e,t),e._zod.parse=(r,n)=>{let o=r.value;if(!Array.isArray(o))return r.issues.push({expected:"array",code:"invalid_type",input:o,inst:e}),r;r.value=Array(o.length);let s=[];for(let i=0;i<o.length;i++){let a=o[i],u=t.element._zod.run({value:a,issues:[]},n);u instanceof Promise?s.push(u.then(l=>hc(l,r,i))):hc(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 Ic(e){let t=Object.keys(e.shape);for(let n of t)if(!e.shape?.[n]?._zod?.traits?.has("$ZodType"))throw new Error(`Invalid element at key "${n}": expected a Zod schema`);let r=on(e.shape);return{...e,keys:t,keySet:new Set(t),numKeys:t.length,optionalKeys:new Set(r)}}function Pc(e,t,r,n,o,s){let i=[],a=o.keySet,u=o.catchall._zod,l=u.def.type,p=u.optout==="optional";for(let f in t){if(a.has(f))continue;if(l==="never"){i.push(f);continue}let m=u.run({value:t[f],issues:[]},n);m instanceof Promise?e.push(m.then(h=>ir(h,r,f,t,p))):ir(m,r,f,t,p)}return i.length&&r.issues.push({code:"unrecognized_keys",keys:i,input:t,inst:s}),e.length?Promise.all(e).then(()=>r):r}var ur=d("$ZodObject",(e,t)=>{if(k.init(e,t),!Object.getOwnPropertyDescriptor(t,"shape")?.get){let a=t.shape;Object.defineProperty(t,"shape",{get:()=>{let u={...a};return Object.defineProperty(t,"shape",{value:u}),u}})}let n=Ze(()=>Ic(t));x(e._zod,"propValues",()=>{let a=t.shape,u={};for(let l in a){let p=a[l]._zod;if(p.values){u[l]??(u[l]=new Set);for(let f of p.values)u[l].add(f)}}return u});let o=ze,s=t.catchall,i;e._zod.parse=(a,u)=>{i??(i=n.value);let l=a.value;if(!o(l))return a.issues.push({expected:"object",code:"invalid_type",input:l,inst:e}),a;a.value={};let p=[],f=i.shape;for(let m of i.keys){let h=f[m],b=h._zod.optout==="optional",y=h._zod.run({value:l[m],issues:[]},u);y instanceof Promise?p.push(y.then(z=>ir(z,a,m,l,b))):ir(y,a,m,l,b)}return s?Pc(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(()=>Ic(t)),o=m=>{let h=new lt(["shape","payload","ctx"]),b=n.value,y=C=>{let M=qt(C);return`shape[${M}]._zod.run({ value: input[${M}], issues: [] }, ctx)`};h.write("const input = payload.value;");let z=Object.create(null),H=0;for(let C of b.keys)z[C]=`key_${H++}`;h.write("const newResult = {};");for(let C of b.keys){let M=z[C],O=qt(C),jt=m[C]?._zod?.optout==="optional";h.write(`const ${M} = ${y(C)};`),jt?h.write(`
6
6
  if (${M}.issues.length) {
7
7
  if (${O} in input) {
8
8
  payload.issues = payload.issues.concat(${M}.issues.map(iss => ({
@@ -36,24 +36,24 @@ var wf=Object.defineProperty;var ve=(e,t)=>{for(var r in t)wf(e,r,{get:t[r],enum
36
36
  newResult[${O}] = ${M}.value;
37
37
  }
38
38
 
39
- `)}h.write("payload.value = newResult;"),h.write("return payload;");let Y=h.compile();return(C,M)=>Y(m,C,M)},s,i=ze,a=!tt.jitless,l=a&&rn.value,p=t.catchall,f;e._zod.parse=(m,h)=>{f??(f=n.value);let b=m.value;return i(b)?a&&l&&h?.async===!1&&h.jitless!==!0?(s||(s=o(t.shape)),m=s(m,h),p?Ic([],b,m,h,f,e):m):r(m,h):(m.issues.push({expected:"object",code:"invalid_type",input:b,inst:e}),m)}});function hc(e,t,r,n){for(let s of e)if(s.issues.length===0)return t.value=s.value,t;let o=e.filter(s=>!he(s));return o.length===1?(t.value=o[0].value,o[0]):(t.issues.push({code:"invalid_union",input:t.value,inst:r,errors:e.map(s=>s.issues.map(i=>G(i,n,B())))}),t)}var ft=d("$ZodUnion",(e,t)=>{x.init(e,t),k(e._zod,"optin",()=>t.options.some(o=>o._zod.optin==="optional")?"optional":void 0),k(e._zod,"optout",()=>t.options.some(o=>o._zod.optout==="optional")?"optional":void 0),k(e._zod,"values",()=>{if(t.options.every(o=>o._zod.values))return new Set(t.options.flatMap(o=>Array.from(o._zod.values)))}),k(e._zod,"pattern",()=>{if(t.options.every(o=>o._zod.pattern)){let o=t.options.map(s=>s._zod.pattern);return new RegExp(`^(${o.map(s=>ot(s.source)).join("|")})$`)}});let r=t.options.length===1,n=t.options[0]._zod.run;e._zod.parse=(o,s)=>{if(r)return n(o,s);let i=!1,a=[];for(let u of t.options){let l=u._zod.run({value:o.value,issues:[]},s);if(l instanceof Promise)a.push(l),i=!0;else{if(l.issues.length===0)return l;a.push(l)}}return i?Promise.all(a).then(u=>hc(u,o,e,s)):hc(a,o,e,s)}});function gc(e,t,r,n){let o=e.filter(s=>s.issues.length===0);return o.length===1?(t.value=o[0].value,t):(o.length===0?t.issues.push({code:"invalid_union",input:t.value,inst:r,errors:e.map(s=>s.issues.map(i=>G(i,n,B())))}):t.issues.push({code:"invalid_union",input:t.value,inst:r,errors:[],inclusive:!1}),t)}var os=d("$ZodXor",(e,t)=>{ft.init(e,t),t.inclusive=!1;let r=t.options.length===1,n=t.options[0]._zod.run;e._zod.parse=(o,s)=>{if(r)return n(o,s);let i=!1,a=[];for(let u of t.options){let l=u._zod.run({value:o.value,issues:[]},s);l instanceof Promise?(a.push(l),i=!0):a.push(l)}return i?Promise.all(a).then(u=>gc(u,o,e,s)):gc(a,o,e,s)}}),ss=d("$ZodDiscriminatedUnion",(e,t)=>{t.inclusive=!1,ft.init(e,t);let r=e._zod.parse;k(e._zod,"propValues",()=>{let o={};for(let s of t.options){let i=s._zod.propValues;if(!i||Object.keys(i).length===0)throw new Error(`Invalid discriminated union option at index "${t.options.indexOf(s)}"`);for(let[a,u]of Object.entries(i)){o[a]||(o[a]=new Set);for(let l of u)o[a].add(l)}}return o});let n=Ze(()=>{let o=t.options,s=new Map;for(let i of o){let a=i._zod.propValues?.[t.discriminator];if(!a||a.size===0)throw new Error(`Invalid discriminated union option at index "${t.options.indexOf(i)}"`);for(let u of a){if(s.has(u))throw new Error(`Duplicate discriminator value "${String(u)}"`);s.set(u,i)}}return s});e._zod.parse=(o,s)=>{let i=o.value;if(!ze(i))return o.issues.push({code:"invalid_type",expected:"object",input:i,inst:e}),o;let a=n.value.get(i?.[t.discriminator]);return a?a._zod.run(o,s):t.unionFallback?r(o,s):(o.issues.push({code:"invalid_union",errors:[],note:"No matching discriminator",discriminator:t.discriminator,input:i,path:[t.discriminator],inst:e}),o)}}),is=d("$ZodIntersection",(e,t)=>{x.init(e,t),e._zod.parse=(r,n)=>{let o=r.value,s=t.left._zod.run({value:o,issues:[]},n),i=t.right._zod.run({value:o,issues:[]},n);return s instanceof Promise||i instanceof Promise?Promise.all([s,i]).then(([u,l])=>yc(r,u,l)):yc(r,s,i)}});function wo(e,t){if(e===t)return{valid:!0,data:e};if(e instanceof Date&&t instanceof Date&&+e==+t)return{valid:!0,data:e};if(me(e)&&me(t)){let r=Object.keys(t),n=Object.keys(e).filter(s=>r.indexOf(s)!==-1),o={...e,...t};for(let s of n){let i=wo(e[s],t[s]);if(!i.valid)return{valid:!1,mergeErrorPath:[s,...i.mergeErrorPath]};o[s]=i.data}return{valid:!0,data:o}}if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return{valid:!1,mergeErrorPath:[]};let r=[];for(let n=0;n<e.length;n++){let o=e[n],s=t[n],i=wo(o,s);if(!i.valid)return{valid:!1,mergeErrorPath:[n,...i.mergeErrorPath]};r.push(i.data)}return{valid:!0,data:r}}return{valid:!1,mergeErrorPath:[]}}function yc(e,t,r){let n=new Map,o;for(let a of t.issues)if(a.code==="unrecognized_keys"){o??(o=a);for(let u of a.keys)n.has(u)||n.set(u,{}),n.get(u).l=!0}else e.issues.push(a);for(let a of r.issues)if(a.code==="unrecognized_keys")for(let u of a.keys)n.has(u)||n.set(u,{}),n.get(u).r=!0;else e.issues.push(a);let s=[...n].filter(([,a])=>a.l&&a.r).map(([a])=>a);if(s.length&&o&&e.issues.push({...o,keys:s}),he(e))return e;let i=wo(t.value,r.value);if(!i.valid)throw new Error(`Unmergable intersection. Error path: ${JSON.stringify(i.mergeErrorPath)}`);return e.value=i.data,e}var lr=d("$ZodTuple",(e,t)=>{x.init(e,t);let r=t.items;e._zod.parse=(n,o)=>{let s=n.value;if(!Array.isArray(s))return n.issues.push({input:s,inst:e,expected:"tuple",code:"invalid_type"}),n;n.value=[];let i=[],a=[...r].reverse().findIndex(p=>p._zod.optin!=="optional"),u=a===-1?0:r.length-a;if(!t.rest){let p=s.length>r.length,f=s.length<u-1;if(p||f)return n.issues.push({...p?{code:"too_big",maximum:r.length,inclusive:!0}:{code:"too_small",minimum:r.length},input:s,inst:e,origin:"array"}),n}let l=-1;for(let p of r){if(l++,l>=s.length&&l>=u)continue;let f=p._zod.run({value:s[l],issues:[]},o);f instanceof Promise?i.push(f.then(m=>rr(m,n,l))):rr(f,n,l)}if(t.rest){let p=s.slice(r.length);for(let f of p){l++;let m=t.rest._zod.run({value:f,issues:[]},o);m instanceof Promise?i.push(m.then(h=>rr(h,n,l))):rr(m,n,l)}}return i.length?Promise.all(i).then(()=>n):n}});function rr(e,t,r){e.issues.length&&t.issues.push(...Q(r,e.issues)),t.value[r]=e.value}var as=d("$ZodRecord",(e,t)=>{x.init(e,t),e._zod.parse=(r,n)=>{let o=r.value;if(!me(o))return r.issues.push({expected:"record",code:"invalid_type",input:o,inst:e}),r;let s=[],i=t.keyType._zod.values;if(i){r.value={};let a=new Set;for(let l of i)if(typeof l=="string"||typeof l=="number"||typeof l=="symbol"){a.add(typeof l=="number"?l.toString():l);let p=t.valueType._zod.run({value:o[l],issues:[]},n);p instanceof Promise?s.push(p.then(f=>{f.issues.length&&r.issues.push(...Q(l,f.issues)),r.value[l]=f.value})):(p.issues.length&&r.issues.push(...Q(l,p.issues)),r.value[l]=p.value)}let u;for(let l in o)a.has(l)||(u=u??[],u.push(l));u&&u.length>0&&r.issues.push({code:"unrecognized_keys",input:o,inst:e,keys:u})}else{r.value={};for(let a of Reflect.ownKeys(o)){if(a==="__proto__")continue;let u=t.keyType._zod.run({value:a,issues:[]},n);if(u instanceof Promise)throw new Error("Async schemas not supported in object keys currently");if(typeof a=="string"&&Xt.test(a)&&u.issues.length){let f=t.keyType._zod.run({value:Number(a),issues:[]},n);if(f instanceof Promise)throw new Error("Async schemas not supported in object keys currently");f.issues.length===0&&(u=f)}if(u.issues.length){t.mode==="loose"?r.value[a]=o[a]:r.issues.push({code:"invalid_key",origin:"record",issues:u.issues.map(f=>G(f,n,B())),input:a,path:[a],inst:e});continue}let p=t.valueType._zod.run({value:o[a],issues:[]},n);p instanceof Promise?s.push(p.then(f=>{f.issues.length&&r.issues.push(...Q(a,f.issues)),r.value[u.value]=f.value})):(p.issues.length&&r.issues.push(...Q(a,p.issues)),r.value[u.value]=p.value)}}return s.length?Promise.all(s).then(()=>r):r}}),cs=d("$ZodMap",(e,t)=>{x.init(e,t),e._zod.parse=(r,n)=>{let o=r.value;if(!(o instanceof Map))return r.issues.push({expected:"map",code:"invalid_type",input:o,inst:e}),r;let s=[];r.value=new Map;for(let[i,a]of o){let u=t.keyType._zod.run({value:i,issues:[]},n),l=t.valueType._zod.run({value:a,issues:[]},n);u instanceof Promise||l instanceof Promise?s.push(Promise.all([u,l]).then(([p,f])=>{bc(p,f,r,i,o,e,n)})):bc(u,l,r,i,o,e,n)}return s.length?Promise.all(s).then(()=>r):r}});function bc(e,t,r,n,o,s,i){e.issues.length&&(st.has(typeof n)?r.issues.push(...Q(n,e.issues)):r.issues.push({code:"invalid_key",origin:"map",input:o,inst:s,issues:e.issues.map(a=>G(a,i,B()))})),t.issues.length&&(st.has(typeof n)?r.issues.push(...Q(n,t.issues)):r.issues.push({origin:"map",code:"invalid_element",input:o,inst:s,key:n,issues:t.issues.map(a=>G(a,i,B()))})),r.value.set(e.value,t.value)}var us=d("$ZodSet",(e,t)=>{x.init(e,t),e._zod.parse=(r,n)=>{let o=r.value;if(!(o instanceof Set))return r.issues.push({input:o,inst:e,expected:"set",code:"invalid_type"}),r;let s=[];r.value=new Set;for(let i of o){let a=t.valueType._zod.run({value:i,issues:[]},n);a instanceof Promise?s.push(a.then(u=>_c(u,r))):_c(a,r)}return s.length?Promise.all(s).then(()=>r):r}});function _c(e,t){e.issues.length&&t.issues.push(...e.issues),t.value.add(e.value)}var ls=d("$ZodEnum",(e,t)=>{x.init(e,t);let r=nt(t.entries),n=new Set(r);e._zod.values=n,e._zod.pattern=new RegExp(`^(${r.filter(o=>st.has(typeof o)).map(o=>typeof o=="string"?ee(o):o.toString()).join("|")})$`),e._zod.parse=(o,s)=>{let i=o.value;return n.has(i)||o.issues.push({code:"invalid_value",values:r,input:i,inst:e}),o}}),ps=d("$ZodLiteral",(e,t)=>{if(x.init(e,t),t.values.length===0)throw new Error("Cannot create literal schema with no valid values");let r=new Set(t.values);e._zod.values=r,e._zod.pattern=new RegExp(`^(${t.values.map(n=>typeof n=="string"?ee(n):n?ee(n.toString()):String(n)).join("|")})$`),e._zod.parse=(n,o)=>{let s=n.value;return r.has(s)||n.issues.push({code:"invalid_value",values:t.values,input:s,inst:e}),n}}),fs=d("$ZodFile",(e,t)=>{x.init(e,t),e._zod.parse=(r,n)=>{let o=r.value;return o instanceof File||r.issues.push({expected:"file",code:"invalid_type",input:o,inst:e}),r}}),ds=d("$ZodTransform",(e,t)=>{x.init(e,t),e._zod.parse=(r,n)=>{if(n.direction==="backward")throw new Le(e.constructor.name);let o=t.transform(r.value,r);if(n.async)return(o instanceof Promise?o:Promise.resolve(o)).then(i=>(r.value=i,r));if(o instanceof Promise)throw new se;return r.value=o,r}});function wc(e,t){return e.issues.length&&t===void 0?{issues:[],value:void 0}:e}var pr=d("$ZodOptional",(e,t)=>{x.init(e,t),e._zod.optin="optional",e._zod.optout="optional",k(e._zod,"values",()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,void 0]):void 0),k(e._zod,"pattern",()=>{let r=t.innerType._zod.pattern;return r?new RegExp(`^(${ot(r.source)})?$`):void 0}),e._zod.parse=(r,n)=>{if(t.innerType._zod.optin==="optional"){let o=t.innerType._zod.run(r,n);return o instanceof Promise?o.then(s=>wc(s,r.value)):wc(o,r.value)}return r.value===void 0?r:t.innerType._zod.run(r,n)}}),ms=d("$ZodExactOptional",(e,t)=>{pr.init(e,t),k(e._zod,"values",()=>t.innerType._zod.values),k(e._zod,"pattern",()=>t.innerType._zod.pattern),e._zod.parse=(r,n)=>t.innerType._zod.run(r,n)}),hs=d("$ZodNullable",(e,t)=>{x.init(e,t),k(e._zod,"optin",()=>t.innerType._zod.optin),k(e._zod,"optout",()=>t.innerType._zod.optout),k(e._zod,"pattern",()=>{let r=t.innerType._zod.pattern;return r?new RegExp(`^(${ot(r.source)}|null)$`):void 0}),k(e._zod,"values",()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,null]):void 0),e._zod.parse=(r,n)=>r.value===null?r:t.innerType._zod.run(r,n)}),gs=d("$ZodDefault",(e,t)=>{x.init(e,t),e._zod.optin="optional",k(e._zod,"values",()=>t.innerType._zod.values),e._zod.parse=(r,n)=>{if(n.direction==="backward")return t.innerType._zod.run(r,n);if(r.value===void 0)return r.value=t.defaultValue,r;let o=t.innerType._zod.run(r,n);return o instanceof Promise?o.then(s=>$c(s,t)):$c(o,t)}});function $c(e,t){return e.value===void 0&&(e.value=t.defaultValue),e}var ys=d("$ZodPrefault",(e,t)=>{x.init(e,t),e._zod.optin="optional",k(e._zod,"values",()=>t.innerType._zod.values),e._zod.parse=(r,n)=>(n.direction==="backward"||r.value===void 0&&(r.value=t.defaultValue),t.innerType._zod.run(r,n))}),bs=d("$ZodNonOptional",(e,t)=>{x.init(e,t),k(e._zod,"values",()=>{let r=t.innerType._zod.values;return r?new Set([...r].filter(n=>n!==void 0)):void 0}),e._zod.parse=(r,n)=>{let o=t.innerType._zod.run(r,n);return o instanceof Promise?o.then(s=>xc(s,e)):xc(o,e)}});function xc(e,t){return!e.issues.length&&e.value===void 0&&e.issues.push({code:"invalid_type",expected:"nonoptional",input:e.value,inst:t}),e}var _s=d("$ZodSuccess",(e,t)=>{x.init(e,t),e._zod.parse=(r,n)=>{if(n.direction==="backward")throw new Le("ZodSuccess");let o=t.innerType._zod.run(r,n);return o instanceof Promise?o.then(s=>(r.value=s.issues.length===0,r)):(r.value=o.issues.length===0,r)}}),ws=d("$ZodCatch",(e,t)=>{x.init(e,t),k(e._zod,"optin",()=>t.innerType._zod.optin),k(e._zod,"optout",()=>t.innerType._zod.optout),k(e._zod,"values",()=>t.innerType._zod.values),e._zod.parse=(r,n)=>{if(n.direction==="backward")return t.innerType._zod.run(r,n);let o=t.innerType._zod.run(r,n);return o instanceof Promise?o.then(s=>(r.value=s.value,s.issues.length&&(r.value=t.catchValue({...r,error:{issues:s.issues.map(i=>G(i,n,B()))},input:r.value}),r.issues=[]),r)):(r.value=o.value,o.issues.length&&(r.value=t.catchValue({...r,error:{issues:o.issues.map(s=>G(s,n,B()))},input:r.value}),r.issues=[]),r)}}),$s=d("$ZodNaN",(e,t)=>{x.init(e,t),e._zod.parse=(r,n)=>((typeof r.value!="number"||!Number.isNaN(r.value))&&r.issues.push({input:r.value,inst:e,expected:"nan",code:"invalid_type"}),r)}),xs=d("$ZodPipe",(e,t)=>{x.init(e,t),k(e._zod,"values",()=>t.in._zod.values),k(e._zod,"optin",()=>t.in._zod.optin),k(e._zod,"optout",()=>t.out._zod.optout),k(e._zod,"propValues",()=>t.in._zod.propValues),e._zod.parse=(r,n)=>{if(n.direction==="backward"){let s=t.out._zod.run(r,n);return s instanceof Promise?s.then(i=>nr(i,t.in,n)):nr(s,t.in,n)}let o=t.in._zod.run(r,n);return o instanceof Promise?o.then(s=>nr(s,t.out,n)):nr(o,t.out,n)}});function nr(e,t,r){return e.issues.length?(e.aborted=!0,e):t._zod.run({value:e.value,issues:e.issues},r)}var dt=d("$ZodCodec",(e,t)=>{x.init(e,t),k(e._zod,"values",()=>t.in._zod.values),k(e._zod,"optin",()=>t.in._zod.optin),k(e._zod,"optout",()=>t.out._zod.optout),k(e._zod,"propValues",()=>t.in._zod.propValues),e._zod.parse=(r,n)=>{if((n.direction||"forward")==="forward"){let s=t.in._zod.run(r,n);return s instanceof Promise?s.then(i=>or(i,t,n)):or(s,t,n)}else{let s=t.out._zod.run(r,n);return s instanceof Promise?s.then(i=>or(i,t,n)):or(s,t,n)}}});function or(e,t,r){if(e.issues.length)return e.aborted=!0,e;if((r.direction||"forward")==="forward"){let o=t.transform(e.value,e);return o instanceof Promise?o.then(s=>sr(e,s,t.out,r)):sr(e,o,t.out,r)}else{let o=t.reverseTransform(e.value,e);return o instanceof Promise?o.then(s=>sr(e,s,t.in,r)):sr(e,o,t.in,r)}}function sr(e,t,r,n){return e.issues.length?(e.aborted=!0,e):r._zod.run({value:t,issues:e.issues},n)}var ks=d("$ZodReadonly",(e,t)=>{x.init(e,t),k(e._zod,"propValues",()=>t.innerType._zod.propValues),k(e._zod,"values",()=>t.innerType._zod.values),k(e._zod,"optin",()=>t.innerType?._zod?.optin),k(e._zod,"optout",()=>t.innerType?._zod?.optout),e._zod.parse=(r,n)=>{if(n.direction==="backward")return t.innerType._zod.run(r,n);let o=t.innerType._zod.run(r,n);return o instanceof Promise?o.then(kc):kc(o)}});function kc(e){return e.value=Object.freeze(e.value),e}var Ss=d("$ZodTemplateLiteral",(e,t)=>{x.init(e,t);let r=[];for(let n of t.parts)if(typeof n=="object"&&n!==null){if(!n._zod.pattern)throw new Error(`Invalid template literal part, no pattern found: ${[...n._zod.traits].shift()}`);let o=n._zod.pattern instanceof RegExp?n._zod.pattern.source:n._zod.pattern;if(!o)throw new Error(`Invalid template literal part: ${n._zod.traits}`);let s=o.startsWith("^")?1:0,i=o.endsWith("$")?o.length-1:o.length;r.push(o.slice(s,i))}else if(n===null||nn.has(typeof n))r.push(ee(`${n}`));else throw new Error(`Invalid template literal part: ${n}`);e._zod.pattern=new RegExp(`^${r.join("")}$`),e._zod.parse=(n,o)=>typeof n.value!="string"?(n.issues.push({input:n.value,inst:e,expected:"string",code:"invalid_type"}),n):(e._zod.pattern.lastIndex=0,e._zod.pattern.test(n.value)||n.issues.push({input:n.value,inst:e,code:"invalid_format",format:t.format??"template_literal",pattern:e._zod.pattern.source}),n)}),vs=d("$ZodFunction",(e,t)=>(x.init(e,t),e._def=t,e._zod.def=t,e.implement=r=>{if(typeof r!="function")throw new Error("implement() must be called with a function");return function(...n){let o=e._def.input?ge(e._def.input,n):n,s=Reflect.apply(r,this,o);return e._def.output?ge(e._def.output,s):s}},e.implementAsync=r=>{if(typeof r!="function")throw new Error("implementAsync() must be called with a function");return async function(...n){let o=e._def.input?await ye(e._def.input,n):n,s=await Reflect.apply(r,this,o);return e._def.output?await ye(e._def.output,s):s}},e._zod.parse=(r,n)=>typeof r.value!="function"?(r.issues.push({code:"invalid_type",expected:"function",input:r.value,inst:e}),r):(e._def.output&&e._def.output._zod.def.type==="promise"?r.value=e.implementAsync(r.value):r.value=e.implement(r.value),r),e.input=(...r)=>{let n=e.constructor;return Array.isArray(r[0])?new n({type:"function",input:new lr({type:"tuple",items:r[0],rest:r[1]}),output:e._def.output}):new n({type:"function",input:r[0],output:e._def.output})},e.output=r=>{let n=e.constructor;return new n({type:"function",input:e._def.input,output:r})},e)),zs=d("$ZodPromise",(e,t)=>{x.init(e,t),e._zod.parse=(r,n)=>Promise.resolve(r.value).then(o=>t.innerType._zod.run({value:o,issues:[]},n))}),Ts=d("$ZodLazy",(e,t)=>{x.init(e,t),k(e._zod,"innerType",()=>t.getter()),k(e._zod,"pattern",()=>e._zod.innerType?._zod?.pattern),k(e._zod,"propValues",()=>e._zod.innerType?._zod?.propValues),k(e._zod,"optin",()=>e._zod.innerType?._zod?.optin??void 0),k(e._zod,"optout",()=>e._zod.innerType?._zod?.optout??void 0),e._zod.parse=(r,n)=>e._zod.innerType._zod.run(r,n)}),Is=d("$ZodCustom",(e,t)=>{A.init(e,t),x.init(e,t),e._zod.parse=(r,n)=>r,e._zod.check=r=>{let n=r.value,o=t.fn(n);if(o instanceof Promise)return o.then(s=>Sc(s,r,n,e));Sc(o,r,n,e)}});function Sc(e,t,r,n){if(!e){let o={code:"custom",input:r,inst:n,path:[...n._zod.def.path??[]],continue:!n._zod.def.abort};n._zod.def.params&&(o.params=n._zod.def.params),t.issues.push(De(o))}}var mt={};ve(mt,{default:()=>kd});var kd={};var Pc,Ps=Symbol("ZodOutput"),As=Symbol("ZodInput"),fr=class{constructor(){this._map=new WeakMap,this._idmap=new Map}add(t,...r){let n=r[0];return this._map.set(t,n),n&&typeof n=="object"&&"id"in n&&this._idmap.set(n.id,t),this}clear(){return this._map=new WeakMap,this._idmap=new Map,this}remove(t){let r=this._map.get(t);return r&&typeof r=="object"&&"id"in r&&this._idmap.delete(r.id),this._map.delete(t),this}get(t){let r=t._zod.parent;if(r){let n={...this.get(r)??{}};delete n.id;let o={...n,...this._map.get(t)};return Object.keys(o).length?o:void 0}return this._map.get(t)}has(t){return this._map.has(t)}};function dr(){return new fr}(Pc=globalThis).__zod_globalRegistry??(Pc.__zod_globalRegistry=dr());var ae=globalThis.__zod_globalRegistry;function Es(e,t){return new e({type:"string",...g(t)})}function Rs(e,t){return new e({type:"string",coerce:!0,...g(t)})}function Cs(e,t){return new e({type:"string",format:"email",check:"string_format",abort:!1,...g(t)})}function Ns(e,t){return new e({type:"string",format:"guid",check:"string_format",abort:!1,...g(t)})}function Os(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,...g(t)})}function Ls(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v4",...g(t)})}function Zs(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v6",...g(t)})}function js(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v7",...g(t)})}function mr(e,t){return new e({type:"string",format:"url",check:"string_format",abort:!1,...g(t)})}function Ds(e,t){return new e({type:"string",format:"emoji",check:"string_format",abort:!1,...g(t)})}function Ms(e,t){return new e({type:"string",format:"nanoid",check:"string_format",abort:!1,...g(t)})}function Bs(e,t){return new e({type:"string",format:"cuid",check:"string_format",abort:!1,...g(t)})}function Us(e,t){return new e({type:"string",format:"cuid2",check:"string_format",abort:!1,...g(t)})}function Fs(e,t){return new e({type:"string",format:"ulid",check:"string_format",abort:!1,...g(t)})}function Hs(e,t){return new e({type:"string",format:"xid",check:"string_format",abort:!1,...g(t)})}function qs(e,t){return new e({type:"string",format:"ksuid",check:"string_format",abort:!1,...g(t)})}function Js(e,t){return new e({type:"string",format:"ipv4",check:"string_format",abort:!1,...g(t)})}function Ks(e,t){return new e({type:"string",format:"ipv6",check:"string_format",abort:!1,...g(t)})}function Ys(e,t){return new e({type:"string",format:"mac",check:"string_format",abort:!1,...g(t)})}function Gs(e,t){return new e({type:"string",format:"cidrv4",check:"string_format",abort:!1,...g(t)})}function Ws(e,t){return new e({type:"string",format:"cidrv6",check:"string_format",abort:!1,...g(t)})}function Vs(e,t){return new e({type:"string",format:"base64",check:"string_format",abort:!1,...g(t)})}function Qs(e,t){return new e({type:"string",format:"base64url",check:"string_format",abort:!1,...g(t)})}function Xs(e,t){return new e({type:"string",format:"e164",check:"string_format",abort:!1,...g(t)})}function ei(e,t){return new e({type:"string",format:"jwt",check:"string_format",abort:!1,...g(t)})}var ti={Any:null,Minute:-1,Second:0,Millisecond:3,Microsecond:6};function ri(e,t){return new e({type:"string",format:"datetime",check:"string_format",offset:!1,local:!1,precision:null,...g(t)})}function ni(e,t){return new e({type:"string",format:"date",check:"string_format",...g(t)})}function oi(e,t){return new e({type:"string",format:"time",check:"string_format",precision:null,...g(t)})}function si(e,t){return new e({type:"string",format:"duration",check:"string_format",...g(t)})}function ii(e,t){return new e({type:"number",checks:[],...g(t)})}function ai(e,t){return new e({type:"number",coerce:!0,checks:[],...g(t)})}function ci(e,t){return new e({type:"number",check:"number_format",abort:!1,format:"safeint",...g(t)})}function ui(e,t){return new e({type:"number",check:"number_format",abort:!1,format:"float32",...g(t)})}function li(e,t){return new e({type:"number",check:"number_format",abort:!1,format:"float64",...g(t)})}function pi(e,t){return new e({type:"number",check:"number_format",abort:!1,format:"int32",...g(t)})}function fi(e,t){return new e({type:"number",check:"number_format",abort:!1,format:"uint32",...g(t)})}function di(e,t){return new e({type:"boolean",...g(t)})}function mi(e,t){return new e({type:"boolean",coerce:!0,...g(t)})}function hi(e,t){return new e({type:"bigint",...g(t)})}function gi(e,t){return new e({type:"bigint",coerce:!0,...g(t)})}function yi(e,t){return new e({type:"bigint",check:"bigint_format",abort:!1,format:"int64",...g(t)})}function bi(e,t){return new e({type:"bigint",check:"bigint_format",abort:!1,format:"uint64",...g(t)})}function _i(e,t){return new e({type:"symbol",...g(t)})}function wi(e,t){return new e({type:"undefined",...g(t)})}function $i(e,t){return new e({type:"null",...g(t)})}function xi(e){return new e({type:"any"})}function ki(e){return new e({type:"unknown"})}function Si(e,t){return new e({type:"never",...g(t)})}function vi(e,t){return new e({type:"void",...g(t)})}function zi(e,t){return new e({type:"date",...g(t)})}function Ti(e,t){return new e({type:"date",coerce:!0,...g(t)})}function Ii(e,t){return new e({type:"nan",...g(t)})}function hr(e,t){return new er({check:"less_than",...g(t),value:e,inclusive:!1})}function ht(e,t){return new er({check:"less_than",...g(t),value:e,inclusive:!0})}function gr(e,t){return new tr({check:"greater_than",...g(t),value:e,inclusive:!1})}function gt(e,t){return new tr({check:"greater_than",...g(t),value:e,inclusive:!0})}function Pi(e){return gr(0,e)}function Ai(e){return hr(0,e)}function Ei(e){return ht(0,e)}function Ri(e){return gt(0,e)}function Ci(e,t){return new eo({check:"multiple_of",...g(t),value:e})}function Ni(e,t){return new no({check:"max_size",...g(t),maximum:e})}function Oi(e,t){return new oo({check:"min_size",...g(t),minimum:e})}function Li(e,t){return new so({check:"size_equals",...g(t),size:e})}function Zi(e,t){return new io({check:"max_length",...g(t),maximum:e})}function yt(e,t){return new ao({check:"min_length",...g(t),minimum:e})}function ji(e,t){return new co({check:"length_equals",...g(t),length:e})}function bt(e,t){return new uo({check:"string_format",format:"regex",...g(t),pattern:e})}function Di(e){return new lo({check:"string_format",format:"lowercase",...g(e)})}function Mi(e){return new po({check:"string_format",format:"uppercase",...g(e)})}function Bi(e,t){return new fo({check:"string_format",format:"includes",...g(t),includes:e})}function Ui(e,t){return new mo({check:"string_format",format:"starts_with",...g(t),prefix:e})}function Fi(e,t){return new ho({check:"string_format",format:"ends_with",...g(t),suffix:e})}function Hi(e,t,r){return new go({check:"property",property:e,schema:t,...g(r)})}function qi(e,t){return new yo({check:"mime_type",mime:e,...g(t)})}function be(e){return new bo({check:"overwrite",tx:e})}function Ji(e){return be(t=>t.normalize(e))}function Ki(){return be(e=>e.trim())}function Yi(){return be(e=>e.toLowerCase())}function Gi(){return be(e=>e.toUpperCase())}function vd(){return be(e=>tn(e))}function zd(e,t,r){return new e({type:"array",element:t,...g(r)})}function Td(e,t,r){return new e({type:"union",options:t,...g(r)})}function Id(e,t,r){return new e({type:"union",options:t,inclusive:!1,...g(r)})}function Pd(e,t,r,n){return new e({type:"union",options:r,discriminator:t,...g(n)})}function Ad(e,t,r){return new e({type:"intersection",left:t,right:r})}function Ed(e,t,r,n){let o=r instanceof x,s=o?n:r,i=o?r:null;return new e({type:"tuple",items:t,rest:i,...g(s)})}function Rd(e,t,r,n){return new e({type:"record",keyType:t,valueType:r,...g(n)})}function Cd(e,t,r,n){return new e({type:"map",keyType:t,valueType:r,...g(n)})}function Nd(e,t,r){return new e({type:"set",valueType:t,...g(r)})}function Od(e,t,r){let n=Array.isArray(t)?Object.fromEntries(t.map(o=>[o,o])):t;return new e({type:"enum",entries:n,...g(r)})}function Ld(e,t,r){return new e({type:"enum",entries:t,...g(r)})}function Zd(e,t,r){return new e({type:"literal",values:Array.isArray(t)?t:[t],...g(r)})}function Wi(e,t){return new e({type:"file",...g(t)})}function jd(e,t){return new e({type:"transform",transform:t})}function Dd(e,t){return new e({type:"optional",innerType:t})}function Md(e,t){return new e({type:"nullable",innerType:t})}function Bd(e,t,r){return new e({type:"default",innerType:t,get defaultValue(){return typeof r=="function"?r():je(r)}})}function Ud(e,t,r){return new e({type:"nonoptional",innerType:t,...g(r)})}function Fd(e,t){return new e({type:"success",innerType:t})}function Hd(e,t,r){return new e({type:"catch",innerType:t,catchValue:typeof r=="function"?r:()=>r})}function qd(e,t,r){return new e({type:"pipe",in:t,out:r})}function Jd(e,t){return new e({type:"readonly",innerType:t})}function Kd(e,t,r){return new e({type:"template_literal",parts:t,...g(r)})}function Yd(e,t){return new e({type:"lazy",getter:t})}function Gd(e,t){return new e({type:"promise",innerType:t})}function Vi(e,t,r){let n=g(r);return n.abort??(n.abort=!0),new e({type:"custom",check:"custom",fn:t,...n})}function Qi(e,t,r){return new e({type:"custom",check:"custom",fn:t,...g(r)})}function Xi(e){let t=Ac(r=>(r.addIssue=n=>{if(typeof n=="string")r.issues.push(De(n,r.value,t._zod.def));else{let o=n;o.fatal&&(o.continue=!1),o.code??(o.code="custom"),o.input??(o.input=r.value),o.inst??(o.inst=t),o.continue??(o.continue=!t._zod.def.abort),r.issues.push(De(o))}},e(r.value,r)));return t}function Ac(e,t){let r=new A({check:"custom",...g(t)});return r._zod.check=e,r}function ea(e){let t=new A({check:"describe"});return t._zod.onattach=[r=>{let n=ae.get(r)??{};ae.add(r,{...n,description:e})}],t._zod.check=()=>{},t}function ta(e){let t=new A({check:"meta"});return t._zod.onattach=[r=>{let n=ae.get(r)??{};ae.add(r,{...n,...e})}],t._zod.check=()=>{},t}function ra(e,t){let r=g(t),n=r.truthy??["true","1","yes","on","y","enabled"],o=r.falsy??["false","0","no","off","n","disabled"];r.case!=="sensitive"&&(n=n.map(h=>typeof h=="string"?h.toLowerCase():h),o=o.map(h=>typeof h=="string"?h.toLowerCase():h));let s=new Set(n),i=new Set(o),a=e.Codec??dt,u=e.Boolean??pt,l=e.String??Be,p=new l({type:"string",error:r.error}),f=new u({type:"boolean",error:r.error}),m=new a({type:"pipe",in:p,out:f,transform:((h,b)=>{let y=h;return r.case!=="sensitive"&&(y=y.toLowerCase()),s.has(y)?!0:i.has(y)?!1:(b.issues.push({code:"invalid_value",expected:"stringbool",values:[...s,...i],input:b.value,inst:m,continue:!1}),{})}),reverseTransform:((h,b)=>h===!0?n[0]||"true":o[0]||"false"),error:r.error});return m}function Ue(e,t,r,n={}){let o=g(n),s={...g(n),check:"string_format",type:"string",format:t,fn:typeof r=="function"?r:a=>r.test(a),...o};return r instanceof RegExp&&(s.pattern=r),new e(s)}function _e(e){let t=e?.target??"draft-2020-12";return t==="draft-4"&&(t="draft-04"),t==="draft-7"&&(t="draft-07"),{processors:e.processors??{},metadataRegistry:e?.metadata??ae,target:t,unrepresentable:e?.unrepresentable??"throw",override:e?.override??(()=>{}),io:e?.io??"output",counter:0,seen:new Map,cycles:e?.cycles??"ref",reused:e?.reused??"inline",external:e?.external??void 0}}function T(e,t,r={path:[],schemaPath:[]}){var n;let o=e._zod.def,s=t.seen.get(e);if(s)return s.count++,r.schemaPath.includes(e)&&(s.cycle=r.path),s.schema;let i={schema:{},count:1,cycle:void 0,path:r.path};t.seen.set(e,i);let a=e._zod.toJSONSchema?.();if(a)i.schema=a;else{let p={...r,schemaPath:[...r.schemaPath,e],path:r.path};if(e._zod.processJSONSchema)e._zod.processJSONSchema(t,i.schema,p);else{let m=i.schema,h=t.processors[o.type];if(!h)throw new Error(`[toJSONSchema]: Non-representable type encountered: ${o.type}`);h(e,t,m,p)}let f=e._zod.parent;f&&(i.ref||(i.ref=f),T(f,t,p),t.seen.get(f).isParent=!0)}let u=t.metadataRegistry.get(e);return u&&Object.assign(i.schema,u),t.io==="input"&&J(e)&&(delete i.schema.examples,delete i.schema.default),t.io==="input"&&i.schema._prefault&&((n=i.schema).default??(n.default=i.schema._prefault)),delete i.schema._prefault,t.seen.get(e).schema}function we(e,t){let r=e.seen.get(t);if(!r)throw new Error("Unprocessed schema. This is a bug in Zod.");let n=new Map;for(let i of e.seen.entries()){let a=e.metadataRegistry.get(i[0])?.id;if(a){let u=n.get(a);if(u&&u!==i[0])throw new Error(`Duplicate schema id "${a}" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);n.set(a,i[0])}}let o=i=>{let a=e.target==="draft-2020-12"?"$defs":"definitions";if(e.external){let f=e.external.registry.get(i[0])?.id,m=e.external.uri??(b=>b);if(f)return{ref:m(f)};let h=i[1].defId??i[1].schema.id??`schema${e.counter++}`;return i[1].defId=h,{defId:h,ref:`${m("__shared")}#/${a}/${h}`}}if(i[1]===r)return{ref:"#"};let l=`#/${a}/`,p=i[1].schema.id??`__schema${e.counter++}`;return{defId:p,ref:l+p}},s=i=>{if(i[1].schema.$ref)return;let a=i[1],{ref:u,defId:l}=o(i);a.def={...a.schema},l&&(a.defId=l);let p=a.schema;for(let f in p)delete p[f];p.$ref=u};if(e.cycles==="throw")for(let i of e.seen.entries()){let a=i[1];if(a.cycle)throw new Error(`Cycle detected: #/${a.cycle?.join("/")}/<root>
40
-
41
- Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(let i of e.seen.entries()){let a=i[1];if(t===i[0]){s(i);continue}if(e.external){let l=e.external.registry.get(i[0])?.id;if(t!==i[0]&&l){s(i);continue}}if(e.metadataRegistry.get(i[0])?.id){s(i);continue}if(a.cycle){s(i);continue}if(a.count>1&&e.reused==="ref"){s(i);continue}}}function $e(e,t){let r=e.seen.get(t);if(!r)throw new Error("Unprocessed schema. This is a bug in Zod.");let n=i=>{let a=e.seen.get(i);if(a.ref===null)return;let u=a.def??a.schema,l={...u},p=a.ref;if(a.ref=null,p){n(p);let m=e.seen.get(p),h=m.schema;if(h.$ref&&(e.target==="draft-07"||e.target==="draft-04"||e.target==="openapi-3.0")?(u.allOf=u.allOf??[],u.allOf.push(h)):Object.assign(u,h),Object.assign(u,l),i._zod.parent===p)for(let y in u)y==="$ref"||y==="allOf"||y in l||delete u[y];if(h.$ref&&m.def)for(let y in u)y==="$ref"||y==="allOf"||y in m.def&&JSON.stringify(u[y])===JSON.stringify(m.def[y])&&delete u[y]}let f=i._zod.parent;if(f&&f!==p){n(f);let m=e.seen.get(f);if(m?.schema.$ref&&(u.$ref=m.schema.$ref,m.def))for(let h in u)h==="$ref"||h==="allOf"||h in m.def&&JSON.stringify(u[h])===JSON.stringify(m.def[h])&&delete u[h]}e.override({zodSchema:i,jsonSchema:u,path:a.path??[]})};for(let i of[...e.seen.entries()].reverse())n(i[0]);let o={};if(e.target==="draft-2020-12"?o.$schema="https://json-schema.org/draft/2020-12/schema":e.target==="draft-07"?o.$schema="http://json-schema.org/draft-07/schema#":e.target==="draft-04"?o.$schema="http://json-schema.org/draft-04/schema#":e.target,e.external?.uri){let i=e.external.registry.get(t)?.id;if(!i)throw new Error("Schema is missing an `id` property");o.$id=e.external.uri(i)}Object.assign(o,r.def??r.schema);let s=e.external?.defs??{};for(let i of e.seen.entries()){let a=i[1];a.def&&a.defId&&(s[a.defId]=a.def)}e.external||Object.keys(s).length>0&&(e.target==="draft-2020-12"?o.$defs=s:o.definitions=s);try{let i=JSON.parse(JSON.stringify(o));return Object.defineProperty(i,"~standard",{value:{...t["~standard"],jsonSchema:{input:na(t,"input",e.processors),output:na(t,"output",e.processors)}},enumerable:!1,writable:!1}),i}catch{throw new Error("Error converting schema to JSON.")}}function J(e,t){let r=t??{seen:new Set};if(r.seen.has(e))return!1;r.seen.add(e);let n=e._zod.def;if(n.type==="transform")return!0;if(n.type==="array")return J(n.element,r);if(n.type==="set")return J(n.valueType,r);if(n.type==="lazy")return J(n.getter(),r);if(n.type==="promise"||n.type==="optional"||n.type==="nonoptional"||n.type==="nullable"||n.type==="readonly"||n.type==="default"||n.type==="prefault")return J(n.innerType,r);if(n.type==="intersection")return J(n.left,r)||J(n.right,r);if(n.type==="record"||n.type==="map")return J(n.keyType,r)||J(n.valueType,r);if(n.type==="pipe")return J(n.in,r)||J(n.out,r);if(n.type==="object"){for(let o in n.shape)if(J(n.shape[o],r))return!0;return!1}if(n.type==="union"){for(let o of n.options)if(J(o,r))return!0;return!1}if(n.type==="tuple"){for(let o of n.items)if(J(o,r))return!0;return!!(n.rest&&J(n.rest,r))}return!1}var Wd=(e,t={})=>r=>{let n=_e({...r,processors:t});return T(e,n),we(n,e),$e(n,e)},na=(e,t,r={})=>n=>{let{libraryOptions:o,target:s}=n??{},i=_e({...o??{},target:s,io:t,processors:r});return T(e,i),we(i,e),$e(i,e)};var Vd={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string",regex:""},Qd=(e,t,r,n)=>{let o=r;o.type="string";let{minimum:s,maximum:i,format:a,patterns:u,contentEncoding:l}=e._zod.bag;if(typeof s=="number"&&(o.minLength=s),typeof i=="number"&&(o.maxLength=i),a&&(o.format=Vd[a]??a,o.format===""&&delete o.format,a==="time"&&delete o.format),l&&(o.contentEncoding=l),u&&u.size>0){let p=[...u];p.length===1?o.pattern=p[0].source:p.length>1&&(o.allOf=[...p.map(f=>({...t.target==="draft-07"||t.target==="draft-04"||t.target==="openapi-3.0"?{type:"string"}:{},pattern:f.source}))])}},Xd=(e,t,r,n)=>{let o=r,{minimum:s,maximum:i,format:a,multipleOf:u,exclusiveMaximum:l,exclusiveMinimum:p}=e._zod.bag;typeof a=="string"&&a.includes("int")?o.type="integer":o.type="number",typeof p=="number"&&(t.target==="draft-04"||t.target==="openapi-3.0"?(o.minimum=p,o.exclusiveMinimum=!0):o.exclusiveMinimum=p),typeof s=="number"&&(o.minimum=s,typeof p=="number"&&t.target!=="draft-04"&&(p>=s?delete o.minimum:delete o.exclusiveMinimum)),typeof l=="number"&&(t.target==="draft-04"||t.target==="openapi-3.0"?(o.maximum=l,o.exclusiveMaximum=!0):o.exclusiveMaximum=l),typeof i=="number"&&(o.maximum=i,typeof l=="number"&&t.target!=="draft-04"&&(l<=i?delete o.maximum:delete o.exclusiveMaximum)),typeof u=="number"&&(o.multipleOf=u)},em=(e,t,r,n)=>{r.type="boolean"},tm=(e,t,r,n)=>{if(t.unrepresentable==="throw")throw new Error("BigInt cannot be represented in JSON Schema")},rm=(e,t,r,n)=>{if(t.unrepresentable==="throw")throw new Error("Symbols cannot be represented in JSON Schema")},nm=(e,t,r,n)=>{t.target==="openapi-3.0"?(r.type="string",r.nullable=!0,r.enum=[null]):r.type="null"},om=(e,t,r,n)=>{if(t.unrepresentable==="throw")throw new Error("Undefined cannot be represented in JSON Schema")},sm=(e,t,r,n)=>{if(t.unrepresentable==="throw")throw new Error("Void cannot be represented in JSON Schema")},im=(e,t,r,n)=>{r.not={}},am=(e,t,r,n)=>{},cm=(e,t,r,n)=>{},um=(e,t,r,n)=>{if(t.unrepresentable==="throw")throw new Error("Date cannot be represented in JSON Schema")},lm=(e,t,r,n)=>{let o=e._zod.def,s=nt(o.entries);s.every(i=>typeof i=="number")&&(r.type="number"),s.every(i=>typeof i=="string")&&(r.type="string"),r.enum=s},pm=(e,t,r,n)=>{let o=e._zod.def,s=[];for(let i of o.values)if(i===void 0){if(t.unrepresentable==="throw")throw new Error("Literal `undefined` cannot be represented in JSON Schema")}else if(typeof i=="bigint"){if(t.unrepresentable==="throw")throw new Error("BigInt literals cannot be represented in JSON Schema");s.push(Number(i))}else s.push(i);if(s.length!==0)if(s.length===1){let i=s[0];r.type=i===null?"null":typeof i,t.target==="draft-04"||t.target==="openapi-3.0"?r.enum=[i]:r.const=i}else s.every(i=>typeof i=="number")&&(r.type="number"),s.every(i=>typeof i=="string")&&(r.type="string"),s.every(i=>typeof i=="boolean")&&(r.type="boolean"),s.every(i=>i===null)&&(r.type="null"),r.enum=s},fm=(e,t,r,n)=>{if(t.unrepresentable==="throw")throw new Error("NaN cannot be represented in JSON Schema")},dm=(e,t,r,n)=>{let o=r,s=e._zod.pattern;if(!s)throw new Error("Pattern not found in template literal");o.type="string",o.pattern=s.source},mm=(e,t,r,n)=>{let o=r,s={type:"string",format:"binary",contentEncoding:"binary"},{minimum:i,maximum:a,mime:u}=e._zod.bag;i!==void 0&&(s.minLength=i),a!==void 0&&(s.maxLength=a),u?u.length===1?(s.contentMediaType=u[0],Object.assign(o,s)):(Object.assign(o,s),o.anyOf=u.map(l=>({contentMediaType:l}))):Object.assign(o,s)},hm=(e,t,r,n)=>{r.type="boolean"},gm=(e,t,r,n)=>{if(t.unrepresentable==="throw")throw new Error("Custom types cannot be represented in JSON Schema")},ym=(e,t,r,n)=>{if(t.unrepresentable==="throw")throw new Error("Function types cannot be represented in JSON Schema")},bm=(e,t,r,n)=>{if(t.unrepresentable==="throw")throw new Error("Transforms cannot be represented in JSON Schema")},_m=(e,t,r,n)=>{if(t.unrepresentable==="throw")throw new Error("Map cannot be represented in JSON Schema")},wm=(e,t,r,n)=>{if(t.unrepresentable==="throw")throw new Error("Set cannot be represented in JSON Schema")},$m=(e,t,r,n)=>{let o=r,s=e._zod.def,{minimum:i,maximum:a}=e._zod.bag;typeof i=="number"&&(o.minItems=i),typeof a=="number"&&(o.maxItems=a),o.type="array",o.items=T(s.element,t,{...n,path:[...n.path,"items"]})},xm=(e,t,r,n)=>{let o=r,s=e._zod.def;o.type="object",o.properties={};let i=s.shape;for(let l in i)o.properties[l]=T(i[l],t,{...n,path:[...n.path,"properties",l]});let a=new Set(Object.keys(i)),u=new Set([...a].filter(l=>{let p=s.shape[l]._zod;return t.io==="input"?p.optin===void 0:p.optout===void 0}));u.size>0&&(o.required=Array.from(u)),s.catchall?._zod.def.type==="never"?o.additionalProperties=!1:s.catchall?s.catchall&&(o.additionalProperties=T(s.catchall,t,{...n,path:[...n.path,"additionalProperties"]})):t.io==="output"&&(o.additionalProperties=!1)},km=(e,t,r,n)=>{let o=e._zod.def,s=o.inclusive===!1,i=o.options.map((a,u)=>T(a,t,{...n,path:[...n.path,s?"oneOf":"anyOf",u]}));s?r.oneOf=i:r.anyOf=i},Sm=(e,t,r,n)=>{let o=e._zod.def,s=T(o.left,t,{...n,path:[...n.path,"allOf",0]}),i=T(o.right,t,{...n,path:[...n.path,"allOf",1]}),a=l=>"allOf"in l&&Object.keys(l).length===1,u=[...a(s)?s.allOf:[s],...a(i)?i.allOf:[i]];r.allOf=u},vm=(e,t,r,n)=>{let o=r,s=e._zod.def;o.type="array";let i=t.target==="draft-2020-12"?"prefixItems":"items",a=t.target==="draft-2020-12"||t.target==="openapi-3.0"?"items":"additionalItems",u=s.items.map((m,h)=>T(m,t,{...n,path:[...n.path,i,h]})),l=s.rest?T(s.rest,t,{...n,path:[...n.path,a,...t.target==="openapi-3.0"?[s.items.length]:[]]}):null;t.target==="draft-2020-12"?(o.prefixItems=u,l&&(o.items=l)):t.target==="openapi-3.0"?(o.items={anyOf:u},l&&o.items.anyOf.push(l),o.minItems=u.length,l||(o.maxItems=u.length)):(o.items=u,l&&(o.additionalItems=l));let{minimum:p,maximum:f}=e._zod.bag;typeof p=="number"&&(o.minItems=p),typeof f=="number"&&(o.maxItems=f)},zm=(e,t,r,n)=>{let o=r,s=e._zod.def;o.type="object";let i=s.keyType,u=i._zod.bag?.patterns;if(s.mode==="loose"&&u&&u.size>0){let p=T(s.valueType,t,{...n,path:[...n.path,"patternProperties","*"]});o.patternProperties={};for(let f of u)o.patternProperties[f.source]=p}else(t.target==="draft-07"||t.target==="draft-2020-12")&&(o.propertyNames=T(s.keyType,t,{...n,path:[...n.path,"propertyNames"]})),o.additionalProperties=T(s.valueType,t,{...n,path:[...n.path,"additionalProperties"]});let l=i._zod.values;if(l){let p=[...l].filter(f=>typeof f=="string"||typeof f=="number");p.length>0&&(o.required=p)}},Tm=(e,t,r,n)=>{let o=e._zod.def,s=T(o.innerType,t,n),i=t.seen.get(e);t.target==="openapi-3.0"?(i.ref=o.innerType,r.nullable=!0):r.anyOf=[s,{type:"null"}]},Im=(e,t,r,n)=>{let o=e._zod.def;T(o.innerType,t,n);let s=t.seen.get(e);s.ref=o.innerType},Pm=(e,t,r,n)=>{let o=e._zod.def;T(o.innerType,t,n);let s=t.seen.get(e);s.ref=o.innerType,r.default=JSON.parse(JSON.stringify(o.defaultValue))},Am=(e,t,r,n)=>{let o=e._zod.def;T(o.innerType,t,n);let s=t.seen.get(e);s.ref=o.innerType,t.io==="input"&&(r._prefault=JSON.parse(JSON.stringify(o.defaultValue)))},Em=(e,t,r,n)=>{let o=e._zod.def;T(o.innerType,t,n);let s=t.seen.get(e);s.ref=o.innerType;let i;try{i=o.catchValue(void 0)}catch{throw new Error("Dynamic catch values are not supported in JSON Schema")}r.default=i},Rm=(e,t,r,n)=>{let o=e._zod.def,s=t.io==="input"?o.in._zod.def.type==="transform"?o.out:o.in:o.out;T(s,t,n);let i=t.seen.get(e);i.ref=s},Cm=(e,t,r,n)=>{let o=e._zod.def;T(o.innerType,t,n);let s=t.seen.get(e);s.ref=o.innerType,r.readOnly=!0},Nm=(e,t,r,n)=>{let o=e._zod.def;T(o.innerType,t,n);let s=t.seen.get(e);s.ref=o.innerType},Om=(e,t,r,n)=>{let o=e._zod.def;T(o.innerType,t,n);let s=t.seen.get(e);s.ref=o.innerType},Lm=(e,t,r,n)=>{let o=e._zod.innerType;T(o,t,n);let s=t.seen.get(e);s.ref=o},yr={string:Qd,number:Xd,boolean:em,bigint:tm,symbol:rm,null:nm,undefined:om,void:sm,never:im,any:am,unknown:cm,date:um,enum:lm,literal:pm,nan:fm,template_literal:dm,file:mm,success:hm,custom:gm,function:ym,transform:bm,map:_m,set:wm,array:$m,object:xm,union:km,intersection:Sm,tuple:vm,record:zm,nullable:Tm,nonoptional:Im,default:Pm,prefault:Am,catch:Em,pipe:Rm,readonly:Cm,promise:Nm,optional:Om,lazy:Lm};function br(e,t){if("_idmap"in e){let n=e,o=_e({...t,processors:yr}),s={};for(let u of n._idmap.entries()){let[l,p]=u;T(p,o)}let i={},a={registry:n,uri:t?.uri,defs:s};o.external=a;for(let u of n._idmap.entries()){let[l,p]=u;we(o,p),i[l]=$e(o,p)}if(Object.keys(s).length>0){let u=o.target==="draft-2020-12"?"$defs":"definitions";i.__shared={[u]:s}}return{schemas:i}}let r=_e({...t,processors:yr});return T(e,r),we(r,e),$e(r,e)}var _r=class{get metadataRegistry(){return this.ctx.metadataRegistry}get target(){return this.ctx.target}get unrepresentable(){return this.ctx.unrepresentable}get override(){return this.ctx.override}get io(){return this.ctx.io}get counter(){return this.ctx.counter}set counter(t){this.ctx.counter=t}get seen(){return this.ctx.seen}constructor(t){let r=t?.target??"draft-2020-12";r==="draft-4"&&(r="draft-04"),r==="draft-7"&&(r="draft-07"),this.ctx=_e({processors:yr,target:r,...t?.metadata&&{metadata:t.metadata},...t?.unrepresentable&&{unrepresentable:t.unrepresentable},...t?.override&&{override:t.override},...t?.io&&{io:t.io}})}process(t,r={path:[],schemaPath:[]}){return T(t,this.ctx,r)}emit(t,r){r&&(r.cycles&&(this.ctx.cycles=r.cycles),r.reused&&(this.ctx.reused=r.reused),r.external&&(this.ctx.external=r.external)),we(this.ctx,t);let n=$e(this.ctx,t),{"~standard":o,...s}=n;return s}};var Ec={};var S=d("ZodMiniType",(e,t)=>{if(!e._zod)throw new Error("Uninitialized schema in ZodMiniType.");x.init(e,t),e.def=t,e.type=t.type,e.parse=(r,n)=>ge(e,r,n,{callee:e.parse}),e.safeParse=(r,n)=>Te(e,r,n),e.parseAsync=async(r,n)=>ye(e,r,n,{callee:e.parseAsync}),e.safeParseAsync=async(r,n)=>Ie(e,r,n),e.check=(...r)=>e.clone({...t,checks:[...t.checks??[],...r.map(n=>typeof n=="function"?{_zod:{check:n,def:{check:"custom"},onattach:[]}}:n)]},{parent:!0}),e.with=e.check,e.clone=(r,n)=>q(e,r,n),e.brand=()=>e,e.register=((r,n)=>(r.add(e,n),e)),e.apply=r=>r(e)}),He=d("ZodMiniString",(e,t)=>{Be.init(e,t),S.init(e,t)});function _(e){return Es(He,e)}var E=d("ZodMiniStringFormat",(e,t)=>{P.init(e,t),He.init(e,t)}),Rc=d("ZodMiniEmail",(e,t)=>{ko.init(e,t),E.init(e,t)});function jm(e){return Cs(Rc,e)}var Cc=d("ZodMiniGUID",(e,t)=>{$o.init(e,t),E.init(e,t)});function Dm(e){return Ns(Cc,e)}var _t=d("ZodMiniUUID",(e,t)=>{xo.init(e,t),E.init(e,t)});function Mm(e){return Os(_t,e)}function Bm(e){return Ls(_t,e)}function Um(e){return Zs(_t,e)}function Fm(e){return js(_t,e)}var oa=d("ZodMiniURL",(e,t)=>{So.init(e,t),E.init(e,t)});function Hm(e){return mr(oa,e)}function qm(e){return mr(oa,{protocol:/^https?$/,hostname:re.domain,...g(e)})}var Nc=d("ZodMiniEmoji",(e,t)=>{vo.init(e,t),E.init(e,t)});function Jm(e){return Ds(Nc,e)}var Oc=d("ZodMiniNanoID",(e,t)=>{zo.init(e,t),E.init(e,t)});function Km(e){return Ms(Oc,e)}var Lc=d("ZodMiniCUID",(e,t)=>{To.init(e,t),E.init(e,t)});function Ym(e){return Bs(Lc,e)}var Zc=d("ZodMiniCUID2",(e,t)=>{Io.init(e,t),E.init(e,t)});function Gm(e){return Us(Zc,e)}var jc=d("ZodMiniULID",(e,t)=>{Po.init(e,t),E.init(e,t)});function Wm(e){return Fs(jc,e)}var Dc=d("ZodMiniXID",(e,t)=>{Ao.init(e,t),E.init(e,t)});function Vm(e){return Hs(Dc,e)}var Mc=d("ZodMiniKSUID",(e,t)=>{Eo.init(e,t),E.init(e,t)});function Qm(e){return qs(Mc,e)}var Bc=d("ZodMiniIPv4",(e,t)=>{Lo.init(e,t),E.init(e,t)});function Xm(e){return Js(Bc,e)}var Uc=d("ZodMiniIPv6",(e,t)=>{Zo.init(e,t),E.init(e,t)});function eh(e){return Ks(Uc,e)}var Fc=d("ZodMiniCIDRv4",(e,t)=>{Do.init(e,t),E.init(e,t)});function th(e){return Gs(Fc,e)}var Hc=d("ZodMiniCIDRv6",(e,t)=>{Mo.init(e,t),E.init(e,t)});function rh(e){return Ws(Hc,e)}var qc=d("ZodMiniMAC",(e,t)=>{jo.init(e,t),E.init(e,t)});function nh(e){return Ys(qc,e)}var Jc=d("ZodMiniBase64",(e,t)=>{Uo.init(e,t),E.init(e,t)});function oh(e){return Vs(Jc,e)}var Kc=d("ZodMiniBase64URL",(e,t)=>{Fo.init(e,t),E.init(e,t)});function sh(e){return Qs(Kc,e)}var Yc=d("ZodMiniE164",(e,t)=>{Ho.init(e,t),E.init(e,t)});function ih(e){return Xs(Yc,e)}var Gc=d("ZodMiniJWT",(e,t)=>{qo.init(e,t),E.init(e,t)});function ah(e){return ei(Gc,e)}var wt=d("ZodMiniCustomStringFormat",(e,t)=>{Jo.init(e,t),E.init(e,t)});function ch(e,t,r={}){return Ue(wt,e,t,r)}function uh(e){return Ue(wt,"hostname",re.hostname,e)}function lh(e){return Ue(wt,"hex",re.hex,e)}function ph(e,t){let r=t?.enc??"hex",n=`${e}_${r}`,o=re[n];if(!o)throw new Error(`Unrecognized hash format: ${n}`);return Ue(wt,n,o,t)}var $t=d("ZodMiniNumber",(e,t)=>{ar.init(e,t),S.init(e,t)});function xe(e){return ii($t,e)}var qe=d("ZodMiniNumberFormat",(e,t)=>{Ko.init(e,t),$t.init(e,t)});function fh(e){return ci(qe,e)}function dh(e){return ui(qe,e)}function mh(e){return li(qe,e)}function hh(e){return pi(qe,e)}function gh(e){return fi(qe,e)}var xt=d("ZodMiniBoolean",(e,t)=>{pt.init(e,t),S.init(e,t)});function Je(e){return di(xt,e)}var kt=d("ZodMiniBigInt",(e,t)=>{cr.init(e,t),S.init(e,t)});function yh(e){return hi(kt,e)}var sa=d("ZodMiniBigIntFormat",(e,t)=>{Yo.init(e,t),kt.init(e,t)});function bh(e){return yi(sa,e)}function _h(e){return bi(sa,e)}var Wc=d("ZodMiniSymbol",(e,t)=>{Go.init(e,t),S.init(e,t)});function wh(e){return _i(Wc,e)}var Vc=d("ZodMiniUndefined",(e,t)=>{Wo.init(e,t),S.init(e,t)});function $h(e){return wi(Vc,e)}var Qc=d("ZodMiniNull",(e,t)=>{Vo.init(e,t),S.init(e,t)});function Xc(e){return $i(Qc,e)}var eu=d("ZodMiniAny",(e,t)=>{Qo.init(e,t),S.init(e,t)});function xh(){return xi(eu)}var tu=d("ZodMiniUnknown",(e,t)=>{Xo.init(e,t),S.init(e,t)});function wr(){return ki(tu)}var ru=d("ZodMiniNever",(e,t)=>{es.init(e,t),S.init(e,t)});function nu(e){return Si(ru,e)}var ou=d("ZodMiniVoid",(e,t)=>{ts.init(e,t),S.init(e,t)});function kh(e){return vi(ou,e)}var $r=d("ZodMiniDate",(e,t)=>{rs.init(e,t),S.init(e,t)});function Sh(e){return zi($r,e)}var su=d("ZodMiniArray",(e,t)=>{ns.init(e,t),S.init(e,t)});function K(e,t){return new su({type:"array",element:e,...g(t)})}function vh(e){let t=e._zod.def.shape;return hu(Object.keys(t))}var xr=d("ZodMiniObject",(e,t)=>{ur.init(e,t),S.init(e,t),k(e,"shape",()=>t.shape)});function I(e,t){let r={type:"object",shape:e??{},...g(t)};return new xr(r)}function zh(e,t){return new xr({type:"object",shape:e,catchall:nu(),...g(t)})}function Th(e,t){return new xr({type:"object",shape:e,catchall:wr(),...g(t)})}function ke(e,t){return Kt(e,t)}function Ih(e,t){return ln(e,t)}function Ph(e,t){return Kt(e,t)}function Ah(e,t){return cn(e,t)}function Eh(e,t){return un(e,t)}function Rh(e,t){return pn(ca,e,t)}function Ch(e,t){return fn(ua,e,t)}function Nh(e,t){return e.clone({...e._zod.def,catchall:t})}var ia=d("ZodMiniUnion",(e,t)=>{ft.init(e,t),S.init(e,t)});function iu(e,t){return new ia({type:"union",options:e,...g(t)})}var au=d("ZodMiniXor",(e,t)=>{ia.init(e,t),os.init(e,t)});function Oh(e,t){return new au({type:"union",options:e,inclusive:!1,...g(t)})}var cu=d("ZodMiniDiscriminatedUnion",(e,t)=>{ss.init(e,t),S.init(e,t)});function Lh(e,t,r){return new cu({type:"union",options:t,discriminator:e,...g(r)})}var uu=d("ZodMiniIntersection",(e,t)=>{is.init(e,t),S.init(e,t)});function Zh(e,t){return new uu({type:"intersection",left:e,right:t})}var lu=d("ZodMiniTuple",(e,t)=>{lr.init(e,t),S.init(e,t)});function pu(e,t,r){let n=t instanceof x,o=n?r:t,s=n?t:null;return new lu({type:"tuple",items:e,rest:s,...g(o)})}var kr=d("ZodMiniRecord",(e,t)=>{as.init(e,t),S.init(e,t)});function fu(e,t,r){return new kr({type:"record",keyType:e,valueType:t,...g(r)})}function jh(e,t,r){let n=q(e);return n._zod.values=void 0,new kr({type:"record",keyType:n,valueType:t,...g(r)})}function Dh(e,t,r){return new kr({type:"record",keyType:e,valueType:t,mode:"loose",...g(r)})}var du=d("ZodMiniMap",(e,t)=>{cs.init(e,t),S.init(e,t)});function Mh(e,t,r){return new du({type:"map",keyType:e,valueType:t,...g(r)})}var mu=d("ZodMiniSet",(e,t)=>{us.init(e,t),S.init(e,t)});function Bh(e,t){return new mu({type:"set",valueType:e,...g(t)})}var aa=d("ZodMiniEnum",(e,t)=>{ls.init(e,t),S.init(e,t),e.options=Object.values(t.entries)});function hu(e,t){let r=Array.isArray(e)?Object.fromEntries(e.map(n=>[n,n])):e;return new aa({type:"enum",entries:r,...g(t)})}function Uh(e,t){return new aa({type:"enum",entries:e,...g(t)})}var gu=d("ZodMiniLiteral",(e,t)=>{ps.init(e,t),S.init(e,t)});function Fh(e,t){return new gu({type:"literal",values:Array.isArray(e)?e:[e],...g(t)})}var yu=d("ZodMiniFile",(e,t)=>{fs.init(e,t),S.init(e,t)});function Hh(e){return Wi(yu,e)}var bu=d("ZodMiniTransform",(e,t)=>{ds.init(e,t),S.init(e,t)});function qh(e){return new bu({type:"transform",transform:e})}var ca=d("ZodMiniOptional",(e,t)=>{pr.init(e,t),S.init(e,t)});function w(e){return new ca({type:"optional",innerType:e})}var _u=d("ZodMiniExactOptional",(e,t)=>{ms.init(e,t),S.init(e,t)});function Jh(e){return new _u({type:"optional",innerType:e})}var wu=d("ZodMiniNullable",(e,t)=>{hs.init(e,t),S.init(e,t)});function Sr(e){return new wu({type:"nullable",innerType:e})}function Kh(e){return w(Sr(e))}var $u=d("ZodMiniDefault",(e,t)=>{gs.init(e,t),S.init(e,t)});function Yh(e,t){return new $u({type:"default",innerType:e,get defaultValue(){return typeof t=="function"?t():je(t)}})}var xu=d("ZodMiniPrefault",(e,t)=>{ys.init(e,t),S.init(e,t)});function Gh(e,t){return new xu({type:"prefault",innerType:e,get defaultValue(){return typeof t=="function"?t():je(t)}})}var ua=d("ZodMiniNonOptional",(e,t)=>{bs.init(e,t),S.init(e,t)});function Wh(e,t){return new ua({type:"nonoptional",innerType:e,...g(t)})}var ku=d("ZodMiniSuccess",(e,t)=>{_s.init(e,t),S.init(e,t)});function Vh(e){return new ku({type:"success",innerType:e})}var Su=d("ZodMiniCatch",(e,t)=>{ws.init(e,t),S.init(e,t)});function Qh(e,t){return new Su({type:"catch",innerType:e,catchValue:typeof t=="function"?t:()=>t})}var vu=d("ZodMiniNaN",(e,t)=>{$s.init(e,t),S.init(e,t)});function Xh(e){return Ii(vu,e)}var la=d("ZodMiniPipe",(e,t)=>{xs.init(e,t),S.init(e,t)});function eg(e,t){return new la({type:"pipe",in:e,out:t})}var pa=d("ZodMiniCodec",(e,t)=>{la.init(e,t),dt.init(e,t)});function tg(e,t,r){return new pa({type:"pipe",in:e,out:t,transform:r.decode,reverseTransform:r.encode})}var zu=d("ZodMiniReadonly",(e,t)=>{ks.init(e,t),S.init(e,t)});function rg(e){return new zu({type:"readonly",innerType:e})}var Tu=d("ZodMiniTemplateLiteral",(e,t)=>{Ss.init(e,t),S.init(e,t)});function ng(e,t){return new Tu({type:"template_literal",parts:e,...g(t)})}var Iu=d("ZodMiniLazy",(e,t)=>{Ts.init(e,t),S.init(e,t)});function Pu(e){return new Iu({type:"lazy",getter:e})}var Au=d("ZodMiniPromise",(e,t)=>{zs.init(e,t),S.init(e,t)});function og(e){return new Au({type:"promise",innerType:e})}var fa=d("ZodMiniCustom",(e,t)=>{Is.init(e,t),S.init(e,t)});function sg(e,t){let r=new A({check:"custom",...g(t)});return r._zod.check=e,r}function Eu(e,t){return Vi(fa,e??(()=>!0),t)}function ig(e,t={}){return Qi(fa,e,t)}function ag(e){return Xi(e)}var cg=ea,ug=ta;function lg(e,t={}){let r=Eu(n=>n instanceof e,t);return r._zod.bag.Class=e,r._zod.check=n=>{n.value instanceof e||n.issues.push({code:"invalid_type",expected:e.name,input:n.value,inst:r,path:[...r._zod.def.path??[]]})},r}var pg=(...e)=>ra({Codec:pa,Boolean:xt,String:He},...e);function fg(){let e=Pu(()=>iu([_(),xe(),Je(),Xc(),K(e),fu(_(),e)]));return e}var Ru=d("ZodMiniFunction",(e,t)=>{vs.init(e,t),S.init(e,t)});function dg(e){return new Ru({type:"function",input:Array.isArray(e?.input)?pu(e?.input):e?.input??K(wr()),output:e?.output??wr()})}var da={};ve(da,{ZodMiniISODate:()=>zr,ZodMiniISODateTime:()=>vr,ZodMiniISODuration:()=>Ir,ZodMiniISOTime:()=>Tr,date:()=>hg,datetime:()=>mg,duration:()=>yg,time:()=>gg});var vr=d("ZodMiniISODateTime",(e,t)=>{Ro.init(e,t),E.init(e,t)});function mg(e){return ri(vr,e)}var zr=d("ZodMiniISODate",(e,t)=>{Co.init(e,t),E.init(e,t)});function hg(e){return ni(zr,e)}var Tr=d("ZodMiniISOTime",(e,t)=>{No.init(e,t),E.init(e,t)});function gg(e){return oi(Tr,e)}var Ir=d("ZodMiniISODuration",(e,t)=>{Oo.init(e,t),E.init(e,t)});function yg(e){return si(Ir,e)}var ma={};ve(ma,{bigint:()=>$g,boolean:()=>wg,date:()=>xg,number:()=>_g,string:()=>bg});function bg(e){return Rs(He,e)}function _g(e){return ai($t,e)}function wg(e){return mi(xt,e)}function $g(e){return gi(kt,e)}function xg(e){return Ti($r,e)}var X=_().check(yt(1)),kg=_().check(bt(/^https?:\/\/.+/)),Ke=I({CLANCY_BASE_BRANCH:w(_()),CLANCY_LABEL:w(_()),CLANCY_MODEL:w(_()),CLANCY_NOTIFY_WEBHOOK:w(_()),CLANCY_STATUS_IN_PROGRESS:w(_()),CLANCY_STATUS_DONE:w(_()),CLANCY_STATUS_REVIEW:w(_()),MAX_ITERATIONS:w(_()),PLAYWRIGHT_ENABLED:w(_()),PLAYWRIGHT_DEV_PORT:w(_()),CLANCY_ROLES:w(_()),CLANCY_PLAN_STATUS:w(_()),CLANCY_PLAN_LABEL:w(_()),CLANCY_PLAN_STATE_TYPE:w(_()),CLANCY_STATUS_PLANNED:w(_()),CLANCY_SKIP_COMMENTS:w(_()),GITHUB_TOKEN:w(_()),GITLAB_TOKEN:w(_()),BITBUCKET_USER:w(_()),BITBUCKET_TOKEN:w(_()),CLANCY_GIT_PLATFORM:w(_()),CLANCY_GIT_API_URL:w(_()),CLANCY_MAX_REWORK:w(_()),CLANCY_TDD:w(_()),CLANCY_MODE:w(_()),CLANCY_BRIEF_ISSUE_TYPE:w(_()),CLANCY_BRIEF_EPIC:w(_()),CLANCY_COMPONENT:w(_()),CLANCY_FIX_RETRIES:w(_()),CLANCY_VERIFY_COMMANDS:w(_()),CLANCY_TOKEN_RATE:w(_()),CLANCY_TIME_LIMIT:w(_()),CLANCY_BRANCH_GUARD:w(_()),CLANCY_LABEL_BRIEF:w(_()),CLANCY_LABEL_PLAN:w(_()),CLANCY_LABEL_BUILD:w(_())}),Nu=ke(Ke,{JIRA_BASE_URL:kg,JIRA_USER:X,JIRA_API_TOKEN:X,JIRA_PROJECT_KEY:X,CLANCY_JQL_STATUS:w(_()),CLANCY_JQL_SPRINT:w(_())}),Ou=ke(Ke,{GITHUB_TOKEN:X,GITHUB_REPO:X}),Lu=ke(Ke,{LINEAR_API_KEY:X,LINEAR_TEAM_ID:X}),Zu=ke(Ke,{SHORTCUT_API_TOKEN:X,SHORTCUT_WORKFLOW:w(_())}),ju=ke(Ke,{NOTION_TOKEN:X,NOTION_DATABASE_ID:X,CLANCY_NOTION_STATUS:w(_()),CLANCY_NOTION_ASSIGNEE:w(_()),CLANCY_NOTION_LABELS:w(_()),CLANCY_NOTION_PARENT:w(_())}),Du=ke(Ke,{AZDO_ORG:X,AZDO_PROJECT:X,AZDO_PAT:X,CLANCY_AZDO_STATUS:w(_()),CLANCY_AZDO_WIT:w(_())});function Pr(e){if(e.JIRA_BASE_URL){let t=Nu.safeParse(e);return t.success?{provider:"jira",env:t.data}:`\u2717 Jira env validation failed: ${t.error.message}`}if(e.GITHUB_TOKEN&&e.GITHUB_REPO){let t=Ou.safeParse(e);return t.success?{provider:"github",env:t.data}:`\u2717 GitHub env validation failed: ${t.error.message}`}if(e.LINEAR_API_KEY){let t=Lu.safeParse(e);return t.success?{provider:"linear",env:t.data}:`\u2717 Linear env validation failed: ${t.error.message}`}if(e.SHORTCUT_API_TOKEN){let t=Zu.safeParse(e);return t.success?{provider:"shortcut",env:t.data}:`\u2717 Shortcut env validation failed: ${t.error.message}`}if(e.NOTION_DATABASE_ID){let t=ju.safeParse(e);return t.success?{provider:"notion",env:t.data}:`\u2717 Notion env validation failed: ${t.error.message}`}if(e.AZDO_ORG){let t=Du.safeParse(e);return t.success?{provider:"azdo",env:t.data}:`\u2717 Azure DevOps env validation failed: ${t.error.message}`}return"\u2717 No board detected \u2014 set Jira, GitHub, Linear, Shortcut, Notion, or Azure DevOps credentials in .clancy/.env"}function Z(e){return e.env}import{appendFileSync as Mu,mkdirSync as Sg,readFileSync as vg}from"node:fs";import{dirname as zg,join as Bu}from"node:path";function Tg(e){let t=e.getUTCFullYear(),r=String(e.getUTCMonth()+1).padStart(2,"0"),n=String(e.getUTCDate()).padStart(2,"0"),o=String(e.getUTCHours()).padStart(2,"0"),s=String(e.getUTCMinutes()).padStart(2,"0");return`${t}-${r}-${n} ${o}:${s}`}function R(e,t,r,n,o,s){let i=Bu(e,".clancy","progress.txt");Sg(zg(i),{recursive:!0});let a=Tg(new Date);if(n==="BRIEF"||n==="APPROVE_BRIEF"){let f=`${a} | ${n} | ${t} | ${r}
42
- `;Mu(i,f,"utf8");return}let u=o!=null?` | pr:${o}`:"",l=s?` | parent:${s}`:"",p=`${a} | ${t} | ${r} | ${n}${u}${l}
43
- `;Mu(i,p,"utf8")}function Uu(e){let t=Bu(e,".clancy","progress.txt"),r;try{r=vg(t,"utf8")}catch{return[]}let n=[];for(let o of r.split(`
44
- `)){let s=o.trim();if(!s)continue;let i=s.split(" | ");if(i.length<4)continue;let a=i[0];if(i[1]==="BRIEF"||i[1]==="APPROVE_BRIEF"){n.push({timestamp:a,key:i[2],summary:i.slice(3).join(" | "),status:i[1]});continue}let u=i[1],l,p,f,m=[];for(let h=2;h<i.length;h++){let b=i[h],y=b.match(/^pr:(\d+)$/),z=b.match(/^parent:(.+)$/);y?p=parseInt(y[1],10):z?f=z[1]:h>=3&&!l&&b===b.toUpperCase()&&b.length>1?l=b:m.push(b)}l&&(l==="APPROVE"&&(l="APPROVE_PLAN"),n.push({timestamp:a,key:u,summary:m.join(" | "),status:l,...p!=null&&{prNumber:p},...f!=null&&{parent:f}}))}return n}function Fu(e,t){let r=Uu(e),n=t.toLowerCase(),o=0;for(let s of r)s.key.toLowerCase()===n&&s.status==="REWORK"&&o++;return o}function j(e,t){let r=Uu(e),n=new Map;for(let o of r)n.set(o.key,o);return[...n.values()].filter(o=>o.status===t)}function Ig(e){return e.startsWith("epic/")||e.startsWith("milestone/")}function Ye(e,t,r,n,o){let s=[],i=r?Ig(r):!1;switch(e.provider){case"github":s.push(i?`Part of ${t.key}`:`Closes ${t.key}`),o&&!i&&s.push(`Closes ${o}`);break;case"jira":s.push(`**Jira:** [${t.key}](${e.env.JIRA_BASE_URL}/browse/${t.key})`);break;case"linear":s.push(`**Linear:** ${t.key}`);break}return s.push(""),t.description&&(s.push("## Description"),s.push(""),s.push(t.description),s.push("")),n&&(s.push("## \u26A0 Verification Warning"),s.push(""),s.push(n),s.push(""),s.push("This PR may need manual fixes before merging."),s.push("")),s.push("---"),s.push("*Created by [Clancy](https://github.com/Pushedskydiver/clancy)*"),s.push(""),s.push("---"),s.push("<details>"),s.push("<summary><strong>Rework instructions</strong> (click to expand)</summary>"),s.push(""),s.push("To request changes:"),s.push("- **Code comments** \u2014 leave inline comments on specific lines. These are always picked up automatically."),s.push("- **General feedback** \u2014 reply with a comment starting with `Rework:` followed by what needs fixing. Comments without the `Rework:` prefix are treated as discussion."),s.push(""),s.push("Example: `Rework: The form validation doesn't handle empty passwords`"),s.push(""),s.push("</details>"),s.join(`
45
- `)}function Hu(e,t,r,n){let o=[];o.push(`## ${e} \u2014 ${t}`),o.push(""),o.push("### Children"),o.push("");for(let s of r){let i=s.prNumber?` (#${s.prNumber})`:"";o.push(`- ${s.key} \u2014 ${s.summary}${i}`)}if(n==="github"){o.push(""),o.push("### Closes"),o.push("");let s=r.map(i=>i.key).filter(i=>i.startsWith("#"));e.startsWith("#")&&s.unshift(e),s.length>0&&o.push(s.map(i=>`Closes ${i}`).join(", "))}return o.push(""),o.push("---"),o.push("*Created by [Clancy](https://github.com/Pushedskydiver/clancy)*"),o.join(`
46
- `)}import{execFileSync as Pg}from"node:child_process";function qu(e){let t=e.trim().replace(/\.git$/,""),r=t.match(/^git@([^:]+):(.+)$/),n=t.match(/^(?:https?|ssh):\/\/(?:[^@]+@)?([^/:]+)(?::\d+)?\/(.+)$/),o=r?.[1]??n?.[1],s=r?.[2]??n?.[2];if(!(!o||!s))return{hostname:o,path:s}}function Ag(e){let t=qu(e);if(!t)return{host:"unknown",url:e};let{hostname:r,path:n}=t;switch(Eg(r)){case"github":{let s=n.split("/");return s.length>=2?{host:"github",owner:s[0],repo:s[1],hostname:r}:{host:"unknown",url:e}}case"gitlab":return{host:"gitlab",projectPath:n,hostname:r};case"bitbucket":{let s=n.match(/^scm\/([^/]+)\/(.+)$/);if(s)return{host:"bitbucket-server",projectKey:s[1],repoSlug:s[2],hostname:r};let i=n.split("/");return i.length>=2?{host:"bitbucket",workspace:i[0],repoSlug:i[1],hostname:r}:{host:"unknown",url:e}}case"azure":return{host:"azure",url:e};default:return{host:"unknown",url:e}}}function Eg(e){let t=e.toLowerCase();return t==="github.com"||t.includes("github")?"github":t==="gitlab.com"||t.includes("gitlab")?"gitlab":t==="bitbucket.org"||t.includes("bitbucket")?"bitbucket":t.includes("dev.azure")||t.includes("visualstudio")?"azure":"unknown"}function ce(e){let t;try{t=Pg("git",["remote","get-url","origin"],{encoding:"utf8"}).trim()}catch{return{host:"none"}}return t?e?Rg(t,e):Ag(t):{host:"none"}}function Rg(e,t){let r=qu(e);if(!r)return{host:"unknown",url:e};let{hostname:n,path:o}=r;switch(t.toLowerCase()){case"github":{let s=o.split("/");return s.length>=2?{host:"github",owner:s[0],repo:s[1],hostname:n}:{host:"unknown",url:e}}case"gitlab":return{host:"gitlab",projectPath:o,hostname:n};case"bitbucket":{let s=o.split("/");return s.length>=2?{host:"bitbucket",workspace:s[0],repoSlug:s[1],hostname:n}:{host:"unknown",url:e}}case"bitbucket-server":{let s=o.match(/^scm\/([^/]+)\/(.+)$/);if(s)return{host:"bitbucket-server",projectKey:s[1],repoSlug:s[2],hostname:n};let i=o.split("/");return i.length>=2?{host:"bitbucket-server",projectKey:i[0],repoSlug:i[1],hostname:n}:{host:"unknown",url:e}}default:return{host:"unknown",url:e}}}function St(e,t){if(t)return t.replace(/\/$/,"");switch(e.host){case"github":return e.hostname==="github.com"?"https://api.github.com":`https://${e.hostname}/api/v3`;case"gitlab":return`https://${e.hostname}/api/v4`;case"bitbucket":return"https://api.bitbucket.org/2.0";case"bitbucket-server":return`https://${e.hostname}/rest/api/1.0`;default:return}}var Cg=I({id:xe(),links:I({html:w(I({href:w(_())}))}),participants:K(I({state:w(_()),role:_()}))}),Ju=I({values:K(Cg)}),Ng=I({content:I({raw:_()}),inline:w(I({path:w(_())})),created_on:_(),user:w(I({nickname:w(_())}))}),ga=I({values:K(Ng)}),Og=I({id:xe(),links:I({self:w(K(I({href:w(_())})))}),reviewers:K(I({status:_()}))}),Ku=I({values:K(Og)}),Lg=I({text:_(),anchor:w(I({path:w(_())})),createdDate:xe(),author:w(I({slug:w(_())}))}),Zg=I({action:_(),comment:w(Lg)}),ya=I({values:K(Zg)});async function Ae(e,t,r,n,o){let s=new AbortController,i=setTimeout(()=>s.abort(),3e4);try{let a=await fetch(e,{method:"POST",headers:{...t,"Content-Type":"application/json"},body:JSON.stringify(r),signal:s.signal});if(!a.ok){let p=await a.text().catch(()=>""),f=o?.(a.status,p)??!1;return{ok:!1,error:`HTTP ${a.status}${p?`: ${p.slice(0,200)}`:""}`,alreadyExists:f}}let u=await a.json(),l=n(u);return!l.url&&!l.number?{ok:!1,error:"PR created but response missing URL and number"}:{ok:!0,url:l.url,number:l.number}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}finally{clearTimeout(i)}}function Ge(e,t){return`Basic ${Buffer.from(`${e}:${t}`).toString("base64")}`}function ie(e){return e.trim().toLowerCase().startsWith("rework:")}function Ee(e){return e.trim().replace(/^rework:\s*/i,"").trim()}async function Yu(e,t,r,n,o,s,i,a){return Ae(`https://api.bitbucket.org/2.0/repositories/${r}/${n}/pullrequests`,{Authorization:Ge(e,t)},{title:i,description:a,source:{branch:{name:o}},destination:{branch:{name:s}},close_source_branch:!0},u=>{let l=u;return{url:l.links?.html?.href??"",number:l.id??0}},(u,l)=>u===409&&l.includes("already exists"))}async function Gu(e,t,r,n,o,s,i,a){return Ae(`${t}/projects/${r}/repos/${n}/pull-requests`,{Authorization:`Bearer ${e}`},{title:i,description:a,fromRef:{id:`refs/heads/${o}`,repository:{slug:n,project:{key:r}}},toRef:{id:`refs/heads/${s}`,repository:{slug:n,project:{key:r}}}},u=>{let l=u;return{url:l.links?.self?.[0]?.href??"",number:l.id??0}},(u,l)=>u===409&&(l.includes("already exists")||l.includes("Only one pull request")))}async function Wu(e,t,r,n,o,s){try{return(await fetch(`https://api.bitbucket.org/2.0/repositories/${r}/${n}/pullrequests/${o}/comments`,{method:"POST",headers:{Authorization:Ge(e,t),"Content-Type":"application/json"},body:JSON.stringify({content:{raw:s}})})).ok}catch{return!1}}async function Vu(e,t,r,n,o,s){try{return(await fetch(`${t}/projects/${r}/repos/${n}/pull-requests/${o}/comments`,{method:"POST",headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json"},body:JSON.stringify({text:s})})).ok}catch{return!1}}async function Qu(e,t,r,n,o,s){try{let i=`https://api.bitbucket.org/2.0/repositories/${r}/${n}/pullrequests?q=source.branch.name="${o}"&state=OPEN`,a=await fetch(i,{headers:{Authorization:Ge(e,t)}});if(!a.ok)return;let u=Ju.parse(await a.json());if(u.values.length===0)return;let l=u.values[0],p=l.links.html?.href??"",f=`https://api.bitbucket.org/2.0/repositories/${r}/${n}/pullrequests/${l.id}/comments?pagelen=100`,m=await fetch(f,{headers:{Authorization:Ge(e,t)}});if(!m.ok)return;let h=ga.parse(await m.json()),b=s?h.values.filter(Y=>Y.created_on>s):h.values,y=b.some(Y=>Y.inline!=null),z=b.some(Y=>Y.inline==null&&ie(Y.content.raw));return{changesRequested:y||z,prNumber:l.id,prUrl:p}}catch{return}}async function Xu(e,t,r,n,o,s){try{let i=`https://api.bitbucket.org/2.0/repositories/${r}/${n}/pullrequests/${o}/comments?pagelen=100`,a=await fetch(i,{headers:{Authorization:Ge(e,t)}});if(!a.ok)return[];let u=ga.parse(await a.json()),l=s?u.values.filter(f=>f.created_on>s):u.values,p=[];for(let f of l)if(f.inline!=null){let m=f.inline.path?`[${f.inline.path}] `:"";p.push(`${m}${f.content.raw}`)}else ie(f.content.raw)&&p.push(Ee(f.content.raw));return p}catch{return[]}}async function el(e,t,r,n,o,s){try{let i=`${t}/projects/${r}/repos/${n}/pull-requests?state=OPEN&at=refs/heads/${o}`,a=await fetch(i,{headers:{Authorization:`Bearer ${e}`}});if(!a.ok)return;let u=Ku.parse(await a.json());if(u.values.length===0)return;let l=u.values[0],p=l.links.self?.[0]?.href??"",f=`${t}/projects/${r}/repos/${n}/pull-requests/${l.id}/activities?limit=100`,m=await fetch(f,{headers:{Authorization:`Bearer ${e}`}});if(!m.ok)return;let h=ya.parse(await m.json()),b=s?Date.parse(s):void 0,y=h.values.filter(C=>C.action==="COMMENTED"&&C.comment&&(b==null||C.comment.createdDate>b)),z=y.some(C=>C.comment.anchor!=null),H=y.some(C=>C.comment.anchor==null&&ie(C.comment.text));return{changesRequested:z||H,prNumber:l.id,prUrl:p}}catch{return}}async function tl(e,t,r,n,o,s){try{let i=`${t}/projects/${r}/repos/${n}/pull-requests/${o}/activities?limit=100`,a=await fetch(i,{headers:{Authorization:`Bearer ${e}`}});if(!a.ok)return[];let u=ya.parse(await a.json()),l=s?Date.parse(s):void 0,p=[];for(let f of u.values){if(f.action!=="COMMENTED"||!f.comment||l!=null&&f.comment.createdDate<=l)continue;let m=f.comment;if(m.anchor!=null){let h=m.anchor.path?`[${m.anchor.path}] `:"";p.push(`${h}${m.text}`)}else ie(m.text)&&p.push(Ee(m.text))}return p}catch{return[]}}var jg=c.object({number:c.number(),title:c.string(),body:c.optional(c.nullable(c.string())),pull_request:c.optional(c.unknown()),milestone:c.optional(c.nullable(c.object({title:c.string()}))),labels:c.optional(c.array(c.object({name:c.optional(c.string())})))}),rl=c.array(jg),Dg=c.object({id:c.number(),body:c.optional(c.nullable(c.string())),created_at:c.string(),user:c.optional(c.object({login:c.string()}))}),ba=c.array(Dg),Mg=c.object({number:c.number(),html_url:c.string(),state:c.string()}),nl=c.array(Mg),Bg=c.object({state:c.string(),user:c.object({login:c.string()}),submitted_at:c.string()}),ol=c.array(Bg),Ug=c.object({body:c.optional(c.nullable(c.string())),path:c.optional(c.string()),created_at:c.optional(c.string()),user:c.optional(c.object({login:c.string()}))}),_a=c.array(Ug);var D="https://api.github.com";async function Ar(e,t,r,n){try{let o=new AbortController,s=setTimeout(()=>o.abort(),1e4),i=await fetch(e,{headers:t,signal:o.signal});if(clearTimeout(s),i.ok)return{ok:!0};let a=r[i.status];return a?{ok:!1,error:a}:{ok:!1,error:`\u2717 HTTP ${i.status}`}}catch{return{ok:!1,error:n}}}function U(e){return{Authorization:`Bearer ${e}`,Accept:"application/vnd.github+json","X-GitHub-Api-Version":"2022-11-28"}}function Se(e){return{Authorization:`Basic ${e}`,Accept:"application/json"}}function Er(e){return e?.trimStart().startsWith("[clancy]")??!1}async function sl(e,t,r,n,o=D,s){try{let i=U(e),a=await fetch(`${o}/repos/${t}/pulls?head=${n}:${r}&state=open`,{headers:i});if(!a.ok)return;let u=nl.parse(await a.json());if(u.length===0)return;let l=u[0],p=s?`&since=${s}`:"",[f,m]=await Promise.all([fetch(`${o}/repos/${t}/pulls/${l.number}/comments?per_page=100${p}`,{headers:i}),fetch(`${o}/repos/${t}/issues/${l.number}/comments?per_page=100${p}`,{headers:i})]);if(!f.ok||!m.ok)return;let h=_a.parse(await f.json()),b=ba.parse(await m.json()),y=h.filter(O=>!Er(O.body)),z=b.filter(O=>!Er(O.body)),H=y.length>0,Y=z.some(O=>O.body&&ie(O.body)),C=H||Y,M;if(!C)try{let O=await fetch(`${o}/repos/${t}/pulls/${l.number}/reviews?per_page=100`,{headers:i});if(O.ok){let Da=ol.parse(await O.json()),jt=new Map;for(let le of Da)le.state==="PENDING"||le.state==="DISMISSED"||jt.set(le.user.login,le.state);let Ma=[...jt.entries()].filter(([,le])=>le==="CHANGES_REQUESTED");Ma.length>0&&(C=!0,M=Ma.map(([le])=>le))}}catch{}return{changesRequested:C,prNumber:l.number,prUrl:l.html_url,reviewers:M}}catch{return}}async function il(e,t,r,n=D,o){try{let s=U(e),i=o?`&since=${o}`:"",[a,u]=await Promise.all([fetch(`${n}/repos/${t}/pulls/${r}/comments?per_page=100${i}`,{headers:s}),fetch(`${n}/repos/${t}/issues/${r}/comments?per_page=100${i}`,{headers:s})]);if(!a.ok||!u.ok)return[];let l=_a.parse(await a.json()),p=ba.parse(await u.json()),f=l.filter(b=>!Er(b.body)),m=p.filter(b=>!Er(b.body)),h=[];for(let b of f){if(!b.body)continue;let y=b.path?`[${b.path}] `:"";h.push(`${y}${b.body}`)}for(let b of m)b.body&&ie(b.body)&&h.push(Ee(b.body));return h}catch{return[]}}async function al(e,t,r,n,o=D){try{return(await fetch(`${o}/repos/${t}/issues/${r}/comments`,{method:"POST",headers:{...U(e),"Content-Type":"application/json"},body:JSON.stringify({body:n})})).ok}catch{return!1}}async function cl(e,t,r,n,o=D){try{return(await fetch(`${o}/repos/${t}/pulls/${r}/requested_reviewers`,{method:"POST",headers:{...U(e),"Content-Type":"application/json"},body:JSON.stringify({reviewers:n})})).ok}catch{return!1}}async function ul(e,t,r,n,o,s,i=D){return Ae(`${i}/repos/${t}/pulls`,U(e),{title:o,head:r,base:n,body:s},a=>{let u=a;return{url:u.html_url??"",number:u.number??0}},(a,u)=>a===422&&u.includes("already exists"))}var Fg=I({iid:xe(),web_url:_(),detailed_merge_status:w(_())}),ll=K(Fg),Hg=I({body:_(),resolvable:Je(),resolved:w(Je()),system:Je(),type:w(Sr(_())),created_at:w(_()),position:w(I({new_path:w(_())})),author:w(I({username:_()}))}),qg=I({id:w(_()),notes:K(Hg)}),wa=K(qg);async function pl(e,t,r,n,o,s,i){let a=encodeURIComponent(r);return Ae(`${t}/projects/${a}/merge_requests`,{"PRIVATE-TOKEN":e},{source_branch:n,target_branch:o,title:s,description:i,remove_source_branch:!0},u=>{let l=u;return{url:l.web_url??"",number:l.iid??0}},(u,l)=>u===409&&l.includes("already exists"))}async function fl(e,t,r,n,o){try{let s=encodeURIComponent(r);return(await fetch(`${t}/projects/${s}/merge_requests/${n}/notes`,{method:"POST",headers:{"PRIVATE-TOKEN":e,"Content-Type":"application/json"},body:JSON.stringify({body:o})})).ok}catch{return!1}}async function dl(e,t,r,n,o){let s=encodeURIComponent(r),i=0;for(let a of o)try{(await fetch(`${t}/projects/${s}/merge_requests/${n}/discussions/${a}`,{method:"PUT",headers:{"PRIVATE-TOKEN":e,"Content-Type":"application/json"},body:JSON.stringify({resolved:!0})})).ok&&i++}catch{}return i}async function ml(e,t,r,n,o){try{let s=encodeURIComponent(r),i=`${t}/projects/${s}/merge_requests?source_branch=${n}&state=opened`,a=await fetch(i,{headers:{"PRIVATE-TOKEN":e}});if(!a.ok)return;let u=ll.parse(await a.json());if(u.length===0)return;let l=u[0],p=`${t}/projects/${s}/merge_requests/${l.iid}/discussions?per_page=100`,f=await fetch(p,{headers:{"PRIVATE-TOKEN":e}});if(!f.ok)return;let m=wa.parse(await f.json()),h=!1;for(let b of m){for(let y of b.notes)if(!y.system&&!(o&&y.created_at&&y.created_at<=o)){if(y.type==="DiffNote"&&y.resolvable!==!1&&y.resolved!==!0){h=!0;break}if(ie(y.body)){h=!0;break}}if(h)break}return{changesRequested:h,prNumber:l.iid,prUrl:l.web_url}}catch{return}}async function hl(e,t,r,n,o){try{let s=encodeURIComponent(r),i=`${t}/projects/${s}/merge_requests/${n}/discussions?per_page=100`,a=await fetch(i,{headers:{"PRIVATE-TOKEN":e}});if(!a.ok)return{comments:[],discussionIds:[]};let u=wa.parse(await a.json()),l=[],p=[];for(let f of u){let m=!1;for(let h of f.notes)if(!h.system&&!(o&&h.created_at&&h.created_at<=o))if(h.type==="DiffNote"&&h.resolvable!==!1&&h.resolved!==!0){let b=h.position?.new_path?`[${h.position.new_path}] `:"";l.push(`${b}${h.body}`),m=!0}else ie(h.body)&&(l.push(Ee(h.body)),m=!0);m&&f.id&&p.push(f.id)}return{comments:l,discussionIds:p}}catch{return{comments:[],discussionIds:[]}}}function vt(e,t){let r=Z(e);switch(t.host){case"github":if(r.GITHUB_TOKEN)return{token:r.GITHUB_TOKEN};break;case"gitlab":if(r.GITLAB_TOKEN)return{token:r.GITLAB_TOKEN};break;case"bitbucket":if(r.BITBUCKET_USER&&r.BITBUCKET_TOKEN)return{token:r.BITBUCKET_TOKEN,username:r.BITBUCKET_USER};break;case"bitbucket-server":if(r.BITBUCKET_TOKEN)return{token:r.BITBUCKET_TOKEN};break}}async function Re(e,t,r,n,o,s){let i=vt(e,t);if(!i)return;let a=St(t,Z(e).CLANCY_GIT_API_URL);if(a)switch(t.host){case"github":return ul(i.token,`${t.owner}/${t.repo}`,r,n,o,s,a);case"gitlab":return pl(i.token,a,t.projectPath,r,n,o,s);case"bitbucket":return Yu(i.username,i.token,t.workspace,t.repoSlug,r,n,o,s);case"bitbucket-server":return Gu(i.token,a,t.projectKey,t.repoSlug,r,n,o,s);default:return}}function Rr(e,t,r){let n=encodeURIComponent(t),o=encodeURIComponent(r);if(e.host==="github")return`https://${e.hostname}/${e.owner}/${e.repo}/compare/${o}...${n}`;if(e.host==="gitlab")return`https://${e.hostname}/${e.projectPath}/-/merge_requests/new?merge_request[source_branch]=${n}&merge_request[target_branch]=${o}`;if(e.host==="bitbucket")return`https://${e.hostname}/${e.workspace}/${e.repoSlug}/pull-requests/new?source=${n}&dest=${o}`;if(e.host==="bitbucket-server")return`https://${e.hostname}/projects/${e.projectKey}/repos/${e.repoSlug}/pull-requests?create&sourceBranch=refs/heads/${n}&targetBranch=refs/heads/${o}`}function $a(e,t){let r=Ua(e),n=Xe(e);if(r)return Mt(e)?!0:(console.log(v(`\u26A0 Epic branch ${e} exists on remote but could not be fetched.`)),!1);if(n)return console.log(Oe(`\u2717 Epic branch ${e} exists locally but not on remote.`)),console.log(v(" This may contain work from a previous Clancy version that squash-merged locally.")),console.log($(" To preserve this work, push it manually:")),console.log($(` git push -u origin ${e}`)),console.log($(" Then re-run /clancy:once to continue.")),!1;try{if(gl("git",["fetch","origin",t],{encoding:"utf8",stdio:["pipe","pipe","pipe"],timeout:15e3}),gl("git",["checkout","-b",e,`origin/${t}`],{encoding:"utf8"}),et(e))console.log(N(` \u2713 Created epic branch ${e}`));else return console.log(v(`\u26A0 Created ${e} locally but could not push to origin.`)),!1;return!0}catch(o){return console.log(Oe(`\u2717 Could not create epic branch: ${o instanceof Error?o.message:String(o)}`)),!1}}async function xa(e,t,r,n,o,s=!1,i,a,u){if(!et(r)){console.log(v(`\u26A0 Could not push ${r} to origin.`)),console.log($(" The branch is still available locally. Push manually:")),console.log($(` git push -u origin ${r}`)),s||R(process.cwd(),t.key,t.title,"PUSH_FAILED",void 0,i),L(n);let y=Ce(Date.now()-o);return console.log(""),console.log(v(`\u26A0 ${t.key} implemented but push failed`)+$(` (${y})`)),!1}console.log(N(` \u2713 Pushed ${r}`));let p;try{let y=Kg(process.cwd(),".clancy","verify-attempt.txt"),z=Jg(y,"utf8").trim(),H=parseInt(z,10);H>0&&(p=`Verification checks did not fully pass (${H} attempt(s)). Review carefully.`)}catch{}let f=Z(e).CLANCY_GIT_PLATFORM,m=ce(f),h=`feat(${t.key}): ${t.title}`,b=Ye(e,{key:t.key,title:t.title,description:t.description,provider:e.provider},n,p,u);if(m.host!=="none"&&m.host!=="unknown"&&m.host!=="azure"){let y=await Re(e,m,r,n,h,b);if(y?.ok)console.log(N(` \u2713 PR created: ${y.url}`)),s||R(process.cwd(),t.key,t.title,"PR_CREATED",y.number,i);else if(y&&!y.ok&&y.alreadyExists)console.log(v(` \u26A0 A PR/MR already exists for ${r}. Branch pushed.`)),s||R(process.cwd(),t.key,t.title,"PUSHED",void 0,i);else if(y&&!y.ok){console.log(v(` \u26A0 PR/MR creation failed: ${y.error}`));let z=Rr(m,r,n);console.log(z?$(` Create one manually: ${z}`):$(" Branch pushed \u2014 create a PR/MR manually.")),s||R(process.cwd(),t.key,t.title,"PUSHED",void 0,i)}else{let z=Rr(m,r,n);console.log(z?$(` Create a PR: ${z}`):$(" Branch pushed to remote. Create a PR/MR manually.")),s||R(process.cwd(),t.key,t.title,"PUSHED",void 0,i)}}else m.host==="none"?(console.log(v(`\u26A0 No git remote configured. Branch available locally: ${r}`)),s||R(process.cwd(),t.key,t.title,"LOCAL",void 0,i)):(console.log($(" Branch pushed to remote. Create a PR/MR manually.")),s||R(process.cwd(),t.key,t.title,"PUSHED",void 0,i));if(e.provider!=="github"&&a){let y=e.env.CLANCY_STATUS_REVIEW??e.env.CLANCY_STATUS_DONE;y&&await a.transitionTicket(t,y)}return L(n),!0}async function yl(e,t,r,n,o,s){console.log(""),console.log(N(`\u{1F389} All children of ${t} are done!`)),console.log($(` Creating epic PR: ${n} \u2192 ${o}`));let i=j(process.cwd(),"PR_CREATED"),a=j(process.cwd(),"DONE"),u=j(process.cwd(),"REWORK"),l=j(process.cwd(),"PUSHED"),p=[...i,...a,...u,...l].filter(H=>H.parent===t),f=Z(e).CLANCY_GIT_PLATFORM,m=ce(f),h=`feat(${t}): ${r}`,b=Hu(t,r,p,e.provider);if(m.host==="none"||m.host==="unknown"||m.host==="azure")return console.log(v("\u26A0 Cannot create epic PR \u2014 no supported git remote detected.")),console.log($(` Push manually: git push origin ${n}`)),console.log($(` Then create a PR targeting ${o}`)),!1;let y=await Re(e,m,n,o,h,b);if(y?.ok){if(console.log(N(` \u2713 Epic PR created: ${y.url}`)),R(process.cwd(),t,r,"EPIC_PR_CREATED",y.number),e.provider!=="github"&&s){let H=e.env.CLANCY_STATUS_REVIEW??e.env.CLANCY_STATUS_DONE;H&&await s.transitionTicket({key:t,title:r,description:"",parentInfo:"none",blockers:"None"},H)}return!0}if(y&&!y.ok&&y.alreadyExists)return console.log(v(` \u26A0 An epic PR already exists for ${n}.`)),R(process.cwd(),t,r,"EPIC_PR_CREATED"),!0;console.log(v(`\u26A0 Epic PR creation failed: ${y?.error??"unknown error"}`)),console.log($(" Create it manually:")),console.log($(` Branch: ${n} \u2192 ${o}`));let z=Rr(m,n,o);return z&&console.log($(` ${z}`)),!1}async function bl(e){let t=e.board,r=e.ticket,n=e.ticketBranch,o=e.targetBranch,s=e.baseBranch,i=e.hasParent,a=e.isRework??!1;e.originalBranch=Ba();let u=!1;if(i&&!a){let p=await t.fetchChildrenStatus(r.parentInfo,r.linearIssueId,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(!$a(o,s))return e.originalBranch&&L(e.originalBranch),!1}else Yr(l,s);Mt(n)?L(n):(L(l),L(n,!0))}else if(i&&!u){if(!$a(o,s))return e.originalBranch&&L(e.originalBranch),!1;L(o),L(n,!0)}else Yr(s,s),L(s),L(n,!0);try{Ja(e.cwd,{pid:process.pid,ticketKey:r.key,ticketTitle:r.title,ticketBranch:n,targetBranch:l,parentKey:r.parentInfo,description:(r.description??"").slice(0,2e3),startedAt:new Date().toISOString()}),e.lockOwner=!0}catch{console.log($(" (warning: could not write lock file \u2014 crash recovery disabled)"))}return!0}function Yg(e){return e.includes("hooks.slack.com")}function Gg(e){return JSON.stringify({text:e})}function Wg(e){return JSON.stringify({type:"message",attachments:[{contentType:"application/vnd.microsoft.card.adaptive",content:{$schema:"http://adaptivecards.io/schemas/adaptive-card.json",type:"AdaptiveCard",version:"1.4",body:[{type:"TextBlock",text:e,wrap:!0}]}}]})}async function _l(e,t){let r=Yg(e)?Gg(t):Wg(t);try{let n=await fetch(e,{method:"POST",headers:{"Content-Type":"application/json"},body:r});n.ok||console.warn(`\u26A0 Notification failed: HTTP ${n.status}`)}catch{console.warn("\u26A0 Notification failed: could not reach webhook")}}async function wl(e){let t=e.config,r=e.ticket,n=Ce(Date.now()-e.startTime);console.log(""),console.log(N(`\u{1F3C1} ${r.key} complete`)+$(` (${n})`)),console.log($(` "Bake 'em away, toys."`));let o=t.env.CLANCY_NOTIFY_WEBHOOK;return o&&await _l(o,`\u2713 Clancy completed [${r.key}] ${r.title}`),!0}import{appendFileSync as Vg,mkdirSync as Qg}from"node:fs";import{dirname as Xg,join as ey}from"node:path";function $l(e,t,r,n=6600){let o=ey(e,".clancy","costs.log");Qg(Xg(o),{recursive:!0});let s=new Date(r).getTime(),i=Date.now(),a=Number.isNaN(s)?0:Math.max(0,i-s),u=Math.round(a/6e4),l=Math.round(u*n),f=`${new Date().toISOString()} | ${t} | ${u}min | ~${l} tokens (estimated)
47
- `;Vg(o,f,"utf8")}function xl(e){let t=e.config,r=e.ticket;try{let n=Ut(e.cwd);if(n){let o=Number(t.env.CLANCY_TOKEN_RATE??"6600");$l(e.cwd,r.key,n.startedAt,Number.isFinite(o)&&o>0?o:6600)}}catch{}return!0}import{mkdirSync as ty,readFileSync as ry,renameSync as ny,writeFileSync as oy}from"node:fs";import{join as kl}from"node:path";function Sl(e){return kl(e,".clancy","quality.json")}function vl(e){try{let t=ry(Sl(e),"utf8"),r=JSON.parse(t);if(r&&typeof r.tickets=="object"&&r.tickets!==null&&!Array.isArray(r.tickets))return ka(r),r}catch{}return{tickets:{},summary:{totalTickets:0,avgReworkCycles:0,avgVerificationRetries:0,avgDuration:0}}}function ka(e){let t=Object.values(e.tickets),r=t.length;if(r===0){e.summary={totalTickets:0,avgReworkCycles:0,avgVerificationRetries:0,avgDuration:0};return}let n=0,o=0,s=0,i=0;for(let a of t)n+=a.reworkCycles,o+=a.verificationRetries,a.duration!=null&&(s+=a.duration,i++);e.summary={totalTickets:r,avgReworkCycles:Math.round(n/r*100)/100,avgVerificationRetries:Math.round(o/r*100)/100,avgDuration:i>0?Math.round(s/i*100)/100:0}}function zl(e,t){let r=Sl(e),n=r+".tmp";ty(kl(e,".clancy"),{recursive:!0}),oy(n,JSON.stringify(t,null,2)+`
48
- `,"utf8"),ny(n,r)}function Tl(e,t){return e.tickets[t]||(e.tickets[t]={reworkCycles:0,verificationRetries:0}),e.tickets[t]}function Il(e,t){try{let r=vl(e),n=Tl(r,t);n.reworkCycles++,ka(r),zl(e,r)}catch{}}function Pl(e,t,r){try{let n=vl(e),o=Tl(n,t);o.deliveredAt=new Date().toISOString(),o.duration=r,ka(n),zl(e,n)}catch{}}function We(e,t){return e==="github"?`feature/issue-${t.replace("#","")}`:`feature/${t.toLowerCase()}`}function Ve(e,t,r){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 Al(e){let t=j(process.cwd(),"PR_CREATED"),r=j(process.cwd(),"REWORK"),n=j(process.cwd(),"PUSHED"),o=j(process.cwd(),"PUSH_FAILED"),s=[...t,...r,...n,...o];if(s.length===0)return;let i=Z(e).CLANCY_GIT_PLATFORM,a=ce(i);if(a.host==="none"||a.host==="unknown"||a.host==="azure")return;let u=vt(e,a);if(!u)return;let l=St(a,Z(e).CLANCY_GIT_API_URL);if(!l)return;let p=s.slice(0,5);for(let f of p){let m=We(e.provider,f.key),h;if(f.timestamp){let y=new Date(f.timestamp.replace(" ","T")+"Z");h=Number.isNaN(y.getTime())?void 0:y.toISOString()}let b;switch(a.host){case"github":b=await sl(u.token,`${a.owner}/${a.repo}`,m,a.owner,l,h);break;case"gitlab":b=await ml(u.token,l,a.projectPath,m,h);break;case"bitbucket":b=await Qu(u.username,u.token,a.workspace,a.repoSlug,m,h);break;case"bitbucket-server":b=await el(u.token,l,a.projectKey,a.repoSlug,m,h);break}if(b?.changesRequested){let y=[],z;switch(a.host){case"github":y=await il(u.token,`${a.owner}/${a.repo}`,b.prNumber,l,h);break;case"gitlab":{let Y=await hl(u.token,l,a.projectPath,b.prNumber,h);y=Y.comments,z=Y.discussionIds;break}case"bitbucket":y=await Xu(u.username,u.token,a.workspace,a.repoSlug,b.prNumber,h);break;case"bitbucket-server":y=await tl(u.token,l,a.projectKey,a.repoSlug,b.prNumber,h);break}return{ticket:{key:f.key,title:f.summary,description:f.summary,parentInfo:f.parent??"none",blockers:"None"},feedback:y,prNumber:b.prNumber,discussionIds:z,reviewers:b.reviewers??[]}}}}function sy(e){if(e.length===0)return"[clancy] Rework pushed addressing reviewer feedback.";let t=e.length,r=e.slice(0,3).map(o=>`- ${o.slice(0,80)}`).join(`
39
+ `)}h.write("payload.value = newResult;"),h.write("return payload;");let Y=h.compile();return(C,M)=>Y(m,C,M)},s,i=ze,a=!tt.jitless,l=a&&rn.value,p=t.catchall,f;e._zod.parse=(m,h)=>{f??(f=n.value);let b=m.value;return i(b)?a&&l&&h?.async===!1&&h.jitless!==!0?(s||(s=o(t.shape)),m=s(m,h),p?Pc([],b,m,h,f,e):m):r(m,h):(m.issues.push({expected:"object",code:"invalid_type",input:b,inst:e}),m)}});function gc(e,t,r,n){for(let s of e)if(s.issues.length===0)return t.value=s.value,t;let o=e.filter(s=>!he(s));return o.length===1?(t.value=o[0].value,o[0]):(t.issues.push({code:"invalid_union",input:t.value,inst:r,errors:e.map(s=>s.issues.map(i=>G(i,n,B())))}),t)}var ft=d("$ZodUnion",(e,t)=>{k.init(e,t),x(e._zod,"optin",()=>t.options.some(o=>o._zod.optin==="optional")?"optional":void 0),x(e._zod,"optout",()=>t.options.some(o=>o._zod.optout==="optional")?"optional":void 0),x(e._zod,"values",()=>{if(t.options.every(o=>o._zod.values))return new Set(t.options.flatMap(o=>Array.from(o._zod.values)))}),x(e._zod,"pattern",()=>{if(t.options.every(o=>o._zod.pattern)){let o=t.options.map(s=>s._zod.pattern);return new RegExp(`^(${o.map(s=>ot(s.source)).join("|")})$`)}});let r=t.options.length===1,n=t.options[0]._zod.run;e._zod.parse=(o,s)=>{if(r)return n(o,s);let i=!1,a=[];for(let u of t.options){let l=u._zod.run({value:o.value,issues:[]},s);if(l instanceof Promise)a.push(l),i=!0;else{if(l.issues.length===0)return l;a.push(l)}}return i?Promise.all(a).then(u=>gc(u,o,e,s)):gc(a,o,e,s)}});function yc(e,t,r,n){let o=e.filter(s=>s.issues.length===0);return o.length===1?(t.value=o[0].value,t):(o.length===0?t.issues.push({code:"invalid_union",input:t.value,inst:r,errors:e.map(s=>s.issues.map(i=>G(i,n,B())))}):t.issues.push({code:"invalid_union",input:t.value,inst:r,errors:[],inclusive:!1}),t)}var os=d("$ZodXor",(e,t)=>{ft.init(e,t),t.inclusive=!1;let r=t.options.length===1,n=t.options[0]._zod.run;e._zod.parse=(o,s)=>{if(r)return n(o,s);let i=!1,a=[];for(let u of t.options){let l=u._zod.run({value:o.value,issues:[]},s);l instanceof Promise?(a.push(l),i=!0):a.push(l)}return i?Promise.all(a).then(u=>yc(u,o,e,s)):yc(a,o,e,s)}}),ss=d("$ZodDiscriminatedUnion",(e,t)=>{t.inclusive=!1,ft.init(e,t);let r=e._zod.parse;x(e._zod,"propValues",()=>{let o={};for(let s of t.options){let i=s._zod.propValues;if(!i||Object.keys(i).length===0)throw new Error(`Invalid discriminated union option at index "${t.options.indexOf(s)}"`);for(let[a,u]of Object.entries(i)){o[a]||(o[a]=new Set);for(let l of u)o[a].add(l)}}return o});let n=Ze(()=>{let o=t.options,s=new Map;for(let i of o){let a=i._zod.propValues?.[t.discriminator];if(!a||a.size===0)throw new Error(`Invalid discriminated union option at index "${t.options.indexOf(i)}"`);for(let u of a){if(s.has(u))throw new Error(`Duplicate discriminator value "${String(u)}"`);s.set(u,i)}}return s});e._zod.parse=(o,s)=>{let i=o.value;if(!ze(i))return o.issues.push({code:"invalid_type",expected:"object",input:i,inst:e}),o;let a=n.value.get(i?.[t.discriminator]);return a?a._zod.run(o,s):t.unionFallback?r(o,s):(o.issues.push({code:"invalid_union",errors:[],note:"No matching discriminator",discriminator:t.discriminator,input:i,path:[t.discriminator],inst:e}),o)}}),is=d("$ZodIntersection",(e,t)=>{k.init(e,t),e._zod.parse=(r,n)=>{let o=r.value,s=t.left._zod.run({value:o,issues:[]},n),i=t.right._zod.run({value:o,issues:[]},n);return s instanceof Promise||i instanceof Promise?Promise.all([s,i]).then(([u,l])=>bc(r,u,l)):bc(r,s,i)}});function wo(e,t){if(e===t)return{valid:!0,data:e};if(e instanceof Date&&t instanceof Date&&+e==+t)return{valid:!0,data:e};if(me(e)&&me(t)){let r=Object.keys(t),n=Object.keys(e).filter(s=>r.indexOf(s)!==-1),o={...e,...t};for(let s of n){let i=wo(e[s],t[s]);if(!i.valid)return{valid:!1,mergeErrorPath:[s,...i.mergeErrorPath]};o[s]=i.data}return{valid:!0,data:o}}if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return{valid:!1,mergeErrorPath:[]};let r=[];for(let n=0;n<e.length;n++){let o=e[n],s=t[n],i=wo(o,s);if(!i.valid)return{valid:!1,mergeErrorPath:[n,...i.mergeErrorPath]};r.push(i.data)}return{valid:!0,data:r}}return{valid:!1,mergeErrorPath:[]}}function 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=wo(t.value,r.value);if(!i.valid)throw new Error(`Unmergable intersection. Error path: ${JSON.stringify(i.mergeErrorPath)}`);return e.value=i.data,e}var lr=d("$ZodTuple",(e,t)=>{k.init(e,t);let r=t.items;e._zod.parse=(n,o)=>{let s=n.value;if(!Array.isArray(s))return n.issues.push({input:s,inst:e,expected:"tuple",code:"invalid_type"}),n;n.value=[];let i=[],a=[...r].reverse().findIndex(p=>p._zod.optin!=="optional"),u=a===-1?0:r.length-a;if(!t.rest){let p=s.length>r.length,f=s.length<u-1;if(p||f)return n.issues.push({...p?{code:"too_big",maximum:r.length,inclusive:!0}:{code:"too_small",minimum:r.length},input:s,inst:e,origin:"array"}),n}let l=-1;for(let p of r){if(l++,l>=s.length&&l>=u)continue;let f=p._zod.run({value:s[l],issues:[]},o);f instanceof Promise?i.push(f.then(m=>rr(m,n,l))):rr(f,n,l)}if(t.rest){let p=s.slice(r.length);for(let f of p){l++;let m=t.rest._zod.run({value:f,issues:[]},o);m instanceof Promise?i.push(m.then(h=>rr(h,n,l))):rr(m,n,l)}}return i.length?Promise.all(i).then(()=>n):n}});function rr(e,t,r){e.issues.length&&t.issues.push(...Q(r,e.issues)),t.value[r]=e.value}var as=d("$ZodRecord",(e,t)=>{k.init(e,t),e._zod.parse=(r,n)=>{let o=r.value;if(!me(o))return r.issues.push({expected:"record",code:"invalid_type",input:o,inst:e}),r;let s=[],i=t.keyType._zod.values;if(i){r.value={};let a=new Set;for(let l of i)if(typeof l=="string"||typeof l=="number"||typeof l=="symbol"){a.add(typeof l=="number"?l.toString():l);let p=t.valueType._zod.run({value:o[l],issues:[]},n);p instanceof Promise?s.push(p.then(f=>{f.issues.length&&r.issues.push(...Q(l,f.issues)),r.value[l]=f.value})):(p.issues.length&&r.issues.push(...Q(l,p.issues)),r.value[l]=p.value)}let u;for(let l in o)a.has(l)||(u=u??[],u.push(l));u&&u.length>0&&r.issues.push({code:"unrecognized_keys",input:o,inst:e,keys:u})}else{r.value={};for(let a of Reflect.ownKeys(o)){if(a==="__proto__")continue;let u=t.keyType._zod.run({value:a,issues:[]},n);if(u instanceof Promise)throw new Error("Async schemas not supported in object keys currently");if(typeof a=="string"&&Xt.test(a)&&u.issues.length){let f=t.keyType._zod.run({value:Number(a),issues:[]},n);if(f instanceof Promise)throw new Error("Async schemas not supported in object keys currently");f.issues.length===0&&(u=f)}if(u.issues.length){t.mode==="loose"?r.value[a]=o[a]:r.issues.push({code:"invalid_key",origin:"record",issues:u.issues.map(f=>G(f,n,B())),input:a,path:[a],inst:e});continue}let p=t.valueType._zod.run({value:o[a],issues:[]},n);p instanceof Promise?s.push(p.then(f=>{f.issues.length&&r.issues.push(...Q(a,f.issues)),r.value[u.value]=f.value})):(p.issues.length&&r.issues.push(...Q(a,p.issues)),r.value[u.value]=p.value)}}return s.length?Promise.all(s).then(()=>r):r}}),cs=d("$ZodMap",(e,t)=>{k.init(e,t),e._zod.parse=(r,n)=>{let o=r.value;if(!(o instanceof Map))return r.issues.push({expected:"map",code:"invalid_type",input:o,inst:e}),r;let s=[];r.value=new Map;for(let[i,a]of o){let u=t.keyType._zod.run({value:i,issues:[]},n),l=t.valueType._zod.run({value:a,issues:[]},n);u instanceof Promise||l instanceof Promise?s.push(Promise.all([u,l]).then(([p,f])=>{_c(p,f,r,i,o,e,n)})):_c(u,l,r,i,o,e,n)}return s.length?Promise.all(s).then(()=>r):r}});function _c(e,t,r,n,o,s,i){e.issues.length&&(st.has(typeof n)?r.issues.push(...Q(n,e.issues)):r.issues.push({code:"invalid_key",origin:"map",input:o,inst:s,issues:e.issues.map(a=>G(a,i,B()))})),t.issues.length&&(st.has(typeof n)?r.issues.push(...Q(n,t.issues)):r.issues.push({origin:"map",code:"invalid_element",input:o,inst:s,key:n,issues:t.issues.map(a=>G(a,i,B()))})),r.value.set(e.value,t.value)}var us=d("$ZodSet",(e,t)=>{k.init(e,t),e._zod.parse=(r,n)=>{let o=r.value;if(!(o instanceof Set))return r.issues.push({input:o,inst:e,expected:"set",code:"invalid_type"}),r;let s=[];r.value=new Set;for(let i of o){let a=t.valueType._zod.run({value:i,issues:[]},n);a instanceof Promise?s.push(a.then(u=>wc(u,r))):wc(a,r)}return s.length?Promise.all(s).then(()=>r):r}});function wc(e,t){e.issues.length&&t.issues.push(...e.issues),t.value.add(e.value)}var ls=d("$ZodEnum",(e,t)=>{k.init(e,t);let r=nt(t.entries),n=new Set(r);e._zod.values=n,e._zod.pattern=new RegExp(`^(${r.filter(o=>st.has(typeof o)).map(o=>typeof o=="string"?ee(o):o.toString()).join("|")})$`),e._zod.parse=(o,s)=>{let i=o.value;return n.has(i)||o.issues.push({code:"invalid_value",values:r,input:i,inst:e}),o}}),ps=d("$ZodLiteral",(e,t)=>{if(k.init(e,t),t.values.length===0)throw new Error("Cannot create literal schema with no valid values");let r=new Set(t.values);e._zod.values=r,e._zod.pattern=new RegExp(`^(${t.values.map(n=>typeof n=="string"?ee(n):n?ee(n.toString()):String(n)).join("|")})$`),e._zod.parse=(n,o)=>{let s=n.value;return r.has(s)||n.issues.push({code:"invalid_value",values:t.values,input:s,inst:e}),n}}),fs=d("$ZodFile",(e,t)=>{k.init(e,t),e._zod.parse=(r,n)=>{let o=r.value;return o instanceof File||r.issues.push({expected:"file",code:"invalid_type",input:o,inst:e}),r}}),ds=d("$ZodTransform",(e,t)=>{k.init(e,t),e._zod.parse=(r,n)=>{if(n.direction==="backward")throw new Le(e.constructor.name);let o=t.transform(r.value,r);if(n.async)return(o instanceof Promise?o:Promise.resolve(o)).then(i=>(r.value=i,r));if(o instanceof Promise)throw new se;return r.value=o,r}});function $c(e,t){return e.issues.length&&t===void 0?{issues:[],value:void 0}:e}var pr=d("$ZodOptional",(e,t)=>{k.init(e,t),e._zod.optin="optional",e._zod.optout="optional",x(e._zod,"values",()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,void 0]):void 0),x(e._zod,"pattern",()=>{let r=t.innerType._zod.pattern;return r?new RegExp(`^(${ot(r.source)})?$`):void 0}),e._zod.parse=(r,n)=>{if(t.innerType._zod.optin==="optional"){let o=t.innerType._zod.run(r,n);return o instanceof Promise?o.then(s=>$c(s,r.value)):$c(o,r.value)}return r.value===void 0?r:t.innerType._zod.run(r,n)}}),ms=d("$ZodExactOptional",(e,t)=>{pr.init(e,t),x(e._zod,"values",()=>t.innerType._zod.values),x(e._zod,"pattern",()=>t.innerType._zod.pattern),e._zod.parse=(r,n)=>t.innerType._zod.run(r,n)}),hs=d("$ZodNullable",(e,t)=>{k.init(e,t),x(e._zod,"optin",()=>t.innerType._zod.optin),x(e._zod,"optout",()=>t.innerType._zod.optout),x(e._zod,"pattern",()=>{let r=t.innerType._zod.pattern;return r?new RegExp(`^(${ot(r.source)}|null)$`):void 0}),x(e._zod,"values",()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,null]):void 0),e._zod.parse=(r,n)=>r.value===null?r:t.innerType._zod.run(r,n)}),gs=d("$ZodDefault",(e,t)=>{k.init(e,t),e._zod.optin="optional",x(e._zod,"values",()=>t.innerType._zod.values),e._zod.parse=(r,n)=>{if(n.direction==="backward")return t.innerType._zod.run(r,n);if(r.value===void 0)return r.value=t.defaultValue,r;let o=t.innerType._zod.run(r,n);return o instanceof Promise?o.then(s=>kc(s,t)):kc(o,t)}});function kc(e,t){return e.value===void 0&&(e.value=t.defaultValue),e}var ys=d("$ZodPrefault",(e,t)=>{k.init(e,t),e._zod.optin="optional",x(e._zod,"values",()=>t.innerType._zod.values),e._zod.parse=(r,n)=>(n.direction==="backward"||r.value===void 0&&(r.value=t.defaultValue),t.innerType._zod.run(r,n))}),bs=d("$ZodNonOptional",(e,t)=>{k.init(e,t),x(e._zod,"values",()=>{let r=t.innerType._zod.values;return r?new Set([...r].filter(n=>n!==void 0)):void 0}),e._zod.parse=(r,n)=>{let o=t.innerType._zod.run(r,n);return o instanceof Promise?o.then(s=>xc(s,e)):xc(o,e)}});function xc(e,t){return!e.issues.length&&e.value===void 0&&e.issues.push({code:"invalid_type",expected:"nonoptional",input:e.value,inst:t}),e}var _s=d("$ZodSuccess",(e,t)=>{k.init(e,t),e._zod.parse=(r,n)=>{if(n.direction==="backward")throw new Le("ZodSuccess");let o=t.innerType._zod.run(r,n);return o instanceof Promise?o.then(s=>(r.value=s.issues.length===0,r)):(r.value=o.issues.length===0,r)}}),ws=d("$ZodCatch",(e,t)=>{k.init(e,t),x(e._zod,"optin",()=>t.innerType._zod.optin),x(e._zod,"optout",()=>t.innerType._zod.optout),x(e._zod,"values",()=>t.innerType._zod.values),e._zod.parse=(r,n)=>{if(n.direction==="backward")return t.innerType._zod.run(r,n);let o=t.innerType._zod.run(r,n);return o instanceof Promise?o.then(s=>(r.value=s.value,s.issues.length&&(r.value=t.catchValue({...r,error:{issues:s.issues.map(i=>G(i,n,B()))},input:r.value}),r.issues=[]),r)):(r.value=o.value,o.issues.length&&(r.value=t.catchValue({...r,error:{issues:o.issues.map(s=>G(s,n,B()))},input:r.value}),r.issues=[]),r)}}),$s=d("$ZodNaN",(e,t)=>{k.init(e,t),e._zod.parse=(r,n)=>((typeof r.value!="number"||!Number.isNaN(r.value))&&r.issues.push({input:r.value,inst:e,expected:"nan",code:"invalid_type"}),r)}),ks=d("$ZodPipe",(e,t)=>{k.init(e,t),x(e._zod,"values",()=>t.in._zod.values),x(e._zod,"optin",()=>t.in._zod.optin),x(e._zod,"optout",()=>t.out._zod.optout),x(e._zod,"propValues",()=>t.in._zod.propValues),e._zod.parse=(r,n)=>{if(n.direction==="backward"){let s=t.out._zod.run(r,n);return s instanceof Promise?s.then(i=>nr(i,t.in,n)):nr(s,t.in,n)}let o=t.in._zod.run(r,n);return o instanceof Promise?o.then(s=>nr(s,t.out,n)):nr(o,t.out,n)}});function nr(e,t,r){return e.issues.length?(e.aborted=!0,e):t._zod.run({value:e.value,issues:e.issues},r)}var dt=d("$ZodCodec",(e,t)=>{k.init(e,t),x(e._zod,"values",()=>t.in._zod.values),x(e._zod,"optin",()=>t.in._zod.optin),x(e._zod,"optout",()=>t.out._zod.optout),x(e._zod,"propValues",()=>t.in._zod.propValues),e._zod.parse=(r,n)=>{if((n.direction||"forward")==="forward"){let s=t.in._zod.run(r,n);return s instanceof Promise?s.then(i=>or(i,t,n)):or(s,t,n)}else{let s=t.out._zod.run(r,n);return s instanceof Promise?s.then(i=>or(i,t,n)):or(s,t,n)}}});function or(e,t,r){if(e.issues.length)return e.aborted=!0,e;if((r.direction||"forward")==="forward"){let o=t.transform(e.value,e);return o instanceof Promise?o.then(s=>sr(e,s,t.out,r)):sr(e,o,t.out,r)}else{let o=t.reverseTransform(e.value,e);return o instanceof Promise?o.then(s=>sr(e,s,t.in,r)):sr(e,o,t.in,r)}}function sr(e,t,r,n){return e.issues.length?(e.aborted=!0,e):r._zod.run({value:t,issues:e.issues},n)}var xs=d("$ZodReadonly",(e,t)=>{k.init(e,t),x(e._zod,"propValues",()=>t.innerType._zod.propValues),x(e._zod,"values",()=>t.innerType._zod.values),x(e._zod,"optin",()=>t.innerType?._zod?.optin),x(e._zod,"optout",()=>t.innerType?._zod?.optout),e._zod.parse=(r,n)=>{if(n.direction==="backward")return t.innerType._zod.run(r,n);let o=t.innerType._zod.run(r,n);return o instanceof Promise?o.then(Sc):Sc(o)}});function Sc(e){return e.value=Object.freeze(e.value),e}var Ss=d("$ZodTemplateLiteral",(e,t)=>{k.init(e,t);let r=[];for(let n of t.parts)if(typeof n=="object"&&n!==null){if(!n._zod.pattern)throw new Error(`Invalid template literal part, no pattern found: ${[...n._zod.traits].shift()}`);let o=n._zod.pattern instanceof RegExp?n._zod.pattern.source:n._zod.pattern;if(!o)throw new Error(`Invalid template literal part: ${n._zod.traits}`);let s=o.startsWith("^")?1:0,i=o.endsWith("$")?o.length-1:o.length;r.push(o.slice(s,i))}else if(n===null||nn.has(typeof n))r.push(ee(`${n}`));else throw new Error(`Invalid template literal part: ${n}`);e._zod.pattern=new RegExp(`^${r.join("")}$`),e._zod.parse=(n,o)=>typeof n.value!="string"?(n.issues.push({input:n.value,inst:e,expected:"string",code:"invalid_type"}),n):(e._zod.pattern.lastIndex=0,e._zod.pattern.test(n.value)||n.issues.push({input:n.value,inst:e,code:"invalid_format",format:t.format??"template_literal",pattern:e._zod.pattern.source}),n)}),vs=d("$ZodFunction",(e,t)=>(k.init(e,t),e._def=t,e._zod.def=t,e.implement=r=>{if(typeof r!="function")throw new Error("implement() must be called with a function");return function(...n){let o=e._def.input?ge(e._def.input,n):n,s=Reflect.apply(r,this,o);return e._def.output?ge(e._def.output,s):s}},e.implementAsync=r=>{if(typeof r!="function")throw new Error("implementAsync() must be called with a function");return async function(...n){let o=e._def.input?await ye(e._def.input,n):n,s=await Reflect.apply(r,this,o);return e._def.output?await ye(e._def.output,s):s}},e._zod.parse=(r,n)=>typeof r.value!="function"?(r.issues.push({code:"invalid_type",expected:"function",input:r.value,inst:e}),r):(e._def.output&&e._def.output._zod.def.type==="promise"?r.value=e.implementAsync(r.value):r.value=e.implement(r.value),r),e.input=(...r)=>{let n=e.constructor;return Array.isArray(r[0])?new n({type:"function",input:new lr({type:"tuple",items:r[0],rest:r[1]}),output:e._def.output}):new n({type:"function",input:r[0],output:e._def.output})},e.output=r=>{let n=e.constructor;return new n({type:"function",input:e._def.input,output:r})},e)),zs=d("$ZodPromise",(e,t)=>{k.init(e,t),e._zod.parse=(r,n)=>Promise.resolve(r.value).then(o=>t.innerType._zod.run({value:o,issues:[]},n))}),Ts=d("$ZodLazy",(e,t)=>{k.init(e,t),x(e._zod,"innerType",()=>t.getter()),x(e._zod,"pattern",()=>e._zod.innerType?._zod?.pattern),x(e._zod,"propValues",()=>e._zod.innerType?._zod?.propValues),x(e._zod,"optin",()=>e._zod.innerType?._zod?.optin??void 0),x(e._zod,"optout",()=>e._zod.innerType?._zod?.optout??void 0),e._zod.parse=(r,n)=>e._zod.innerType._zod.run(r,n)}),Is=d("$ZodCustom",(e,t)=>{E.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=>vc(s,r,n,e));vc(o,r,n,e)}});function vc(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:()=>Sd});var Sd={};var Ec,Ps=Symbol("ZodOutput"),Es=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}(Ec=globalThis).__zod_globalRegistry??(Ec.__zod_globalRegistry=dr());var ae=globalThis.__zod_globalRegistry;function As(e,t){return new e({type:"string",...g(t)})}function Rs(e,t){return new e({type:"string",coerce:!0,...g(t)})}function Cs(e,t){return new e({type:"string",format:"email",check:"string_format",abort:!1,...g(t)})}function Ns(e,t){return new e({type:"string",format:"guid",check:"string_format",abort:!1,...g(t)})}function Os(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,...g(t)})}function Ls(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v4",...g(t)})}function Zs(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v6",...g(t)})}function js(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v7",...g(t)})}function mr(e,t){return new e({type:"string",format:"url",check:"string_format",abort:!1,...g(t)})}function Ds(e,t){return new e({type:"string",format:"emoji",check:"string_format",abort:!1,...g(t)})}function Ms(e,t){return new e({type:"string",format:"nanoid",check:"string_format",abort:!1,...g(t)})}function Bs(e,t){return new e({type:"string",format:"cuid",check:"string_format",abort:!1,...g(t)})}function Us(e,t){return new e({type:"string",format:"cuid2",check:"string_format",abort:!1,...g(t)})}function Fs(e,t){return new e({type:"string",format:"ulid",check:"string_format",abort:!1,...g(t)})}function Hs(e,t){return new e({type:"string",format:"xid",check:"string_format",abort:!1,...g(t)})}function qs(e,t){return new e({type:"string",format:"ksuid",check:"string_format",abort:!1,...g(t)})}function Js(e,t){return new e({type:"string",format:"ipv4",check:"string_format",abort:!1,...g(t)})}function Ks(e,t){return new e({type:"string",format:"ipv6",check:"string_format",abort:!1,...g(t)})}function Ys(e,t){return new e({type:"string",format:"mac",check:"string_format",abort:!1,...g(t)})}function Gs(e,t){return new e({type:"string",format:"cidrv4",check:"string_format",abort:!1,...g(t)})}function Ws(e,t){return new e({type:"string",format:"cidrv6",check:"string_format",abort:!1,...g(t)})}function Vs(e,t){return new e({type:"string",format:"base64",check:"string_format",abort:!1,...g(t)})}function Qs(e,t){return new e({type:"string",format:"base64url",check:"string_format",abort:!1,...g(t)})}function Xs(e,t){return new e({type:"string",format:"e164",check:"string_format",abort:!1,...g(t)})}function ei(e,t){return new e({type:"string",format:"jwt",check:"string_format",abort:!1,...g(t)})}var ti={Any:null,Minute:-1,Second:0,Millisecond:3,Microsecond:6};function ri(e,t){return new e({type:"string",format:"datetime",check:"string_format",offset:!1,local:!1,precision:null,...g(t)})}function ni(e,t){return new e({type:"string",format:"date",check:"string_format",...g(t)})}function oi(e,t){return new e({type:"string",format:"time",check:"string_format",precision:null,...g(t)})}function si(e,t){return new e({type:"string",format:"duration",check:"string_format",...g(t)})}function ii(e,t){return new e({type:"number",checks:[],...g(t)})}function ai(e,t){return new e({type:"number",coerce:!0,checks:[],...g(t)})}function ci(e,t){return new e({type:"number",check:"number_format",abort:!1,format:"safeint",...g(t)})}function ui(e,t){return new e({type:"number",check:"number_format",abort:!1,format:"float32",...g(t)})}function li(e,t){return new e({type:"number",check:"number_format",abort:!1,format:"float64",...g(t)})}function pi(e,t){return new e({type:"number",check:"number_format",abort:!1,format:"int32",...g(t)})}function fi(e,t){return new e({type:"number",check:"number_format",abort:!1,format:"uint32",...g(t)})}function di(e,t){return new e({type:"boolean",...g(t)})}function mi(e,t){return new e({type:"boolean",coerce:!0,...g(t)})}function hi(e,t){return new e({type:"bigint",...g(t)})}function gi(e,t){return new e({type:"bigint",coerce:!0,...g(t)})}function yi(e,t){return new e({type:"bigint",check:"bigint_format",abort:!1,format:"int64",...g(t)})}function bi(e,t){return new e({type:"bigint",check:"bigint_format",abort:!1,format:"uint64",...g(t)})}function _i(e,t){return new e({type:"symbol",...g(t)})}function wi(e,t){return new e({type:"undefined",...g(t)})}function $i(e,t){return new e({type:"null",...g(t)})}function ki(e){return new e({type:"any"})}function xi(e){return new e({type:"unknown"})}function Si(e,t){return new e({type:"never",...g(t)})}function vi(e,t){return new e({type:"void",...g(t)})}function zi(e,t){return new e({type:"date",...g(t)})}function Ti(e,t){return new e({type:"date",coerce:!0,...g(t)})}function Ii(e,t){return new e({type:"nan",...g(t)})}function hr(e,t){return new er({check:"less_than",...g(t),value:e,inclusive:!1})}function ht(e,t){return new er({check:"less_than",...g(t),value:e,inclusive:!0})}function gr(e,t){return new tr({check:"greater_than",...g(t),value:e,inclusive:!1})}function gt(e,t){return new tr({check:"greater_than",...g(t),value:e,inclusive:!0})}function Pi(e){return gr(0,e)}function Ei(e){return hr(0,e)}function Ai(e){return ht(0,e)}function Ri(e){return gt(0,e)}function Ci(e,t){return new eo({check:"multiple_of",...g(t),value:e})}function Ni(e,t){return new no({check:"max_size",...g(t),maximum:e})}function Oi(e,t){return new oo({check:"min_size",...g(t),minimum:e})}function Li(e,t){return new so({check:"size_equals",...g(t),size:e})}function Zi(e,t){return new io({check:"max_length",...g(t),maximum:e})}function yt(e,t){return new ao({check:"min_length",...g(t),minimum:e})}function ji(e,t){return new co({check:"length_equals",...g(t),length:e})}function bt(e,t){return new uo({check:"string_format",format:"regex",...g(t),pattern:e})}function Di(e){return new lo({check:"string_format",format:"lowercase",...g(e)})}function Mi(e){return new po({check:"string_format",format:"uppercase",...g(e)})}function Bi(e,t){return new fo({check:"string_format",format:"includes",...g(t),includes:e})}function Ui(e,t){return new mo({check:"string_format",format:"starts_with",...g(t),prefix:e})}function Fi(e,t){return new ho({check:"string_format",format:"ends_with",...g(t),suffix:e})}function Hi(e,t,r){return new go({check:"property",property:e,schema:t,...g(r)})}function qi(e,t){return new yo({check:"mime_type",mime:e,...g(t)})}function be(e){return new bo({check:"overwrite",tx:e})}function Ji(e){return be(t=>t.normalize(e))}function Ki(){return be(e=>e.trim())}function Yi(){return be(e=>e.toLowerCase())}function Gi(){return be(e=>e.toUpperCase())}function zd(){return be(e=>tn(e))}function Td(e,t,r){return new e({type:"array",element:t,...g(r)})}function Id(e,t,r){return new e({type:"union",options:t,...g(r)})}function Pd(e,t,r){return new e({type:"union",options:t,inclusive:!1,...g(r)})}function Ed(e,t,r,n){return new e({type:"union",options:r,discriminator:t,...g(n)})}function Ad(e,t,r){return new e({type:"intersection",left:t,right:r})}function Rd(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 Cd(e,t,r,n){return new e({type:"record",keyType:t,valueType:r,...g(n)})}function Nd(e,t,r,n){return new e({type:"map",keyType:t,valueType:r,...g(n)})}function Od(e,t,r){return new e({type:"set",valueType:t,...g(r)})}function Ld(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 Zd(e,t,r){return new e({type:"enum",entries:t,...g(r)})}function jd(e,t,r){return new e({type:"literal",values:Array.isArray(t)?t:[t],...g(r)})}function Wi(e,t){return new e({type:"file",...g(t)})}function Dd(e,t){return new e({type:"transform",transform:t})}function Md(e,t){return new e({type:"optional",innerType:t})}function Bd(e,t){return new e({type:"nullable",innerType:t})}function Ud(e,t,r){return new e({type:"default",innerType:t,get defaultValue(){return typeof r=="function"?r():je(r)}})}function Fd(e,t,r){return new e({type:"nonoptional",innerType:t,...g(r)})}function Hd(e,t){return new e({type:"success",innerType:t})}function qd(e,t,r){return new e({type:"catch",innerType:t,catchValue:typeof r=="function"?r:()=>r})}function Jd(e,t,r){return new e({type:"pipe",in:t,out:r})}function Kd(e,t){return new e({type:"readonly",innerType:t})}function Yd(e,t,r){return new e({type:"template_literal",parts:t,...g(r)})}function Gd(e,t){return new e({type:"lazy",getter:t})}function Wd(e,t){return new e({type:"promise",innerType:t})}function Vi(e,t,r){let n=g(r);return n.abort??(n.abort=!0),new e({type:"custom",check:"custom",fn:t,...n})}function Qi(e,t,r){return new e({type:"custom",check:"custom",fn:t,...g(r)})}function Xi(e){let t=Ac(r=>(r.addIssue=n=>{if(typeof n=="string")r.issues.push(De(n,r.value,t._zod.def));else{let o=n;o.fatal&&(o.continue=!1),o.code??(o.code="custom"),o.input??(o.input=r.value),o.inst??(o.inst=t),o.continue??(o.continue=!t._zod.def.abort),r.issues.push(De(o))}},e(r.value,r)));return t}function Ac(e,t){let r=new E({check:"custom",...g(t)});return r._zod.check=e,r}function ea(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 ta(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 ra(e,t){let r=g(t),n=r.truthy??["true","1","yes","on","y","enabled"],o=r.falsy??["false","0","no","off","n","disabled"];r.case!=="sensitive"&&(n=n.map(h=>typeof h=="string"?h.toLowerCase():h),o=o.map(h=>typeof h=="string"?h.toLowerCase():h));let s=new Set(n),i=new Set(o),a=e.Codec??dt,u=e.Boolean??pt,l=e.String??Be,p=new l({type:"string",error:r.error}),f=new u({type:"boolean",error:r.error}),m=new a({type:"pipe",in:p,out:f,transform:((h,b)=>{let y=h;return r.case!=="sensitive"&&(y=y.toLowerCase()),s.has(y)?!0:i.has(y)?!1:(b.issues.push({code:"invalid_value",expected:"stringbool",values:[...s,...i],input:b.value,inst:m,continue:!1}),{})}),reverseTransform:((h,b)=>h===!0?n[0]||"true":o[0]||"false"),error:r.error});return m}function Ue(e,t,r,n={}){let o=g(n),s={...g(n),check:"string_format",type:"string",format:t,fn:typeof r=="function"?r:a=>r.test(a),...o};return r instanceof RegExp&&(s.pattern=r),new e(s)}function _e(e){let t=e?.target??"draft-2020-12";return t==="draft-4"&&(t="draft-04"),t==="draft-7"&&(t="draft-07"),{processors:e.processors??{},metadataRegistry:e?.metadata??ae,target:t,unrepresentable:e?.unrepresentable??"throw",override:e?.override??(()=>{}),io:e?.io??"output",counter:0,seen:new Map,cycles:e?.cycles??"ref",reused:e?.reused??"inline",external:e?.external??void 0}}function T(e,t,r={path:[],schemaPath:[]}){var n;let o=e._zod.def,s=t.seen.get(e);if(s)return s.count++,r.schemaPath.includes(e)&&(s.cycle=r.path),s.schema;let i={schema:{},count:1,cycle:void 0,path:r.path};t.seen.set(e,i);let a=e._zod.toJSONSchema?.();if(a)i.schema=a;else{let p={...r,schemaPath:[...r.schemaPath,e],path:r.path};if(e._zod.processJSONSchema)e._zod.processJSONSchema(t,i.schema,p);else{let m=i.schema,h=t.processors[o.type];if(!h)throw new Error(`[toJSONSchema]: Non-representable type encountered: ${o.type}`);h(e,t,m,p)}let f=e._zod.parent;f&&(i.ref||(i.ref=f),T(f,t,p),t.seen.get(f).isParent=!0)}let u=t.metadataRegistry.get(e);return u&&Object.assign(i.schema,u),t.io==="input"&&J(e)&&(delete i.schema.examples,delete i.schema.default),t.io==="input"&&i.schema._prefault&&((n=i.schema).default??(n.default=i.schema._prefault)),delete i.schema._prefault,t.seen.get(e).schema}function we(e,t){let r=e.seen.get(t);if(!r)throw new Error("Unprocessed schema. This is a bug in Zod.");let n=new Map;for(let i of e.seen.entries()){let a=e.metadataRegistry.get(i[0])?.id;if(a){let u=n.get(a);if(u&&u!==i[0])throw new Error(`Duplicate schema id "${a}" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);n.set(a,i[0])}}let o=i=>{let a=e.target==="draft-2020-12"?"$defs":"definitions";if(e.external){let f=e.external.registry.get(i[0])?.id,m=e.external.uri??(b=>b);if(f)return{ref:m(f)};let h=i[1].defId??i[1].schema.id??`schema${e.counter++}`;return i[1].defId=h,{defId:h,ref:`${m("__shared")}#/${a}/${h}`}}if(i[1]===r)return{ref:"#"};let l=`#/${a}/`,p=i[1].schema.id??`__schema${e.counter++}`;return{defId:p,ref:l+p}},s=i=>{if(i[1].schema.$ref)return;let a=i[1],{ref:u,defId:l}=o(i);a.def={...a.schema},l&&(a.defId=l);let p=a.schema;for(let f in p)delete p[f];p.$ref=u};if(e.cycles==="throw")for(let i of e.seen.entries()){let a=i[1];if(a.cycle)throw new Error(`Cycle detected: #/${a.cycle?.join("/")}/<root>
40
+
41
+ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(let i of e.seen.entries()){let a=i[1];if(t===i[0]){s(i);continue}if(e.external){let l=e.external.registry.get(i[0])?.id;if(t!==i[0]&&l){s(i);continue}}if(e.metadataRegistry.get(i[0])?.id){s(i);continue}if(a.cycle){s(i);continue}if(a.count>1&&e.reused==="ref"){s(i);continue}}}function $e(e,t){let r=e.seen.get(t);if(!r)throw new Error("Unprocessed schema. This is a bug in Zod.");let n=i=>{let a=e.seen.get(i);if(a.ref===null)return;let u=a.def??a.schema,l={...u},p=a.ref;if(a.ref=null,p){n(p);let m=e.seen.get(p),h=m.schema;if(h.$ref&&(e.target==="draft-07"||e.target==="draft-04"||e.target==="openapi-3.0")?(u.allOf=u.allOf??[],u.allOf.push(h)):Object.assign(u,h),Object.assign(u,l),i._zod.parent===p)for(let y in u)y==="$ref"||y==="allOf"||y in l||delete u[y];if(h.$ref&&m.def)for(let y in u)y==="$ref"||y==="allOf"||y in m.def&&JSON.stringify(u[y])===JSON.stringify(m.def[y])&&delete u[y]}let f=i._zod.parent;if(f&&f!==p){n(f);let m=e.seen.get(f);if(m?.schema.$ref&&(u.$ref=m.schema.$ref,m.def))for(let h in u)h==="$ref"||h==="allOf"||h in m.def&&JSON.stringify(u[h])===JSON.stringify(m.def[h])&&delete u[h]}e.override({zodSchema:i,jsonSchema:u,path:a.path??[]})};for(let i of[...e.seen.entries()].reverse())n(i[0]);let o={};if(e.target==="draft-2020-12"?o.$schema="https://json-schema.org/draft/2020-12/schema":e.target==="draft-07"?o.$schema="http://json-schema.org/draft-07/schema#":e.target==="draft-04"?o.$schema="http://json-schema.org/draft-04/schema#":e.target,e.external?.uri){let i=e.external.registry.get(t)?.id;if(!i)throw new Error("Schema is missing an `id` property");o.$id=e.external.uri(i)}Object.assign(o,r.def??r.schema);let s=e.external?.defs??{};for(let i of e.seen.entries()){let a=i[1];a.def&&a.defId&&(s[a.defId]=a.def)}e.external||Object.keys(s).length>0&&(e.target==="draft-2020-12"?o.$defs=s:o.definitions=s);try{let i=JSON.parse(JSON.stringify(o));return Object.defineProperty(i,"~standard",{value:{...t["~standard"],jsonSchema:{input:na(t,"input",e.processors),output:na(t,"output",e.processors)}},enumerable:!1,writable:!1}),i}catch{throw new Error("Error converting schema to JSON.")}}function J(e,t){let r=t??{seen:new Set};if(r.seen.has(e))return!1;r.seen.add(e);let n=e._zod.def;if(n.type==="transform")return!0;if(n.type==="array")return J(n.element,r);if(n.type==="set")return J(n.valueType,r);if(n.type==="lazy")return J(n.getter(),r);if(n.type==="promise"||n.type==="optional"||n.type==="nonoptional"||n.type==="nullable"||n.type==="readonly"||n.type==="default"||n.type==="prefault")return J(n.innerType,r);if(n.type==="intersection")return J(n.left,r)||J(n.right,r);if(n.type==="record"||n.type==="map")return J(n.keyType,r)||J(n.valueType,r);if(n.type==="pipe")return J(n.in,r)||J(n.out,r);if(n.type==="object"){for(let o in n.shape)if(J(n.shape[o],r))return!0;return!1}if(n.type==="union"){for(let o of n.options)if(J(o,r))return!0;return!1}if(n.type==="tuple"){for(let o of n.items)if(J(o,r))return!0;return!!(n.rest&&J(n.rest,r))}return!1}var Vd=(e,t={})=>r=>{let n=_e({...r,processors:t});return T(e,n),we(n,e),$e(n,e)},na=(e,t,r={})=>n=>{let{libraryOptions:o,target:s}=n??{},i=_e({...o??{},target:s,io:t,processors:r});return T(e,i),we(i,e),$e(i,e)};var Qd={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string",regex:""},Xd=(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=Qd[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}))])}},em=(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)},tm=(e,t,r,n)=>{r.type="boolean"},rm=(e,t,r,n)=>{if(t.unrepresentable==="throw")throw new Error("BigInt cannot be represented in JSON Schema")},nm=(e,t,r,n)=>{if(t.unrepresentable==="throw")throw new Error("Symbols cannot be represented in JSON Schema")},om=(e,t,r,n)=>{t.target==="openapi-3.0"?(r.type="string",r.nullable=!0,r.enum=[null]):r.type="null"},sm=(e,t,r,n)=>{if(t.unrepresentable==="throw")throw new Error("Undefined cannot be represented in JSON Schema")},im=(e,t,r,n)=>{if(t.unrepresentable==="throw")throw new Error("Void cannot be represented in JSON Schema")},am=(e,t,r,n)=>{r.not={}},cm=(e,t,r,n)=>{},um=(e,t,r,n)=>{},lm=(e,t,r,n)=>{if(t.unrepresentable==="throw")throw new Error("Date cannot be represented in JSON Schema")},pm=(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},fm=(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},dm=(e,t,r,n)=>{if(t.unrepresentable==="throw")throw new Error("NaN cannot be represented in JSON Schema")},mm=(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},hm=(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)},gm=(e,t,r,n)=>{r.type="boolean"},ym=(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")},_m=(e,t,r,n)=>{if(t.unrepresentable==="throw")throw new Error("Transforms cannot be represented in JSON Schema")},wm=(e,t,r,n)=>{if(t.unrepresentable==="throw")throw new Error("Map cannot be represented in JSON Schema")},$m=(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"]})},xm=(e,t,r,n)=>{let o=r,s=e._zod.def;o.type="object",o.properties={};let i=s.shape;for(let l in i)o.properties[l]=T(i[l],t,{...n,path:[...n.path,"properties",l]});let a=new Set(Object.keys(i)),u=new Set([...a].filter(l=>{let p=s.shape[l]._zod;return t.io==="input"?p.optin===void 0:p.optout===void 0}));u.size>0&&(o.required=Array.from(u)),s.catchall?._zod.def.type==="never"?o.additionalProperties=!1:s.catchall?s.catchall&&(o.additionalProperties=T(s.catchall,t,{...n,path:[...n.path,"additionalProperties"]})):t.io==="output"&&(o.additionalProperties=!1)},Sm=(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},vm=(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},zm=(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)},Tm=(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)}},Im=(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"}]},Pm=(e,t,r,n)=>{let o=e._zod.def;T(o.innerType,t,n);let s=t.seen.get(e);s.ref=o.innerType},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,r.default=JSON.parse(JSON.stringify(o.defaultValue))},Am=(e,t,r,n)=>{let o=e._zod.def;T(o.innerType,t,n);let s=t.seen.get(e);s.ref=o.innerType,t.io==="input"&&(r._prefault=JSON.parse(JSON.stringify(o.defaultValue)))},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;let i;try{i=o.catchValue(void 0)}catch{throw new Error("Dynamic catch values are not supported in JSON Schema")}r.default=i},Cm=(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},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,r.readOnly=!0},Om=(e,t,r,n)=>{let o=e._zod.def;T(o.innerType,t,n);let s=t.seen.get(e);s.ref=o.innerType},Lm=(e,t,r,n)=>{let o=e._zod.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.innerType;T(o,t,n);let s=t.seen.get(e);s.ref=o},yr={string:Xd,number:em,boolean:tm,bigint:rm,symbol:nm,null:om,undefined:sm,void:im,never:am,any:cm,unknown:um,date:lm,enum:pm,literal:fm,nan:dm,template_literal:mm,file:hm,success:gm,custom:ym,function:bm,transform:_m,map:wm,set:$m,array:km,object:xm,union:Sm,intersection:vm,tuple:zm,record:Tm,nullable:Im,nonoptional:Pm,default:Em,prefault:Am,catch:Rm,pipe:Cm,readonly:Nm,promise:Om,optional:Lm,lazy:Zm};function br(e,t){if("_idmap"in e){let n=e,o=_e({...t,processors:yr}),s={};for(let u of n._idmap.entries()){let[l,p]=u;T(p,o)}let i={},a={registry:n,uri:t?.uri,defs:s};o.external=a;for(let u of n._idmap.entries()){let[l,p]=u;we(o,p),i[l]=$e(o,p)}if(Object.keys(s).length>0){let u=o.target==="draft-2020-12"?"$defs":"definitions";i.__shared={[u]:s}}return{schemas:i}}let r=_e({...t,processors:yr});return T(e,r),we(r,e),$e(r,e)}var _r=class{get metadataRegistry(){return this.ctx.metadataRegistry}get target(){return this.ctx.target}get unrepresentable(){return this.ctx.unrepresentable}get override(){return this.ctx.override}get io(){return this.ctx.io}get counter(){return this.ctx.counter}set counter(t){this.ctx.counter=t}get seen(){return this.ctx.seen}constructor(t){let r=t?.target??"draft-2020-12";r==="draft-4"&&(r="draft-04"),r==="draft-7"&&(r="draft-07"),this.ctx=_e({processors:yr,target:r,...t?.metadata&&{metadata:t.metadata},...t?.unrepresentable&&{unrepresentable:t.unrepresentable},...t?.override&&{override:t.override},...t?.io&&{io:t.io}})}process(t,r={path:[],schemaPath:[]}){return T(t,this.ctx,r)}emit(t,r){r&&(r.cycles&&(this.ctx.cycles=r.cycles),r.reused&&(this.ctx.reused=r.reused),r.external&&(this.ctx.external=r.external)),we(this.ctx,t);let n=$e(this.ctx,t),{"~standard":o,...s}=n;return s}};var Rc={};var S=d("ZodMiniType",(e,t)=>{if(!e._zod)throw new Error("Uninitialized schema in ZodMiniType.");k.init(e,t),e.def=t,e.type=t.type,e.parse=(r,n)=>ge(e,r,n,{callee:e.parse}),e.safeParse=(r,n)=>Te(e,r,n),e.parseAsync=async(r,n)=>ye(e,r,n,{callee:e.parseAsync}),e.safeParseAsync=async(r,n)=>Ie(e,r,n),e.check=(...r)=>e.clone({...t,checks:[...t.checks??[],...r.map(n=>typeof n=="function"?{_zod:{check:n,def:{check:"custom"},onattach:[]}}:n)]},{parent:!0}),e.with=e.check,e.clone=(r,n)=>q(e,r,n),e.brand=()=>e,e.register=((r,n)=>(r.add(e,n),e)),e.apply=r=>r(e)}),He=d("ZodMiniString",(e,t)=>{Be.init(e,t),S.init(e,t)});function _(e){return As(He,e)}var A=d("ZodMiniStringFormat",(e,t)=>{P.init(e,t),He.init(e,t)}),Cc=d("ZodMiniEmail",(e,t)=>{xo.init(e,t),A.init(e,t)});function Dm(e){return Cs(Cc,e)}var Nc=d("ZodMiniGUID",(e,t)=>{$o.init(e,t),A.init(e,t)});function Mm(e){return Ns(Nc,e)}var _t=d("ZodMiniUUID",(e,t)=>{ko.init(e,t),A.init(e,t)});function Bm(e){return Os(_t,e)}function Um(e){return Ls(_t,e)}function Fm(e){return Zs(_t,e)}function Hm(e){return js(_t,e)}var oa=d("ZodMiniURL",(e,t)=>{So.init(e,t),A.init(e,t)});function qm(e){return mr(oa,e)}function Jm(e){return mr(oa,{protocol:/^https?$/,hostname:re.domain,...g(e)})}var Oc=d("ZodMiniEmoji",(e,t)=>{vo.init(e,t),A.init(e,t)});function Km(e){return Ds(Oc,e)}var Lc=d("ZodMiniNanoID",(e,t)=>{zo.init(e,t),A.init(e,t)});function Ym(e){return Ms(Lc,e)}var Zc=d("ZodMiniCUID",(e,t)=>{To.init(e,t),A.init(e,t)});function Gm(e){return Bs(Zc,e)}var jc=d("ZodMiniCUID2",(e,t)=>{Io.init(e,t),A.init(e,t)});function Wm(e){return Us(jc,e)}var Dc=d("ZodMiniULID",(e,t)=>{Po.init(e,t),A.init(e,t)});function Vm(e){return Fs(Dc,e)}var Mc=d("ZodMiniXID",(e,t)=>{Eo.init(e,t),A.init(e,t)});function Qm(e){return Hs(Mc,e)}var Bc=d("ZodMiniKSUID",(e,t)=>{Ao.init(e,t),A.init(e,t)});function Xm(e){return qs(Bc,e)}var Uc=d("ZodMiniIPv4",(e,t)=>{Lo.init(e,t),A.init(e,t)});function eh(e){return Js(Uc,e)}var Fc=d("ZodMiniIPv6",(e,t)=>{Zo.init(e,t),A.init(e,t)});function th(e){return Ks(Fc,e)}var Hc=d("ZodMiniCIDRv4",(e,t)=>{Do.init(e,t),A.init(e,t)});function rh(e){return Gs(Hc,e)}var qc=d("ZodMiniCIDRv6",(e,t)=>{Mo.init(e,t),A.init(e,t)});function nh(e){return Ws(qc,e)}var Jc=d("ZodMiniMAC",(e,t)=>{jo.init(e,t),A.init(e,t)});function oh(e){return Ys(Jc,e)}var Kc=d("ZodMiniBase64",(e,t)=>{Uo.init(e,t),A.init(e,t)});function sh(e){return Vs(Kc,e)}var Yc=d("ZodMiniBase64URL",(e,t)=>{Fo.init(e,t),A.init(e,t)});function ih(e){return Qs(Yc,e)}var Gc=d("ZodMiniE164",(e,t)=>{Ho.init(e,t),A.init(e,t)});function ah(e){return Xs(Gc,e)}var Wc=d("ZodMiniJWT",(e,t)=>{qo.init(e,t),A.init(e,t)});function ch(e){return ei(Wc,e)}var wt=d("ZodMiniCustomStringFormat",(e,t)=>{Jo.init(e,t),A.init(e,t)});function uh(e,t,r={}){return Ue(wt,e,t,r)}function lh(e){return Ue(wt,"hostname",re.hostname,e)}function ph(e){return Ue(wt,"hex",re.hex,e)}function fh(e,t){let r=t?.enc??"hex",n=`${e}_${r}`,o=re[n];if(!o)throw new Error(`Unrecognized hash format: ${n}`);return Ue(wt,n,o,t)}var $t=d("ZodMiniNumber",(e,t)=>{ar.init(e,t),S.init(e,t)});function ke(e){return ii($t,e)}var qe=d("ZodMiniNumberFormat",(e,t)=>{Ko.init(e,t),$t.init(e,t)});function dh(e){return ci(qe,e)}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)}var kt=d("ZodMiniBoolean",(e,t)=>{pt.init(e,t),S.init(e,t)});function Je(e){return di(kt,e)}var xt=d("ZodMiniBigInt",(e,t)=>{cr.init(e,t),S.init(e,t)});function bh(e){return hi(xt,e)}var sa=d("ZodMiniBigIntFormat",(e,t)=>{Yo.init(e,t),xt.init(e,t)});function _h(e){return yi(sa,e)}function wh(e){return bi(sa,e)}var Vc=d("ZodMiniSymbol",(e,t)=>{Go.init(e,t),S.init(e,t)});function $h(e){return _i(Vc,e)}var Qc=d("ZodMiniUndefined",(e,t)=>{Wo.init(e,t),S.init(e,t)});function kh(e){return wi(Qc,e)}var Xc=d("ZodMiniNull",(e,t)=>{Vo.init(e,t),S.init(e,t)});function eu(e){return $i(Xc,e)}var tu=d("ZodMiniAny",(e,t)=>{Qo.init(e,t),S.init(e,t)});function xh(){return ki(tu)}var ru=d("ZodMiniUnknown",(e,t)=>{Xo.init(e,t),S.init(e,t)});function wr(){return xi(ru)}var nu=d("ZodMiniNever",(e,t)=>{es.init(e,t),S.init(e,t)});function ou(e){return Si(nu,e)}var su=d("ZodMiniVoid",(e,t)=>{ts.init(e,t),S.init(e,t)});function Sh(e){return vi(su,e)}var $r=d("ZodMiniDate",(e,t)=>{rs.init(e,t),S.init(e,t)});function vh(e){return zi($r,e)}var iu=d("ZodMiniArray",(e,t)=>{ns.init(e,t),S.init(e,t)});function K(e,t){return new iu({type:"array",element:e,...g(t)})}function zh(e){let t=e._zod.def.shape;return gu(Object.keys(t))}var kr=d("ZodMiniObject",(e,t)=>{ur.init(e,t),S.init(e,t),x(e,"shape",()=>t.shape)});function I(e,t){let r={type:"object",shape:e??{},...g(t)};return new kr(r)}function Th(e,t){return new kr({type:"object",shape:e,catchall:ou(),...g(t)})}function Ih(e,t){return new kr({type:"object",shape:e,catchall:wr(),...g(t)})}function xe(e,t){return Kt(e,t)}function Ph(e,t){return ln(e,t)}function Eh(e,t){return Kt(e,t)}function Ah(e,t){return cn(e,t)}function Rh(e,t){return un(e,t)}function Ch(e,t){return pn(ca,e,t)}function Nh(e,t){return fn(ua,e,t)}function Oh(e,t){return e.clone({...e._zod.def,catchall:t})}var ia=d("ZodMiniUnion",(e,t)=>{ft.init(e,t),S.init(e,t)});function au(e,t){return new ia({type:"union",options:e,...g(t)})}var cu=d("ZodMiniXor",(e,t)=>{ia.init(e,t),os.init(e,t)});function Lh(e,t){return new cu({type:"union",options:e,inclusive:!1,...g(t)})}var uu=d("ZodMiniDiscriminatedUnion",(e,t)=>{ss.init(e,t),S.init(e,t)});function Zh(e,t,r){return new uu({type:"union",options:t,discriminator:e,...g(r)})}var lu=d("ZodMiniIntersection",(e,t)=>{is.init(e,t),S.init(e,t)});function jh(e,t){return new lu({type:"intersection",left:e,right:t})}var pu=d("ZodMiniTuple",(e,t)=>{lr.init(e,t),S.init(e,t)});function fu(e,t,r){let n=t instanceof k,o=n?r:t,s=n?t:null;return new pu({type:"tuple",items:e,rest:s,...g(o)})}var xr=d("ZodMiniRecord",(e,t)=>{as.init(e,t),S.init(e,t)});function du(e,t,r){return new xr({type:"record",keyType:e,valueType:t,...g(r)})}function Dh(e,t,r){let n=q(e);return n._zod.values=void 0,new xr({type:"record",keyType:n,valueType:t,...g(r)})}function Mh(e,t,r){return new xr({type:"record",keyType:e,valueType:t,mode:"loose",...g(r)})}var mu=d("ZodMiniMap",(e,t)=>{cs.init(e,t),S.init(e,t)});function Bh(e,t,r){return new mu({type:"map",keyType:e,valueType:t,...g(r)})}var hu=d("ZodMiniSet",(e,t)=>{us.init(e,t),S.init(e,t)});function Uh(e,t){return new hu({type:"set",valueType:e,...g(t)})}var aa=d("ZodMiniEnum",(e,t)=>{ls.init(e,t),S.init(e,t),e.options=Object.values(t.entries)});function gu(e,t){let r=Array.isArray(e)?Object.fromEntries(e.map(n=>[n,n])):e;return new aa({type:"enum",entries:r,...g(t)})}function Fh(e,t){return new aa({type:"enum",entries:e,...g(t)})}var yu=d("ZodMiniLiteral",(e,t)=>{ps.init(e,t),S.init(e,t)});function Hh(e,t){return new yu({type:"literal",values:Array.isArray(e)?e:[e],...g(t)})}var bu=d("ZodMiniFile",(e,t)=>{fs.init(e,t),S.init(e,t)});function qh(e){return Wi(bu,e)}var _u=d("ZodMiniTransform",(e,t)=>{ds.init(e,t),S.init(e,t)});function Jh(e){return new _u({type:"transform",transform:e})}var ca=d("ZodMiniOptional",(e,t)=>{pr.init(e,t),S.init(e,t)});function w(e){return new ca({type:"optional",innerType:e})}var wu=d("ZodMiniExactOptional",(e,t)=>{ms.init(e,t),S.init(e,t)});function Kh(e){return new wu({type:"optional",innerType:e})}var $u=d("ZodMiniNullable",(e,t)=>{hs.init(e,t),S.init(e,t)});function Sr(e){return new $u({type:"nullable",innerType:e})}function Yh(e){return w(Sr(e))}var ku=d("ZodMiniDefault",(e,t)=>{gs.init(e,t),S.init(e,t)});function Gh(e,t){return new ku({type:"default",innerType:e,get defaultValue(){return typeof t=="function"?t():je(t)}})}var xu=d("ZodMiniPrefault",(e,t)=>{ys.init(e,t),S.init(e,t)});function Wh(e,t){return new xu({type:"prefault",innerType:e,get defaultValue(){return typeof t=="function"?t():je(t)}})}var ua=d("ZodMiniNonOptional",(e,t)=>{bs.init(e,t),S.init(e,t)});function Vh(e,t){return new ua({type:"nonoptional",innerType:e,...g(t)})}var Su=d("ZodMiniSuccess",(e,t)=>{_s.init(e,t),S.init(e,t)});function Qh(e){return new Su({type:"success",innerType:e})}var vu=d("ZodMiniCatch",(e,t)=>{ws.init(e,t),S.init(e,t)});function Xh(e,t){return new vu({type:"catch",innerType:e,catchValue:typeof t=="function"?t:()=>t})}var zu=d("ZodMiniNaN",(e,t)=>{$s.init(e,t),S.init(e,t)});function eg(e){return Ii(zu,e)}var la=d("ZodMiniPipe",(e,t)=>{ks.init(e,t),S.init(e,t)});function tg(e,t){return new la({type:"pipe",in:e,out:t})}var pa=d("ZodMiniCodec",(e,t)=>{la.init(e,t),dt.init(e,t)});function rg(e,t,r){return new pa({type:"pipe",in:e,out:t,transform:r.decode,reverseTransform:r.encode})}var Tu=d("ZodMiniReadonly",(e,t)=>{xs.init(e,t),S.init(e,t)});function ng(e){return new Tu({type:"readonly",innerType:e})}var Iu=d("ZodMiniTemplateLiteral",(e,t)=>{Ss.init(e,t),S.init(e,t)});function og(e,t){return new Iu({type:"template_literal",parts:e,...g(t)})}var Pu=d("ZodMiniLazy",(e,t)=>{Ts.init(e,t),S.init(e,t)});function Eu(e){return new Pu({type:"lazy",getter:e})}var Au=d("ZodMiniPromise",(e,t)=>{zs.init(e,t),S.init(e,t)});function sg(e){return new Au({type:"promise",innerType:e})}var fa=d("ZodMiniCustom",(e,t)=>{Is.init(e,t),S.init(e,t)});function ig(e,t){let r=new E({check:"custom",...g(t)});return r._zod.check=e,r}function Ru(e,t){return Vi(fa,e??(()=>!0),t)}function ag(e,t={}){return Qi(fa,e,t)}function cg(e){return Xi(e)}var ug=ea,lg=ta;function pg(e,t={}){let r=Ru(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 fg=(...e)=>ra({Codec:pa,Boolean:kt,String:He},...e);function dg(){let e=Eu(()=>au([_(),ke(),Je(),eu(),K(e),du(_(),e)]));return e}var Cu=d("ZodMiniFunction",(e,t)=>{vs.init(e,t),S.init(e,t)});function mg(e){return new Cu({type:"function",input:Array.isArray(e?.input)?fu(e?.input):e?.input??K(wr()),output:e?.output??wr()})}var da={};ve(da,{ZodMiniISODate:()=>zr,ZodMiniISODateTime:()=>vr,ZodMiniISODuration:()=>Ir,ZodMiniISOTime:()=>Tr,date:()=>gg,datetime:()=>hg,duration:()=>bg,time:()=>yg});var vr=d("ZodMiniISODateTime",(e,t)=>{Ro.init(e,t),A.init(e,t)});function hg(e){return ri(vr,e)}var zr=d("ZodMiniISODate",(e,t)=>{Co.init(e,t),A.init(e,t)});function gg(e){return ni(zr,e)}var Tr=d("ZodMiniISOTime",(e,t)=>{No.init(e,t),A.init(e,t)});function yg(e){return oi(Tr,e)}var Ir=d("ZodMiniISODuration",(e,t)=>{Oo.init(e,t),A.init(e,t)});function bg(e){return si(Ir,e)}var ma={};ve(ma,{bigint:()=>kg,boolean:()=>$g,date:()=>xg,number:()=>wg,string:()=>_g});function _g(e){return Rs(He,e)}function wg(e){return ai($t,e)}function $g(e){return mi(kt,e)}function kg(e){return gi(xt,e)}function xg(e){return Ti($r,e)}var X=_().check(yt(1)),Sg=_().check(bt(/^https?:\/\/.+/)),Ke=I({CLANCY_BASE_BRANCH:w(_()),CLANCY_LABEL:w(_()),CLANCY_MODEL:w(_()),CLANCY_NOTIFY_WEBHOOK:w(_()),CLANCY_STATUS_IN_PROGRESS:w(_()),CLANCY_STATUS_DONE:w(_()),CLANCY_STATUS_REVIEW:w(_()),MAX_ITERATIONS:w(_()),PLAYWRIGHT_ENABLED:w(_()),PLAYWRIGHT_DEV_PORT:w(_()),CLANCY_ROLES:w(_()),CLANCY_PLAN_STATUS:w(_()),CLANCY_PLAN_LABEL:w(_()),CLANCY_PLAN_STATE_TYPE:w(_()),CLANCY_STATUS_PLANNED:w(_()),CLANCY_SKIP_COMMENTS:w(_()),GITHUB_TOKEN:w(_()),GITLAB_TOKEN:w(_()),BITBUCKET_USER:w(_()),BITBUCKET_TOKEN:w(_()),CLANCY_GIT_PLATFORM:w(_()),CLANCY_GIT_API_URL:w(_()),CLANCY_MAX_REWORK:w(_()),CLANCY_TDD:w(_()),CLANCY_MODE:w(_()),CLANCY_BRIEF_ISSUE_TYPE:w(_()),CLANCY_BRIEF_EPIC:w(_()),CLANCY_COMPONENT:w(_()),CLANCY_FIX_RETRIES:w(_()),CLANCY_VERIFY_COMMANDS:w(_()),CLANCY_TOKEN_RATE:w(_()),CLANCY_TIME_LIMIT:w(_()),CLANCY_BRANCH_GUARD:w(_()),CLANCY_LABEL_BRIEF:w(_()),CLANCY_LABEL_PLAN:w(_()),CLANCY_LABEL_BUILD:w(_())}),Ou=xe(Ke,{JIRA_BASE_URL:Sg,JIRA_USER:X,JIRA_API_TOKEN:X,JIRA_PROJECT_KEY:X,CLANCY_JQL_STATUS:w(_()),CLANCY_JQL_SPRINT:w(_())}),Lu=xe(Ke,{GITHUB_TOKEN:X,GITHUB_REPO:X}),Zu=xe(Ke,{LINEAR_API_KEY:X,LINEAR_TEAM_ID:X}),ju=xe(Ke,{SHORTCUT_API_TOKEN:X,SHORTCUT_WORKFLOW:w(_())}),Du=xe(Ke,{NOTION_TOKEN:X,NOTION_DATABASE_ID:X,CLANCY_NOTION_STATUS:w(_()),CLANCY_NOTION_ASSIGNEE:w(_()),CLANCY_NOTION_LABELS:w(_()),CLANCY_NOTION_PARENT:w(_())}),Mu=xe(Ke,{AZDO_ORG:X,AZDO_PROJECT:X,AZDO_PAT:X,CLANCY_AZDO_STATUS:w(_()),CLANCY_AZDO_WIT:w(_())});function Pr(e){if(e.JIRA_BASE_URL){let t=Ou.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=Lu.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=Zu.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=ju.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=Du.safeParse(e);return t.success?{provider:"notion",env:t.data}:`\u2717 Notion env validation failed: ${t.error.message}`}if(e.AZDO_ORG){let t=Mu.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 Bu,mkdirSync as vg,readFileSync as zg}from"node:fs";import{dirname as Tg,join as Uu}from"node:path";function Ig(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=Uu(e,".clancy","progress.txt");vg(Tg(i),{recursive:!0});let a=Ig(new Date);if(n==="BRIEF"||n==="APPROVE_BRIEF"){let f=`${a} | ${n} | ${t} | ${r}
42
+ `;Bu(i,f,"utf8");return}let u=o!=null?` | pr:${o}`:"",l=s?` | parent:${s}`:"",p=`${a} | ${t} | ${r} | ${n}${u}${l}
43
+ `;Bu(i,p,"utf8")}function ga(e){let t=Uu(e,".clancy","progress.txt"),r;try{r=zg(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 b=i[h],y=b.match(/^pr:(\d+)$/),z=b.match(/^parent:(.+)$/);y?p=parseInt(y[1],10):z?f=z[1]:h>=3&&!l&&b===b.toUpperCase()&&b.length>1?l=b:m.push(b)}l&&(l==="APPROVE"&&(l="APPROVE_PLAN"),n.push({timestamp:a,key:u,summary:m.join(" | "),status:l,...p!=null&&{prNumber:p},...f!=null&&{parent:f}}))}return n}function Fu(e,t){let r=ga(e),n=t.toLowerCase(),o;for(let s of r)s.key.toLowerCase()===n&&(o=s);return o}function Hu(e,t){let r=ga(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=ga(e),n=new Map;for(let o of r)n.set(o.key,o);return[...n.values()].filter(o=>o.status===t)}function Pg(e){return e.startsWith("epic/")||e.startsWith("milestone/")}function Ye(e,t,r,n,o){let s=[],i=r?Pg(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 qu(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 Eg}from"node:child_process";function Ju(e){let t=e.trim().replace(/\.git$/,""),r=t.match(/^git@([^:]+):(.+)$/),n=t.match(/^(?:https?|ssh):\/\/(?:[^@]+@)?([^/:]+)(?::\d+)?\/(.+)$/),o=r?.[1]??n?.[1],s=r?.[2]??n?.[2];if(!(!o||!s))return{hostname:o,path:s}}function Ag(e){let t=Ju(e);if(!t)return{host:"unknown",url:e};let{hostname:r,path:n}=t;switch(Rg(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 Rg(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=Eg("git",["remote","get-url","origin"],{encoding:"utf8"}).trim()}catch{return{host:"none"}}return t?e?Cg(t,e):Ag(t):{host:"none"}}function Cg(e,t){let r=Ju(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 Ng=I({id:ke(),links:I({html:w(I({href:w(_())}))}),participants:K(I({state:w(_()),role:_()}))}),Ku=I({values:K(Ng)}),Og=I({content:I({raw:_()}),inline:w(I({path:w(_())})),created_on:_(),user:w(I({nickname:w(_())}))}),ya=I({values:K(Og)}),Lg=I({id:ke(),links:I({self:w(K(I({href:w(_())})))}),reviewers:K(I({status:_()}))}),Yu=I({values:K(Lg)}),Zg=I({text:_(),anchor:w(I({path:w(_())})),createdDate:ke(),author:w(I({slug:w(_())}))}),jg=I({action:_(),comment:w(Zg)}),ba=I({values:K(jg)});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 Gu(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 Wu(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 Vu(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 Qu(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 Xu(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=Ku.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=ya.parse(await m.json()),b=s?h.values.filter(Y=>Y.created_on>s):h.values,y=b.some(Y=>Y.inline!=null),z=b.some(Y=>Y.inline==null&&ie(Y.content.raw));return{changesRequested:y||z,prNumber:l.id,prUrl:p}}catch{return}}async function el(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=ya.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 tl(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=Yu.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()),b=s?Date.parse(s):void 0,y=h.values.filter(C=>C.action==="COMMENTED"&&C.comment&&(b==null||C.comment.createdDate>b)),z=y.some(C=>C.comment.anchor!=null),H=y.some(C=>C.comment.anchor==null&&ie(C.comment.text));return{changesRequested:z||H,prNumber:l.id,prUrl:p}}catch{return}}async function rl(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 Dg=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())})))}),nl=c.array(Dg),Mg=c.object({id:c.number(),body:c.optional(c.nullable(c.string())),created_at:c.string(),user:c.optional(c.object({login:c.string()}))}),_a=c.array(Mg),Bg=c.object({number:c.number(),html_url:c.string(),state:c.string()}),ol=c.array(Bg),Ug=c.object({state:c.string(),user:c.object({login:c.string()}),submitted_at:c.string()}),sl=c.array(Ug),Fg=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()}))}),wa=c.array(Fg);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 il(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=ol.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=wa.parse(await f.json()),b=_a.parse(await m.json()),y=h.filter(O=>!Ar(O.body)),z=b.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 Ma=sl.parse(await O.json()),jt=new Map;for(let le of Ma)le.state==="PENDING"||le.state==="DISMISSED"||jt.set(le.user.login,le.state);let Ba=[...jt.entries()].filter(([,le])=>le==="CHANGES_REQUESTED");Ba.length>0&&(C=!0,M=Ba.map(([le])=>le))}}catch{}return{changesRequested:C,prNumber:l.number,prUrl:l.html_url,reviewers:M}}catch{return}}async function al(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=wa.parse(await a.json()),p=_a.parse(await u.json()),f=l.filter(b=>!Ar(b.body)),m=p.filter(b=>!Ar(b.body)),h=[];for(let b of f){if(!b.body)continue;let y=b.path?`[${b.path}] `:"";h.push(`${y}${b.body}`)}for(let b of m)b.body&&ie(b.body)&&h.push(Ae(b.body));return h}catch{return[]}}async function cl(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 ul(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 ll(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 Hg=I({iid:ke(),web_url:_(),detailed_merge_status:w(_())}),pl=K(Hg),qg=I({body:_(),resolvable:Je(),resolved:w(Je()),system:Je(),type:w(Sr(_())),created_at:w(_()),position:w(I({new_path:w(_())})),author:w(I({username:_()}))}),Jg=I({id:w(_()),notes:K(qg)}),$a=K(Jg);async function fl(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 dl(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 ml(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 hl(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=pl.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=$a.parse(await f.json()),h=!1;for(let b of m){for(let y of b.notes)if(!y.system&&!(o&&y.created_at&&y.created_at<=o)){if(y.type==="DiffNote"&&y.resolvable!==!1&&y.resolved!==!0){h=!0;break}if(ie(y.body)){h=!0;break}}if(h)break}return{changesRequested:h,prNumber:l.iid,prUrl:l.web_url}}catch{return}}async function gl(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=$a.parse(await a.json()),l=[],p=[];for(let f of u){let m=!1;for(let h of f.notes)if(!h.system&&!(o&&h.created_at&&h.created_at<=o))if(h.type==="DiffNote"&&h.resolvable!==!1&&h.resolved!==!0){let b=h.position?.new_path?`[${h.position.new_path}] `:"";l.push(`${b}${h.body}`),m=!0}else ie(h.body)&&(l.push(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 ll(i.token,`${t.owner}/${t.repo}`,r,n,o,s,a);case"gitlab":return fl(i.token,a,t.projectPath,r,n,o,s);case"bitbucket":return Gu(i.username,i.token,t.workspace,t.repoSlug,r,n,o,s);case"bitbucket-server":return Wu(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=Fa(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(yl("git",["fetch","origin",t],{encoding:"utf8",stdio:["pipe","pipe","pipe"],timeout:15e3}),yl("git",["checkout","-b",e,`origin/${t}`],{encoding:"utf8"}),et(e))console.log(N(` \u2713 Created epic branch ${e}`));else return console.log(v(`\u26A0 Created ${e} locally but could not push to origin.`)),!1;return!0}catch(o){return console.log(Oe(`\u2717 Could not create epic branch: ${o instanceof Error?o.message:String(o)}`)),!1}}async function xa(e,t,r,n,o,s=!1,i,a,u){if(!et(r)){console.log(v(`\u26A0 Could not push ${r} to origin.`)),console.log($(" The branch is still available locally. Push manually:")),console.log($(` git push -u origin ${r}`)),s||R(process.cwd(),t.key,t.title,"PUSH_FAILED",void 0,i),L(n);let y=Ce(Date.now()-o);return console.log(""),console.log(v(`\u26A0 ${t.key} implemented but push failed`)+$(` (${y})`)),!1}console.log(N(` \u2713 Pushed ${r}`));let p;try{let y=Yg(process.cwd(),".clancy","verify-attempt.txt"),z=Kg(y,"utf8").trim(),H=parseInt(z,10);H>0&&(p=`Verification checks did not fully pass (${H} attempt(s)). Review carefully.`)}catch{}let f=Z(e).CLANCY_GIT_PLATFORM,m=ce(f),h=`feat(${t.key}): ${t.title}`,b=Ye(e,{key:t.key,title:t.title,description:t.description,provider:e.provider},n,p,u);if(m.host!=="none"&&m.host!=="unknown"&&m.host!=="azure"){let y=await Re(e,m,r,n,h,b);if(y?.ok)console.log(N(` \u2713 PR created: ${y.url}`)),s||R(process.cwd(),t.key,t.title,"PR_CREATED",y.number,i);else if(y&&!y.ok&&y.alreadyExists)console.log(v(` \u26A0 A PR/MR already exists for ${r}. Branch pushed.`)),s||R(process.cwd(),t.key,t.title,"PUSHED",void 0,i);else if(y&&!y.ok){console.log(v(` \u26A0 PR/MR creation failed: ${y.error}`));let z=Rr(m,r,n);console.log(z?$(` Create one manually: ${z}`):$(" Branch pushed \u2014 create a PR/MR manually.")),s||R(process.cwd(),t.key,t.title,"PUSHED",void 0,i)}else{let z=Rr(m,r,n);console.log(z?$(` Create a PR: ${z}`):$(" Branch pushed to remote. Create a PR/MR manually.")),s||R(process.cwd(),t.key,t.title,"PUSHED",void 0,i)}}else m.host==="none"?(console.log(v(`\u26A0 No git remote configured. Branch available locally: ${r}`)),s||R(process.cwd(),t.key,t.title,"LOCAL",void 0,i)):(console.log($(" Branch pushed to remote. Create a PR/MR manually.")),s||R(process.cwd(),t.key,t.title,"PUSHED",void 0,i));if(e.provider!=="github"&&a){let y=e.env.CLANCY_STATUS_REVIEW??e.env.CLANCY_STATUS_DONE;y&&await a.transitionTicket(t,y)}return L(n),!0}async function 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}`,b=qu(t,r,p,e.provider);if(m.host==="none"||m.host==="unknown"||m.host==="azure")return console.log(v("\u26A0 Cannot create epic PR \u2014 no supported git remote detected.")),console.log($(` Push manually: git push origin ${n}`)),console.log($(` Then create a PR targeting ${o}`)),!1;let y=await Re(e,m,n,o,h,b);if(y?.ok){if(console.log(N(` \u2713 Epic PR created: ${y.url}`)),R(process.cwd(),t,r,"EPIC_PR_CREATED",y.number),e.provider!=="github"&&s){let H=e.env.CLANCY_STATUS_REVIEW??e.env.CLANCY_STATUS_DONE;H&&await s.transitionTicket({key:t,title:r,description:"",parentInfo:"none",blockers:"None"},H)}return!0}if(y&&!y.ok&&y.alreadyExists)return console.log(v(` \u26A0 An epic PR already exists for ${n}.`)),R(process.cwd(),t,r,"EPIC_PR_CREATED"),!0;console.log(v(`\u26A0 Epic PR creation failed: ${y?.error??"unknown error"}`)),console.log($(" Create it manually:")),console.log($(` Branch: ${n} \u2192 ${o}`));let z=Rr(m,n,o);return z&&console.log($(` ${z}`)),!1}async function _l(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=Ua();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 Yr(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 Yr(s,s),L(s),L(n,!0);try{Ka(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 Gg(e){return e.includes("hooks.slack.com")}function Wg(e){return JSON.stringify({text:e})}function Vg(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 wl(e,t){let r=Gg(e)?Wg(t):Vg(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 $l(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 wl(o,`\u2713 Clancy completed [${r.key}] ${r.title}`),!0}import{appendFileSync as Qg,mkdirSync as Xg}from"node:fs";import{dirname as ey,join as ty}from"node:path";function kl(e,t,r,n=6600){let o=ty(e,".clancy","costs.log");Xg(ey(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
+ `;Qg(o,f,"utf8")}function xl(e){let t=e.config,r=e.ticket;try{let n=Ut(e.cwd);if(n){let o=Number(t.env.CLANCY_TOKEN_RATE??"6600");kl(e.cwd,r.key,n.startedAt,Number.isFinite(o)&&o>0?o:6600)}}catch{}return!0}import{mkdirSync as ry,readFileSync as ny,renameSync as oy,writeFileSync as sy}from"node:fs";import{join as Sl}from"node:path";function vl(e){return Sl(e,".clancy","quality.json")}function zl(e){try{let t=ny(vl(e),"utf8"),r=JSON.parse(t);if(r&&typeof r.tickets=="object"&&r.tickets!==null&&!Array.isArray(r.tickets))return Sa(r),r}catch{}return{tickets:{},summary:{totalTickets:0,avgReworkCycles:0,avgVerificationRetries:0,avgDuration:0}}}function Sa(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 Tl(e,t){let r=vl(e),n=r+".tmp";ry(Sl(e,".clancy"),{recursive:!0}),sy(n,JSON.stringify(t,null,2)+`
48
+ `,"utf8"),oy(n,r)}function Il(e,t){return e.tickets[t]||(e.tickets[t]={reworkCycles:0,verificationRetries:0}),e.tickets[t]}function Pl(e,t){try{let r=zl(e),n=Il(r,t);n.reworkCycles++,Sa(r),Tl(e,r)}catch{}}function El(e,t,r){try{let n=zl(e),o=Il(n,t);o.deliveredAt=new Date().toISOString(),o.duration=r,Sa(n),Tl(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 Al(e){let t=j(process.cwd(),"PR_CREATED"),r=j(process.cwd(),"REWORK"),n=j(process.cwd(),"PUSHED"),o=j(process.cwd(),"PUSH_FAILED"),s=[...t,...r,...n,...o];if(s.length===0)return;let i=Z(e).CLANCY_GIT_PLATFORM,a=ce(i);if(a.host==="none"||a.host==="unknown"||a.host==="azure")return;let u=vt(e,a);if(!u)return;let l=St(a,Z(e).CLANCY_GIT_API_URL);if(!l)return;let p=s.slice(0,5);for(let f of p){let m=We(e.provider,f.key),h;if(f.timestamp){let y=new Date(f.timestamp.replace(" ","T")+"Z");h=Number.isNaN(y.getTime())?void 0:y.toISOString()}let b;switch(a.host){case"github":b=await il(u.token,`${a.owner}/${a.repo}`,m,a.owner,l,h);break;case"gitlab":b=await hl(u.token,l,a.projectPath,m,h);break;case"bitbucket":b=await Xu(u.username,u.token,a.workspace,a.repoSlug,m,h);break;case"bitbucket-server":b=await tl(u.token,l,a.projectKey,a.repoSlug,m,h);break}if(b?.changesRequested){let y=[],z;switch(a.host){case"github":y=await al(u.token,`${a.owner}/${a.repo}`,b.prNumber,l,h);break;case"gitlab":{let Y=await gl(u.token,l,a.projectPath,b.prNumber,h);y=Y.comments,z=Y.discussionIds;break}case"bitbucket":y=await el(u.username,u.token,a.workspace,a.repoSlug,b.prNumber,h);break;case"bitbucket-server":y=await rl(u.token,l,a.projectKey,a.repoSlug,b.prNumber,h);break}return{ticket:{key:f.key,title:f.summary,description:f.summary,parentInfo:f.parent??"none",blockers:"None"},feedback:y,prNumber:b.prNumber,discussionIds:z,reviewers:b.reviewers??[]}}}}function iy(e){if(e.length===0)return"[clancy] Rework pushed addressing reviewer feedback.";let t=e.length,r=e.slice(0,3).map(o=>`- ${o.slice(0,80)}`).join(`
49
49
  `),n=e.length>3?`
50
50
  - ...`:"";return`[clancy] Rework pushed addressing ${t} feedback item${t!==1?"s":""}.
51
51
 
52
- ${r}${n}`}async function El(e,t,r,n,o){let s=Z(e).CLANCY_GIT_PLATFORM,i=ce(s);if(i.host==="none"||i.host==="unknown"||i.host==="azure")return;let a=vt(e,i);if(!a)return;let u=St(i,Z(e).CLANCY_GIT_API_URL);if(!u)return;let l=sy(r);try{let p=!1;switch(i.host){case"github":p=await al(a.token,`${i.owner}/${i.repo}`,t,l,u);break;case"gitlab":p=await fl(a.token,u,i.projectPath,t,l);break;case"bitbucket":p=await Wu(a.username,a.token,i.workspace,i.repoSlug,t,l);break;case"bitbucket-server":p=await Vu(a.token,u,i.projectKey,i.repoSlug,t,l);break}p&&console.log($(" \u2713 Posted rework comment"))}catch{}if(i.host==="gitlab"&&n&&n.length>0)try{let p=await dl(a.token,u,i.projectPath,t,n);p>0&&console.log($(` \u2713 Resolved ${p} discussion thread${p!==1?"s":""}`))}catch{}if(i.host==="github"&&o&&o.length>0)try{await cl(a.token,`${i.owner}/${i.repo}`,t,o,u)&&console.log($(` \u2713 Re-requested review from ${o.join(", ")}`))}catch{}}async function Rl(e){let t=e.config,r=e.ticket,n=e.ticketBranch,o=e.effectiveTarget,s=e.hasParent,i=e.skipEpicBranch??!1,a=e.isRework??!1,u=s&&!i?r.parentInfo:void 0,l=s&&i?r.parentInfo:void 0,p=l&&/^#\d+$/.test(l),f=l&&t.provider==="github"&&!p?void 0:l;if(a){if(!await xa(t,r,n,o,e.startTime,!0,u,e.board))return R(e.cwd,r.key,r.title,"PUSH_FAILED",void 0,u),!1;R(e.cwd,r.key,r.title,"REWORK",e.reworkPrNumber,u),Il(e.cwd,r.key),e.reworkPrNumber!=null&&await El(t,e.reworkPrNumber,e.prFeedback??[],e.reworkDiscussionIds,e.reworkReviewers)}else{if(!await xa(t,r,n,o,e.startTime,!1,u,e.board,f))return!1;Pl(e.cwd,r.key,Date.now()-e.startTime)}return!0}function Cl(e){if(!e.dryRun)return!0;let t=e.config,r=e.ticket,n=e.ticketBranch,o=e.targetBranch,s=t.provider==="github"?"Milestone":"Epic";return console.log(""),console.log(v("\u2500\u2500 Dry Run \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500")),console.log(` Ticket: ${Ne(`[${r.key}]`)} ${r.title}`),e.isRework&&console.log(" Mode: Rework"),console.log(` ${s}:${" ".repeat(14-s.length)}${r.parentInfo}`),t.provider!=="github"&&console.log(` Blockers: ${r.blockers}`),console.log(` Target branch: ${n} \u2192 ${o}`),r.description&&console.log(` Description: ${r.description}`),console.log(v("\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500")),console.log($(" No changes made. Remove --dry-run to run for real.")),!1}async function Nl(e){let t=e.config,r=e.board;try{let n=j(e.cwd,"PR_CREATED"),o=j(e.cwd,"REWORK"),s=j(e.cwd,"PUSHED"),i=[...n,...o,...s],a=new Set(j(e.cwd,"EPIC_PR_CREATED").map(p=>p.key)),u=new Set(i.map(p=>p.parent).filter(p=>!!p).filter(p=>!a.has(p))),l=t.env.CLANCY_BASE_BRANCH??"main";for(let p of u){let f=await r.fetchChildrenStatus(p);if(f&&f.incomplete===0&&f.total>0){let m=Ve(t.provider,l,p),h=await yl(t,p,p,m,l,r);console.log(h?N(` \u2713 Epic ${p} complete \u2014 PR created`):v(`\u26A0 Epic PR creation failed for ${p}. Create manually:
52
+ ${r}${n}`}async function Rl(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=iy(r);try{let p=!1;switch(i.host){case"github":p=await cl(a.token,`${i.owner}/${i.repo}`,t,l,u);break;case"gitlab":p=await dl(a.token,u,i.projectPath,t,l);break;case"bitbucket":p=await Vu(a.username,a.token,i.workspace,i.repoSlug,t,l);break;case"bitbucket-server":p=await Qu(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 ml(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 ul(a.token,`${i.owner}/${i.repo}`,t,o,u)&&console.log($(` \u2713 Re-requested review from ${o.join(", ")}`))}catch{}}async function Cl(e){let t=e.config,r=e.ticket,n=e.ticketBranch,o=e.effectiveTarget,s=e.hasParent,i=e.skipEpicBranch??!1,a=e.isRework??!1,u=s&&!i?r.parentInfo:void 0,l=s&&i?r.parentInfo:void 0,p=l&&/^#\d+$/.test(l),f=l&&t.provider==="github"&&!p?void 0:l;if(a){if(!await xa(t,r,n,o,e.startTime,!0,u,e.board))return R(e.cwd,r.key,r.title,"PUSH_FAILED",void 0,u),!1;R(e.cwd,r.key,r.title,"REWORK",e.reworkPrNumber,u),Pl(e.cwd,r.key),e.reworkPrNumber!=null&&await Rl(t,e.reworkPrNumber,e.prFeedback??[],e.reworkDiscussionIds,e.reworkReviewers)}else{if(!await xa(t,r,n,o,e.startTime,!1,u,e.board,f))return!1;El(e.cwd,r.key,Date.now()-e.startTime)}return!0}function Nl(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 Ol(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:
53
53
  git push origin ${m}
54
- Then create a PR targeting ${l}`))}}}catch{}return!0}import{spawnSync as Ol}from"node:child_process";function Ll(e,t){let r=["-p","--dangerously-skip-permissions"];t&&r.push("--model",t);let n=Ol("claude",r,{input:e,stdio:["pipe","pipe","pipe"],encoding:"utf8"});return{stdout:n.stdout??"",ok:n.status===0&&!n.error}}function Zl(e,t){let r=["--dangerously-skip-permissions"];t&&r.push("--model",t);let n=Ol("claude",r,{input:e,stdio:["pipe","inherit","inherit"],encoding:"utf8"});return n.status===0&&!n.error}function iy(e){return["You are evaluating whether a ticket can be implemented as pure code changes in a repository.","",`Ticket: [${e.key}] ${e.title}`,"Description:",e.description,"","Can this ticket be completed entirely through code changes committed to a git repository?","","Answer INFEASIBLE if the ticket requires ANY of:","- Manual testing or configuration in external tools or admin panels","- Access to external services, APIs, or platforms not available in the codebase","- Physical, hardware, or infrastructure changes","- Design assets that do not yet exist","- Deployment or infrastructure changes outside the repository","- Human judgment calls that require stakeholder input","","Answer with exactly one line in this format:","FEASIBLE","or","INFEASIBLE: one-line reason","","Do not include any other text."].join(`
55
- `)}function ay(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 jl(e,t){let r=iy(e),{stdout:n,ok:o}=Ll(r,t);return o?ay(n):{feasible:!0}}function Dl(e){let t=e.config,r=e.ticket;if(!e.isRework&&!e.skipFeasibility){console.log($(" Checking feasibility..."));let n=jl({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 Ml=`
54
+ Then create a PR targeting ${l}`))}}}catch{}return!0}import{spawnSync as Ll}from"node:child_process";function Zl(e,t){let r=["-p","--dangerously-skip-permissions"];t&&r.push("--model",t);let n=Ll("claude",r,{input:e,stdio:["pipe","pipe","pipe"],encoding:"utf8"});return{stdout:n.stdout??"",ok:n.status===0&&!n.error}}function jl(e,t){let r=["--dangerously-skip-permissions"];t&&r.push("--model",t);let n=Ll("claude",r,{input:e,stdio:["pipe","inherit","inherit"],encoding:"utf8"});return n.status===0&&!n.error}function ay(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 cy(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 Dl(e,t){let r=ay(e),{stdout:n,ok:o}=Zl(r,t);return o?cy(n):{feasible:!0}}function Ml(e){let t=e.config,r=e.ticket;if(!e.isRework&&!e.skipFeasibility){console.log($(" Checking feasibility..."));let n=Dl({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 Bl=`
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 cy(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 uy(e){return e==="github"?"Milestone":e==="notion"?"Parent page":"Epic"}function Bl(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 uy(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 ly(e){return e==="github"?"Milestone":e==="notion"?"Parent page":"Epic"}function Ul(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?Ml:""}
86
+ Address the specific feedback above. Don't re-implement unrelated areas. Focus only on what was flagged.${e.tdd?Bl:""}
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 Ul(e){let t=cy(e.provider),r=uy(e.provider),n=e.blockers&&e.provider!=="github"?`
94
+ 5. When done, confirm you are finished.`}function Fl(e){let t=uy(e.provider),r=ly(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?Ml:""}
114
+ If the ${e.provider==="github"?"issue":"ticket"} IS implementable, continue:${e.tdd?Bl:""}
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 Fl(e){let t=e.config,r=e.ticket,n=e.isRework??!1,o=e.targetBranch,s=t.env.CLANCY_TDD==="true",i;n?i=Bl({key:r.key,title:r.title,description:r.description,provider:t.provider,feedbackComments:e.prFeedback??[],previousContext:Fa(o),tdd:s}):i=Ul({provider:t.provider,key:r.key,title:r.title,description:r.description,parentInfo:r.parentInfo,blockers:t.provider!=="github"?r.blockers:void 0,tdd:s}),process.env.CLANCY_ONCE_ACTIVE="1";let a;try{a=Zl(i,t.env.CLANCY_MODEL)}finally{delete process.env.CLANCY_ONCE_ACTIVE}return a?!0:(console.log(v("\u26A0 Claude session exited with an error. Skipping merge.")),!1)}import{execFileSync as Sa}from"node:child_process";import{existsSync as ly,readFileSync as py}from"node:fs";import{join as fy}from"node:path";function dy(e){let t={};for(let r of e.split(`
121
- `)){let n=r.trim();if(!n||n.startsWith("#"))continue;let o=n.indexOf("=");if(o===-1)continue;let s=n.slice(0,o).trim(),i=n.slice(o+1).trim();i.length>=2&&(i.startsWith('"')&&i.endsWith('"')||i.startsWith("'")&&i.endsWith("'"))&&(i=i.slice(1,-1)),t[s]=i}return t}function Hl(e){let t=fy(e,".clancy",".env");if(!ly(t))return;let r=py(t,"utf8");return dy(r)}function my(e){try{return Sa("which",[e],{stdio:"ignore"}),!0}catch{return!1}}function hy(){try{return Sa("git",["rev-parse","--git-dir"],{stdio:"ignore"}),!0}catch{return!1}}function Cr(e){for(let n of["claude","git"])if(!my(n))return{ok:!1,error:`\u2717 ${n} is required but not found`};let t=Hl(e);if(!t)return{ok:!1,error:"\u2717 .clancy/.env not found \u2014 run /clancy:init first"};if(!hy())return{ok:!1,error:"\u2717 Not inside a git repository"};let r;try{Sa("git",["ls-remote","origin","HEAD"],{encoding:"utf8",timeout:5e3,stdio:["pipe","pipe","pipe"]})}catch{r="\u26A0 Could not reach origin. PR creation and rework detection may not work."}if(Dt()){let n="\u26A0 Working directory has uncommitted changes \u2014 they will be included in the branch";r=r?`${r}
122
- ${n}`:n}return{ok:!0,env:t,warning:r}}import{execFileSync as zt}from"node:child_process";function ql(e){let t=e.ticketBranch;if(!Xe(t))return;let r;try{r=zt("git",["rev-parse","--abbrev-ref","HEAD"],{encoding:"utf8"}).trim()}catch{return}try{L(t)}catch{return}let n=!1,o=!1;try{n=Dt()}catch{}try{o=zt("git",["log",`origin/${t}..${t}`,"--oneline"],{encoding:"utf8"}).trim().length>0}catch{try{o=zt("git",["log",`origin/${e.targetBranch}..${t}`,"--oneline"],{encoding:"utf8"}).trim().length>0}catch{}}try{L(r)}catch{}if(!(!n&&!o))return{branch:t,hasUncommitted:n,hasUnpushed:o}}async function Jl(e,t,r){try{if(L(r.branch),r.hasUncommitted)try{zt("git",["add","-A"],{encoding:"utf8"}),zt("git",["commit","-m",`fix(${t.ticketKey}): resume after crash`],{encoding:"utf8"}),console.log(N(` \u2713 Committed in-progress work for ${t.ticketKey}`))}catch{return console.log(v(` \u26A0 Could not commit changes on ${r.branch}`)),!1}if(!et(r.branch))return console.log(v(` \u26A0 Could not push ${r.branch} to origin`)),!1;console.log(N(` \u2713 Pushed ${r.branch}`));let o=Z(e).CLANCY_GIT_PLATFORM,s=ce(o),i=`feat(${t.ticketKey}): ${t.ticketTitle}`,a=Ye(e,{key:t.ticketKey,title:t.ticketTitle,description:"",provider:e.provider},t.targetBranch);if(s.host!=="none"&&s.host!=="unknown"&&s.host!=="azure"){let u=await Re(e,s,r.branch,t.targetBranch,i,a);u?.ok?(console.log(N(` \u2713 PR created: ${u.url}`)),R(process.cwd(),t.ticketKey,t.ticketTitle,"RESUMED",u.number,t.parentKey&&t.parentKey!=="none"?t.parentKey:void 0)):(console.log($(" Branch pushed \u2014 create a PR manually.")),R(process.cwd(),t.ticketKey,t.ticketTitle,"RESUMED",void 0,t.parentKey&&t.parentKey!=="none"?t.parentKey:void 0))}else R(process.cwd(),t.ticketKey,t.ticketTitle,"RESUMED",void 0,t.parentKey&&t.parentKey!=="none"?t.parentKey:void 0);try{L(t.targetBranch)}catch{}return!0}catch(n){return console.log(v(` \u26A0 Resume failed: ${n instanceof Error?n.message:String(n)}`)),!1}}async function Kl(e){let t=Ut(e.cwd);if(!t)return!0;if(!Ka(t))return console.log(v(`\u26A0 Another Clancy session is running (PID ${t.pid}, ticket ${t.ticketKey}). Aborting.`)),!1;console.log($(` Stale lock found (PID ${t.pid}, ticket ${t.ticketKey}). Cleaning up...`)),Ft(e.cwd),Ht(e.cwd);try{let r=ql(t);if(r)if(e.isAfk){console.log(v(` \u21BB Resuming crashed session: ${t.ticketKey} on ${r.branch}`));let n=Cr(e.cwd);if(n.ok){let o=Pr(n.env);if(typeof o!="string"&&await Jl(o,t,r))return console.log(N(` \u2713 Resumed ${t.ticketKey}`)),!1}}else console.log(v(` Found in-progress work on ${r.branch}.`+(r.hasUncommitted?" Has uncommitted changes.":"")+(r.hasUnpushed?" Has unpushed commits.":""))),console.log($(" Run in AFK mode (CLANCY_AFK_MODE=1) to auto-resume, or handle manually."))}catch{}return!0}async function Yl(e){let t=e.config;if(!t)return!0;try{let r=j(e.cwd,"PUSHED"),n=j(e.cwd,"PR_CREATED"),o=new Set(n.map(l=>l.key)),s=r.filter(l=>!o.has(l.key));if(!s.length)return!0;let i=Z(t).CLANCY_GIT_PLATFORM,a=ce(i);if(a.host==="none"||a.host==="unknown"||a.host==="azure"){for(let l of s){console.log($(` Skipping PR retry for ${l.key} \u2014 remote host "${a.host}" does not support PR creation`));let p=l.parent&&l.parent!=="none"?l.parent:void 0;R(e.cwd,l.key,l.summary,"PR_CREATED",void 0,p)}return!0}let u=t.env.CLANCY_BASE_BRANCH??"main";for(let l of s){console.log(v(` \u21BB Retrying PR creation for ${l.key} (previously pushed)`));let p=l.parent&&l.parent!=="none"?l.parent:void 0,f=We(t.provider,l.key),m=Ve(t.provider,u,p),h=`feat(${l.key}): ${l.summary}`,b=Ye(t,{key:l.key,title:l.summary,description:l.summary,provider:t.provider},m),y=await Re(t,a,f,m,h,b);y?.ok?(console.log(N(` \u2713 PR created: ${y.url}`)),R(e.cwd,l.key,l.summary,"PR_CREATED",y.number,p)):y&&!y.ok&&y.alreadyExists?(console.log($(` PR already exists for ${l.key}`)),R(e.cwd,l.key,l.summary,"PR_CREATED",void 0,p)):console.log(v(` \u26A0 PR retry failed for ${l.key}${y&&!y.ok?`: ${y.error}`:""} \u2014 create manually`))}}catch{}return!0}var va=c.object({id:c.number(),url:c.optional(c.string())}),Gl=c.object({workItems:c.array(va)}),gy=c.object({rel:c.string(),url:c.string(),attributes:c.optional(c.object({name:c.optional(c.string())}))}),yy=c.object({"System.Title":c.optional(c.string()),"System.Description":c.optional(c.nullable(c.string())),"System.State":c.optional(c.string()),"System.Tags":c.optional(c.nullable(c.string())),"System.AssignedTo":c.optional(c.nullable(c.object({displayName:c.optional(c.string()),uniqueName:c.optional(c.string())}))),"System.WorkItemType":c.optional(c.string())}),za=c.object({id:c.number(),fields:yy,relations:c.optional(c.nullable(c.array(gy)))}),Wl=c.object({value:c.array(za),count:c.optional(c.number())}),Vl=c.object({id:c.string(),name:c.string(),state:c.optional(c.string())}),by=c.object({source:c.optional(c.nullable(va)),target:c.optional(c.nullable(va))}),Ql=c.object({workItemRelations:c.optional(c.array(by))});var Qe="7.1";function Xl(e){return`Basic ${btoa(`:${e}`)}`}function Pt(e){return!(e.includes("'")||e.includes("\\")||e.includes("--")||e.includes(";")||e.includes("/*")||/[^\x20-\x7E\t\n\r]/.test(e))}function Tt(e){if(!Pt(e))throw new Error(`Unsafe WIQL value: ${e.slice(0,50)}`);return e}function At(e,t){return`https://dev.azure.com/${encodeURIComponent(e)}/${encodeURIComponent(t)}/_apis`}function Et(e){return{Authorization:Xl(e),"Content-Type":"application/json"}}function _y(e){return{Authorization:Xl(e),"Content-Type":"application/json-patch+json"}}async function ep(e,t,r){let n;try{n=await fetch(`https://dev.azure.com/${encodeURIComponent(e)}/_apis/projects/${encodeURIComponent(t)}?api-version=${Qe}`,{headers:Et(r)})}catch{return{ok:!1,error:"\u2717 Could not reach Azure DevOps \u2014 check network"}}if(!n.ok)return n.status===401||n.status===403?{ok:!1,error:"\u2717 Azure DevOps auth failed \u2014 check AZDO_PAT"}:{ok:!1,error:`\u2717 Azure DevOps API returned HTTP ${n.status}`};try{let o=await n.json(),s=Vl.safeParse(o);if(s.success&&s.data.id)return{ok:!0}}catch{}return{ok:!1,error:"\u2717 Azure DevOps auth failed \u2014 check AZDO_PAT"}}async function tp(e,t,r,n){try{let o=await fetch(`${At(e,t)}/wit/wiql?api-version=${Qe}`,{method:"POST",headers:Et(r),body:JSON.stringify({query:n})});if(!o.ok)return console.warn(`\u26A0 Azure DevOps WIQL returned HTTP ${o.status}`),[];let s=await o.json(),i=Gl.safeParse(s);return i.success?i.data.workItems.map(a=>a.id):(console.warn(`\u26A0 Unexpected Azure DevOps WIQL response: ${i.error.message}`),[])}catch(o){return console.warn(`\u26A0 Azure DevOps WIQL request failed: ${o instanceof Error?o.message:String(o)}`),[]}}async function Ta(e,t,r,n){if(!n.length)return[];let o=[];for(let s=0;s<n.length;s+=200){let a=n.slice(s,s+200).join(",");try{let u=await fetch(`${At(e,t)}/wit/workitems?ids=${a}&$expand=relations&api-version=${Qe}`,{headers:Et(r)});if(!u.ok){console.warn(`\u26A0 Azure DevOps work items batch returned HTTP ${u.status}`);continue}let l=await u.json(),p=Wl.safeParse(l);if(!p.success){console.warn(`\u26A0 Unexpected Azure DevOps work items response: ${p.error.message}`);continue}o.push(...p.data.value)}catch(u){console.warn(`\u26A0 Azure DevOps work items fetch failed: ${u instanceof Error?u.message:String(u)}`)}}return o}async function It(e,t,r,n){try{let o=await fetch(`${At(e,t)}/wit/workitems/${n}?$expand=relations&api-version=${Qe}`,{headers:Et(r)});if(!o.ok)return;let s=await o.json(),i=za.safeParse(s);return i.success?i.data:void 0}catch{return}}async function Nr(e,t,r,n,o){try{return(await fetch(`${At(e,t)}/wit/workitems/${n}?api-version=${Qe}`,{method:"PATCH",headers:_y(r),body:JSON.stringify(o)})).ok}catch{return!1}}function Or(e){return e?e.split(";").map(t=>t.trim()).filter(Boolean):[]}function Ia(e){return e.join("; ")}function rp(e){let t=e.match(/workItems\/(\d+)/i);if(!t)return;let r=parseInt(t[1],10);return Number.isNaN(r)?void 0:r}async function np(e,t,r,n,o,s,i=5){let a=`SELECT [System.Id] FROM WorkItems WHERE [System.TeamProject] = '${Tt(t)}' AND [System.State] = '${Tt(n)}' AND [System.AssignedTo] = @Me`;o&&(a+=` AND [System.WorkItemType] = '${Tt(o)}'`),a+=" ORDER BY [System.CreatedDate] ASC";let u=await tp(e,t,r,a);if(!u.length)return[];let l=u.slice(0,i*2),f=(await Ta(e,t,r,l)).map(m=>wy(m));return s&&(f=f.filter(m=>!m.labels?.some(h=>h==="clancy:hitl"))),f.slice(0,i)}function wy(e){let t=Or(e.fields["System.Tags"]),r;if(e.relations){for(let n of e.relations)if(n.rel==="System.LinkTypes.Hierarchy-Reverse"){r=rp(n.url);break}}return{key:`azdo-${e.id}`,title:e.fields["System.Title"]??"",description:e.fields["System.Description"]??"",provider:"azdo",workItemId:e.id,parentId:r,labels:t}}var Pa=new Set(["Done","Closed","Completed","Resolved"]);async function op(e,t,r,n){try{let o=await It(e,t,r,n);if(!o)return!1;let s=(o.relations??[]).filter(i=>i.rel==="System.LinkTypes.Dependency-Reverse");if(!s.length)return!1;for(let i of s){let a=rp(i.url);if(a===void 0)continue;let u=await It(e,t,r,a);if(!u)continue;let l=u.fields["System.State"];if(!l||!Pa.has(l))return!0}return!1}catch{return!1}}async function sp(e,t,r,n,o){try{if(o){let s=`Epic: ${o}`,i=await $y(e,t,r,s);if(i&&i.total>0)return i}return await xy(e,t,r,n)}catch{return}}async function $y(e,t,r,n){try{let o=`SELECT [System.Id] FROM WorkItems WHERE [System.TeamProject] = '${Tt(t)}' AND [System.Description] CONTAINS '${Tt(n)}'`,s=await tp(e,t,r,o);if(!s.length)return{total:0,incomplete:0};let i=await Ta(e,t,r,s),a=i.length,u=i.filter(l=>{let p=l.fields["System.State"];return!p||!Pa.has(p)}).length;return{total:a,incomplete:u}}catch{return}}async function xy(e,t,r,n){try{if(Number.isNaN(n))return;let o=`SELECT [System.Id] FROM WorkItemLinks WHERE [Source].[System.Id] = ${n} AND [System.Links.LinkType] = 'System.LinkTypes.Hierarchy-Forward' MODE (MustContain)`,s=await fetch(`${At(e,t)}/wit/wiql?api-version=${Qe}`,{method:"POST",headers:Et(r),body:JSON.stringify({query:o})});if(!s.ok)return;let i=await s.json(),a=Ql.safeParse(i);if(!a.success)return;let l=(a.data.workItemRelations??[]).filter(h=>h.target?.id!==void 0&&h.target.id!==n).map(h=>h.target.id);if(!l.length)return{total:0,incomplete:0};let p=await Ta(e,t,r,l),f=p.length,m=p.filter(h=>{let b=h.fields["System.State"];return!b||!Pa.has(b)}).length;return{total:f,incomplete:m}}catch{return}}function ip(e){let t=e.AZDO_ORG,r=e.AZDO_PROJECT,n=e.AZDO_PAT,o=e.CLANCY_AZDO_STATUS??"New",s=e.CLANCY_AZDO_WIT;return{async ping(){return ep(t,r,n)},validateInputs(){if(!t.trim())return"\u2717 AZDO_ORG must not be empty";if(!r.trim())return"\u2717 AZDO_PROJECT must not be empty";if(!n.trim())return"\u2717 AZDO_PAT must not be empty";if(!Pt(r))return"\u2717 AZDO_PROJECT contains unsafe characters for WIQL queries";if(!Pt(o))return"\u2717 CLANCY_AZDO_STATUS contains unsafe characters for WIQL queries";if(s&&!Pt(s))return"\u2717 CLANCY_AZDO_WIT contains unsafe characters for WIQL queries"},async fetchTicket(i){return(await this.fetchTickets(i))[0]},async fetchTickets(i){let a=await np(t,r,n,o,s,i.excludeHitl);if(i.buildLabel){let u=i.buildLabel;a=a.filter(l=>l.labels?.includes(u))}return a.map(u=>({key:u.key,title:u.title,description:u.description,parentInfo:u.parentId?`azdo-${u.parentId}`:"none",blockers:"None",issueId:String(u.workItemId),labels:u.labels??[],status:o}))},async fetchBlockerStatus(i){let a=Lr(i.key);return a===void 0?!1:op(t,r,n,a)},async fetchChildrenStatus(i,a){let u=a??i.replace("azdo-",""),l=parseInt(u,10);if(!Number.isNaN(l))return sp(t,r,n,l,i)},async transitionTicket(i,a){let u=Lr(i.key);if(u===void 0)return!1;let l=await Nr(t,r,n,u,[{op:"replace",path:"/fields/System.State",value:a}]);return l&&console.log(` \u2192 Transitioned to ${a}`),l},async ensureLabel(i){},async addLabel(i,a){try{let u=Lr(i);if(u===void 0)return;let l=await It(t,r,n,u);if(!l)return;let p=Or(l.fields["System.Tags"]);if(p.includes(a))return;let f=[...p,a];await Nr(t,r,n,u,[{op:"replace",path:"/fields/System.Tags",value:Ia(f)}])}catch(u){console.warn(`\u26A0 addLabel failed: ${u instanceof Error?u.message:String(u)}`)}},async removeLabel(i,a){try{let u=Lr(i);if(u===void 0)return;let l=await It(t,r,n,u);if(!l)return;let p=Or(l.fields["System.Tags"]);if(!p.includes(a))return;let f=p.filter(m=>m!==a);await Nr(t,r,n,u,[{op:"replace",path:"/fields/System.Tags",value:Ia(f)}])}catch(u){console.warn(`\u26A0 removeLabel failed: ${u instanceof Error?u.message:String(u)}`)}},sharedEnv(){return e}}}function Lr(e){let t=parseInt(e.replace("azdo-",""),10);return Number.isNaN(t)?void 0:t}var ky=c.object({login:c.string()}),Sy=/^[a-zA-Z0-9_.-]+\/[a-zA-Z0-9_.-]+$/,Zr;function jr(e){return Sy.test(e)}async function cp(e,t){return Ar(`${D}/repos/${t}`,U(e),{401:"\u2717 GitHub auth failed \u2014 check GITHUB_TOKEN",403:"\u2717 GitHub permission denied",404:`\u2717 GitHub repo "${t}" not found`},"\u2717 Could not reach GitHub \u2014 check network")}async function up(e,t){if(Zr)return Zr;try{let r=await fetch(`${t??D}/user`,{headers:U(e)});if(!r.ok){let s=r.status===401||r.status===403?' Fine-grained PATs need "Account permissions \u2192 read" (or classic PATs need read:user scope).':"";return console.warn(`\u26A0 GitHub /user returned HTTP ${r.status} \u2014 falling back to @me.${s}`),"@me"}let n=await r.json(),o=ky.safeParse(n);if(o.success)return Zr=o.data.login,Zr;console.warn("\u26A0 Unexpected GitHub /user response \u2014 falling back to @me")}catch(r){console.warn(`\u26A0 GitHub /user request failed: ${r instanceof Error?r.message:String(r)} \u2014 falling back to @me`)}return"@me"}async function lp(e,t,r,n,o,s=5){let i,a=new URLSearchParams({state:"open",assignee:n??"@me",per_page:"10"});r&&a.set("labels",r);try{i=await fetch(`${D}/repos/${t}/issues?${a}`,{headers:U(e)})}catch(f){return console.warn(`\u26A0 GitHub API request failed: ${f instanceof Error?f.message:String(f)}`),[]}if(!i.ok)return console.warn(`\u26A0 GitHub API returned HTTP ${i.status}`),[];let u;try{u=await i.json()}catch{return console.warn("\u26A0 GitHub API returned invalid JSON"),[]}let l=rl.safeParse(u);if(!l.success)return console.warn(`\u26A0 Unexpected GitHub response shape: ${l.error.message}`),[];let p=l.data.filter(f=>!f.pull_request);return o&&(p=p.filter(f=>!f.labels?.some(m=>m.name==="clancy:hitl"))),p.slice(0,s).map(f=>({key:`#${f.number}`,title:f.title,description:f.body??"",provider:"github",milestone:f.milestone?.title,labels:f.labels?.map(m=>m.name).filter(m=>!!m)}))}async function pp(e,t,r,n){if(!jr(t))return!1;let o=/Blocked by #(\d+)/gi,s=new Set,i;for(;(i=o.exec(n))!==null;){let a=parseInt(i[1],10);!Number.isNaN(a)&&a!==r&&s.add(a)}if(!s.size)return!1;try{for(let a of s){let u=await fetch(`${D}/repos/${t}/issues/${a}`,{headers:U(e)});if(!u.ok)continue;if((await u.json()).state!=="closed")return!0}return!1}catch{return!1}}async function fp(e,t,r,n){if(jr(t))try{let o=await ap(e,t,`Epic: #${r}`);if(o&&o.total>0)return o;let s=await ap(e,t,`Parent: #${r}`);return s&&s.total>0?s:!o||!s?void 0:n?{total:1,incomplete:1}:s}catch{return}}async function ap(e,t,r){let n=U(e),o=`"${r}" repo:${t} is:issue`,s=new URLSearchParams({q:o,per_page:"1"}),i=await fetch(`${D}/search/issues?${s}`,{headers:n});if(!i.ok)return;let u=(await i.json()).total_count??0;if(u===0)return{total:0,incomplete:0};let l=`"${r}" repo:${t} is:issue is:open`,p=new URLSearchParams({q:l,per_page:"1"}),f=await fetch(`${D}/search/issues?${p}`,{headers:n});if(!f.ok)return{total:u,incomplete:u};let h=(await f.json()).total_count??0;return{total:u,incomplete:h}}var vy=/^(?:Epic|Parent): (#\d+)/m;function zy(e){return e.match(vy)?.[1]}function dp(e){return{async ping(){return cp(e.GITHUB_TOKEN,e.GITHUB_REPO)},validateInputs(){if(!jr(e.GITHUB_REPO))return"\u2717 GITHUB_REPO format is invalid \u2014 expected owner/repo"},async fetchTicket(t){return(await this.fetchTickets(t))[0]},async fetchTickets(t){let r=await up(e.GITHUB_TOKEN);return(await lp(e.GITHUB_TOKEN,e.GITHUB_REPO,t.buildLabel??e.CLANCY_LABEL,r,t.excludeHitl)).map(o=>({key:o.key,title:o.title,description:o.description,parentInfo:o.milestone??zy(o.description)??"none",blockers:"None",labels:o.labels??[],status:"open"}))},async fetchBlockerStatus(t){let r=parseInt(t.key.replace("#",""),10);return Number.isNaN(r)?!1:pp(e.GITHUB_TOKEN,e.GITHUB_REPO,r,t.description)},async fetchChildrenStatus(t,r,n){let o=parseInt(t.replace("#",""),10);if(!Number.isNaN(o))return fp(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 Ty=c.object({type:c.optional(c.object({name:c.optional(c.string())})),inwardIssue:c.optional(c.object({key:c.optional(c.string())}))}),Iy=c.object({summary:c.string(),description:c.optional(c.unknown()),issuelinks:c.optional(c.array(Ty)),parent:c.optional(c.object({key:c.optional(c.string())})),customfield_10014:c.optional(c.nullable(c.string())),labels:c.optional(c.array(c.string()))}),Py=c.object({key:c.string(),fields:Iy}),mp=c.object({total:c.optional(c.number()),isLast:c.optional(c.boolean()),issues:c.array(Py)}),Ay=c.object({id:c.string(),name:c.string()}),hp=c.object({transitions:c.array(Ay)}),Ey=c.object({type:c.optional(c.object({name:c.optional(c.string())})),inwardIssue:c.optional(c.object({key:c.optional(c.string()),fields:c.optional(c.object({status:c.optional(c.object({statusCategory:c.optional(c.object({key:c.optional(c.string())}))}))}))}))}),gp=c.object({fields:c.optional(c.object({issuelinks:c.optional(c.array(Ey))}))}),Aa=c.object({fields:c.optional(c.object({labels:c.optional(c.array(c.string()))}))});var Ry=/^[a-zA-Z0-9 _\-'.]+$/,Ea=/^[A-Z][A-Z0-9]+-\d+$/;function bp(e,t){return Buffer.from(`${e}:${t}`).toString("base64")}function Rt(e){return Ry.test(e)}async function _p(e,t,r){return Ar(`${e}/rest/api/3/project/${t}`,Se(r),{401:"\u2717 Jira auth failed \u2014 check credentials",403:"\u2717 Jira permission denied for this project",404:`\u2717 Jira project "${t}" not found`},"\u2717 Could not reach Jira \u2014 check network")}function Cy(e,t,r,n,o){let s=[`project="${e}"`];return r&&s.push("sprint in openSprints()"),n&&s.push(`labels = "${n}"`),o&&s.push('labels != "clancy:hitl"'),s.push("assignee=currentUser()"),s.push(`status="${t}"`),s.join(" AND ")+" ORDER BY priority ASC"}function Ny(e){if(!e||typeof e!="object")return"";let t=[];function r(n){if(typeof n=="string"){t.push(n);return}if(Array.isArray(n)){for(let o of n)r(o);return}if(n&&typeof n=="object")for(let o of Object.values(n))r(o)}return r(e),t.join(" ")}async function wp(e,t,r,n,o,s,i,a=5){let u=Cy(r,n,o,s,i),l;try{l=await fetch(`${e}/rest/api/3/search/jql`,{method:"POST",headers:{...Se(t),"Content-Type":"application/json"},body:JSON.stringify({jql:u,maxResults:a,fields:["summary","description","issuelinks","parent","customfield_10014","labels"]})})}catch(m){return console.warn(`\u26A0 Jira API request failed: ${m instanceof Error?m.message:String(m)}`),[]}if(!l.ok)return console.warn(`\u26A0 Jira API returned HTTP ${l.status}`),[];let p;try{p=await l.json()}catch{return console.warn("\u26A0 Jira API returned invalid JSON"),[]}let f=mp.safeParse(p);return f.success?f.data.issues.map(m=>{let h=m.fields,b=(h.issuelinks??[]).filter(z=>z.type?.name==="Blocks"&&z.inwardIssue?.key).map(z=>z.inwardIssue?.key).filter(z=>!!z),y=h.parent?.key??h.customfield_10014??void 0;return{key:m.key,title:h.summary,description:Ny(h.description),provider:"jira",epicKey:y,blockers:b,labels:h.labels}}):(console.warn(`\u26A0 Unexpected Jira response shape: ${f.error.message}`),[])}async function $p(e,t,r){if(!Ea.test(r))return!1;try{let n=await fetch(`${e}/rest/api/3/issue/${r}?fields=issuelinks`,{headers:Se(t)});if(!n.ok)return!1;let o=await n.json(),s=gp.safeParse(o);return s.success?(s.data.fields?.issuelinks??[]).some(a=>{if(a.type?.name!=="Blocks"||!a.inwardIssue?.key)return!1;let u=a.inwardIssue.fields?.status?.statusCategory?.key;return u?u!=="done":!1}):!1}catch{return!1}}async function xp(e,t,r){if(Ea.test(r))try{let n=r.split("-")[0],o=await yp(e,t,`project = "${n}" AND description ~ "Epic: ${r}"`);return o&&o.total>0?o:await yp(e,t,`parent = ${r}`)}catch{return}}async function yp(e,t,r){let n=await fetch(`${e}/rest/api/3/search/jql`,{method:"POST",headers:{...Se(t),"Content-Type":"application/json"},body:JSON.stringify({jql:r,maxResults:0})});if(!n.ok)return;let s=(await n.json()).total??0;if(s===0)return{total:0,incomplete:0};let i=await fetch(`${e}/rest/api/3/search/jql`,{method:"POST",headers:{...Se(t),"Content-Type":"application/json"},body:JSON.stringify({jql:`${r} AND statusCategory != "done"`,maxResults:0})});if(!i.ok)return;let u=(await i.json()).total??0;return{total:s,incomplete:u}}async function Oy(e,t,r,n){if(!Ea.test(r))return;let o;try{o=await fetch(`${e}/rest/api/3/issue/${r}/transitions`,{headers:Se(t)})}catch(u){console.warn(`\u26A0 Jira transitions request failed: ${u instanceof Error?u.message:String(u)}`);return}if(!o.ok)return;let s;try{s=await o.json()}catch{console.warn("\u26A0 Jira transitions returned invalid JSON");return}let i=hp.safeParse(s);if(!i.success){console.warn(`\u26A0 Unexpected Jira transitions response: ${i.error.message}`);return}return i.data.transitions.find(u=>u.name===n)?.id}async function kp(e,t,r,n){try{let o=await Oy(e,t,r,n);return o?(await fetch(`${e}/rest/api/3/issue/${r}/transitions`,{method:"POST",headers:{...Se(t),"Content-Type":"application/json"},body:JSON.stringify({transition:{id:o}})})).ok:(console.warn(`\u26A0 Jira transition "${n}" not found for ${r}`),!1)}catch{return!1}}function Sp(e){let t=bp(e.JIRA_USER,e.JIRA_API_TOKEN);return{async ping(){return _p(e.JIRA_BASE_URL,e.JIRA_PROJECT_KEY,t)},validateInputs(){if(!Rt(e.JIRA_PROJECT_KEY))return"\u2717 JIRA_PROJECT_KEY contains invalid characters";if(e.CLANCY_LABEL_BUILD&&!Rt(e.CLANCY_LABEL_BUILD))return"\u2717 CLANCY_LABEL_BUILD contains invalid characters";if(e.CLANCY_LABEL&&!Rt(e.CLANCY_LABEL))return"\u2717 CLANCY_LABEL contains invalid characters";if(e.CLANCY_JQL_STATUS&&!Rt(e.CLANCY_JQL_STATUS))return"\u2717 CLANCY_JQL_STATUS contains invalid characters"},async fetchTicket(r){return(await this.fetchTickets(r))[0]},async fetchTickets(r){let n=await wp(e.JIRA_BASE_URL,t,e.JIRA_PROJECT_KEY,e.CLANCY_JQL_STATUS??"To Do",e.CLANCY_JQL_SPRINT,r.buildLabel??e.CLANCY_LABEL,r.excludeHitl),o=e.CLANCY_JQL_STATUS??"To Do";return n.map(s=>{let i=s.blockers.length?`Blocked by: ${s.blockers.join(", ")}`:"None";return{key:s.key,title:s.title,description:s.description,parentInfo:s.epicKey??"none",blockers:i,labels:s.labels??[],status:o}})},async fetchBlockerStatus(r){return $p(e.JIRA_BASE_URL,t,r.key)},async fetchChildrenStatus(r){return xp(e.JIRA_BASE_URL,t,r)},async transitionTicket(r,n){let o=await kp(e.JIRA_BASE_URL,t,r.key,n);return o&&console.log(` \u2192 Transitioned to ${n}`),o},async ensureLabel(r){},async addLabel(r,n){try{if(!/^[A-Z][A-Z0-9]+-\d+$/.test(r))return;let o=await fetch(`${e.JIRA_BASE_URL}/rest/api/3/issue/${encodeURIComponent(r)}?fields=labels`,{headers:{Authorization:t,Accept:"application/json"}});if(!o.ok){console.warn(`\u26A0 addLabel GET failed: HTTP ${o.status}`);return}let i=Aa.parse(await o.json()).fields?.labels??[];if(i.includes(n))return;let a=await fetch(`${e.JIRA_BASE_URL}/rest/api/3/issue/${encodeURIComponent(r)}`,{method:"PUT",headers:{Authorization:t,"Content-Type":"application/json"},body:JSON.stringify({fields:{labels:[...i,n]}})});a.ok||console.warn(`\u26A0 addLabel PUT returned HTTP ${a.status}`)}catch(o){console.warn(`\u26A0 addLabel failed: ${o instanceof Error?o.message:String(o)}`)}},async removeLabel(r,n){try{if(!/^[A-Z][A-Z0-9]+-\d+$/.test(r))return;let o=await fetch(`${e.JIRA_BASE_URL}/rest/api/3/issue/${encodeURIComponent(r)}?fields=labels`,{headers:{Authorization:t,Accept:"application/json"}});if(!o.ok){console.warn(`\u26A0 removeLabel GET failed: HTTP ${o.status}`);return}let i=Aa.parse(await o.json()).fields?.labels??[];if(!i.includes(n))return;let a=await fetch(`${e.JIRA_BASE_URL}/rest/api/3/issue/${encodeURIComponent(r)}`,{method:"PUT",headers:{Authorization:t,"Content-Type":"application/json"},body:JSON.stringify({fields:{labels:i.filter(u=>u!==n)}})});a.ok||console.warn(`\u26A0 removeLabel PUT returned HTTP ${a.status}`)}catch(o){console.warn(`\u26A0 removeLabel failed: ${o instanceof Error?o.message:String(o)}`)}},sharedEnv(){return e}}}var Ly=c.object({id:c.string(),identifier:c.string(),title:c.string(),description:c.optional(c.nullable(c.string())),parent:c.optional(c.nullable(c.object({identifier:c.string(),title:c.optional(c.string())}))),labels:c.optional(c.object({nodes:c.array(c.object({name:c.string()}))}))}),vp=c.object({data:c.optional(c.object({viewer:c.optional(c.object({assignedIssues:c.optional(c.object({nodes:c.array(Ly)}))}))}))}),zp=c.object({data:c.optional(c.object({viewer:c.optional(c.object({id:c.optional(c.string())}))}))}),Tp=c.object({data:c.optional(c.object({workflowStates:c.optional(c.object({nodes:c.array(c.object({id:c.string()}))}))}))}),Ip=c.object({data:c.optional(c.object({issueUpdate:c.optional(c.object({success:c.optional(c.boolean())}))}))}),Zy=c.object({type:c.string(),relatedIssue:c.optional(c.object({state:c.optional(c.object({type:c.optional(c.string())}))}))}),Pp=c.object({data:c.optional(c.object({issue:c.optional(c.object({relations:c.optional(c.object({nodes:c.array(Zy)}))}))}))}),jy=c.object({state:c.optional(c.object({type:c.optional(c.string())}))}),Ap=c.object({data:c.optional(c.object({issueSearch:c.optional(c.object({nodes:c.array(jy)}))}))}),Ep=c.object({data:c.optional(c.object({team:c.optional(c.object({labels:c.optional(c.object({nodes:c.array(c.object({id:c.string(),name:c.string()}))}))}))}))}),Rp=c.object({data:c.optional(c.object({issueLabels:c.optional(c.object({nodes:c.array(c.object({id:c.string(),name:c.string()}))}))}))}),Cp=c.object({data:c.optional(c.object({issueLabelCreate:c.optional(c.object({issueLabel:c.optional(c.object({id:c.string()})),success:c.optional(c.boolean())}))}))}),Ra=c.object({data:c.optional(c.object({issueSearch:c.optional(c.object({nodes:c.array(c.object({id:c.string(),labels:c.optional(c.object({nodes:c.array(c.object({id:c.string(),name:c.optional(c.string())}))}))}))}))}))});var Dy=/^[a-zA-Z0-9_-]+$/,Np="https://api.linear.app/graphql";function Op(e){return Dy.test(e)}async function V(e,t,r){let n;try{n=await fetch(Np,{method:"POST",headers:{Authorization:e,"Content-Type":"application/json"},body:JSON.stringify({query:t,variables:r})})}catch(o){console.warn(`\u26A0 Linear API request failed: ${o instanceof Error?o.message:String(o)}`);return}if(!n.ok){console.warn(`\u26A0 Linear API returned HTTP ${n.status}`);return}try{return await n.json()}catch{console.warn("\u26A0 Linear API returned invalid JSON");return}}async function Lp(e){let t;try{t=await fetch(Np,{method:"POST",headers:{Authorization:e,"Content-Type":"application/json"},body:JSON.stringify({query:"{ viewer { id } }"})})}catch{return{ok:!1,error:"\u2717 Could not reach Linear \u2014 check network"}}if(!t.ok)return t.status===401||t.status===403?{ok:!1,error:"\u2717 Linear auth failed \u2014 check LINEAR_API_KEY"}:{ok:!1,error:`\u2717 Linear API returned HTTP ${t.status}`};try{let r=await t.json(),n=zp.safeParse(r);if(n.success&&n.data.data?.viewer?.id)return{ok:!0}}catch{}return{ok:!1,error:"\u2717 Linear auth failed \u2014 check LINEAR_API_KEY"}}async function Zp(e,t,r=5){let n=e.CLANCY_LABEL?.trim(),o=!!n,s=o?"labels: { name: { eq: $label } }":"",i=["$teamId: String!",...o?["$label: String!"]:[]],a=['state: { type: { eq: "unstarted" } }',"team: { id: { eq: $teamId } }",s].filter(Boolean),u=`
120
+ 5. When done, confirm you are finished.`}function Hl(e){let t=e.config,r=e.ticket,n=e.isRework??!1,o=e.targetBranch,s=t.env.CLANCY_TDD==="true",i;n?i=Ul({key:r.key,title:r.title,description:r.description,provider:t.provider,feedbackComments:e.prFeedback??[],previousContext:Ha(o),tdd:s}):i=Fl({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=jl(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 va}from"node:child_process";import{existsSync as py,readFileSync as fy}from"node:fs";import{join as dy}from"node:path";function my(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 ql(e){let t=dy(e,".clancy",".env");if(!py(t))return;let r=fy(t,"utf8");return my(r)}function hy(e){try{return va("which",[e],{stdio:"ignore"}),!0}catch{return!1}}function gy(){try{return va("git",["rev-parse","--git-dir"],{stdio:"ignore"}),!0}catch{return!1}}function Cr(e){for(let n of["claude","git"])if(!hy(n))return{ok:!1,error:`\u2717 ${n} is required but not found`};let t=ql(e);if(!t)return{ok:!1,error:"\u2717 .clancy/.env not found \u2014 run /clancy:init first"};if(!gy())return{ok:!1,error:"\u2717 Not inside a git repository"};let r;try{va("git",["ls-remote","origin","HEAD"],{encoding:"utf8",timeout:5e3,stdio:["pipe","pipe","pipe"]})}catch{r="\u26A0 Could not reach origin. PR creation and rework detection may not work."}if(Dt()){let n="\u26A0 Working directory has uncommitted changes \u2014 they will be included in the branch";r=r?`${r}
122
+ ${n}`:n}return{ok:!0,env:t,warning:r}}import{execFileSync as zt}from"node:child_process";function Jl(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=new Set(["PR_CREATED","PUSHED","REWORK","RESUMED"]),i=Fu(process.cwd(),e.ticketKey);return i&&s.has(i.status)?{branch:t,hasUncommitted:!1,hasUnpushed:!1,alreadyDelivered:!0}:void 0}return{branch:t,hasUncommitted:n,hasUnpushed:o,alreadyDelivered:!1}}async function Kl(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 Yl(e){let t=Ut(e.cwd);if(!t)return!0;if(!Ya(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=Jl(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 Kl(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 Gl(e){let t=e.config;if(!t)return!0;try{let r=j(e.cwd,"PUSHED"),n=j(e.cwd,"PR_CREATED"),o=new Set(n.map(l=>l.key)),s=r.filter(l=>!o.has(l.key));if(!s.length)return!0;let i=Z(t).CLANCY_GIT_PLATFORM,a=ce(i);if(a.host==="none"||a.host==="unknown"||a.host==="azure"){for(let l of s){console.log($(` Skipping PR retry for ${l.key} \u2014 remote host "${a.host}" does not support PR creation`));let p=l.parent&&l.parent!=="none"?l.parent:void 0;R(e.cwd,l.key,l.summary,"PR_CREATED",void 0,p)}return!0}let u=t.env.CLANCY_BASE_BRANCH??"main";for(let l of s){console.log(v(` \u21BB Retrying PR creation for ${l.key} (previously pushed)`));let p=l.parent&&l.parent!=="none"?l.parent:void 0,f=We(t.provider,l.key),m=Ve(t.provider,u,p),h=`feat(${l.key}): ${l.summary}`,b=Ye(t,{key:l.key,title:l.summary,description:l.summary,provider:t.provider},m),y=await Re(t,a,f,m,h,b);y?.ok?(console.log(N(` \u2713 PR created: ${y.url}`)),R(e.cwd,l.key,l.summary,"PR_CREATED",y.number,p)):y&&!y.ok&&y.alreadyExists?(console.log($(` PR already exists for ${l.key}`)),R(e.cwd,l.key,l.summary,"PR_CREATED",void 0,p)):console.log(v(` \u26A0 PR retry failed for ${l.key}${y&&!y.ok?`: ${y.error}`:""} \u2014 create manually`))}}catch{}return!0}var za=c.object({id:c.number(),url:c.optional(c.string())}),Wl=c.object({workItems:c.array(za)}),yy=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())}),Ta=c.object({id:c.number(),fields:by,relations:c.optional(c.nullable(c.array(yy)))}),Vl=c.object({value:c.array(Ta),count:c.optional(c.number())}),Ql=c.object({id:c.string(),name:c.string(),state:c.optional(c.string())}),_y=c.object({source:c.optional(c.nullable(za)),target:c.optional(c.nullable(za))}),Xl=c.object({workItemRelations:c.optional(c.array(_y))});var Qe="7.1";function ep(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:ep(e),"Content-Type":"application/json"}}function wy(e){return{Authorization:ep(e),"Content-Type":"application/json-patch+json"}}async function tp(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=Ql.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 rp(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=Wl.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 Ia(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=Vl.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=Ta.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:wy(r),body:JSON.stringify(o)})).ok}catch{return!1}}function Or(e){return e?e.split(";").map(t=>t.trim()).filter(Boolean):[]}function Pa(e){return e.join("; ")}function np(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 op(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 rp(e,t,r,a);if(!u.length)return[];let l=u.slice(0,i*2),f=(await Ia(e,t,r,l)).map(m=>$y(m));return s&&(f=f.filter(m=>!m.labels?.some(h=>h==="clancy:hitl"))),f.slice(0,i)}function $y(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=np(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 Ea=new Set(["Done","Closed","Completed","Resolved"]);async function sp(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=np(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||!Ea.has(l))return!0}return!1}catch{return!1}}async function ip(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 xy(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 rp(e,t,r,o);if(!s.length)return{total:0,incomplete:0};let i=await Ia(e,t,r,s),a=i.length,u=i.filter(l=>{let p=l.fields["System.State"];return!p||!Ea.has(p)}).length;return{total:a,incomplete:u}}catch{return}}async function xy(e,t,r,n){try{if(Number.isNaN(n))return;let o=`SELECT [System.Id] FROM WorkItemLinks WHERE [Source].[System.Id] = ${n} AND [System.Links.LinkType] = 'System.LinkTypes.Hierarchy-Forward' MODE (MustContain)`,s=await fetch(`${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=Xl.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 Ia(e,t,r,l),f=p.length,m=p.filter(h=>{let b=h.fields["System.State"];return!b||!Ea.has(b)}).length;return{total:f,incomplete:m}}catch{return}}function ap(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 tp(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 op(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:sp(t,r,n,a)},async fetchChildrenStatus(i,a){let u=a??i.replace("azdo-",""),l=parseInt(u,10);if(!Number.isNaN(l))return ip(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:Pa(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:Pa(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 Sy=c.object({login:c.string()}),vy=/^[a-zA-Z0-9_.-]+\/[a-zA-Z0-9_.-]+$/,Zr;function jr(e){return vy.test(e)}async function up(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 lp(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=Sy.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 pp(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=nl.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 fp(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 dp(e,t,r,n){if(jr(t))try{let o=await cp(e,t,`Epic: #${r}`);if(o&&o.total>0)return o;let s=await cp(e,t,`Parent: #${r}`);return s&&s.total>0?s:!o||!s?void 0:n?{total:1,incomplete:1}:s}catch{return}}async function cp(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 zy=/^(?:Epic|Parent): (#\d+)/m;function Ty(e){return e.match(zy)?.[1]}function mp(e){return{async ping(){return up(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 lp(e.GITHUB_TOKEN);return(await pp(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??Ty(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:fp(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 dp(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 Iy=c.object({type:c.optional(c.object({name:c.optional(c.string())})),inwardIssue:c.optional(c.object({key:c.optional(c.string())}))}),Py=c.object({summary:c.string(),description:c.optional(c.unknown()),issuelinks:c.optional(c.array(Iy)),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()))}),Ey=c.object({key:c.string(),fields:Py}),hp=c.object({total:c.optional(c.number()),isLast:c.optional(c.boolean()),issues:c.array(Ey)}),Ay=c.object({id:c.string(),name:c.string()}),gp=c.object({transitions:c.array(Ay)}),Ry=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())}))}))}))}))}),yp=c.object({fields:c.optional(c.object({issuelinks:c.optional(c.array(Ry))}))}),Aa=c.object({fields:c.optional(c.object({labels:c.optional(c.array(c.string()))}))});var Cy=/^[a-zA-Z0-9 _\-'.]+$/,Ra=/^[A-Z][A-Z0-9]+-\d+$/;function _p(e,t){return Buffer.from(`${e}:${t}`).toString("base64")}function Rt(e){return Cy.test(e)}async function wp(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 Ny(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 Oy(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 $p(e,t,r,n,o,s,i,a=5){let u=Ny(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=hp.safeParse(p);return f.success?f.data.issues.map(m=>{let h=m.fields,b=(h.issuelinks??[]).filter(z=>z.type?.name==="Blocks"&&z.inwardIssue?.key).map(z=>z.inwardIssue?.key).filter(z=>!!z),y=h.parent?.key??h.customfield_10014??void 0;return{key:m.key,title:h.summary,description:Oy(h.description),provider:"jira",epicKey:y,blockers:b,labels:h.labels}}):(console.warn(`\u26A0 Unexpected Jira response shape: ${f.error.message}`),[])}async function kp(e,t,r){if(!Ra.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=yp.safeParse(o);return s.success?(s.data.fields?.issuelinks??[]).some(a=>{if(a.type?.name!=="Blocks"||!a.inwardIssue?.key)return!1;let u=a.inwardIssue.fields?.status?.statusCategory?.key;return u?u!=="done":!1}):!1}catch{return!1}}async function xp(e,t,r){if(Ra.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 Ly(e,t,r,n){if(!Ra.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=gp.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 Sp(e,t,r,n){try{let o=await Ly(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 vp(e){let t=_p(e.JIRA_USER,e.JIRA_API_TOKEN);return{async ping(){return wp(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 $p(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 xp(e.JIRA_BASE_URL,t,r)},async transitionTicket(r,n){let o=await Sp(e.JIRA_BASE_URL,t,r.key,n);return o&&console.log(` \u2192 Transitioned to ${n}`),o},async ensureLabel(r){},async addLabel(r,n){try{if(!/^[A-Z][A-Z0-9]+-\d+$/.test(r))return;let o=await fetch(`${e.JIRA_BASE_URL}/rest/api/3/issue/${encodeURIComponent(r)}?fields=labels`,{headers:{Authorization:t,Accept:"application/json"}});if(!o.ok){console.warn(`\u26A0 addLabel GET failed: HTTP ${o.status}`);return}let i=Aa.parse(await o.json()).fields?.labels??[];if(i.includes(n))return;let a=await fetch(`${e.JIRA_BASE_URL}/rest/api/3/issue/${encodeURIComponent(r)}`,{method:"PUT",headers:{Authorization:t,"Content-Type":"application/json"},body:JSON.stringify({fields:{labels:[...i,n]}})});a.ok||console.warn(`\u26A0 addLabel PUT returned HTTP ${a.status}`)}catch(o){console.warn(`\u26A0 addLabel failed: ${o instanceof Error?o.message:String(o)}`)}},async removeLabel(r,n){try{if(!/^[A-Z][A-Z0-9]+-\d+$/.test(r))return;let o=await fetch(`${e.JIRA_BASE_URL}/rest/api/3/issue/${encodeURIComponent(r)}?fields=labels`,{headers:{Authorization:t,Accept:"application/json"}});if(!o.ok){console.warn(`\u26A0 removeLabel GET failed: HTTP ${o.status}`);return}let i=Aa.parse(await o.json()).fields?.labels??[];if(!i.includes(n))return;let a=await fetch(`${e.JIRA_BASE_URL}/rest/api/3/issue/${encodeURIComponent(r)}`,{method:"PUT",headers:{Authorization:t,"Content-Type":"application/json"},body:JSON.stringify({fields:{labels:i.filter(u=>u!==n)}})});a.ok||console.warn(`\u26A0 removeLabel PUT returned HTTP ${a.status}`)}catch(o){console.warn(`\u26A0 removeLabel failed: ${o instanceof Error?o.message:String(o)}`)}},sharedEnv(){return e}}}var Zy=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()}))}))}),zp=c.object({data:c.optional(c.object({viewer:c.optional(c.object({assignedIssues:c.optional(c.object({nodes:c.array(Zy)}))}))}))}),Tp=c.object({data:c.optional(c.object({viewer:c.optional(c.object({id:c.optional(c.string())}))}))}),Ip=c.object({data:c.optional(c.object({workflowStates:c.optional(c.object({nodes:c.array(c.object({id:c.string()}))}))}))}),Pp=c.object({data:c.optional(c.object({issueUpdate:c.optional(c.object({success:c.optional(c.boolean())}))}))}),jy=c.object({type:c.string(),relatedIssue:c.optional(c.object({state:c.optional(c.object({type:c.optional(c.string())}))}))}),Ep=c.object({data:c.optional(c.object({issue:c.optional(c.object({relations:c.optional(c.object({nodes:c.array(jy)}))}))}))}),Dy=c.object({state:c.optional(c.object({type:c.optional(c.string())}))}),Ap=c.object({data:c.optional(c.object({issueSearch:c.optional(c.object({nodes:c.array(Dy)}))}))}),Rp=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()}))}))}))}))}),Cp=c.object({data:c.optional(c.object({issueLabels:c.optional(c.object({nodes:c.array(c.object({id:c.string(),name:c.string()}))}))}))}),Np=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())}))}))}),Ca=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 My=/^[a-zA-Z0-9_-]+$/,Op="https://api.linear.app/graphql";function Lp(e){return My.test(e)}async function V(e,t,r){let n;try{n=await fetch(Op,{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 Zp(e){let t;try{t=await fetch(Op,{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=Tp.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 jp(e,t,r=5){let n=e.CLANCY_LABEL?.trim(),o=!!n,s=o?"labels: { name: { eq: $label } }":"",i=["$teamId: String!",...o?["$label: String!"]:[]],a=['state: { type: { eq: "unstarted" } }',"team: { id: { eq: $teamId } }",s].filter(Boolean),u=`
123
123
  query(${i.join(", ")}) {
124
124
  viewer {
125
125
  assignedIssues(
@@ -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=vp.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(b=>b.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(b=>b.name).filter(b=>!!b)}))):[]}async function jp(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=zp.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(b=>b.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(b=>b.name).filter(b=>!!b)}))):[]}async function Dp(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=Pp.safeParse(n);if(!o.success)return!1;let s=o.data.data?.issue?.relations?.nodes??[],i=new Set(["completed","canceled"]);return s.some(a=>{if(a.type!=="blockedBy")return!1;let u=a.relatedIssue?.state?.type;return u?!i.has(u):!1})}async function Dp(e,t,r){try{if(r){let n=await My(e,`Epic: ${r}`);if(n&&n.total>0)return n}return await By(e,t)}catch{return}}async function My(e,t){let n=await V(e,`
157
+ `,{issueId:t}),o=Ep.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 Mp(e,t,r){try{if(r){let n=await By(e,`Epic: ${r}`);if(n&&n.total>0)return n}return await Uy(e,t)}catch{return}}async function By(e,t){let n=await V(e,`
158
158
  query($filter: String!) {
159
159
  issueSearch(query: $filter) {
160
160
  nodes {
@@ -162,7 +162,7 @@ ${n}`:n}return{ok:!0,env:t,warning:r}}import{execFileSync as zt}from"node:child_
162
162
  }
163
163
  }
164
164
  }
165
- `,{filter:t}),o=Ap.safeParse(n);if(!o.success)return;let s=o.data.data?.issueSearch?.nodes??[],i=s.length,a=new Set(["completed","canceled"]),u=s.filter(l=>!l.state?.type||!a.has(l.state.type)).length;return{total:i,incomplete:u}}async function By(e,t){let n=await V(e,`
165
+ `,{filter:t}),o=Ap.safeParse(n);if(!o.success)return;let s=o.data.data?.issueSearch?.nodes??[],i=s.length,a=new Set(["completed","canceled"]),u=s.filter(l=>!l.state?.type||!a.has(l.state.type)).length;return{total:i,incomplete:u}}async function Uy(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 Uy(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 Fy(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=Tp.safeParse(o);if(!s.success){console.warn(`\u26A0 Unexpected Linear workflowStates response: ${s.error.message}`);return}return s.data.data?.workflowStates?.nodes?.[0]?.id}async function Fy(e,t,r){let o=await V(e,`
184
+ `,{teamId:t,name:r}),s=Ip.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 Hy(e,t,r){let o=await V(e,`
185
185
  mutation($issueId: String!, $stateId: String!) {
186
186
  issueUpdate(id: $issueId, input: { stateId: $stateId }) {
187
187
  success
188
188
  }
189
189
  }
190
- `,{issueId:t,stateId:r}),s=Ip.safeParse(o);return s.success?s.data.data?.issueUpdate?.success===!0:(console.warn(`\u26A0 Unexpected Linear issueUpdate response: ${s.error.message}`),!1)}async function Mp(e,t,r,n){try{let o=await Uy(e,t,n);return o?await Fy(e,r,o):(console.warn(`\u26A0 Linear workflow state "${n}" not found \u2014 check team configuration`),!1)}catch{return!1}}function Bp(e){let t=new Map;return{async ping(){return Lp(e.LINEAR_API_KEY)},validateInputs(){if(!Op(e.LINEAR_TEAM_ID))return"\u2717 LINEAR_TEAM_ID contains invalid characters"},async fetchTicket(r){return(await this.fetchTickets(r))[0]},async fetchTickets(r){return(await Zp({LINEAR_API_KEY:e.LINEAR_API_KEY,LINEAR_TEAM_ID:e.LINEAR_TEAM_ID,CLANCY_LABEL:r.buildLabel??e.CLANCY_LABEL},r.excludeHitl)).map(o=>({key:o.key,title:o.title,description:o.description,parentInfo:o.parentIdentifier??"none",blockers:"None",linearIssueId:o.issueId,issueId:o.issueId,labels:o.labels??[],status:"unstarted"}))},async fetchBlockerStatus(r){return r.issueId?jp(e.LINEAR_API_KEY,r.issueId):!1},async fetchChildrenStatus(r,n){return Dp(e.LINEAR_API_KEY,n??r,r)},async transitionTicket(r,n){if(!r.linearIssueId)return!1;let o=await Mp(e.LINEAR_API_KEY,e.LINEAR_TEAM_ID,r.linearIssueId,n);return o&&console.log(` \u2192 Transitioned to ${n}`),o},async ensureLabel(r){try{if(t.has(r))return;let o=await V(e.LINEAR_API_KEY,`
190
+ `,{issueId:t,stateId:r}),s=Pp.safeParse(o);return s.success?s.data.data?.issueUpdate?.success===!0:(console.warn(`\u26A0 Unexpected Linear issueUpdate response: ${s.error.message}`),!1)}async function Bp(e,t,r,n){try{let o=await Fy(e,t,n);return o?await Hy(e,r,o):(console.warn(`\u26A0 Linear workflow state "${n}" not found \u2014 check team configuration`),!1)}catch{return!1}}function Up(e){let t=new Map;return{async ping(){return Zp(e.LINEAR_API_KEY)},validateInputs(){if(!Lp(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 jp({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?Dp(e.LINEAR_API_KEY,r.issueId):!1},async fetchChildrenStatus(r,n){return Mp(e.LINEAR_API_KEY,n??r,r)},async transitionTicket(r,n){if(!r.linearIssueId)return!1;let o=await Bp(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=Ep.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=Rp.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,`
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=Rp.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=Cp.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}),b=Cp.parse(m)?.data?.issueLabelCreate?.issueLabel?.id;b&&t.set(r,b)}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}),b=Np.parse(m)?.data?.issueLabelCreate?.issueLabel?.id;b&&t.set(r,b)}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=Ra.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=Ca.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=Ra.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=Ca.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 Up=c.object({plain_text:c.string()}),Hy=c.object({type:c.literal("status"),status:c.nullable(c.object({id:c.optional(c.string()),name:c.string(),color:c.optional(c.string())}))}),qy=c.object({type:c.literal("select"),select:c.nullable(c.object({id:c.optional(c.string()),name:c.string(),color:c.optional(c.string())}))}),Jy=c.object({id:c.optional(c.string()),name:c.string(),color:c.optional(c.string())}),Ky=c.object({type:c.literal("multi_select"),multi_select:c.array(Jy)}),Yy=c.object({type:c.literal("people"),people:c.array(c.object({id:c.string(),name:c.optional(c.nullable(c.string()))}))}),Gy=c.object({type:c.literal("relation"),relation:c.array(c.object({id:c.string()}))}),Wy=c.object({type:c.literal("title"),title:c.array(Up)}),Vy=c.object({type:c.literal("rich_text"),rich_text:c.array(Up)}),Qy=c.union([Hy,qy,Ky,Yy,Gy,Wy,Vy,c.object({type:c.string()})]),Ca=c.object({id:c.string(),url:c.optional(c.string()),properties:c.record(c.string(),Qy)}),Fp=c.object({results:c.array(Ca),has_more:c.boolean(),next_cursor:c.nullable(c.optional(c.string()))}),Hp=c.object({id:c.string(),type:c.optional(c.string()),name:c.optional(c.nullable(c.string())),avatar_url:c.optional(c.nullable(c.string()))});function Xy(e){if(!e)return;let t=parseInt(e,10);if(!Number.isNaN(t)&&t>=0)return t*1e3;let r=new Date(e);if(!Number.isNaN(r.getTime())){let n=r.getTime()-Date.now();return n>0?n:0}}function Na(e,t,r){let n=t*2**e;return Math.min(n,r)}function eb(e){return e===429||e>=500&&e<=599}async function Ct(e,t,r){let n=Math.max(0,r?.maxRetries??3),o=r?.baseDelayMs??1e3,s=r?.maxDelayMs??1e4,i;for(let a=0;a<=n;a++)try{let u=await fetch(e,t);if(!eb(u.status)||a===n)return u;let l;u.status===429?l=Xy(u.headers.get("Retry-After"))??Na(a,o,s):l=Na(a,o,s),await u.arrayBuffer().catch(()=>{}),await new Promise(p=>setTimeout(p,l))}catch(u){if(i=u,a===n)throw i;let l=Na(a,o,s);await new Promise(p=>setTimeout(p,l))}throw i}var Mr="https://api.notion.com/v1",tb="2022-06-28";function Br(e){return{Authorization:`Bearer ${e}`,"Notion-Version":tb,"Content-Type":"application/json"}}async function Jp(e){let t;try{t=await Ct(`${Mr}/users/me`,{headers:Br(e)})}catch{return{ok:!1,error:"\u2717 Could not reach Notion \u2014 check network"}}if(!t.ok)return t.status===401||t.status===403?{ok:!1,error:"\u2717 Notion auth failed \u2014 check NOTION_TOKEN"}:{ok:!1,error:`\u2717 Notion API returned HTTP ${t.status}`};try{let r=await t.json(),n=Hp.safeParse(r);if(n.success&&n.data.id)return{ok:!0}}catch{}return{ok:!1,error:"\u2717 Notion auth failed \u2014 check NOTION_TOKEN"}}async function Ur(e,t,r,n,o){let s={};r&&(s.filter=r),n&&(s.sorts=n),o&&(s.start_cursor=o);let i;try{i=await Ct(`${Mr}/databases/${t}/query`,{method:"POST",headers:Br(e),body:JSON.stringify(s)})}catch(l){console.warn(`\u26A0 Notion API request failed: ${l instanceof Error?l.message:String(l)}`);return}if(!i.ok){console.warn(`\u26A0 Notion API returned HTTP ${i.status}`);return}let a;try{a=await i.json()}catch{console.warn("\u26A0 Notion API returned invalid JSON");return}let u=Fp.safeParse(a);if(!u.success){console.warn(`\u26A0 Unexpected Notion response shape: ${u.error.message}`);return}return u.data}async function Nt(e,t,r){let n=[],o;for(let i=0;i<10;i++){let a=await Ur(e,t,r,void 0,o);if(!a||(n.push(...a.results),!a.has_more||!a.next_cursor))break;o=a.next_cursor}return n}async function qp(e,t){try{let r=await Ct(`${Mr}/pages/${t}`,{headers:Br(e)});if(!r.ok)return;let n=await r.json(),o=Ca.safeParse(n);return o.success?o.data:void 0}catch{return}}async function Ot(e,t,r){try{return(await Ct(`${Mr}/pages/${t}`,{method:"PATCH",headers:Br(e),body:JSON.stringify({properties:r})})).ok}catch{return!1}}async function Kp(e,t,r,n="Status"){try{let o=await qp(e,r);if(!o)return!1;let s=rb(o,"Blocked by");if(s?.type==="relation"){let u=s.relation;if(u.length>0){for(let l of u){let p=await qp(e,l.id);if(!p)continue;let f=F(p,n,"status");if(f&&!Dr(f))return!0}return!1}}let i=r.replace(/-/g,"").slice(0,8),a=Gp(o);if(a){let u=a.match(/Blocked by (notion-[a-f0-9]{8})/gi);if(u){let l=await Nt(e,t);if(!l.length)return!1;for(let p of u){let f=p.replace(/blocked by notion-/i,"").toLowerCase();if(f!==i){for(let m of l)if(m.id.replace(/-/g,"").slice(0,8)===f){let b=F(m,n,"status");if(b&&!Dr(b))return!0}}}}}return!1}catch{return!1}}async function Yp(e,t,r,n="Epic",o="Status"){try{let s=await nb(e,t,`Epic: ${r}`,o);if(s&&s.total>0)return s;let i=await sb(e,t,r);return i?await ob(e,t,i.id,n,o):void 0}catch{return}}function F(e,t,r){let n=e.properties[t];if(!(!n||n.type!==r))switch(r){case"status":return n.status?.name;case"select":return n.select?.name;case"title":return n.title.map(s=>s.plain_text).join("");case"rich_text":return n.rich_text.map(s=>s.plain_text).join("");case"multi_select":return n.multi_select.map(s=>s.name);case"people":return n.people.map(s=>s.id);case"relation":return n.relation.map(s=>s.id);default:return}}function rb(e,t){if(e.properties[t])return e.properties[t];let r=t.toLowerCase();for(let[n,o]of Object.entries(e.properties))if(n.toLowerCase()===r)return o}function Dr(e){let t=e.toLowerCase();return t==="done"||t==="complete"||t==="completed"||t==="closed"}function Gp(e){for(let t of["Description","description","Body","body"]){let r=F(e,t,"rich_text");if(r)return r}}async function nb(e,t,r,n="Status"){let o=await Nt(e,t);if(!o.length)return;let s=o.filter(u=>Gp(u)?.includes(r)),i=s.length;if(i===0)return{total:0,incomplete:0};let a=s.filter(u=>{let l=F(u,n,"status")??F(u,n,"select");return!l||!Dr(l)}).length;return{total:i,incomplete:a}}async function ob(e,t,r,n,o="Status"){let s=await Ur(e,t,{property:n,relation:{contains:r}});if(!s)return;let i=s.results.length;if(i===0)return{total:0,incomplete:0};let a=s.results.filter(u=>{let l=F(u,o,"status")??F(u,o,"select");return!l||!Dr(l)}).length;return{total:i,incomplete:a}}async function sb(e,t,r){let n=r.replace("notion-","");return n?(await Nt(e,t)).find(s=>s.id.replace(/-/g,"").slice(0,8)===n):void 0}var ib="Status",ab="Assignee",cb="Labels",ub="Epic";function Vp(e){let t=e.CLANCY_NOTION_STATUS??ib,r=e.CLANCY_NOTION_ASSIGNEE??ab,n=e.CLANCY_NOTION_LABELS??cb,o=e.CLANCY_NOTION_PARENT??ub;return{async ping(){return Jp(e.NOTION_TOKEN)},validateInputs(){if(!/^[0-9a-f]{8}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{12}$/i.test(e.NOTION_DATABASE_ID))return"\u2717 NOTION_DATABASE_ID does not look like a valid UUID. Use the database ID from the Notion URL, not the full URL."},async fetchTicket(s){return(await this.fetchTickets(s))[0]},async fetchTickets(s){let i=lb(t,"To-do"),a=await Ur(e.NOTION_TOKEN,e.NOTION_DATABASE_ID,i);if(!a)return[];let u=a.results;s.excludeHitl&&(u=u.filter(p=>!F(p,n,"multi_select")?.includes("clancy:hitl")));let l=s.buildLabel??e.CLANCY_LABEL;return l&&(u=u.filter(p=>F(p,n,"multi_select")?.includes(l))),u.slice(0,5).map(p=>pb(p,{labelsProp:n,parentProp:o,assigneeProp:r}))},async fetchBlockerStatus(s){let i=s.issueId;return i?Kp(e.NOTION_TOKEN,e.NOTION_DATABASE_ID,i,t):!1},async fetchChildrenStatus(s){return Yp(e.NOTION_TOKEN,e.NOTION_DATABASE_ID,s,o,t)},async transitionTicket(s,i){let a=s.issueId;if(!a)return!1;if(await Ot(e.NOTION_TOKEN,a,{[t]:{status:{name:i}}}))return console.log(` \u2192 Transitioned to ${i}`),!0;let l=await Ot(e.NOTION_TOKEN,a,{[t]:{select:{name:i}}});return l&&console.log(` \u2192 Transitioned to ${i}`),l},async ensureLabel(s){},async addLabel(s,i){try{let a=await Wp(e.NOTION_TOKEN,e.NOTION_DATABASE_ID,s);if(!a)return;let u=F(a,n,"multi_select")??[];if(u.includes(i))return;let l=[...u,i].map(p=>({name:p}));await Ot(e.NOTION_TOKEN,a.id,{[n]:{multi_select:l}})}catch(a){console.warn(`\u26A0 addLabel failed: ${a instanceof Error?a.message:String(a)}`)}},async removeLabel(s,i){try{let a=await Wp(e.NOTION_TOKEN,e.NOTION_DATABASE_ID,s);if(!a)return;let u=F(a,n,"multi_select")??[];if(!u.includes(i))return;let l=u.filter(p=>p!==i).map(p=>({name:p}));await Ot(e.NOTION_TOKEN,a.id,{[n]:{multi_select:l}})}catch(a){console.warn(`\u26A0 removeLabel failed: ${a instanceof Error?a.message:String(a)}`)}},sharedEnv(){return e}}}function lb(e,t){let r=t??"To-do";return{or:[{property:e,status:{equals:r}},{property:e,select:{equals:r}}]}}function pb(e,t){let n=`notion-${e.id.replace(/-/g,"").slice(0,8)}`,o="";for(let[l,p]of Object.entries(e.properties))if(p.type==="title"){o=F(e,l,"title")??"";break}let s="";for(let l of["Description","description","Body","body"]){let p=F(e,l,"rich_text");if(p){s=p;break}}let i=F(e,t.parentProp,"relation"),a=i&&i.length>0?`notion-${i[0].replace(/-/g,"").slice(0,8)}`:"none",u=F(e,t.labelsProp,"multi_select")??[];return{key:n,title:o,description:s,parentInfo:a,blockers:"None",issueId:e.id,labels:u,status:"To-do"}}async function Wp(e,t,r){let n=r.replace("notion-","");return n?(await Nt(e,t)).find(s=>s.id.replace(/-/g,"").slice(0,8)===n):void 0}var fb=c.object({verb:c.string(),subject_id:c.number(),object_id:c.number()}),Oa=c.object({id:c.number(),name:c.string(),description:c.optional(c.nullable(c.string())),story_type:c.optional(c.string()),blocked:c.optional(c.boolean()),story_links:c.optional(c.array(fb)),label_ids:c.optional(c.array(c.number())),labels:c.optional(c.array(c.object({id:c.number(),name:c.string()}))),epic_id:c.optional(c.nullable(c.number())),workflow_state_id:c.optional(c.number()),owner_ids:c.optional(c.array(c.string()))}),La=c.object({data:c.array(Oa),next:c.optional(c.nullable(c.string())),total:c.optional(c.number())}),Fr=Oa,db=c.object({id:c.number(),name:c.string(),type:c.string()}),mb=c.object({id:c.number(),name:c.string(),states:c.array(db)}),Qp=c.array(mb),Xp=c.object({id:c.number(),name:c.string()}),ef=c.array(Xp),tf=Xp,rf=c.array(Oa),nf=c.object({id:c.string(),mention_name:c.optional(c.string())});var ne="https://api.app.shortcut.com/api/v3";function oe(e){return{"Shortcut-Token":e,"Content-Type":"application/json"}}var Hr;var Lt;async function of(e){let t;try{t=await fetch(`${ne}/member-info`,{headers:oe(e)})}catch{return{ok:!1,error:"\u2717 Could not reach Shortcut \u2014 check network"}}if(!t.ok)return t.status===401||t.status===403?{ok:!1,error:"\u2717 Shortcut auth failed \u2014 check SHORTCUT_API_TOKEN"}:{ok:!1,error:`\u2717 Shortcut API returned HTTP ${t.status}`};try{let r=await t.json(),n=nf.safeParse(r);if(n.success&&n.data.id)return{ok:!0}}catch{}return{ok:!1,error:"\u2717 Shortcut auth failed \u2014 check SHORTCUT_API_TOKEN"}}async function Zt(e){if(Hr)return Hr;try{let t=await fetch(`${ne}/workflows`,{headers:oe(e)});if(!t.ok)return console.warn(`\u26A0 Shortcut /workflows returned HTTP ${t.status}`),[];let r=await t.json(),n=Qp.safeParse(r);return n.success?(Hr=n.data,Hr):(console.warn(`\u26A0 Unexpected Shortcut workflows response: ${n.error.message}`),[])}catch(t){return console.warn(`\u26A0 Shortcut /workflows request failed: ${t instanceof Error?t.message:String(t)}`),[]}}async function sf(e,t,r){let n=await Zt(e);for(let o of n){if(r&&o.name!==r)continue;let s=o.states.find(i=>i.name.toLowerCase()===t.toLowerCase());if(s)return s.id}}async function af(e,t,r){let n=await Zt(e),o=[];for(let s of n)if(!(r&&s.name!==r))for(let i of s.states)i.type===t&&o.push(i.id);return o}async function cf(e,t,r,n,o,s=5){if(!t.length)return[];let i,a={};t.length&&(a.workflow_state_ids=t),n&&(a.owner_ids=[n]),r&&(a.label_name=r);try{i=await fetch(`${ne}/stories/search`,{method:"POST",headers:oe(e),body:JSON.stringify(a)})}catch(f){return console.warn(`\u26A0 Shortcut API request failed: ${f instanceof Error?f.message:String(f)}`),[]}if(!i.ok)return console.warn(`\u26A0 Shortcut API returned HTTP ${i.status}`),[];let u;try{u=await i.json()}catch{return console.warn("\u26A0 Shortcut API returned invalid JSON"),[]}let l=La.safeParse(u);if(!l.success)return console.warn(`\u26A0 Unexpected Shortcut response shape: ${l.error.message}`),[];let p=l.data.data;return o&&(p=p.filter(f=>!f.labels?.some(m=>m.name==="clancy:hitl"))),p.slice(0,s).map(f=>({key:`sc-${f.id}`,title:f.name,description:f.description??"",provider:"shortcut",storyId:f.id,epicId:f.epic_id??void 0,labels:f.labels?.map(m=>m.name).filter(m=>!!m)}))}async function uf(e,t){try{let r=await fetch(`${ne}/stories/${t}`,{headers:oe(e)});if(!r.ok)return!1;let n=await r.json(),o=Fr.safeParse(n);if(!o.success)return!1;let s=o.data;if(!s.blocked)return!1;let i=(s.story_links??[]).filter(l=>l.verb==="is blocked by");if(!i.length)return!1;let a=await Zt(e),u=new Set;for(let l of a)for(let p of l.states)p.type==="done"&&u.add(p.id);for(let l of i){let p=l.object_id,f=await fetch(`${ne}/stories/${p}`,{headers:oe(e)});if(!f.ok)continue;let m=await f.json(),h=Fr.safeParse(m);if(h.success&&h.data.workflow_state_id!==void 0&&!u.has(h.data.workflow_state_id))return!0}return!1}catch{return!1}}async function lf(e,t,r){try{if(r){let n=await hb(e,`Epic: ${r}`);if(n&&n.total>0)return n}return await gb(e,t)}catch{return}}async function hb(e,t){try{let r=await fetch(`${ne}/stories/search`,{method:"POST",headers:oe(e),body:JSON.stringify({query:t})});if(!r.ok)return;let n=await r.json(),o=La.safeParse(n);if(!o.success)return;let s=o.data.data,i=s.length;if(i===0)return{total:0,incomplete:0};let a=await Zt(e),u=new Set;for(let p of a)for(let f of p.states)f.type==="done"&&u.add(f.id);let l=s.filter(p=>p.workflow_state_id===void 0||!u.has(p.workflow_state_id)).length;return{total:i,incomplete:l}}catch{return}}async function gb(e,t){try{let r=await fetch(`${ne}/epics/${t}/stories`,{headers:oe(e)});if(!r.ok)return;let n=await r.json(),o=rf.safeParse(n);if(!o.success)return;let s=o.data,i=s.length;if(i===0)return{total:0,incomplete:0};let a=await Zt(e),u=new Set;for(let p of a)for(let f of p.states)f.type==="done"&&u.add(f.id);let l=s.filter(p=>p.workflow_state_id===void 0||!u.has(p.workflow_state_id)).length;return{total:i,incomplete:l}}catch{return}}async function pf(e,t,r){try{return(await fetch(`${ne}/stories/${t}`,{method:"PUT",headers:oe(e),body:JSON.stringify({workflow_state_id:r})})).ok}catch{return!1}}async function qr(e){if(Lt)return Lt;try{let t=await fetch(`${ne}/labels`,{headers:oe(e)});if(!t.ok)return console.warn(`\u26A0 Shortcut /labels returned HTTP ${t.status}`),[];let r=await t.json(),n=ef.safeParse(r);return n.success?(Lt=n.data,Lt):(console.warn(`\u26A0 Unexpected Shortcut labels response: ${n.error.message}`),[])}catch(t){return console.warn(`\u26A0 Shortcut /labels request failed: ${t instanceof Error?t.message:String(t)}`),[]}}async function ff(e,t){try{let r=await fetch(`${ne}/labels`,{method:"POST",headers:oe(e),body:JSON.stringify({name:t,color:"#0075ca"})});if(!r.ok){console.warn(`\u26A0 Shortcut label create returned HTTP ${r.status}`);return}let n=await r.json(),o=tf.safeParse(n);return o.success?(Lt=void 0,o.data.id):void 0}catch(r){console.warn(`\u26A0 Shortcut label create failed: ${r instanceof Error?r.message:String(r)}`);return}}async function Za(e,t){try{let r=await fetch(`${ne}/stories/${t}`,{headers:oe(e)});if(!r.ok)return;let n=await r.json(),o=Fr.safeParse(n);return o.success?o.data.label_ids??[]:void 0}catch{return}}async function ja(e,t,r){try{let n=await fetch(`${ne}/stories/${t}`,{method:"PUT",headers:oe(e),body:JSON.stringify({label_ids:r})});return n.ok||console.warn(`\u26A0 Shortcut story label update returned HTTP ${n.status}`),n.ok}catch(n){return console.warn(`\u26A0 Shortcut story label update failed: ${n instanceof Error?n.message:String(n)}`),!1}}function df(e){return{async ping(){return of(e.SHORTCUT_API_TOKEN)},validateInputs(){},async fetchTicket(t){return(await this.fetchTickets(t))[0]},async fetchTickets(t){let r=await af(e.SHORTCUT_API_TOKEN,"unstarted",e.SHORTCUT_WORKFLOW);return(await cf(e.SHORTCUT_API_TOKEN,r,t.buildLabel??e.CLANCY_LABEL,void 0,t.excludeHitl)).map(o=>({key:o.key,title:o.title,description:o.description,parentInfo:o.epicId?`epic-${o.epicId}`:"none",blockers:"None",issueId:String(o.storyId),labels:o.labels??[],status:"unstarted"}))},async fetchBlockerStatus(t){let r=Jr(t.key);return r===void 0?!1:uf(e.SHORTCUT_API_TOKEN,r)},async fetchChildrenStatus(t,r){let n=r??t.replace(/^(sc-|epic-)/,""),o=parseInt(n,10);if(!Number.isNaN(o))return lf(e.SHORTCUT_API_TOKEN,o,t)},async transitionTicket(t,r){let n=Jr(t.key);if(n===void 0)return!1;let o=await sf(e.SHORTCUT_API_TOKEN,r,e.SHORTCUT_WORKFLOW);if(o===void 0)return console.warn(`\u26A0 Shortcut workflow state "${r}" not found \u2014 check workflow configuration`),!1;let s=await pf(e.SHORTCUT_API_TOKEN,n,o);return s&&console.log(` \u2192 Transitioned to ${r}`),s},async ensureLabel(t){try{if((await qr(e.SHORTCUT_API_TOKEN)).find(o=>o.name===t))return;await ff(e.SHORTCUT_API_TOKEN,t)}catch(r){console.warn(`\u26A0 ensureLabel failed: ${r instanceof Error?r.message:String(r)}`)}},async addLabel(t,r){try{await this.ensureLabel(r);let n=Jr(t);if(n===void 0)return;let s=(await qr(e.SHORTCUT_API_TOKEN)).find(a=>a.name===r);if(!s)return;let i=await Za(e.SHORTCUT_API_TOKEN,n);if(!i||i.includes(s.id))return;await ja(e.SHORTCUT_API_TOKEN,n,[...i,s.id])}catch(n){console.warn(`\u26A0 addLabel failed: ${n instanceof Error?n.message:String(n)}`)}},async removeLabel(t,r){try{let n=Jr(t);if(n===void 0)return;let s=(await qr(e.SHORTCUT_API_TOKEN)).find(a=>a.name===r);if(!s)return;let i=await Za(e.SHORTCUT_API_TOKEN,n);if(!i||!i.includes(s.id))return;await ja(e.SHORTCUT_API_TOKEN,n,i.filter(a=>a!==s.id))}catch(n){console.warn(`\u26A0 removeLabel failed: ${n instanceof Error?n.message:String(n)}`)}},sharedEnv(){return e}}}function Jr(e){let t=parseInt(e.replace("sc-",""),10);return Number.isNaN(t)?void 0:t}function mf(e){switch(e.provider){case"jira":return Sp(e.env);case"github":return dp(e.env);case"linear":return Bp(e.env);case"shortcut":return df(e.env);case"notion":return Vp(e.env);case"azdo":return ip(e.env)}}async function hf(e){console.log($("\u250C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510")),console.log($("\u2502")+Ne(" \u{1F916} Clancy \u2014 once mode ")+$("\u2502")),console.log($("\u2502")+$(` "Let's roll." `)+$("\u2502")),console.log($("\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518")),console.log("");let t=Cr(e.cwd);if(!t.ok)return console.log(t.error),!1;t.warning&&console.log(t.warning);let r=Pr(t.env);if(typeof r=="string")return console.log(r),!1;let n=r,o=mf(n),s=o.validateInputs();if(s)return console.log(s),!1;let i=await o.ping();return i.ok?(console.log(N("\u2705 Preflight passed")),e.config=n,e.board=o,!0):(console.log(i.error),!1)}async function gf(e){let t=e.config;try{let r=await Al(t);r&&(e.isRework=!0,e.ticket=r.ticket,e.prFeedback=r.feedback,e.reworkPrNumber=r.prNumber,e.reworkDiscussionIds=r.discussionIds,e.reworkReviewers=r.reviewers,console.log(v(` \u21BB PR rework: [${e.ticket.key}] ${e.ticket.title}`)))}catch{}return!0}function yb(e){return e.CLANCY_LABEL_BUILD||e.CLANCY_LABEL||void 0}function bb(e){return e.CLANCY_LABEL_PLAN||e.CLANCY_PLAN_LABEL||void 0}function _b(e){return e?.isAfk??process.env.CLANCY_AFK_MODE==="1"}async function yf(e,t){let r=_b(t),n=e.sharedEnv(),o=yb(n),s=bb(n),i=await e.fetchTickets({excludeHitl:r,buildLabel:o});if(i.length)for(let a of i){if(s&&a.labels?.includes(s)){console.log(`Skipping ${a.key} \u2014 still has plan label`);continue}if(!await e.fetchBlockerStatus(a))return console.log(`Selected ${a.key}${a.status?` (status: ${a.status})`:""}`),a;console.log(`Skipping ${a.key} \u2014 blocked`)}}async function bf(e){let t=e.config;if(e.ticket||(e.ticket=await yf(e.board)),!e.ticket)return console.log($("No tickets found. All done!")),!1;if(e.isRework){let a=parseInt(Z(t).CLANCY_MAX_REWORK??"3",10),u=Number.isFinite(a)&&a>0?a:3;if(Fu(e.cwd,e.ticket.key)>=u)return console.log(v(`\u26A0 ${e.ticket.key} has reached max rework cycles (${u}) \u2014 needs human intervention`)),R(e.cwd,e.ticket.key,e.ticket.title,"SKIPPED"),!1}let r=t.env.CLANCY_BASE_BRANCH??"main",n=e.ticket.parentInfo!=="none"?e.ticket.parentInfo:void 0,o=We(t.provider,e.ticket.key),s=Ve(t.provider,r,n);e.baseBranch=r,e.ticketBranch=o,e.targetBranch=s,e.hasParent=e.ticket.parentInfo!=="none";let i=t.provider==="github"?"Milestone":"Epic";return console.log(""),console.log(`\u{1F3AB} ${Ne(`[${e.ticket.key}]`)} ${e.ticket.title}`),console.log($(` ${i}: ${e.ticket.parentInfo} | Branch: ${o} \u2192 ${s}`)),t.provider!=="github"&&e.ticket.blockers!=="None"&&console.log(v(` Blockers: ${e.ticket.blockers}`)),console.log(""),!0}async function _f(e){let t=e.config,r=e.board,n=e.ticket,o=t.env.CLANCY_STATUS_IN_PROGRESS;return o&&await r.transitionTicket(n,o),!0}async function xb(e){let t=Ha(e);if(await Kl(t))try{if(!await hf(t)||!await Nl(t)||!await Yl(t)||!await gf(t)||!await bf(t)||!Cl(t)||!Dl(t)||!await bl(t)||!await _f(t)||!Fl(t)||!await Rl(t))return;xl(t),await wl(t)}catch(r){let n=r instanceof Error?r.message:String(r),o=Ce(Date.now()-t.startTime);if(console.error(""),console.error(Oe("\u274C Clancy stopped")+$(` (${o})`)),console.error(Oe(` ${n}`)),console.error($(` "I'd rather let Herman go."`)),t.originalBranch)try{L(t.originalBranch)}catch{}}finally{t.lockOwner&&(Ft(t.cwd),Ht(t.cwd))}}process.argv[1]&&$b(import.meta.url)===wb(process.argv[1])&&xb(process.argv);export{xb as run};
239
+ `,{issueId:u.id,labelIds:f})}catch(o){console.warn(`\u26A0 removeLabel failed: ${o instanceof Error?o.message:String(o)}`)}},sharedEnv(){return e}}}var Fp=c.object({plain_text:c.string()}),qy=c.object({type:c.literal("status"),status:c.nullable(c.object({id:c.optional(c.string()),name:c.string(),color:c.optional(c.string())}))}),Jy=c.object({type:c.literal("select"),select:c.nullable(c.object({id:c.optional(c.string()),name:c.string(),color:c.optional(c.string())}))}),Ky=c.object({id:c.optional(c.string()),name:c.string(),color:c.optional(c.string())}),Yy=c.object({type:c.literal("multi_select"),multi_select:c.array(Ky)}),Gy=c.object({type:c.literal("people"),people:c.array(c.object({id:c.string(),name:c.optional(c.nullable(c.string()))}))}),Wy=c.object({type:c.literal("relation"),relation:c.array(c.object({id:c.string()}))}),Vy=c.object({type:c.literal("title"),title:c.array(Fp)}),Qy=c.object({type:c.literal("rich_text"),rich_text:c.array(Fp)}),Xy=c.union([qy,Jy,Yy,Gy,Wy,Vy,Qy,c.object({type:c.string()})]),Na=c.object({id:c.string(),url:c.optional(c.string()),properties:c.record(c.string(),Xy)}),Hp=c.object({results:c.array(Na),has_more:c.boolean(),next_cursor:c.nullable(c.optional(c.string()))}),qp=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 eb(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 Oa(e,t,r){let n=t*2**e;return Math.min(n,r)}function tb(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(!tb(u.status)||a===n)return u;let l;u.status===429?l=eb(u.headers.get("Retry-After"))??Oa(a,o,s):l=Oa(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=Oa(a,o,s);await new Promise(p=>setTimeout(p,l))}throw i}var Mr="https://api.notion.com/v1",rb="2022-06-28";function Br(e){return{Authorization:`Bearer ${e}`,"Notion-Version":rb,"Content-Type":"application/json"}}async function Kp(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=qp.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=Hp.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 Jp(e,t){try{let r=await Ct(`${Mr}/pages/${t}`,{headers:Br(e)});if(!r.ok)return;let n=await r.json(),o=Na.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 Yp(e,t,r,n="Status"){try{let o=await Jp(e,r);if(!o)return!1;let s=nb(o,"Blocked by");if(s?.type==="relation"){let u=s.relation;if(u.length>0){for(let l of u){let p=await Jp(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=Wp(o);if(a){let u=a.match(/Blocked by (notion-[a-f0-9]{8})/gi);if(u){let l=await Nt(e,t);if(!l.length)return!1;for(let p of u){let f=p.replace(/blocked by notion-/i,"").toLowerCase();if(f!==i){for(let m of l)if(m.id.replace(/-/g,"").slice(0,8)===f){let b=F(m,n,"status");if(b&&!Dr(b))return!0}}}}}return!1}catch{return!1}}async function Gp(e,t,r,n="Epic",o="Status"){try{let s=await ob(e,t,`Epic: ${r}`,o);if(s&&s.total>0)return s;let i=await ib(e,t,r);return i?await sb(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 nb(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 Wp(e){for(let t of["Description","description","Body","body"]){let r=F(e,t,"rich_text");if(r)return r}}async function ob(e,t,r,n="Status"){let o=await Nt(e,t);if(!o.length)return;let s=o.filter(u=>Wp(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 sb(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 ib(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 ab="Status",cb="Assignee",ub="Labels",lb="Epic";function Qp(e){let t=e.CLANCY_NOTION_STATUS??ab,r=e.CLANCY_NOTION_ASSIGNEE??cb,n=e.CLANCY_NOTION_LABELS??ub,o=e.CLANCY_NOTION_PARENT??lb;return{async ping(){return Kp(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=pb(t,"To-do"),a=await Ur(e.NOTION_TOKEN,e.NOTION_DATABASE_ID,i);if(!a)return[];let u=a.results;s.excludeHitl&&(u=u.filter(p=>!F(p,n,"multi_select")?.includes("clancy:hitl")));let l=s.buildLabel??e.CLANCY_LABEL;return l&&(u=u.filter(p=>F(p,n,"multi_select")?.includes(l))),u.slice(0,5).map(p=>fb(p,{labelsProp:n,parentProp:o,assigneeProp:r}))},async fetchBlockerStatus(s){let i=s.issueId;return i?Yp(e.NOTION_TOKEN,e.NOTION_DATABASE_ID,i,t):!1},async fetchChildrenStatus(s){return Gp(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 Vp(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 Vp(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 pb(e,t){let r=t??"To-do";return{or:[{property:e,status:{equals:r}},{property:e,select:{equals:r}}]}}function fb(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 Vp(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 db=c.object({verb:c.string(),subject_id:c.number(),object_id:c.number()}),La=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(db)),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()))}),Za=c.object({data:c.array(La),next:c.optional(c.nullable(c.string())),total:c.optional(c.number())}),Fr=La,mb=c.object({id:c.number(),name:c.string(),type:c.string()}),hb=c.object({id:c.number(),name:c.string(),states:c.array(mb)}),Xp=c.array(hb),ef=c.object({id:c.number(),name:c.string()}),tf=c.array(ef),rf=ef,nf=c.array(La),of=c.object({id:c.string(),mention_name:c.optional(c.string())});var ne="https://api.app.shortcut.com/api/v3";function oe(e){return{"Shortcut-Token":e,"Content-Type":"application/json"}}var Hr;var Lt;async function sf(e){let t;try{t=await fetch(`${ne}/member-info`,{headers:oe(e)})}catch{return{ok:!1,error:"\u2717 Could not reach Shortcut \u2014 check network"}}if(!t.ok)return t.status===401||t.status===403?{ok:!1,error:"\u2717 Shortcut auth failed \u2014 check SHORTCUT_API_TOKEN"}:{ok:!1,error:`\u2717 Shortcut API returned HTTP ${t.status}`};try{let r=await t.json(),n=of.safeParse(r);if(n.success&&n.data.id)return{ok:!0}}catch{}return{ok:!1,error:"\u2717 Shortcut auth failed \u2014 check SHORTCUT_API_TOKEN"}}async function Zt(e){if(Hr)return Hr;try{let t=await fetch(`${ne}/workflows`,{headers:oe(e)});if(!t.ok)return console.warn(`\u26A0 Shortcut /workflows returned HTTP ${t.status}`),[];let r=await t.json(),n=Xp.safeParse(r);return n.success?(Hr=n.data,Hr):(console.warn(`\u26A0 Unexpected Shortcut workflows response: ${n.error.message}`),[])}catch(t){return console.warn(`\u26A0 Shortcut /workflows request failed: ${t instanceof Error?t.message:String(t)}`),[]}}async function af(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 cf(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 uf(e,t,r,n,o,s=5){if(!t.length)return[];let i,a={};t.length&&(a.workflow_state_ids=t),n&&(a.owner_ids=[n]),r&&(a.label_name=r);try{i=await fetch(`${ne}/stories/search`,{method:"POST",headers:oe(e),body:JSON.stringify(a)})}catch(f){return console.warn(`\u26A0 Shortcut API request failed: ${f instanceof Error?f.message:String(f)}`),[]}if(!i.ok)return console.warn(`\u26A0 Shortcut API returned HTTP ${i.status}`),[];let u;try{u=await i.json()}catch{return console.warn("\u26A0 Shortcut API returned invalid JSON"),[]}let l=Za.safeParse(u);if(!l.success)return console.warn(`\u26A0 Unexpected Shortcut response shape: ${l.error.message}`),[];let p=l.data.data;return o&&(p=p.filter(f=>!f.labels?.some(m=>m.name==="clancy:hitl"))),p.slice(0,s).map(f=>({key:`sc-${f.id}`,title:f.name,description:f.description??"",provider:"shortcut",storyId:f.id,epicId:f.epic_id??void 0,labels:f.labels?.map(m=>m.name).filter(m=>!!m)}))}async function lf(e,t){try{let r=await fetch(`${ne}/stories/${t}`,{headers:oe(e)});if(!r.ok)return!1;let n=await r.json(),o=Fr.safeParse(n);if(!o.success)return!1;let s=o.data;if(!s.blocked)return!1;let i=(s.story_links??[]).filter(l=>l.verb==="is blocked by");if(!i.length)return!1;let a=await Zt(e),u=new Set;for(let l of a)for(let p of l.states)p.type==="done"&&u.add(p.id);for(let l of i){let p=l.object_id,f=await fetch(`${ne}/stories/${p}`,{headers:oe(e)});if(!f.ok)continue;let m=await f.json(),h=Fr.safeParse(m);if(h.success&&h.data.workflow_state_id!==void 0&&!u.has(h.data.workflow_state_id))return!0}return!1}catch{return!1}}async function pf(e,t,r){try{if(r){let n=await gb(e,`Epic: ${r}`);if(n&&n.total>0)return n}return await yb(e,t)}catch{return}}async function gb(e,t){try{let r=await fetch(`${ne}/stories/search`,{method:"POST",headers:oe(e),body:JSON.stringify({query:t})});if(!r.ok)return;let n=await r.json(),o=Za.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 yb(e,t){try{let r=await fetch(`${ne}/epics/${t}/stories`,{headers:oe(e)});if(!r.ok)return;let n=await r.json(),o=nf.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 ff(e,t,r){try{return(await fetch(`${ne}/stories/${t}`,{method:"PUT",headers:oe(e),body:JSON.stringify({workflow_state_id:r})})).ok}catch{return!1}}async function qr(e){if(Lt)return Lt;try{let t=await fetch(`${ne}/labels`,{headers:oe(e)});if(!t.ok)return console.warn(`\u26A0 Shortcut /labels returned HTTP ${t.status}`),[];let r=await t.json(),n=tf.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 df(e,t){try{let r=await fetch(`${ne}/labels`,{method:"POST",headers:oe(e),body:JSON.stringify({name:t,color:"#0075ca"})});if(!r.ok){console.warn(`\u26A0 Shortcut label create returned HTTP ${r.status}`);return}let n=await r.json(),o=rf.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 ja(e,t){try{let r=await fetch(`${ne}/stories/${t}`,{headers:oe(e)});if(!r.ok)return;let n=await r.json(),o=Fr.safeParse(n);return o.success?o.data.label_ids??[]:void 0}catch{return}}async function Da(e,t,r){try{let n=await fetch(`${ne}/stories/${t}`,{method:"PUT",headers:oe(e),body:JSON.stringify({label_ids:r})});return n.ok||console.warn(`\u26A0 Shortcut story label update returned HTTP ${n.status}`),n.ok}catch(n){return console.warn(`\u26A0 Shortcut story label update failed: ${n instanceof Error?n.message:String(n)}`),!1}}function mf(e){return{async ping(){return sf(e.SHORTCUT_API_TOKEN)},validateInputs(){},async fetchTicket(t){return(await this.fetchTickets(t))[0]},async fetchTickets(t){let r=await cf(e.SHORTCUT_API_TOKEN,"unstarted",e.SHORTCUT_WORKFLOW);return(await uf(e.SHORTCUT_API_TOKEN,r,t.buildLabel??e.CLANCY_LABEL,void 0,t.excludeHitl)).map(o=>({key:o.key,title:o.title,description:o.description,parentInfo:o.epicId?`epic-${o.epicId}`:"none",blockers:"None",issueId:String(o.storyId),labels:o.labels??[],status:"unstarted"}))},async fetchBlockerStatus(t){let r=Jr(t.key);return r===void 0?!1:lf(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 pf(e.SHORTCUT_API_TOKEN,o,t)},async transitionTicket(t,r){let n=Jr(t.key);if(n===void 0)return!1;let o=await af(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 ff(e.SHORTCUT_API_TOKEN,n,o);return s&&console.log(` \u2192 Transitioned to ${r}`),s},async ensureLabel(t){try{if((await qr(e.SHORTCUT_API_TOKEN)).find(o=>o.name===t))return;await df(e.SHORTCUT_API_TOKEN,t)}catch(r){console.warn(`\u26A0 ensureLabel failed: ${r instanceof Error?r.message:String(r)}`)}},async addLabel(t,r){try{await this.ensureLabel(r);let n=Jr(t);if(n===void 0)return;let s=(await qr(e.SHORTCUT_API_TOKEN)).find(a=>a.name===r);if(!s)return;let i=await ja(e.SHORTCUT_API_TOKEN,n);if(!i||i.includes(s.id))return;await Da(e.SHORTCUT_API_TOKEN,n,[...i,s.id])}catch(n){console.warn(`\u26A0 addLabel failed: ${n instanceof Error?n.message:String(n)}`)}},async removeLabel(t,r){try{let n=Jr(t);if(n===void 0)return;let s=(await qr(e.SHORTCUT_API_TOKEN)).find(a=>a.name===r);if(!s)return;let i=await ja(e.SHORTCUT_API_TOKEN,n);if(!i||!i.includes(s.id))return;await Da(e.SHORTCUT_API_TOKEN,n,i.filter(a=>a!==s.id))}catch(n){console.warn(`\u26A0 removeLabel failed: ${n instanceof Error?n.message:String(n)}`)}},sharedEnv(){return e}}}function Jr(e){let t=parseInt(e.replace("sc-",""),10);return Number.isNaN(t)?void 0:t}function hf(e){switch(e.provider){case"jira":return vp(e.env);case"github":return mp(e.env);case"linear":return Up(e.env);case"shortcut":return mf(e.env);case"notion":return Qp(e.env);case"azdo":return ap(e.env)}}async function gf(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=hf(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 yf(e){let t=e.config;try{let r=await Al(t);r&&(e.isRework=!0,e.ticket=r.ticket,e.prFeedback=r.feedback,e.reworkPrNumber=r.prNumber,e.reworkDiscussionIds=r.discussionIds,e.reworkReviewers=r.reviewers,console.log(v(` \u21BB PR rework: [${e.ticket.key}] ${e.ticket.title}`)))}catch{}return!0}function bb(e){return e.CLANCY_LABEL_BUILD||e.CLANCY_LABEL||void 0}function _b(e){return e.CLANCY_LABEL_PLAN||e.CLANCY_PLAN_LABEL||void 0}function wb(e){return e?.isAfk??process.env.CLANCY_AFK_MODE==="1"}async function bf(e,t){let r=wb(t),n=e.sharedEnv(),o=bb(n),s=_b(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 _f(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(Hu(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 wf(e){let t=e.config,r=e.board,n=e.ticket,o=t.env.CLANCY_STATUS_IN_PROGRESS;return o&&await r.transitionTicket(n,o),!0}async function xb(e){let t=qa(e);if(await Yl(t))try{if(!await gf(t)||!await Ol(t)||!await Gl(t)||!await yf(t)||!await _f(t)||!Nl(t)||!Ml(t)||!await _l(t)||!await wf(t)||!Hl(t)||!await Cl(t))return;xl(t),await $l(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]&&kb(import.meta.url)===$b(process.argv[1])&&xb(process.argv);export{xb as run};