chief-clancy 0.8.23 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (94) hide show
  1. package/bin/clancy.js +153 -0
  2. package/package.json +8 -88
  3. package/README.md +0 -292
  4. package/dist/bundle/clancy-afk.js +0 -6
  5. package/dist/bundle/clancy-once.js +0 -239
  6. package/dist/installer/file-ops/file-ops.d.ts +0 -32
  7. package/dist/installer/file-ops/file-ops.d.ts.map +0 -1
  8. package/dist/installer/file-ops/file-ops.js +0 -58
  9. package/dist/installer/file-ops/file-ops.js.map +0 -1
  10. package/dist/installer/hook-installer/hook-installer.d.ts +0 -31
  11. package/dist/installer/hook-installer/hook-installer.d.ts.map +0 -1
  12. package/dist/installer/hook-installer/hook-installer.js +0 -137
  13. package/dist/installer/hook-installer/hook-installer.js.map +0 -1
  14. package/dist/installer/install.d.ts +0 -3
  15. package/dist/installer/install.d.ts.map +0 -1
  16. package/dist/installer/install.js +0 -270
  17. package/dist/installer/install.js.map +0 -1
  18. package/dist/installer/manifest/manifest.d.ts +0 -41
  19. package/dist/installer/manifest/manifest.d.ts.map +0 -1
  20. package/dist/installer/manifest/manifest.js +0 -97
  21. package/dist/installer/manifest/manifest.js.map +0 -1
  22. package/dist/installer/prompts/prompts.d.ts +0 -33
  23. package/dist/installer/prompts/prompts.d.ts.map +0 -1
  24. package/dist/installer/prompts/prompts.js +0 -55
  25. package/dist/installer/prompts/prompts.js.map +0 -1
  26. package/dist/installer/role-filter/role-filter.d.ts +0 -15
  27. package/dist/installer/role-filter/role-filter.d.ts.map +0 -1
  28. package/dist/installer/role-filter/role-filter.js +0 -48
  29. package/dist/installer/role-filter/role-filter.js.map +0 -1
  30. package/dist/installer/ui/ui.d.ts +0 -9
  31. package/dist/installer/ui/ui.d.ts.map +0 -1
  32. package/dist/installer/ui/ui.js +0 -94
  33. package/dist/installer/ui/ui.js.map +0 -1
  34. package/dist/scripts/shared/env-parser/env-parser.d.ts +0 -30
  35. package/dist/scripts/shared/env-parser/env-parser.d.ts.map +0 -1
  36. package/dist/scripts/shared/env-parser/env-parser.js +0 -64
  37. package/dist/scripts/shared/env-parser/env-parser.js.map +0 -1
  38. package/dist/utils/ansi/ansi.d.ts +0 -55
  39. package/dist/utils/ansi/ansi.d.ts.map +0 -1
  40. package/dist/utils/ansi/ansi.js +0 -55
  41. package/dist/utils/ansi/ansi.js.map +0 -1
  42. package/hooks/clancy-branch-guard.js +0 -128
  43. package/hooks/clancy-check-update.js +0 -114
  44. package/hooks/clancy-context-monitor.js +0 -189
  45. package/hooks/clancy-credential-guard.js +0 -120
  46. package/hooks/clancy-drift-detector.js +0 -96
  47. package/hooks/clancy-notification.js +0 -105
  48. package/hooks/clancy-post-compact.js +0 -53
  49. package/hooks/clancy-statusline.js +0 -82
  50. package/hooks/package.json +0 -3
  51. package/registry/boards.json +0 -44
  52. package/src/agents/arch-agent.md +0 -72
  53. package/src/agents/concerns-agent.md +0 -89
  54. package/src/agents/design-agent.md +0 -130
  55. package/src/agents/devils-advocate.md +0 -53
  56. package/src/agents/quality-agent.md +0 -161
  57. package/src/agents/tech-agent.md +0 -92
  58. package/src/agents/verification-gate.md +0 -128
  59. package/src/roles/implementer/commands/dry-run.md +0 -14
  60. package/src/roles/implementer/commands/once.md +0 -17
  61. package/src/roles/implementer/commands/run.md +0 -11
  62. package/src/roles/implementer/workflows/once.md +0 -146
  63. package/src/roles/implementer/workflows/run.md +0 -127
  64. package/src/roles/planner/commands/approve-plan.md +0 -10
  65. package/src/roles/planner/commands/plan.md +0 -20
  66. package/src/roles/planner/workflows/approve-plan.md +0 -535
  67. package/src/roles/planner/workflows/plan.md +0 -536
  68. package/src/roles/reviewer/commands/logs.md +0 -7
  69. package/src/roles/reviewer/commands/review.md +0 -9
  70. package/src/roles/reviewer/commands/status.md +0 -9
  71. package/src/roles/reviewer/workflows/logs.md +0 -104
  72. package/src/roles/reviewer/workflows/review.md +0 -186
  73. package/src/roles/reviewer/workflows/status.md +0 -134
  74. package/src/roles/setup/commands/doctor.md +0 -7
  75. package/src/roles/setup/commands/help.md +0 -80
  76. package/src/roles/setup/commands/init.md +0 -7
  77. package/src/roles/setup/commands/map-codebase.md +0 -16
  78. package/src/roles/setup/commands/settings.md +0 -7
  79. package/src/roles/setup/commands/uninstall.md +0 -5
  80. package/src/roles/setup/commands/update-docs.md +0 -9
  81. package/src/roles/setup/commands/update.md +0 -12
  82. package/src/roles/setup/workflows/doctor.md +0 -124
  83. package/src/roles/setup/workflows/init.md +0 -1073
  84. package/src/roles/setup/workflows/map-codebase.md +0 -125
  85. package/src/roles/setup/workflows/scaffold.md +0 -845
  86. package/src/roles/setup/workflows/settings.md +0 -944
  87. package/src/roles/setup/workflows/uninstall.md +0 -161
  88. package/src/roles/setup/workflows/update-docs.md +0 -92
  89. package/src/roles/setup/workflows/update.md +0 -277
  90. package/src/roles/strategist/commands/approve-brief.md +0 -21
  91. package/src/roles/strategist/commands/brief.md +0 -27
  92. package/src/roles/strategist/workflows/approve-brief.md +0 -834
  93. package/src/roles/strategist/workflows/brief.md +0 -890
  94. package/src/templates/CLAUDE.md +0 -87
@@ -1,239 +0,0 @@
1
- var Sf=Object.defineProperty;var ve=(e,t)=>{for(var r in t)Sf(e,r,{get:t[r],enumerable:!0})};import{resolve as k_}from"node:path";import{fileURLToPath as x_}from"node:url";function Ce(e){let t=Math.floor(e/1e3);if(t<60)return`${t}s`;let r=Math.floor(t/60),n=t%60;if(r<60)return n>0?`${r}m ${n}s`:`${r}m`;let o=Math.floor(r/60),s=r%60;return s>0?`${o}h ${s}m`:`${o}h`}import{execFileSync as pe}from"node:child_process";function Gr(...e){return pe("git",e,{encoding:"utf8"}).trim()}function qa(){return Gr("rev-parse","--abbrev-ref","HEAD")}function Mt(){try{return pe("git",["diff","--quiet"],{stdio:"ignore"}),pe("git",["diff","--cached","--quiet"],{stdio:"ignore"}),!1}catch{return!0}}function Xe(e){try{return pe("git",["show-ref","--verify","--quiet",`refs/heads/${e}`],{stdio:"ignore"}),!0}catch{return!1}}function Wr(e,t){Xe(e)||Gr("checkout","-b",e,t)}function Z(e,t=!1){Gr("checkout",...t?["-B"]:[],e)}function Ja(e){try{return pe("git",["ls-remote","--heads","origin",e],{encoding:"utf8",timeout:15e3}).trim().length>0}catch{return!1}}function Bt(e){try{return pe("git",["fetch","origin",`${e}:${e}`],{encoding:"utf8",stdio:["pipe","pipe","pipe"]}),!0}catch{return!1}}function Ka(e,t=8e3){try{let r=pe("git",["diff",`${e}...HEAD`,"--stat"],{encoding:"utf8",timeout:1e4}).trim();return r?r.length>t?r.slice(0,t)+`
2
- ... (truncated)`:r:void 0}catch{return}}function et(e){try{return pe("git",["push","-u","origin",e],{encoding:"utf8",stdio:["pipe","pipe","pipe"]}),!0}catch{return!1}}var $=e=>`\x1B[2m${e}\x1B[0m`,Ne=e=>`\x1B[1m${e}\x1B[0m`;var O=e=>`\x1B[32m${e}\x1B[0m`,Oe=e=>`\x1B[31m${e}\x1B[0m`,z=e=>`\x1B[33m${e}\x1B[0m`;function Ya(e){return{argv:e,dryRun:e.includes("--dry-run"),skipFeasibility:e.includes("--skip-feasibility"),startTime:Date.now(),cwd:process.cwd(),isAfk:process.env.CLANCY_AFK_MODE==="1"}}import{mkdirSync as vf,readFileSync as zf,unlinkSync as Ga,writeFileSync as Tf}from"node:fs";import{dirname as If,join as Ut}from"node:path";function Wa(e,t){let r=Ut(e,".clancy","lock.json");vf(If(r),{recursive:!0}),Tf(r,JSON.stringify(t,null,2),"utf8")}function Ft(e){let t=Ut(e,".clancy","lock.json");try{let r=zf(t,"utf8");return JSON.parse(r)}catch{return}}function Ht(e){let t=Ut(e,".clancy","lock.json");try{Ga(t)}catch{}}function qt(e){let t=Ut(e,".clancy","verify-attempt.txt");try{Ga(t)}catch{}}function Pf(e){try{return process.kill(e,0),!0}catch(t){return t instanceof Error&&"code"in t&&t.code==="EPERM"}}function Va(e){if(!Pf(e.pid))return!0;let t=Date.now()-new Date(e.startedAt).getTime();if(Number.isNaN(t))return!0;let r=1440*60*1e3;return t>r}import{execFileSync as $l}from"node:child_process";import{readFileSync as Vg}from"node:fs";import{join as Qg}from"node:path";var c={};ve(c,{$brand:()=>Qr,$input:()=>Rs,$output:()=>As,NEVER:()=>Vr,TimePrecision:()=>ni,ZodMiniAny:()=>ou,ZodMiniArray:()=>uu,ZodMiniBase64:()=>Wc,ZodMiniBase64URL:()=>Vc,ZodMiniBigInt:()=>xt,ZodMiniBigIntFormat:()=>aa,ZodMiniBoolean:()=>kt,ZodMiniCIDRv4:()=>Kc,ZodMiniCIDRv6:()=>Yc,ZodMiniCUID:()=>Mc,ZodMiniCUID2:()=>Bc,ZodMiniCatch:()=>Iu,ZodMiniCodec:()=>da,ZodMiniCustom:()=>ma,ZodMiniCustomStringFormat:()=>wt,ZodMiniDate:()=>kr,ZodMiniDefault:()=>vu,ZodMiniDiscriminatedUnion:()=>fu,ZodMiniE164:()=>Qc,ZodMiniEmail:()=>Lc,ZodMiniEmoji:()=>jc,ZodMiniEnum:()=>ua,ZodMiniExactOptional:()=>xu,ZodMiniFile:()=>$u,ZodMiniFunction:()=>Lu,ZodMiniGUID:()=>Zc,ZodMiniIPv4:()=>qc,ZodMiniIPv6:()=>Jc,ZodMiniISODate:()=>Tr,ZodMiniISODateTime:()=>zr,ZodMiniISODuration:()=>Pr,ZodMiniISOTime:()=>Ir,ZodMiniIntersection:()=>du,ZodMiniJWT:()=>Xc,ZodMiniKSUID:()=>Hc,ZodMiniLazy:()=>Ru,ZodMiniLiteral:()=>wu,ZodMiniMAC:()=>Gc,ZodMiniMap:()=>yu,ZodMiniNaN:()=>Pu,ZodMiniNanoID:()=>Dc,ZodMiniNever:()=>iu,ZodMiniNonOptional:()=>pa,ZodMiniNull:()=>ru,ZodMiniNullable:()=>Su,ZodMiniNumber:()=>$t,ZodMiniNumberFormat:()=>qe,ZodMiniObject:()=>xr,ZodMiniOptional:()=>la,ZodMiniPipe:()=>fa,ZodMiniPrefault:()=>zu,ZodMiniPromise:()=>Nu,ZodMiniReadonly:()=>Eu,ZodMiniRecord:()=>Sr,ZodMiniSet:()=>_u,ZodMiniString:()=>He,ZodMiniStringFormat:()=>R,ZodMiniSuccess:()=>Tu,ZodMiniSymbol:()=>eu,ZodMiniTemplateLiteral:()=>Au,ZodMiniTransform:()=>ku,ZodMiniTuple:()=>mu,ZodMiniType:()=>v,ZodMiniULID:()=>Uc,ZodMiniURL:()=>ia,ZodMiniUUID:()=>bt,ZodMiniUndefined:()=>tu,ZodMiniUnion:()=>ca,ZodMiniUnknown:()=>su,ZodMiniVoid:()=>cu,ZodMiniXID:()=>Fc,ZodMiniXor:()=>pu,_default:()=>Qh,_function:()=>yg,any:()=>zh,array:()=>Y,base64:()=>ch,base64url:()=>uh,bigint:()=>$h,boolean:()=>Je,catch:()=>rg,catchall:()=>jh,check:()=>ug,cidrv4:()=>sh,cidrv6:()=>ih,clone:()=>J,codec:()=>sg,coerce:()=>ga,config:()=>F,core:()=>Fe,cuid:()=>Qm,cuid2:()=>Xm,custom:()=>Ou,date:()=>Ih,decode:()=>$n,decodeAsync:()=>xn,describe:()=>fg,discriminatedUnion:()=>Mh,e164:()=>lh,email:()=>Um,emoji:()=>Wm,encode:()=>wn,encodeAsync:()=>kn,endsWith:()=>qi,enum:()=>bu,exactOptional:()=>Wh,extend:()=>xe,file:()=>Yh,flattenError:()=>gn,float32:()=>yh,float64:()=>_h,formatError:()=>yn,function:()=>yg,globalRegistry:()=>ae,gt:()=>yr,gte:()=>gt,guid:()=>Fm,hash:()=>hh,hex:()=>mh,hostname:()=>dh,httpUrl:()=>Gm,includes:()=>Fi,instanceof:()=>mg,int:()=>gh,int32:()=>bh,int64:()=>kh,intersection:()=>Bh,ipv4:()=>nh,ipv6:()=>oh,iso:()=>ha,json:()=>gg,jwt:()=>ph,keyof:()=>Ph,ksuid:()=>rh,lazy:()=>Cu,length:()=>Mi,literal:()=>Kh,locales:()=>mt,looseObject:()=>Ah,looseRecord:()=>Fh,lowercase:()=>Bi,lt:()=>gr,lte:()=>ht,mac:()=>ah,map:()=>Hh,maxLength:()=>Di,maxSize:()=>Li,maximum:()=>ht,merge:()=>Ch,meta:()=>dg,mime:()=>Ki,minLength:()=>yt,minSize:()=>Zi,minimum:()=>gt,multipleOf:()=>Oi,nan:()=>ng,nanoid:()=>Vm,nativeEnum:()=>Jh,negative:()=>Ri,never:()=>au,nonnegative:()=>Ni,nonoptional:()=>eg,nonpositive:()=>Ci,normalize:()=>Yi,null:()=>nu,nullable:()=>vr,nullish:()=>Vh,number:()=>ke,object:()=>I,omit:()=>Oh,optional:()=>w,overwrite:()=>_e,parse:()=>ge,parseAsync:()=>ye,partial:()=>Lh,partialRecord:()=>Uh,pick:()=>Nh,pipe:()=>og,positive:()=>Ai,prefault:()=>Xh,prettifyError:()=>bn,promise:()=>cg,property:()=>Ji,readonly:()=>ig,record:()=>gu,refine:()=>lg,regex:()=>_t,regexes:()=>oe,registry:()=>mr,required:()=>Zh,safeDecode:()=>vn,safeDecodeAsync:()=>Tn,safeEncode:()=>Sn,safeEncodeAsync:()=>zn,safeExtend:()=>Rh,safeParse:()=>Te,safeParseAsync:()=>Ie,set:()=>qh,size:()=>ji,startsWith:()=>Hi,strictObject:()=>Eh,string:()=>b,stringFormat:()=>fh,stringbool:()=>hg,success:()=>tg,superRefine:()=>pg,symbol:()=>Sh,templateLiteral:()=>ag,toJSONSchema:()=>br,toLowerCase:()=>Wi,toUpperCase:()=>Vi,transform:()=>Gh,treeifyError:()=>_n,trim:()=>Gi,tuple:()=>hu,uint32:()=>wh,uint64:()=>xh,ulid:()=>eh,undefined:()=>vh,union:()=>lu,unknown:()=>$r,uppercase:()=>Ui,url:()=>Ym,util:()=>ne,uuid:()=>Hm,uuidv4:()=>qm,uuidv6:()=>Jm,uuidv7:()=>Km,void:()=>Th,xid:()=>th,xor:()=>Dh});var Fe={};ve(Fe,{$ZodAny:()=>es,$ZodArray:()=>ss,$ZodAsyncError:()=>se,$ZodBase64:()=>Ho,$ZodBase64URL:()=>qo,$ZodBigInt:()=>ur,$ZodBigIntFormat:()=>Wo,$ZodBoolean:()=>pt,$ZodCIDRv4:()=>Bo,$ZodCIDRv6:()=>Uo,$ZodCUID:()=>Po,$ZodCUID2:()=>Eo,$ZodCatch:()=>ks,$ZodCheck:()=>A,$ZodCheckBigIntFormat:()=>oo,$ZodCheckEndsWith:()=>yo,$ZodCheckGreaterThan:()=>rr,$ZodCheckIncludes:()=>ho,$ZodCheckLengthEquals:()=>lo,$ZodCheckLessThan:()=>tr,$ZodCheckLowerCase:()=>fo,$ZodCheckMaxLength:()=>co,$ZodCheckMaxSize:()=>so,$ZodCheckMimeType:()=>bo,$ZodCheckMinLength:()=>uo,$ZodCheckMinSize:()=>io,$ZodCheckMultipleOf:()=>ro,$ZodCheckNumberFormat:()=>no,$ZodCheckOverwrite:()=>wo,$ZodCheckProperty:()=>_o,$ZodCheckRegex:()=>po,$ZodCheckSizeEquals:()=>ao,$ZodCheckStartsWith:()=>go,$ZodCheckStringFormat:()=>Me,$ZodCheckUpperCase:()=>mo,$ZodCodec:()=>dt,$ZodCustom:()=>Es,$ZodCustomStringFormat:()=>Yo,$ZodDate:()=>os,$ZodDefault:()=>_s,$ZodDiscriminatedUnion:()=>as,$ZodE164:()=>Jo,$ZodEmail:()=>vo,$ZodEmoji:()=>To,$ZodEncodeError:()=>Le,$ZodEnum:()=>fs,$ZodError:()=>hn,$ZodExactOptional:()=>gs,$ZodFile:()=>ms,$ZodFunction:()=>Ts,$ZodGUID:()=>xo,$ZodIPv4:()=>jo,$ZodIPv6:()=>Do,$ZodISODate:()=>Oo,$ZodISODateTime:()=>No,$ZodISODuration:()=>Zo,$ZodISOTime:()=>Lo,$ZodIntersection:()=>cs,$ZodJWT:()=>Ko,$ZodKSUID:()=>Co,$ZodLazy:()=>Ps,$ZodLiteral:()=>ds,$ZodMAC:()=>Mo,$ZodMap:()=>ls,$ZodNaN:()=>xs,$ZodNanoID:()=>Io,$ZodNever:()=>rs,$ZodNonOptional:()=>ws,$ZodNull:()=>Xo,$ZodNullable:()=>ys,$ZodNumber:()=>cr,$ZodNumberFormat:()=>Go,$ZodObject:()=>lr,$ZodObjectJIT:()=>vd,$ZodOptional:()=>fr,$ZodPipe:()=>Ss,$ZodPrefault:()=>bs,$ZodPromise:()=>Is,$ZodReadonly:()=>vs,$ZodRealError:()=>W,$ZodRecord:()=>us,$ZodRegistry:()=>dr,$ZodSet:()=>ps,$ZodString:()=>Be,$ZodStringFormat:()=>E,$ZodSuccess:()=>$s,$ZodSymbol:()=>Vo,$ZodTemplateLiteral:()=>zs,$ZodTransform:()=>hs,$ZodTuple:()=>pr,$ZodType:()=>k,$ZodULID:()=>Ao,$ZodURL:()=>zo,$ZodUUID:()=>So,$ZodUndefined:()=>Qo,$ZodUnion:()=>ft,$ZodUnknown:()=>ts,$ZodVoid:()=>ns,$ZodXID:()=>Ro,$ZodXor:()=>is,$brand:()=>Qr,$constructor:()=>d,$input:()=>Rs,$output:()=>As,Doc:()=>lt,JSONSchema:()=>Oc,JSONSchemaGenerator:()=>wr,NEVER:()=>Vr,TimePrecision:()=>ni,_any:()=>Si,_array:()=>Ed,_base64:()=>Xs,_base64url:()=>ei,_bigint:()=>yi,_boolean:()=>hi,_catch:()=>Yd,_check:()=>Nc,_cidrv4:()=>Vs,_cidrv6:()=>Qs,_coercedBigint:()=>_i,_coercedBoolean:()=>gi,_coercedDate:()=>Pi,_coercedNumber:()=>ui,_coercedString:()=>Ns,_cuid:()=>Fs,_cuid2:()=>Hs,_custom:()=>Xi,_date:()=>Ii,_decode:()=>sc,_decodeAsync:()=>ac,_default:()=>qd,_discriminatedUnion:()=>Cd,_e164:()=>ti,_email:()=>Os,_emoji:()=>Bs,_encode:()=>oc,_encodeAsync:()=>ic,_endsWith:()=>qi,_enum:()=>Dd,_file:()=>Qi,_float32:()=>pi,_float64:()=>fi,_gt:()=>yr,_gte:()=>gt,_guid:()=>Ls,_includes:()=>Fi,_int:()=>li,_int32:()=>di,_int64:()=>bi,_intersection:()=>Nd,_ipv4:()=>Ys,_ipv6:()=>Gs,_isoDate:()=>si,_isoDateTime:()=>oi,_isoDuration:()=>ai,_isoTime:()=>ii,_jwt:()=>ri,_ksuid:()=>Ks,_lazy:()=>Qd,_length:()=>Mi,_literal:()=>Bd,_lowercase:()=>Bi,_lt:()=>gr,_lte:()=>ht,_mac:()=>Ws,_map:()=>Zd,_max:()=>ht,_maxLength:()=>Di,_maxSize:()=>Li,_mime:()=>Ki,_min:()=>gt,_minLength:()=>yt,_minSize:()=>Zi,_multipleOf:()=>Oi,_nan:()=>Ei,_nanoid:()=>Us,_nativeEnum:()=>Md,_negative:()=>Ri,_never:()=>zi,_nonnegative:()=>Ni,_nonoptional:()=>Jd,_nonpositive:()=>Ci,_normalize:()=>Yi,_null:()=>xi,_nullable:()=>Hd,_number:()=>ci,_optional:()=>Fd,_overwrite:()=>_e,_parse:()=>Gt,_parseAsync:()=>Wt,_pipe:()=>Gd,_positive:()=>Ai,_promise:()=>Xd,_property:()=>Ji,_readonly:()=>Wd,_record:()=>Ld,_refine:()=>ea,_regex:()=>_t,_safeDecode:()=>uc,_safeDecodeAsync:()=>pc,_safeEncode:()=>cc,_safeEncodeAsync:()=>lc,_safeParse:()=>Vt,_safeParseAsync:()=>Qt,_set:()=>jd,_size:()=>ji,_slugify:()=>Pd,_startsWith:()=>Hi,_string:()=>Cs,_stringFormat:()=>Ue,_stringbool:()=>oa,_success:()=>Kd,_superRefine:()=>ta,_symbol:()=>$i,_templateLiteral:()=>Vd,_toLowerCase:()=>Wi,_toUpperCase:()=>Vi,_transform:()=>Ud,_trim:()=>Gi,_tuple:()=>Od,_uint32:()=>mi,_uint64:()=>wi,_ulid:()=>qs,_undefined:()=>ki,_union:()=>Ad,_unknown:()=>vi,_uppercase:()=>Ui,_url:()=>hr,_uuid:()=>Zs,_uuidv4:()=>js,_uuidv6:()=>Ds,_uuidv7:()=>Ms,_void:()=>Ti,_xid:()=>Js,_xor:()=>Rd,clone:()=>J,config:()=>F,createStandardJSONSchemaMethod:()=>sa,createToJSONSchemaMethod:()=>em,decode:()=>$n,decodeAsync:()=>xn,describe:()=>ra,encode:()=>wn,encodeAsync:()=>kn,extractDefs:()=>we,finalize:()=>$e,flattenError:()=>gn,formatError:()=>yn,globalConfig:()=>tt,globalRegistry:()=>ae,initializeContext:()=>be,isValidBase64:()=>Fo,isValidBase64URL:()=>Pc,isValidJWT:()=>Ec,locales:()=>mt,meta:()=>na,parse:()=>ge,parseAsync:()=>ye,prettifyError:()=>bn,process:()=>T,regexes:()=>oe,registry:()=>mr,safeDecode:()=>vn,safeDecodeAsync:()=>Tn,safeEncode:()=>Sn,safeEncodeAsync:()=>zn,safeParse:()=>Te,safeParseAsync:()=>Ie,toDotPath:()=>nc,toJSONSchema:()=>br,treeifyError:()=>_n,util:()=>ne,version:()=>$o});var Vr=Object.freeze({status:"aborted"});function d(e,t,r){function n(a,u){if(a._zod||Object.defineProperty(a,"_zod",{value:{def:u,constr:i,traits:new Set},enumerable:!1}),a._zod.traits.has(e))return;a._zod.traits.add(e),t(a,u);let l=i.prototype,p=Object.keys(l);for(let f=0;f<p.length;f++){let m=p[f];m in a||(a[m]=l[m].bind(a))}}let o=r?.Parent??Object;class s extends o{}Object.defineProperty(s,"name",{value:e});function i(a){var u;let l=r?.Parent?new s:this;n(l,a),(u=l._zod).deferred??(u.deferred=[]);for(let p of l._zod.deferred)p();return l}return Object.defineProperty(i,"init",{value:n}),Object.defineProperty(i,Symbol.hasInstance,{value:a=>r?.Parent&&a instanceof r.Parent?!0:a?._zod?.traits?.has(e)}),Object.defineProperty(i,"name",{value:e}),i}var Qr=Symbol("zod_brand"),se=class extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}},Le=class extends Error{constructor(t){super(`Encountered unidirectional transform during encode: ${t}`),this.name="ZodEncodeError"}},tt={};function F(e){return e&&Object.assign(tt,e),tt}var ne={};ve(ne,{BIGINT_FORMAT_RANGES:()=>un,Class:()=>en,NUMBER_FORMAT_RANGES:()=>cn,aborted:()=>he,allowsEval:()=>on,assert:()=>Nf,assertEqual:()=>Ef,assertIs:()=>Rf,assertNever:()=>Cf,assertNotEqual:()=>Af,assignProp:()=>de,base64ToUint8Array:()=>ec,base64urlToUint8Array:()=>Kf,cached:()=>Ze,captureStackTrace:()=>Kt,cleanEnum:()=>Jf,cleanRegex:()=>ot,clone:()=>J,cloneDef:()=>Zf,createTransparentProxy:()=>Ff,defineLazy:()=>S,esc:()=>Jt,escapeRegex:()=>re,extend:()=>Yt,finalizeIssue:()=>G,floatSafeRemainder:()=>rn,getElementAtPath:()=>jf,getEnumValues:()=>nt,getLengthableOrigin:()=>at,getParsedType:()=>Uf,getSizableOrigin:()=>it,hexToUint8Array:()=>Gf,isObject:()=>ze,isPlainObject:()=>me,issue:()=>De,joinValues:()=>Of,jsonStringifyReplacer:()=>tn,merge:()=>Hf,mergeDefs:()=>ue,normalizeParams:()=>g,nullish:()=>fe,numKeys:()=>Bf,objectClone:()=>Lf,omit:()=>pn,optionalKeys:()=>an,parsedType:()=>qf,partial:()=>dn,pick:()=>ln,prefixIssues:()=>Q,primitiveTypes:()=>sn,promiseAllObject:()=>Df,propertyKeyTypes:()=>st,randomString:()=>Mf,required:()=>mn,safeExtend:()=>fn,shallowClone:()=>je,slugify:()=>nn,stringifyPrimitive:()=>Xa,uint8ArrayToBase64:()=>tc,uint8ArrayToBase64url:()=>Yf,uint8ArrayToHex:()=>Wf,unwrapMessage:()=>rt});function Ef(e){return e}function Af(e){return e}function Rf(e){}function Cf(e){throw new Error("Unexpected value in exhaustive check")}function Nf(e){}function nt(e){let t=Object.values(e).filter(n=>typeof n=="number");return Object.entries(e).filter(([n,o])=>t.indexOf(+n)===-1).map(([n,o])=>o)}function Of(e,t="|"){return e.map(r=>Xa(r)).join(t)}function tn(e,t){return typeof t=="bigint"?t.toString():t}function Ze(e){return{get value(){{let r=e();return Object.defineProperty(this,"value",{value:r}),r}throw new Error("cached value already set")}}}function fe(e){return e==null}function ot(e){let t=e.startsWith("^")?1:0,r=e.endsWith("$")?e.length-1:e.length;return e.slice(t,r)}function rn(e,t){let r=(e.toString().split(".")[1]||"").length,n=t.toString(),o=(n.split(".")[1]||"").length;if(o===0&&/\d?e-\d?/.test(n)){let u=n.match(/\d?e-(\d?)/);u?.[1]&&(o=Number.parseInt(u[1]))}let s=r>o?r:o,i=Number.parseInt(e.toFixed(s).replace(".","")),a=Number.parseInt(t.toFixed(s).replace(".",""));return i%a/10**s}var Qa=Symbol("evaluating");function S(e,t,r){let n;Object.defineProperty(e,t,{get(){if(n!==Qa)return n===void 0&&(n=Qa,n=r()),n},set(o){Object.defineProperty(e,t,{value:o})},configurable:!0})}function Lf(e){return Object.create(Object.getPrototypeOf(e),Object.getOwnPropertyDescriptors(e))}function de(e,t,r){Object.defineProperty(e,t,{value:r,writable:!0,enumerable:!0,configurable:!0})}function ue(...e){let t={};for(let r of e){let n=Object.getOwnPropertyDescriptors(r);Object.assign(t,n)}return Object.defineProperties({},t)}function Zf(e){return ue(e._zod.def)}function jf(e,t){return t?t.reduce((r,n)=>r?.[n],e):e}function Df(e){let t=Object.keys(e),r=t.map(n=>e[n]);return Promise.all(r).then(n=>{let o={};for(let s=0;s<t.length;s++)o[t[s]]=n[s];return o})}function Mf(e=10){let t="abcdefghijklmnopqrstuvwxyz",r="";for(let n=0;n<e;n++)r+=t[Math.floor(Math.random()*t.length)];return r}function Jt(e){return JSON.stringify(e)}function nn(e){return e.toLowerCase().trim().replace(/[^\w\s-]/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")}var Kt="captureStackTrace"in Error?Error.captureStackTrace:(...e)=>{};function ze(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var on=Ze(()=>{if(typeof navigator<"u"&&navigator?.userAgent?.includes("Cloudflare"))return!1;try{let e=Function;return new e(""),!0}catch{return!1}});function me(e){if(ze(e)===!1)return!1;let t=e.constructor;if(t===void 0||typeof t!="function")return!0;let r=t.prototype;return!(ze(r)===!1||Object.prototype.hasOwnProperty.call(r,"isPrototypeOf")===!1)}function je(e){return me(e)?{...e}:Array.isArray(e)?[...e]:e}function Bf(e){let t=0;for(let r in e)Object.prototype.hasOwnProperty.call(e,r)&&t++;return t}var Uf=e=>{let t=typeof e;switch(t){case"undefined":return"undefined";case"string":return"string";case"number":return Number.isNaN(e)?"nan":"number";case"boolean":return"boolean";case"function":return"function";case"bigint":return"bigint";case"symbol":return"symbol";case"object":return Array.isArray(e)?"array":e===null?"null":e.then&&typeof e.then=="function"&&e.catch&&typeof e.catch=="function"?"promise":typeof Map<"u"&&e instanceof Map?"map":typeof Set<"u"&&e instanceof Set?"set":typeof Date<"u"&&e instanceof Date?"date":typeof File<"u"&&e instanceof File?"file":"object";default:throw new Error(`Unknown data type: ${t}`)}},st=new Set(["string","number","symbol"]),sn=new Set(["string","number","bigint","boolean","symbol","undefined"]);function re(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function J(e,t,r){let n=new e._zod.constr(t??e._zod.def);return(!t||r?.parent)&&(n._zod.parent=e),n}function g(e){let t=e;if(!t)return{};if(typeof t=="string")return{error:()=>t};if(t?.message!==void 0){if(t?.error!==void 0)throw new Error("Cannot specify both `message` and `error` params");t.error=t.message}return delete t.message,typeof t.error=="string"?{...t,error:()=>t.error}:t}function Ff(e){let t;return new Proxy({},{get(r,n,o){return t??(t=e()),Reflect.get(t,n,o)},set(r,n,o,s){return t??(t=e()),Reflect.set(t,n,o,s)},has(r,n){return t??(t=e()),Reflect.has(t,n)},deleteProperty(r,n){return t??(t=e()),Reflect.deleteProperty(t,n)},ownKeys(r){return t??(t=e()),Reflect.ownKeys(t)},getOwnPropertyDescriptor(r,n){return t??(t=e()),Reflect.getOwnPropertyDescriptor(t,n)},defineProperty(r,n,o){return t??(t=e()),Reflect.defineProperty(t,n,o)}})}function Xa(e){return typeof e=="bigint"?e.toString()+"n":typeof e=="string"?`"${e}"`:`${e}`}function an(e){return Object.keys(e).filter(t=>e[t]._zod.optin==="optional"&&e[t]._zod.optout==="optional")}var cn={safeint:[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]},un={int64:[BigInt("-9223372036854775808"),BigInt("9223372036854775807")],uint64:[BigInt(0),BigInt("18446744073709551615")]};function ln(e,t){let r=e._zod.def,n=r.checks;if(n&&n.length>0)throw new Error(".pick() cannot be used on object schemas containing refinements");let s=ue(e._zod.def,{get shape(){let i={};for(let a in t){if(!(a in r.shape))throw new Error(`Unrecognized key: "${a}"`);t[a]&&(i[a]=r.shape[a])}return de(this,"shape",i),i},checks:[]});return J(e,s)}function pn(e,t){let r=e._zod.def,n=r.checks;if(n&&n.length>0)throw new Error(".omit() cannot be used on object schemas containing refinements");let s=ue(e._zod.def,{get shape(){let i={...e._zod.def.shape};for(let a in t){if(!(a in r.shape))throw new Error(`Unrecognized key: "${a}"`);t[a]&&delete i[a]}return de(this,"shape",i),i},checks:[]});return J(e,s)}function Yt(e,t){if(!me(t))throw new Error("Invalid input to extend: expected a plain object");let r=e._zod.def.checks;if(r&&r.length>0){let s=e._zod.def.shape;for(let i in t)if(Object.getOwnPropertyDescriptor(s,i)!==void 0)throw new Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}let o=ue(e._zod.def,{get shape(){let s={...e._zod.def.shape,...t};return de(this,"shape",s),s}});return J(e,o)}function fn(e,t){if(!me(t))throw new Error("Invalid input to safeExtend: expected a plain object");let r=ue(e._zod.def,{get shape(){let n={...e._zod.def.shape,...t};return de(this,"shape",n),n}});return J(e,r)}function Hf(e,t){let r=ue(e._zod.def,{get shape(){let n={...e._zod.def.shape,...t._zod.def.shape};return de(this,"shape",n),n},get catchall(){return t._zod.def.catchall},checks:[]});return J(e,r)}function dn(e,t,r){let o=t._zod.def.checks;if(o&&o.length>0)throw new Error(".partial() cannot be used on object schemas containing refinements");let i=ue(t._zod.def,{get shape(){let a=t._zod.def.shape,u={...a};if(r)for(let l in r){if(!(l in a))throw new Error(`Unrecognized key: "${l}"`);r[l]&&(u[l]=e?new e({type:"optional",innerType:a[l]}):a[l])}else for(let l in a)u[l]=e?new e({type:"optional",innerType:a[l]}):a[l];return de(this,"shape",u),u},checks:[]});return J(t,i)}function mn(e,t,r){let n=ue(t._zod.def,{get shape(){let o=t._zod.def.shape,s={...o};if(r)for(let i in r){if(!(i in s))throw new Error(`Unrecognized key: "${i}"`);r[i]&&(s[i]=new e({type:"nonoptional",innerType:o[i]}))}else for(let i in o)s[i]=new e({type:"nonoptional",innerType:o[i]});return de(this,"shape",s),s}});return J(t,n)}function he(e,t=0){if(e.aborted===!0)return!0;for(let r=t;r<e.issues.length;r++)if(e.issues[r]?.continue!==!0)return!0;return!1}function Q(e,t){return t.map(r=>{var n;return(n=r).path??(n.path=[]),r.path.unshift(e),r})}function rt(e){return typeof e=="string"?e:e?.message}function G(e,t,r){let n={...e,path:e.path??[]};if(!e.message){let o=rt(e.inst?._zod.def?.error?.(e))??rt(t?.error?.(e))??rt(r.customError?.(e))??rt(r.localeError?.(e))??"Invalid input";n.message=o}return delete n.inst,delete n.continue,t?.reportInput||delete n.input,n}function it(e){return e instanceof Set?"set":e instanceof Map?"map":e instanceof File?"file":"unknown"}function at(e){return Array.isArray(e)?"array":typeof e=="string"?"string":"unknown"}function qf(e){let t=typeof e;switch(t){case"number":return Number.isNaN(e)?"nan":"number";case"object":{if(e===null)return"null";if(Array.isArray(e))return"array";let r=e;if(r&&Object.getPrototypeOf(r)!==Object.prototype&&"constructor"in r&&r.constructor)return r.constructor.name}}return t}function De(...e){let[t,r,n]=e;return typeof t=="string"?{message:t,code:"custom",input:r,inst:n}:{...t}}function Jf(e){return Object.entries(e).filter(([t,r])=>Number.isNaN(Number.parseInt(t,10))).map(t=>t[1])}function ec(e){let t=atob(e),r=new Uint8Array(t.length);for(let n=0;n<t.length;n++)r[n]=t.charCodeAt(n);return r}function tc(e){let t="";for(let r=0;r<e.length;r++)t+=String.fromCharCode(e[r]);return btoa(t)}function Kf(e){let t=e.replace(/-/g,"+").replace(/_/g,"/"),r="=".repeat((4-t.length%4)%4);return ec(t+r)}function Yf(e){return tc(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}function Gf(e){let t=e.replace(/^0x/,"");if(t.length%2!==0)throw new Error("Invalid hex string length");let r=new Uint8Array(t.length/2);for(let n=0;n<t.length;n+=2)r[n/2]=Number.parseInt(t.slice(n,n+2),16);return r}function Wf(e){return Array.from(e).map(t=>t.toString(16).padStart(2,"0")).join("")}var en=class{constructor(...t){}};var rc=(e,t)=>{e.name="$ZodError",Object.defineProperty(e,"_zod",{value:e._zod,enumerable:!1}),Object.defineProperty(e,"issues",{value:t,enumerable:!1}),e.message=JSON.stringify(t,tn,2),Object.defineProperty(e,"toString",{value:()=>e.message,enumerable:!1})},hn=d("$ZodError",rc),W=d("$ZodError",rc,{Parent:Error});function gn(e,t=r=>r.message){let r={},n=[];for(let o of e.issues)o.path.length>0?(r[o.path[0]]=r[o.path[0]]||[],r[o.path[0]].push(t(o))):n.push(t(o));return{formErrors:n,fieldErrors:r}}function yn(e,t=r=>r.message){let r={_errors:[]},n=o=>{for(let s of o.issues)if(s.code==="invalid_union"&&s.errors.length)s.errors.map(i=>n({issues:i}));else if(s.code==="invalid_key")n({issues:s.issues});else if(s.code==="invalid_element")n({issues:s.issues});else if(s.path.length===0)r._errors.push(t(s));else{let i=r,a=0;for(;a<s.path.length;){let u=s.path[a];a===s.path.length-1?(i[u]=i[u]||{_errors:[]},i[u]._errors.push(t(s))):i[u]=i[u]||{_errors:[]},i=i[u],a++}}};return n(e),r}function _n(e,t=r=>r.message){let r={errors:[]},n=(o,s=[])=>{var i,a;for(let u of o.issues)if(u.code==="invalid_union"&&u.errors.length)u.errors.map(l=>n({issues:l},u.path));else if(u.code==="invalid_key")n({issues:u.issues},u.path);else if(u.code==="invalid_element")n({issues:u.issues},u.path);else{let l=[...s,...u.path];if(l.length===0){r.errors.push(t(u));continue}let p=r,f=0;for(;f<l.length;){let m=l[f],h=f===l.length-1;typeof m=="string"?(p.properties??(p.properties={}),(i=p.properties)[m]??(i[m]={errors:[]}),p=p.properties[m]):(p.items??(p.items=[]),(a=p.items)[m]??(a[m]={errors:[]}),p=p.items[m]),h&&p.errors.push(t(u)),f++}}};return n(e),r}function nc(e){let t=[],r=e.map(n=>typeof n=="object"?n.key:n);for(let n of r)typeof n=="number"?t.push(`[${n}]`):typeof n=="symbol"?t.push(`[${JSON.stringify(String(n))}]`):/[^\w$]/.test(n)?t.push(`[${JSON.stringify(n)}]`):(t.length&&t.push("."),t.push(n));return t.join("")}function bn(e){let t=[],r=[...e.issues].sort((n,o)=>(n.path??[]).length-(o.path??[]).length);for(let n of r)t.push(`\u2716 ${n.message}`),n.path?.length&&t.push(` \u2192 at ${nc(n.path)}`);return t.join(`
3
- `)}var Gt=e=>(t,r,n,o)=>{let s=n?Object.assign(n,{async:!1}):{async:!1},i=t._zod.run({value:r,issues:[]},s);if(i instanceof Promise)throw new se;if(i.issues.length){let a=new(o?.Err??e)(i.issues.map(u=>G(u,s,F())));throw Kt(a,o?.callee),a}return i.value},ge=Gt(W),Wt=e=>async(t,r,n,o)=>{let s=n?Object.assign(n,{async:!0}):{async:!0},i=t._zod.run({value:r,issues:[]},s);if(i instanceof Promise&&(i=await i),i.issues.length){let a=new(o?.Err??e)(i.issues.map(u=>G(u,s,F())));throw Kt(a,o?.callee),a}return i.value},ye=Wt(W),Vt=e=>(t,r,n)=>{let o=n?{...n,async:!1}:{async:!1},s=t._zod.run({value:r,issues:[]},o);if(s instanceof Promise)throw new se;return s.issues.length?{success:!1,error:new(e??hn)(s.issues.map(i=>G(i,o,F())))}:{success:!0,data:s.value}},Te=Vt(W),Qt=e=>async(t,r,n)=>{let o=n?Object.assign(n,{async:!0}):{async:!0},s=t._zod.run({value:r,issues:[]},o);return s instanceof Promise&&(s=await s),s.issues.length?{success:!1,error:new e(s.issues.map(i=>G(i,o,F())))}:{success:!0,data:s.value}},Ie=Qt(W),oc=e=>(t,r,n)=>{let o=n?Object.assign(n,{direction:"backward"}):{direction:"backward"};return Gt(e)(t,r,o)},wn=oc(W),sc=e=>(t,r,n)=>Gt(e)(t,r,n),$n=sc(W),ic=e=>async(t,r,n)=>{let o=n?Object.assign(n,{direction:"backward"}):{direction:"backward"};return Wt(e)(t,r,o)},kn=ic(W),ac=e=>async(t,r,n)=>Wt(e)(t,r,n),xn=ac(W),cc=e=>(t,r,n)=>{let o=n?Object.assign(n,{direction:"backward"}):{direction:"backward"};return Vt(e)(t,r,o)},Sn=cc(W),uc=e=>(t,r,n)=>Vt(e)(t,r,n),vn=uc(W),lc=e=>async(t,r,n)=>{let o=n?Object.assign(n,{direction:"backward"}):{direction:"backward"};return Qt(e)(t,r,o)},zn=lc(W),pc=e=>async(t,r,n)=>Qt(e)(t,r,n),Tn=pc(W);var oe={};ve(oe,{base64:()=>Fn,base64url:()=>Xt,bigint:()=>Gn,boolean:()=>Vn,browserEmail:()=>sd,cidrv4:()=>Bn,cidrv6:()=>Un,cuid:()=>In,cuid2:()=>Pn,date:()=>qn,datetime:()=>Kn,domain:()=>cd,duration:()=>Nn,e164:()=>Hn,email:()=>Ln,emoji:()=>Zn,extendedDuration:()=>Qf,guid:()=>On,hex:()=>ud,hostname:()=>ad,html5Email:()=>rd,idnEmail:()=>od,integer:()=>Wn,ipv4:()=>jn,ipv6:()=>Dn,ksuid:()=>Rn,lowercase:()=>eo,mac:()=>Mn,md5_base64:()=>pd,md5_base64url:()=>fd,md5_hex:()=>ld,nanoid:()=>Cn,null:()=>Qn,number:()=>er,rfc5322Email:()=>nd,sha1_base64:()=>md,sha1_base64url:()=>hd,sha1_hex:()=>dd,sha256_base64:()=>yd,sha256_base64url:()=>_d,sha256_hex:()=>gd,sha384_base64:()=>wd,sha384_base64url:()=>$d,sha384_hex:()=>bd,sha512_base64:()=>xd,sha512_base64url:()=>Sd,sha512_hex:()=>kd,string:()=>Yn,time:()=>Jn,ulid:()=>En,undefined:()=>Xn,unicodeEmail:()=>fc,uppercase:()=>to,uuid:()=>Pe,uuid4:()=>Xf,uuid6:()=>ed,uuid7:()=>td,xid:()=>An});var In=/^[cC][^\s-]{8,}$/,Pn=/^[0-9a-z]+$/,En=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,An=/^[0-9a-vA-V]{20}$/,Rn=/^[A-Za-z0-9]{27}$/,Cn=/^[a-zA-Z0-9_-]{21}$/,Nn=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,Qf=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,On=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,Pe=e=>e?new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${e}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`):/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/,Xf=Pe(4),ed=Pe(6),td=Pe(7),Ln=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,rd=/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/,nd=/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/,fc=/^[^\s@"]{1,64}@[^\s@]{1,255}$/u,od=fc,sd=/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/,id="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$";function Zn(){return new RegExp(id,"u")}var jn=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,Dn=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/,Mn=e=>{let t=re(e??":");return new RegExp(`^(?:[0-9A-F]{2}${t}){5}[0-9A-F]{2}$|^(?:[0-9a-f]{2}${t}){5}[0-9a-f]{2}$`)},Bn=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,Un=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,Fn=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,Xt=/^[A-Za-z0-9_-]*$/,ad=/^(?=.{1,253}\.?$)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[-0-9a-zA-Z]{0,61}[0-9a-zA-Z])?)*\.?$/,cd=/^([a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/,Hn=/^\+[1-9]\d{6,14}$/,dc="(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))",qn=new RegExp(`^${dc}$`);function mc(e){let t="(?:[01]\\d|2[0-3]):[0-5]\\d";return typeof e.precision=="number"?e.precision===-1?`${t}`:e.precision===0?`${t}:[0-5]\\d`:`${t}:[0-5]\\d\\.\\d{${e.precision}}`:`${t}(?::[0-5]\\d(?:\\.\\d+)?)?`}function Jn(e){return new RegExp(`^${mc(e)}$`)}function Kn(e){let t=mc({precision:e.precision}),r=["Z"];e.local&&r.push(""),e.offset&&r.push("([+-](?:[01]\\d|2[0-3]):[0-5]\\d)");let n=`${t}(?:${r.join("|")})`;return new RegExp(`^${dc}T(?:${n})$`)}var Yn=e=>{let t=e?`[\\s\\S]{${e?.minimum??0},${e?.maximum??""}}`:"[\\s\\S]*";return new RegExp(`^${t}$`)},Gn=/^-?\d+n?$/,Wn=/^-?\d+$/,er=/^-?\d+(?:\.\d+)?$/,Vn=/^(?:true|false)$/i,Qn=/^null$/i;var Xn=/^undefined$/i;var eo=/^[^A-Z]*$/,to=/^[^a-z]*$/,ud=/^[0-9a-fA-F]*$/;function ct(e,t){return new RegExp(`^[A-Za-z0-9+/]{${e}}${t}$`)}function ut(e){return new RegExp(`^[A-Za-z0-9_-]{${e}}$`)}var ld=/^[0-9a-fA-F]{32}$/,pd=ct(22,"=="),fd=ut(22),dd=/^[0-9a-fA-F]{40}$/,md=ct(27,"="),hd=ut(27),gd=/^[0-9a-fA-F]{64}$/,yd=ct(43,"="),_d=ut(43),bd=/^[0-9a-fA-F]{96}$/,wd=ct(64,""),$d=ut(64),kd=/^[0-9a-fA-F]{128}$/,xd=ct(86,"=="),Sd=ut(86);var A=d("$ZodCheck",(e,t)=>{var r;e._zod??(e._zod={}),e._zod.def=t,(r=e._zod).onattach??(r.onattach=[])}),gc={number:"number",bigint:"bigint",object:"date"},tr=d("$ZodCheckLessThan",(e,t)=>{A.init(e,t);let r=gc[typeof t.value];e._zod.onattach.push(n=>{let o=n._zod.bag,s=(t.inclusive?o.maximum:o.exclusiveMaximum)??Number.POSITIVE_INFINITY;t.value<s&&(t.inclusive?o.maximum=t.value:o.exclusiveMaximum=t.value)}),e._zod.check=n=>{(t.inclusive?n.value<=t.value:n.value<t.value)||n.issues.push({origin:r,code:"too_big",maximum:typeof t.value=="object"?t.value.getTime():t.value,input:n.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),rr=d("$ZodCheckGreaterThan",(e,t)=>{A.init(e,t);let r=gc[typeof t.value];e._zod.onattach.push(n=>{let o=n._zod.bag,s=(t.inclusive?o.minimum:o.exclusiveMinimum)??Number.NEGATIVE_INFINITY;t.value>s&&(t.inclusive?o.minimum=t.value:o.exclusiveMinimum=t.value)}),e._zod.check=n=>{(t.inclusive?n.value>=t.value:n.value>t.value)||n.issues.push({origin:r,code:"too_small",minimum:typeof t.value=="object"?t.value.getTime():t.value,input:n.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),ro=d("$ZodCheckMultipleOf",(e,t)=>{A.init(e,t),e._zod.onattach.push(r=>{var n;(n=r._zod.bag).multipleOf??(n.multipleOf=t.value)}),e._zod.check=r=>{if(typeof r.value!=typeof t.value)throw new Error("Cannot mix number and bigint in multiple_of check.");(typeof r.value=="bigint"?r.value%t.value===BigInt(0):rn(r.value,t.value)===0)||r.issues.push({origin:typeof r.value,code:"not_multiple_of",divisor:t.value,input:r.value,inst:e,continue:!t.abort})}}),no=d("$ZodCheckNumberFormat",(e,t)=>{A.init(e,t),t.format=t.format||"float64";let r=t.format?.includes("int"),n=r?"int":"number",[o,s]=cn[t.format];e._zod.onattach.push(i=>{let a=i._zod.bag;a.format=t.format,a.minimum=o,a.maximum=s,r&&(a.pattern=Wn)}),e._zod.check=i=>{let a=i.value;if(r){if(!Number.isInteger(a)){i.issues.push({expected:n,format:t.format,code:"invalid_type",continue:!1,input:a,inst:e});return}if(!Number.isSafeInteger(a)){a>0?i.issues.push({input:a,code:"too_big",maximum:Number.MAX_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:n,inclusive:!0,continue:!t.abort}):i.issues.push({input:a,code:"too_small",minimum:Number.MIN_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:n,inclusive:!0,continue:!t.abort});return}}a<o&&i.issues.push({origin:"number",input:a,code:"too_small",minimum:o,inclusive:!0,inst:e,continue:!t.abort}),a>s&&i.issues.push({origin:"number",input:a,code:"too_big",maximum:s,inclusive:!0,inst:e,continue:!t.abort})}}),oo=d("$ZodCheckBigIntFormat",(e,t)=>{A.init(e,t);let[r,n]=un[t.format];e._zod.onattach.push(o=>{let s=o._zod.bag;s.format=t.format,s.minimum=r,s.maximum=n}),e._zod.check=o=>{let s=o.value;s<r&&o.issues.push({origin:"bigint",input:s,code:"too_small",minimum:r,inclusive:!0,inst:e,continue:!t.abort}),s>n&&o.issues.push({origin:"bigint",input:s,code:"too_big",maximum:n,inclusive:!0,inst:e,continue:!t.abort})}}),so=d("$ZodCheckMaxSize",(e,t)=>{var r;A.init(e,t),(r=e._zod.def).when??(r.when=n=>{let o=n.value;return!fe(o)&&o.size!==void 0}),e._zod.onattach.push(n=>{let o=n._zod.bag.maximum??Number.POSITIVE_INFINITY;t.maximum<o&&(n._zod.bag.maximum=t.maximum)}),e._zod.check=n=>{let o=n.value;o.size<=t.maximum||n.issues.push({origin:it(o),code:"too_big",maximum:t.maximum,inclusive:!0,input:o,inst:e,continue:!t.abort})}}),io=d("$ZodCheckMinSize",(e,t)=>{var r;A.init(e,t),(r=e._zod.def).when??(r.when=n=>{let o=n.value;return!fe(o)&&o.size!==void 0}),e._zod.onattach.push(n=>{let o=n._zod.bag.minimum??Number.NEGATIVE_INFINITY;t.minimum>o&&(n._zod.bag.minimum=t.minimum)}),e._zod.check=n=>{let o=n.value;o.size>=t.minimum||n.issues.push({origin:it(o),code:"too_small",minimum:t.minimum,inclusive:!0,input:o,inst:e,continue:!t.abort})}}),ao=d("$ZodCheckSizeEquals",(e,t)=>{var r;A.init(e,t),(r=e._zod.def).when??(r.when=n=>{let o=n.value;return!fe(o)&&o.size!==void 0}),e._zod.onattach.push(n=>{let o=n._zod.bag;o.minimum=t.size,o.maximum=t.size,o.size=t.size}),e._zod.check=n=>{let o=n.value,s=o.size;if(s===t.size)return;let i=s>t.size;n.issues.push({origin:it(o),...i?{code:"too_big",maximum:t.size}:{code:"too_small",minimum:t.size},inclusive:!0,exact:!0,input:n.value,inst:e,continue:!t.abort})}}),co=d("$ZodCheckMaxLength",(e,t)=>{var r;A.init(e,t),(r=e._zod.def).when??(r.when=n=>{let o=n.value;return!fe(o)&&o.length!==void 0}),e._zod.onattach.push(n=>{let o=n._zod.bag.maximum??Number.POSITIVE_INFINITY;t.maximum<o&&(n._zod.bag.maximum=t.maximum)}),e._zod.check=n=>{let o=n.value;if(o.length<=t.maximum)return;let i=at(o);n.issues.push({origin:i,code:"too_big",maximum:t.maximum,inclusive:!0,input:o,inst:e,continue:!t.abort})}}),uo=d("$ZodCheckMinLength",(e,t)=>{var r;A.init(e,t),(r=e._zod.def).when??(r.when=n=>{let o=n.value;return!fe(o)&&o.length!==void 0}),e._zod.onattach.push(n=>{let o=n._zod.bag.minimum??Number.NEGATIVE_INFINITY;t.minimum>o&&(n._zod.bag.minimum=t.minimum)}),e._zod.check=n=>{let o=n.value;if(o.length>=t.minimum)return;let i=at(o);n.issues.push({origin:i,code:"too_small",minimum:t.minimum,inclusive:!0,input:o,inst:e,continue:!t.abort})}}),lo=d("$ZodCheckLengthEquals",(e,t)=>{var r;A.init(e,t),(r=e._zod.def).when??(r.when=n=>{let o=n.value;return!fe(o)&&o.length!==void 0}),e._zod.onattach.push(n=>{let o=n._zod.bag;o.minimum=t.length,o.maximum=t.length,o.length=t.length}),e._zod.check=n=>{let o=n.value,s=o.length;if(s===t.length)return;let i=at(o),a=s>t.length;n.issues.push({origin:i,...a?{code:"too_big",maximum:t.length}:{code:"too_small",minimum:t.length},inclusive:!0,exact:!0,input:n.value,inst:e,continue:!t.abort})}}),Me=d("$ZodCheckStringFormat",(e,t)=>{var r,n;A.init(e,t),e._zod.onattach.push(o=>{let s=o._zod.bag;s.format=t.format,t.pattern&&(s.patterns??(s.patterns=new Set),s.patterns.add(t.pattern))}),t.pattern?(r=e._zod).check??(r.check=o=>{t.pattern.lastIndex=0,!t.pattern.test(o.value)&&o.issues.push({origin:"string",code:"invalid_format",format:t.format,input:o.value,...t.pattern?{pattern:t.pattern.toString()}:{},inst:e,continue:!t.abort})}):(n=e._zod).check??(n.check=()=>{})}),po=d("$ZodCheckRegex",(e,t)=>{Me.init(e,t),e._zod.check=r=>{t.pattern.lastIndex=0,!t.pattern.test(r.value)&&r.issues.push({origin:"string",code:"invalid_format",format:"regex",input:r.value,pattern:t.pattern.toString(),inst:e,continue:!t.abort})}}),fo=d("$ZodCheckLowerCase",(e,t)=>{t.pattern??(t.pattern=eo),Me.init(e,t)}),mo=d("$ZodCheckUpperCase",(e,t)=>{t.pattern??(t.pattern=to),Me.init(e,t)}),ho=d("$ZodCheckIncludes",(e,t)=>{A.init(e,t);let r=re(t.includes),n=new RegExp(typeof t.position=="number"?`^.{${t.position}}${r}`:r);t.pattern=n,e._zod.onattach.push(o=>{let s=o._zod.bag;s.patterns??(s.patterns=new Set),s.patterns.add(n)}),e._zod.check=o=>{o.value.includes(t.includes,t.position)||o.issues.push({origin:"string",code:"invalid_format",format:"includes",includes:t.includes,input:o.value,inst:e,continue:!t.abort})}}),go=d("$ZodCheckStartsWith",(e,t)=>{A.init(e,t);let r=new RegExp(`^${re(t.prefix)}.*`);t.pattern??(t.pattern=r),e._zod.onattach.push(n=>{let o=n._zod.bag;o.patterns??(o.patterns=new Set),o.patterns.add(r)}),e._zod.check=n=>{n.value.startsWith(t.prefix)||n.issues.push({origin:"string",code:"invalid_format",format:"starts_with",prefix:t.prefix,input:n.value,inst:e,continue:!t.abort})}}),yo=d("$ZodCheckEndsWith",(e,t)=>{A.init(e,t);let r=new RegExp(`.*${re(t.suffix)}$`);t.pattern??(t.pattern=r),e._zod.onattach.push(n=>{let o=n._zod.bag;o.patterns??(o.patterns=new Set),o.patterns.add(r)}),e._zod.check=n=>{n.value.endsWith(t.suffix)||n.issues.push({origin:"string",code:"invalid_format",format:"ends_with",suffix:t.suffix,input:n.value,inst:e,continue:!t.abort})}});function hc(e,t,r){e.issues.length&&t.issues.push(...Q(r,e.issues))}var _o=d("$ZodCheckProperty",(e,t)=>{A.init(e,t),e._zod.check=r=>{let n=t.schema._zod.run({value:r.value[t.property],issues:[]},{});if(n instanceof Promise)return n.then(o=>hc(o,r,t.property));hc(n,r,t.property)}}),bo=d("$ZodCheckMimeType",(e,t)=>{A.init(e,t);let r=new Set(t.mime);e._zod.onattach.push(n=>{n._zod.bag.mime=t.mime}),e._zod.check=n=>{r.has(n.value.type)||n.issues.push({code:"invalid_value",values:t.mime,input:n.value.type,inst:e,continue:!t.abort})}}),wo=d("$ZodCheckOverwrite",(e,t)=>{A.init(e,t),e._zod.check=r=>{r.value=t.tx(r.value)}});var lt=class{constructor(t=[]){this.content=[],this.indent=0,this&&(this.args=t)}indented(t){this.indent+=1,t(this),this.indent-=1}write(t){if(typeof t=="function"){t(this,{execution:"sync"}),t(this,{execution:"async"});return}let n=t.split(`
4
- `).filter(i=>i),o=Math.min(...n.map(i=>i.length-i.trimStart().length)),s=n.map(i=>i.slice(o)).map(i=>" ".repeat(this.indent*2)+i);for(let i of s)this.content.push(i)}compile(){let t=Function,r=this?.args,o=[...(this?.content??[""]).map(s=>` ${s}`)];return new t(...r,o.join(`
5
- `))}};var $o={major:4,minor:3,patch:6};var k=d("$ZodType",(e,t)=>{var r;e??(e={}),e._zod.def=t,e._zod.bag=e._zod.bag||{},e._zod.version=$o;let n=[...e._zod.def.checks??[]];e._zod.traits.has("$ZodCheck")&&n.unshift(e);for(let o of n)for(let s of o._zod.onattach)s(e);if(n.length===0)(r=e._zod).deferred??(r.deferred=[]),e._zod.deferred?.push(()=>{e._zod.run=e._zod.parse});else{let o=(i,a,u)=>{let l=he(i),p;for(let f of a){if(f._zod.def.when){if(!f._zod.def.when(i))continue}else if(l)continue;let m=i.issues.length,h=f._zod.check(i);if(h instanceof Promise&&u?.async===!1)throw new se;if(p||h instanceof Promise)p=(p??Promise.resolve()).then(async()=>{await h,i.issues.length!==m&&(l||(l=he(i,m)))});else{if(i.issues.length===m)continue;l||(l=he(i,m))}}return p?p.then(()=>i):i},s=(i,a,u)=>{if(he(i))return i.aborted=!0,i;let l=o(a,n,u);if(l instanceof Promise){if(u.async===!1)throw new se;return l.then(p=>e._zod.parse(p,u))}return e._zod.parse(l,u)};e._zod.run=(i,a)=>{if(a.skipChecks)return e._zod.parse(i,a);if(a.direction==="backward"){let l=e._zod.parse({value:i.value,issues:[]},{...a,skipChecks:!0});return l instanceof Promise?l.then(p=>s(p,i,a)):s(l,i,a)}let u=e._zod.parse(i,a);if(u instanceof Promise){if(a.async===!1)throw new se;return u.then(l=>o(l,n,a))}return o(u,n,a)}}S(e,"~standard",()=>({validate:o=>{try{let s=Te(e,o);return s.success?{value:s.data}:{issues:s.error?.issues}}catch{return Ie(e,o).then(i=>i.success?{value:i.data}:{issues:i.error?.issues})}},vendor:"zod",version:1}))}),Be=d("$ZodString",(e,t)=>{k.init(e,t),e._zod.pattern=[...e?._zod.bag?.patterns??[]].pop()??Yn(e._zod.bag),e._zod.parse=(r,n)=>{if(t.coerce)try{r.value=String(r.value)}catch{}return typeof r.value=="string"||r.issues.push({expected:"string",code:"invalid_type",input:r.value,inst:e}),r}}),E=d("$ZodStringFormat",(e,t)=>{Me.init(e,t),Be.init(e,t)}),xo=d("$ZodGUID",(e,t)=>{t.pattern??(t.pattern=On),E.init(e,t)}),So=d("$ZodUUID",(e,t)=>{if(t.version){let n={v1:1,v2:2,v3:3,v4:4,v5:5,v6:6,v7:7,v8:8}[t.version];if(n===void 0)throw new Error(`Invalid UUID version: "${t.version}"`);t.pattern??(t.pattern=Pe(n))}else t.pattern??(t.pattern=Pe());E.init(e,t)}),vo=d("$ZodEmail",(e,t)=>{t.pattern??(t.pattern=Ln),E.init(e,t)}),zo=d("$ZodURL",(e,t)=>{E.init(e,t),e._zod.check=r=>{try{let n=r.value.trim(),o=new URL(n);t.hostname&&(t.hostname.lastIndex=0,t.hostname.test(o.hostname)||r.issues.push({code:"invalid_format",format:"url",note:"Invalid hostname",pattern:t.hostname.source,input:r.value,inst:e,continue:!t.abort})),t.protocol&&(t.protocol.lastIndex=0,t.protocol.test(o.protocol.endsWith(":")?o.protocol.slice(0,-1):o.protocol)||r.issues.push({code:"invalid_format",format:"url",note:"Invalid protocol",pattern:t.protocol.source,input:r.value,inst:e,continue:!t.abort})),t.normalize?r.value=o.href:r.value=n;return}catch{r.issues.push({code:"invalid_format",format:"url",input:r.value,inst:e,continue:!t.abort})}}}),To=d("$ZodEmoji",(e,t)=>{t.pattern??(t.pattern=Zn()),E.init(e,t)}),Io=d("$ZodNanoID",(e,t)=>{t.pattern??(t.pattern=Cn),E.init(e,t)}),Po=d("$ZodCUID",(e,t)=>{t.pattern??(t.pattern=In),E.init(e,t)}),Eo=d("$ZodCUID2",(e,t)=>{t.pattern??(t.pattern=Pn),E.init(e,t)}),Ao=d("$ZodULID",(e,t)=>{t.pattern??(t.pattern=En),E.init(e,t)}),Ro=d("$ZodXID",(e,t)=>{t.pattern??(t.pattern=An),E.init(e,t)}),Co=d("$ZodKSUID",(e,t)=>{t.pattern??(t.pattern=Rn),E.init(e,t)}),No=d("$ZodISODateTime",(e,t)=>{t.pattern??(t.pattern=Kn(t)),E.init(e,t)}),Oo=d("$ZodISODate",(e,t)=>{t.pattern??(t.pattern=qn),E.init(e,t)}),Lo=d("$ZodISOTime",(e,t)=>{t.pattern??(t.pattern=Jn(t)),E.init(e,t)}),Zo=d("$ZodISODuration",(e,t)=>{t.pattern??(t.pattern=Nn),E.init(e,t)}),jo=d("$ZodIPv4",(e,t)=>{t.pattern??(t.pattern=jn),E.init(e,t),e._zod.bag.format="ipv4"}),Do=d("$ZodIPv6",(e,t)=>{t.pattern??(t.pattern=Dn),E.init(e,t),e._zod.bag.format="ipv6",e._zod.check=r=>{try{new URL(`http://[${r.value}]`)}catch{r.issues.push({code:"invalid_format",format:"ipv6",input:r.value,inst:e,continue:!t.abort})}}}),Mo=d("$ZodMAC",(e,t)=>{t.pattern??(t.pattern=Mn(t.delimiter)),E.init(e,t),e._zod.bag.format="mac"}),Bo=d("$ZodCIDRv4",(e,t)=>{t.pattern??(t.pattern=Bn),E.init(e,t)}),Uo=d("$ZodCIDRv6",(e,t)=>{t.pattern??(t.pattern=Un),E.init(e,t),e._zod.check=r=>{let n=r.value.split("/");try{if(n.length!==2)throw new Error;let[o,s]=n;if(!s)throw new Error;let i=Number(s);if(`${i}`!==s)throw new Error;if(i<0||i>128)throw new Error;new URL(`http://[${o}]`)}catch{r.issues.push({code:"invalid_format",format:"cidrv6",input:r.value,inst:e,continue:!t.abort})}}});function Fo(e){if(e==="")return!0;if(e.length%4!==0)return!1;try{return atob(e),!0}catch{return!1}}var Ho=d("$ZodBase64",(e,t)=>{t.pattern??(t.pattern=Fn),E.init(e,t),e._zod.bag.contentEncoding="base64",e._zod.check=r=>{Fo(r.value)||r.issues.push({code:"invalid_format",format:"base64",input:r.value,inst:e,continue:!t.abort})}});function Pc(e){if(!Xt.test(e))return!1;let t=e.replace(/[-_]/g,n=>n==="-"?"+":"/"),r=t.padEnd(Math.ceil(t.length/4)*4,"=");return Fo(r)}var qo=d("$ZodBase64URL",(e,t)=>{t.pattern??(t.pattern=Xt),E.init(e,t),e._zod.bag.contentEncoding="base64url",e._zod.check=r=>{Pc(r.value)||r.issues.push({code:"invalid_format",format:"base64url",input:r.value,inst:e,continue:!t.abort})}}),Jo=d("$ZodE164",(e,t)=>{t.pattern??(t.pattern=Hn),E.init(e,t)});function Ec(e,t=null){try{let r=e.split(".");if(r.length!==3)return!1;let[n]=r;if(!n)return!1;let o=JSON.parse(atob(n));return!("typ"in o&&o?.typ!=="JWT"||!o.alg||t&&(!("alg"in o)||o.alg!==t))}catch{return!1}}var Ko=d("$ZodJWT",(e,t)=>{E.init(e,t),e._zod.check=r=>{Ec(r.value,t.alg)||r.issues.push({code:"invalid_format",format:"jwt",input:r.value,inst:e,continue:!t.abort})}}),Yo=d("$ZodCustomStringFormat",(e,t)=>{E.init(e,t),e._zod.check=r=>{t.fn(r.value)||r.issues.push({code:"invalid_format",format:t.format,input:r.value,inst:e,continue:!t.abort})}}),cr=d("$ZodNumber",(e,t)=>{k.init(e,t),e._zod.pattern=e._zod.bag.pattern??er,e._zod.parse=(r,n)=>{if(t.coerce)try{r.value=Number(r.value)}catch{}let o=r.value;if(typeof o=="number"&&!Number.isNaN(o)&&Number.isFinite(o))return r;let s=typeof o=="number"?Number.isNaN(o)?"NaN":Number.isFinite(o)?void 0:"Infinity":void 0;return r.issues.push({expected:"number",code:"invalid_type",input:o,inst:e,...s?{received:s}:{}}),r}}),Go=d("$ZodNumberFormat",(e,t)=>{no.init(e,t),cr.init(e,t)}),pt=d("$ZodBoolean",(e,t)=>{k.init(e,t),e._zod.pattern=Vn,e._zod.parse=(r,n)=>{if(t.coerce)try{r.value=!!r.value}catch{}let o=r.value;return typeof o=="boolean"||r.issues.push({expected:"boolean",code:"invalid_type",input:o,inst:e}),r}}),ur=d("$ZodBigInt",(e,t)=>{k.init(e,t),e._zod.pattern=Gn,e._zod.parse=(r,n)=>{if(t.coerce)try{r.value=BigInt(r.value)}catch{}return typeof r.value=="bigint"||r.issues.push({expected:"bigint",code:"invalid_type",input:r.value,inst:e}),r}}),Wo=d("$ZodBigIntFormat",(e,t)=>{oo.init(e,t),ur.init(e,t)}),Vo=d("$ZodSymbol",(e,t)=>{k.init(e,t),e._zod.parse=(r,n)=>{let o=r.value;return typeof o=="symbol"||r.issues.push({expected:"symbol",code:"invalid_type",input:o,inst:e}),r}}),Qo=d("$ZodUndefined",(e,t)=>{k.init(e,t),e._zod.pattern=Xn,e._zod.values=new Set([void 0]),e._zod.optin="optional",e._zod.optout="optional",e._zod.parse=(r,n)=>{let o=r.value;return typeof o>"u"||r.issues.push({expected:"undefined",code:"invalid_type",input:o,inst:e}),r}}),Xo=d("$ZodNull",(e,t)=>{k.init(e,t),e._zod.pattern=Qn,e._zod.values=new Set([null]),e._zod.parse=(r,n)=>{let o=r.value;return o===null||r.issues.push({expected:"null",code:"invalid_type",input:o,inst:e}),r}}),es=d("$ZodAny",(e,t)=>{k.init(e,t),e._zod.parse=r=>r}),ts=d("$ZodUnknown",(e,t)=>{k.init(e,t),e._zod.parse=r=>r}),rs=d("$ZodNever",(e,t)=>{k.init(e,t),e._zod.parse=(r,n)=>(r.issues.push({expected:"never",code:"invalid_type",input:r.value,inst:e}),r)}),ns=d("$ZodVoid",(e,t)=>{k.init(e,t),e._zod.parse=(r,n)=>{let o=r.value;return typeof o>"u"||r.issues.push({expected:"void",code:"invalid_type",input:o,inst:e}),r}}),os=d("$ZodDate",(e,t)=>{k.init(e,t),e._zod.parse=(r,n)=>{if(t.coerce)try{r.value=new Date(r.value)}catch{}let o=r.value,s=o instanceof Date;return s&&!Number.isNaN(o.getTime())||r.issues.push({expected:"date",code:"invalid_type",input:o,...s?{received:"Invalid Date"}:{},inst:e}),r}});function _c(e,t,r){e.issues.length&&t.issues.push(...Q(r,e.issues)),t.value[r]=e.value}var ss=d("$ZodArray",(e,t)=>{k.init(e,t),e._zod.parse=(r,n)=>{let o=r.value;if(!Array.isArray(o))return r.issues.push({expected:"array",code:"invalid_type",input:o,inst:e}),r;r.value=Array(o.length);let s=[];for(let i=0;i<o.length;i++){let a=o[i],u=t.element._zod.run({value:a,issues:[]},n);u instanceof Promise?s.push(u.then(l=>_c(l,r,i))):_c(u,r,i)}return s.length?Promise.all(s).then(()=>r):r}});function ar(e,t,r,n,o){if(e.issues.length){if(o&&!(r in n))return;t.issues.push(...Q(r,e.issues))}e.value===void 0?r in n&&(t.value[r]=void 0):t.value[r]=e.value}function Ac(e){let t=Object.keys(e.shape);for(let n of t)if(!e.shape?.[n]?._zod?.traits?.has("$ZodType"))throw new Error(`Invalid element at key "${n}": expected a Zod schema`);let r=an(e.shape);return{...e,keys:t,keySet:new Set(t),numKeys:t.length,optionalKeys:new Set(r)}}function Rc(e,t,r,n,o,s){let i=[],a=o.keySet,u=o.catchall._zod,l=u.def.type,p=u.optout==="optional";for(let f in t){if(a.has(f))continue;if(l==="never"){i.push(f);continue}let m=u.run({value:t[f],issues:[]},n);m instanceof Promise?e.push(m.then(h=>ar(h,r,f,t,p))):ar(m,r,f,t,p)}return i.length&&r.issues.push({code:"unrecognized_keys",keys:i,input:t,inst:s}),e.length?Promise.all(e).then(()=>r):r}var lr=d("$ZodObject",(e,t)=>{if(k.init(e,t),!Object.getOwnPropertyDescriptor(t,"shape")?.get){let a=t.shape;Object.defineProperty(t,"shape",{get:()=>{let u={...a};return Object.defineProperty(t,"shape",{value:u}),u}})}let n=Ze(()=>Ac(t));S(e._zod,"propValues",()=>{let a=t.shape,u={};for(let l in a){let p=a[l]._zod;if(p.values){u[l]??(u[l]=new Set);for(let f of p.values)u[l].add(f)}}return u});let o=ze,s=t.catchall,i;e._zod.parse=(a,u)=>{i??(i=n.value);let l=a.value;if(!o(l))return a.issues.push({expected:"object",code:"invalid_type",input:l,inst:e}),a;a.value={};let p=[],f=i.shape;for(let m of i.keys){let h=f[m],y=h._zod.optout==="optional",_=h._zod.run({value:l[m],issues:[]},u);_ instanceof Promise?p.push(_.then(x=>ar(x,a,m,l,y))):ar(_,a,m,l,y)}return s?Rc(p,l,a,u,n.value,e):p.length?Promise.all(p).then(()=>a):a}}),vd=d("$ZodObjectJIT",(e,t)=>{lr.init(e,t);let r=e._zod.parse,n=Ze(()=>Ac(t)),o=m=>{let h=new lt(["shape","payload","ctx"]),y=n.value,_=N=>{let U=Jt(N);return`shape[${U}]._zod.run({ value: input[${U}], issues: [] }, ctx)`};h.write("const input = payload.value;");let x=Object.create(null),P=0;for(let N of y.keys)x[N]=`key_${P++}`;h.write("const newResult = {};");for(let N of y.keys){let U=x[N],L=Jt(N),Dt=m[N]?._zod?.optout==="optional";h.write(`const ${U} = ${_(N)};`),Dt?h.write(`
6
- if (${U}.issues.length) {
7
- if (${L} in input) {
8
- payload.issues = payload.issues.concat(${U}.issues.map(iss => ({
9
- ...iss,
10
- path: iss.path ? [${L}, ...iss.path] : [${L}]
11
- })));
12
- }
13
- }
14
-
15
- if (${U}.value === undefined) {
16
- if (${L} in input) {
17
- newResult[${L}] = undefined;
18
- }
19
- } else {
20
- newResult[${L}] = ${U}.value;
21
- }
22
-
23
- `):h.write(`
24
- if (${U}.issues.length) {
25
- payload.issues = payload.issues.concat(${U}.issues.map(iss => ({
26
- ...iss,
27
- path: iss.path ? [${L}, ...iss.path] : [${L}]
28
- })));
29
- }
30
-
31
- if (${U}.value === undefined) {
32
- if (${L} in input) {
33
- newResult[${L}] = undefined;
34
- }
35
- } else {
36
- newResult[${L}] = ${U}.value;
37
- }
38
-
39
- `)}h.write("payload.value = newResult;"),h.write("return payload;");let B=h.compile();return(N,U)=>B(m,N,U)},s,i=ze,a=!tt.jitless,l=a&&on.value,p=t.catchall,f;e._zod.parse=(m,h)=>{f??(f=n.value);let y=m.value;return i(y)?a&&l&&h?.async===!1&&h.jitless!==!0?(s||(s=o(t.shape)),m=s(m,h),p?Rc([],y,m,h,f,e):m):r(m,h):(m.issues.push({expected:"object",code:"invalid_type",input:y,inst:e}),m)}});function bc(e,t,r,n){for(let s of e)if(s.issues.length===0)return t.value=s.value,t;let o=e.filter(s=>!he(s));return o.length===1?(t.value=o[0].value,o[0]):(t.issues.push({code:"invalid_union",input:t.value,inst:r,errors:e.map(s=>s.issues.map(i=>G(i,n,F())))}),t)}var ft=d("$ZodUnion",(e,t)=>{k.init(e,t),S(e._zod,"optin",()=>t.options.some(o=>o._zod.optin==="optional")?"optional":void 0),S(e._zod,"optout",()=>t.options.some(o=>o._zod.optout==="optional")?"optional":void 0),S(e._zod,"values",()=>{if(t.options.every(o=>o._zod.values))return new Set(t.options.flatMap(o=>Array.from(o._zod.values)))}),S(e._zod,"pattern",()=>{if(t.options.every(o=>o._zod.pattern)){let o=t.options.map(s=>s._zod.pattern);return new RegExp(`^(${o.map(s=>ot(s.source)).join("|")})$`)}});let r=t.options.length===1,n=t.options[0]._zod.run;e._zod.parse=(o,s)=>{if(r)return n(o,s);let i=!1,a=[];for(let u of t.options){let l=u._zod.run({value:o.value,issues:[]},s);if(l instanceof Promise)a.push(l),i=!0;else{if(l.issues.length===0)return l;a.push(l)}}return i?Promise.all(a).then(u=>bc(u,o,e,s)):bc(a,o,e,s)}});function wc(e,t,r,n){let o=e.filter(s=>s.issues.length===0);return o.length===1?(t.value=o[0].value,t):(o.length===0?t.issues.push({code:"invalid_union",input:t.value,inst:r,errors:e.map(s=>s.issues.map(i=>G(i,n,F())))}):t.issues.push({code:"invalid_union",input:t.value,inst:r,errors:[],inclusive:!1}),t)}var is=d("$ZodXor",(e,t)=>{ft.init(e,t),t.inclusive=!1;let r=t.options.length===1,n=t.options[0]._zod.run;e._zod.parse=(o,s)=>{if(r)return n(o,s);let i=!1,a=[];for(let u of t.options){let l=u._zod.run({value:o.value,issues:[]},s);l instanceof Promise?(a.push(l),i=!0):a.push(l)}return i?Promise.all(a).then(u=>wc(u,o,e,s)):wc(a,o,e,s)}}),as=d("$ZodDiscriminatedUnion",(e,t)=>{t.inclusive=!1,ft.init(e,t);let r=e._zod.parse;S(e._zod,"propValues",()=>{let o={};for(let s of t.options){let i=s._zod.propValues;if(!i||Object.keys(i).length===0)throw new Error(`Invalid discriminated union option at index "${t.options.indexOf(s)}"`);for(let[a,u]of Object.entries(i)){o[a]||(o[a]=new Set);for(let l of u)o[a].add(l)}}return o});let n=Ze(()=>{let o=t.options,s=new Map;for(let i of o){let a=i._zod.propValues?.[t.discriminator];if(!a||a.size===0)throw new Error(`Invalid discriminated union option at index "${t.options.indexOf(i)}"`);for(let u of a){if(s.has(u))throw new Error(`Duplicate discriminator value "${String(u)}"`);s.set(u,i)}}return s});e._zod.parse=(o,s)=>{let i=o.value;if(!ze(i))return o.issues.push({code:"invalid_type",expected:"object",input:i,inst:e}),o;let a=n.value.get(i?.[t.discriminator]);return a?a._zod.run(o,s):t.unionFallback?r(o,s):(o.issues.push({code:"invalid_union",errors:[],note:"No matching discriminator",discriminator:t.discriminator,input:i,path:[t.discriminator],inst:e}),o)}}),cs=d("$ZodIntersection",(e,t)=>{k.init(e,t),e._zod.parse=(r,n)=>{let o=r.value,s=t.left._zod.run({value:o,issues:[]},n),i=t.right._zod.run({value:o,issues:[]},n);return s instanceof Promise||i instanceof Promise?Promise.all([s,i]).then(([u,l])=>$c(r,u,l)):$c(r,s,i)}});function ko(e,t){if(e===t)return{valid:!0,data:e};if(e instanceof Date&&t instanceof Date&&+e==+t)return{valid:!0,data:e};if(me(e)&&me(t)){let r=Object.keys(t),n=Object.keys(e).filter(s=>r.indexOf(s)!==-1),o={...e,...t};for(let s of n){let i=ko(e[s],t[s]);if(!i.valid)return{valid:!1,mergeErrorPath:[s,...i.mergeErrorPath]};o[s]=i.data}return{valid:!0,data:o}}if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return{valid:!1,mergeErrorPath:[]};let r=[];for(let n=0;n<e.length;n++){let o=e[n],s=t[n],i=ko(o,s);if(!i.valid)return{valid:!1,mergeErrorPath:[n,...i.mergeErrorPath]};r.push(i.data)}return{valid:!0,data:r}}return{valid:!1,mergeErrorPath:[]}}function $c(e,t,r){let n=new Map,o;for(let a of t.issues)if(a.code==="unrecognized_keys"){o??(o=a);for(let u of a.keys)n.has(u)||n.set(u,{}),n.get(u).l=!0}else e.issues.push(a);for(let a of r.issues)if(a.code==="unrecognized_keys")for(let u of a.keys)n.has(u)||n.set(u,{}),n.get(u).r=!0;else e.issues.push(a);let s=[...n].filter(([,a])=>a.l&&a.r).map(([a])=>a);if(s.length&&o&&e.issues.push({...o,keys:s}),he(e))return e;let i=ko(t.value,r.value);if(!i.valid)throw new Error(`Unmergable intersection. Error path: ${JSON.stringify(i.mergeErrorPath)}`);return e.value=i.data,e}var pr=d("$ZodTuple",(e,t)=>{k.init(e,t);let r=t.items;e._zod.parse=(n,o)=>{let s=n.value;if(!Array.isArray(s))return n.issues.push({input:s,inst:e,expected:"tuple",code:"invalid_type"}),n;n.value=[];let i=[],a=[...r].reverse().findIndex(p=>p._zod.optin!=="optional"),u=a===-1?0:r.length-a;if(!t.rest){let p=s.length>r.length,f=s.length<u-1;if(p||f)return n.issues.push({...p?{code:"too_big",maximum:r.length,inclusive:!0}:{code:"too_small",minimum:r.length},input:s,inst:e,origin:"array"}),n}let l=-1;for(let p of r){if(l++,l>=s.length&&l>=u)continue;let f=p._zod.run({value:s[l],issues:[]},o);f instanceof Promise?i.push(f.then(m=>nr(m,n,l))):nr(f,n,l)}if(t.rest){let p=s.slice(r.length);for(let f of p){l++;let m=t.rest._zod.run({value:f,issues:[]},o);m instanceof Promise?i.push(m.then(h=>nr(h,n,l))):nr(m,n,l)}}return i.length?Promise.all(i).then(()=>n):n}});function nr(e,t,r){e.issues.length&&t.issues.push(...Q(r,e.issues)),t.value[r]=e.value}var us=d("$ZodRecord",(e,t)=>{k.init(e,t),e._zod.parse=(r,n)=>{let o=r.value;if(!me(o))return r.issues.push({expected:"record",code:"invalid_type",input:o,inst:e}),r;let s=[],i=t.keyType._zod.values;if(i){r.value={};let a=new Set;for(let l of i)if(typeof l=="string"||typeof l=="number"||typeof l=="symbol"){a.add(typeof l=="number"?l.toString():l);let p=t.valueType._zod.run({value:o[l],issues:[]},n);p instanceof Promise?s.push(p.then(f=>{f.issues.length&&r.issues.push(...Q(l,f.issues)),r.value[l]=f.value})):(p.issues.length&&r.issues.push(...Q(l,p.issues)),r.value[l]=p.value)}let u;for(let l in o)a.has(l)||(u=u??[],u.push(l));u&&u.length>0&&r.issues.push({code:"unrecognized_keys",input:o,inst:e,keys:u})}else{r.value={};for(let a of Reflect.ownKeys(o)){if(a==="__proto__")continue;let u=t.keyType._zod.run({value:a,issues:[]},n);if(u instanceof Promise)throw new Error("Async schemas not supported in object keys currently");if(typeof a=="string"&&er.test(a)&&u.issues.length){let f=t.keyType._zod.run({value:Number(a),issues:[]},n);if(f instanceof Promise)throw new Error("Async schemas not supported in object keys currently");f.issues.length===0&&(u=f)}if(u.issues.length){t.mode==="loose"?r.value[a]=o[a]:r.issues.push({code:"invalid_key",origin:"record",issues:u.issues.map(f=>G(f,n,F())),input:a,path:[a],inst:e});continue}let p=t.valueType._zod.run({value:o[a],issues:[]},n);p instanceof Promise?s.push(p.then(f=>{f.issues.length&&r.issues.push(...Q(a,f.issues)),r.value[u.value]=f.value})):(p.issues.length&&r.issues.push(...Q(a,p.issues)),r.value[u.value]=p.value)}}return s.length?Promise.all(s).then(()=>r):r}}),ls=d("$ZodMap",(e,t)=>{k.init(e,t),e._zod.parse=(r,n)=>{let o=r.value;if(!(o instanceof Map))return r.issues.push({expected:"map",code:"invalid_type",input:o,inst:e}),r;let s=[];r.value=new Map;for(let[i,a]of o){let u=t.keyType._zod.run({value:i,issues:[]},n),l=t.valueType._zod.run({value:a,issues:[]},n);u instanceof Promise||l instanceof Promise?s.push(Promise.all([u,l]).then(([p,f])=>{kc(p,f,r,i,o,e,n)})):kc(u,l,r,i,o,e,n)}return s.length?Promise.all(s).then(()=>r):r}});function kc(e,t,r,n,o,s,i){e.issues.length&&(st.has(typeof n)?r.issues.push(...Q(n,e.issues)):r.issues.push({code:"invalid_key",origin:"map",input:o,inst:s,issues:e.issues.map(a=>G(a,i,F()))})),t.issues.length&&(st.has(typeof n)?r.issues.push(...Q(n,t.issues)):r.issues.push({origin:"map",code:"invalid_element",input:o,inst:s,key:n,issues:t.issues.map(a=>G(a,i,F()))})),r.value.set(e.value,t.value)}var ps=d("$ZodSet",(e,t)=>{k.init(e,t),e._zod.parse=(r,n)=>{let o=r.value;if(!(o instanceof Set))return r.issues.push({input:o,inst:e,expected:"set",code:"invalid_type"}),r;let s=[];r.value=new Set;for(let i of o){let a=t.valueType._zod.run({value:i,issues:[]},n);a instanceof Promise?s.push(a.then(u=>xc(u,r))):xc(a,r)}return s.length?Promise.all(s).then(()=>r):r}});function xc(e,t){e.issues.length&&t.issues.push(...e.issues),t.value.add(e.value)}var fs=d("$ZodEnum",(e,t)=>{k.init(e,t);let r=nt(t.entries),n=new Set(r);e._zod.values=n,e._zod.pattern=new RegExp(`^(${r.filter(o=>st.has(typeof o)).map(o=>typeof o=="string"?re(o):o.toString()).join("|")})$`),e._zod.parse=(o,s)=>{let i=o.value;return n.has(i)||o.issues.push({code:"invalid_value",values:r,input:i,inst:e}),o}}),ds=d("$ZodLiteral",(e,t)=>{if(k.init(e,t),t.values.length===0)throw new Error("Cannot create literal schema with no valid values");let r=new Set(t.values);e._zod.values=r,e._zod.pattern=new RegExp(`^(${t.values.map(n=>typeof n=="string"?re(n):n?re(n.toString()):String(n)).join("|")})$`),e._zod.parse=(n,o)=>{let s=n.value;return r.has(s)||n.issues.push({code:"invalid_value",values:t.values,input:s,inst:e}),n}}),ms=d("$ZodFile",(e,t)=>{k.init(e,t),e._zod.parse=(r,n)=>{let o=r.value;return o instanceof File||r.issues.push({expected:"file",code:"invalid_type",input:o,inst:e}),r}}),hs=d("$ZodTransform",(e,t)=>{k.init(e,t),e._zod.parse=(r,n)=>{if(n.direction==="backward")throw new Le(e.constructor.name);let o=t.transform(r.value,r);if(n.async)return(o instanceof Promise?o:Promise.resolve(o)).then(i=>(r.value=i,r));if(o instanceof Promise)throw new se;return r.value=o,r}});function Sc(e,t){return e.issues.length&&t===void 0?{issues:[],value:void 0}:e}var fr=d("$ZodOptional",(e,t)=>{k.init(e,t),e._zod.optin="optional",e._zod.optout="optional",S(e._zod,"values",()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,void 0]):void 0),S(e._zod,"pattern",()=>{let r=t.innerType._zod.pattern;return r?new RegExp(`^(${ot(r.source)})?$`):void 0}),e._zod.parse=(r,n)=>{if(t.innerType._zod.optin==="optional"){let o=t.innerType._zod.run(r,n);return o instanceof Promise?o.then(s=>Sc(s,r.value)):Sc(o,r.value)}return r.value===void 0?r:t.innerType._zod.run(r,n)}}),gs=d("$ZodExactOptional",(e,t)=>{fr.init(e,t),S(e._zod,"values",()=>t.innerType._zod.values),S(e._zod,"pattern",()=>t.innerType._zod.pattern),e._zod.parse=(r,n)=>t.innerType._zod.run(r,n)}),ys=d("$ZodNullable",(e,t)=>{k.init(e,t),S(e._zod,"optin",()=>t.innerType._zod.optin),S(e._zod,"optout",()=>t.innerType._zod.optout),S(e._zod,"pattern",()=>{let r=t.innerType._zod.pattern;return r?new RegExp(`^(${ot(r.source)}|null)$`):void 0}),S(e._zod,"values",()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,null]):void 0),e._zod.parse=(r,n)=>r.value===null?r:t.innerType._zod.run(r,n)}),_s=d("$ZodDefault",(e,t)=>{k.init(e,t),e._zod.optin="optional",S(e._zod,"values",()=>t.innerType._zod.values),e._zod.parse=(r,n)=>{if(n.direction==="backward")return t.innerType._zod.run(r,n);if(r.value===void 0)return r.value=t.defaultValue,r;let o=t.innerType._zod.run(r,n);return o instanceof Promise?o.then(s=>vc(s,t)):vc(o,t)}});function vc(e,t){return e.value===void 0&&(e.value=t.defaultValue),e}var bs=d("$ZodPrefault",(e,t)=>{k.init(e,t),e._zod.optin="optional",S(e._zod,"values",()=>t.innerType._zod.values),e._zod.parse=(r,n)=>(n.direction==="backward"||r.value===void 0&&(r.value=t.defaultValue),t.innerType._zod.run(r,n))}),ws=d("$ZodNonOptional",(e,t)=>{k.init(e,t),S(e._zod,"values",()=>{let r=t.innerType._zod.values;return r?new Set([...r].filter(n=>n!==void 0)):void 0}),e._zod.parse=(r,n)=>{let o=t.innerType._zod.run(r,n);return o instanceof Promise?o.then(s=>zc(s,e)):zc(o,e)}});function zc(e,t){return!e.issues.length&&e.value===void 0&&e.issues.push({code:"invalid_type",expected:"nonoptional",input:e.value,inst:t}),e}var $s=d("$ZodSuccess",(e,t)=>{k.init(e,t),e._zod.parse=(r,n)=>{if(n.direction==="backward")throw new Le("ZodSuccess");let o=t.innerType._zod.run(r,n);return o instanceof Promise?o.then(s=>(r.value=s.issues.length===0,r)):(r.value=o.issues.length===0,r)}}),ks=d("$ZodCatch",(e,t)=>{k.init(e,t),S(e._zod,"optin",()=>t.innerType._zod.optin),S(e._zod,"optout",()=>t.innerType._zod.optout),S(e._zod,"values",()=>t.innerType._zod.values),e._zod.parse=(r,n)=>{if(n.direction==="backward")return t.innerType._zod.run(r,n);let o=t.innerType._zod.run(r,n);return o instanceof Promise?o.then(s=>(r.value=s.value,s.issues.length&&(r.value=t.catchValue({...r,error:{issues:s.issues.map(i=>G(i,n,F()))},input:r.value}),r.issues=[]),r)):(r.value=o.value,o.issues.length&&(r.value=t.catchValue({...r,error:{issues:o.issues.map(s=>G(s,n,F()))},input:r.value}),r.issues=[]),r)}}),xs=d("$ZodNaN",(e,t)=>{k.init(e,t),e._zod.parse=(r,n)=>((typeof r.value!="number"||!Number.isNaN(r.value))&&r.issues.push({input:r.value,inst:e,expected:"nan",code:"invalid_type"}),r)}),Ss=d("$ZodPipe",(e,t)=>{k.init(e,t),S(e._zod,"values",()=>t.in._zod.values),S(e._zod,"optin",()=>t.in._zod.optin),S(e._zod,"optout",()=>t.out._zod.optout),S(e._zod,"propValues",()=>t.in._zod.propValues),e._zod.parse=(r,n)=>{if(n.direction==="backward"){let s=t.out._zod.run(r,n);return s instanceof Promise?s.then(i=>or(i,t.in,n)):or(s,t.in,n)}let o=t.in._zod.run(r,n);return o instanceof Promise?o.then(s=>or(s,t.out,n)):or(o,t.out,n)}});function or(e,t,r){return e.issues.length?(e.aborted=!0,e):t._zod.run({value:e.value,issues:e.issues},r)}var dt=d("$ZodCodec",(e,t)=>{k.init(e,t),S(e._zod,"values",()=>t.in._zod.values),S(e._zod,"optin",()=>t.in._zod.optin),S(e._zod,"optout",()=>t.out._zod.optout),S(e._zod,"propValues",()=>t.in._zod.propValues),e._zod.parse=(r,n)=>{if((n.direction||"forward")==="forward"){let s=t.in._zod.run(r,n);return s instanceof Promise?s.then(i=>sr(i,t,n)):sr(s,t,n)}else{let s=t.out._zod.run(r,n);return s instanceof Promise?s.then(i=>sr(i,t,n)):sr(s,t,n)}}});function sr(e,t,r){if(e.issues.length)return e.aborted=!0,e;if((r.direction||"forward")==="forward"){let o=t.transform(e.value,e);return o instanceof Promise?o.then(s=>ir(e,s,t.out,r)):ir(e,o,t.out,r)}else{let o=t.reverseTransform(e.value,e);return o instanceof Promise?o.then(s=>ir(e,s,t.in,r)):ir(e,o,t.in,r)}}function ir(e,t,r,n){return e.issues.length?(e.aborted=!0,e):r._zod.run({value:t,issues:e.issues},n)}var vs=d("$ZodReadonly",(e,t)=>{k.init(e,t),S(e._zod,"propValues",()=>t.innerType._zod.propValues),S(e._zod,"values",()=>t.innerType._zod.values),S(e._zod,"optin",()=>t.innerType?._zod?.optin),S(e._zod,"optout",()=>t.innerType?._zod?.optout),e._zod.parse=(r,n)=>{if(n.direction==="backward")return t.innerType._zod.run(r,n);let o=t.innerType._zod.run(r,n);return o instanceof Promise?o.then(Tc):Tc(o)}});function Tc(e){return e.value=Object.freeze(e.value),e}var zs=d("$ZodTemplateLiteral",(e,t)=>{k.init(e,t);let r=[];for(let n of t.parts)if(typeof n=="object"&&n!==null){if(!n._zod.pattern)throw new Error(`Invalid template literal part, no pattern found: ${[...n._zod.traits].shift()}`);let o=n._zod.pattern instanceof RegExp?n._zod.pattern.source:n._zod.pattern;if(!o)throw new Error(`Invalid template literal part: ${n._zod.traits}`);let s=o.startsWith("^")?1:0,i=o.endsWith("$")?o.length-1:o.length;r.push(o.slice(s,i))}else if(n===null||sn.has(typeof n))r.push(re(`${n}`));else throw new Error(`Invalid template literal part: ${n}`);e._zod.pattern=new RegExp(`^${r.join("")}$`),e._zod.parse=(n,o)=>typeof n.value!="string"?(n.issues.push({input:n.value,inst:e,expected:"string",code:"invalid_type"}),n):(e._zod.pattern.lastIndex=0,e._zod.pattern.test(n.value)||n.issues.push({input:n.value,inst:e,code:"invalid_format",format:t.format??"template_literal",pattern:e._zod.pattern.source}),n)}),Ts=d("$ZodFunction",(e,t)=>(k.init(e,t),e._def=t,e._zod.def=t,e.implement=r=>{if(typeof r!="function")throw new Error("implement() must be called with a function");return function(...n){let o=e._def.input?ge(e._def.input,n):n,s=Reflect.apply(r,this,o);return e._def.output?ge(e._def.output,s):s}},e.implementAsync=r=>{if(typeof r!="function")throw new Error("implementAsync() must be called with a function");return async function(...n){let o=e._def.input?await ye(e._def.input,n):n,s=await Reflect.apply(r,this,o);return e._def.output?await ye(e._def.output,s):s}},e._zod.parse=(r,n)=>typeof r.value!="function"?(r.issues.push({code:"invalid_type",expected:"function",input:r.value,inst:e}),r):(e._def.output&&e._def.output._zod.def.type==="promise"?r.value=e.implementAsync(r.value):r.value=e.implement(r.value),r),e.input=(...r)=>{let n=e.constructor;return Array.isArray(r[0])?new n({type:"function",input:new pr({type:"tuple",items:r[0],rest:r[1]}),output:e._def.output}):new n({type:"function",input:r[0],output:e._def.output})},e.output=r=>{let n=e.constructor;return new n({type:"function",input:e._def.input,output:r})},e)),Is=d("$ZodPromise",(e,t)=>{k.init(e,t),e._zod.parse=(r,n)=>Promise.resolve(r.value).then(o=>t.innerType._zod.run({value:o,issues:[]},n))}),Ps=d("$ZodLazy",(e,t)=>{k.init(e,t),S(e._zod,"innerType",()=>t.getter()),S(e._zod,"pattern",()=>e._zod.innerType?._zod?.pattern),S(e._zod,"propValues",()=>e._zod.innerType?._zod?.propValues),S(e._zod,"optin",()=>e._zod.innerType?._zod?.optin??void 0),S(e._zod,"optout",()=>e._zod.innerType?._zod?.optout??void 0),e._zod.parse=(r,n)=>e._zod.innerType._zod.run(r,n)}),Es=d("$ZodCustom",(e,t)=>{A.init(e,t),k.init(e,t),e._zod.parse=(r,n)=>r,e._zod.check=r=>{let n=r.value,o=t.fn(n);if(o instanceof Promise)return o.then(s=>Ic(s,r,n,e));Ic(o,r,n,e)}});function Ic(e,t,r,n){if(!e){let o={code:"custom",input:r,inst:n,path:[...n._zod.def.path??[]],continue:!n._zod.def.abort};n._zod.def.params&&(o.params=n._zod.def.params),t.issues.push(De(o))}}var mt={};ve(mt,{default:()=>Td});var Td={};var Cc,As=Symbol("ZodOutput"),Rs=Symbol("ZodInput"),dr=class{constructor(){this._map=new WeakMap,this._idmap=new Map}add(t,...r){let n=r[0];return this._map.set(t,n),n&&typeof n=="object"&&"id"in n&&this._idmap.set(n.id,t),this}clear(){return this._map=new WeakMap,this._idmap=new Map,this}remove(t){let r=this._map.get(t);return r&&typeof r=="object"&&"id"in r&&this._idmap.delete(r.id),this._map.delete(t),this}get(t){let r=t._zod.parent;if(r){let n={...this.get(r)??{}};delete n.id;let o={...n,...this._map.get(t)};return Object.keys(o).length?o:void 0}return this._map.get(t)}has(t){return this._map.has(t)}};function mr(){return new dr}(Cc=globalThis).__zod_globalRegistry??(Cc.__zod_globalRegistry=mr());var ae=globalThis.__zod_globalRegistry;function Cs(e,t){return new e({type:"string",...g(t)})}function Ns(e,t){return new e({type:"string",coerce:!0,...g(t)})}function Os(e,t){return new e({type:"string",format:"email",check:"string_format",abort:!1,...g(t)})}function Ls(e,t){return new e({type:"string",format:"guid",check:"string_format",abort:!1,...g(t)})}function Zs(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,...g(t)})}function js(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v4",...g(t)})}function Ds(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v6",...g(t)})}function Ms(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v7",...g(t)})}function hr(e,t){return new e({type:"string",format:"url",check:"string_format",abort:!1,...g(t)})}function Bs(e,t){return new e({type:"string",format:"emoji",check:"string_format",abort:!1,...g(t)})}function Us(e,t){return new e({type:"string",format:"nanoid",check:"string_format",abort:!1,...g(t)})}function Fs(e,t){return new e({type:"string",format:"cuid",check:"string_format",abort:!1,...g(t)})}function Hs(e,t){return new e({type:"string",format:"cuid2",check:"string_format",abort:!1,...g(t)})}function qs(e,t){return new e({type:"string",format:"ulid",check:"string_format",abort:!1,...g(t)})}function Js(e,t){return new e({type:"string",format:"xid",check:"string_format",abort:!1,...g(t)})}function Ks(e,t){return new e({type:"string",format:"ksuid",check:"string_format",abort:!1,...g(t)})}function Ys(e,t){return new e({type:"string",format:"ipv4",check:"string_format",abort:!1,...g(t)})}function Gs(e,t){return new e({type:"string",format:"ipv6",check:"string_format",abort:!1,...g(t)})}function Ws(e,t){return new e({type:"string",format:"mac",check:"string_format",abort:!1,...g(t)})}function Vs(e,t){return new e({type:"string",format:"cidrv4",check:"string_format",abort:!1,...g(t)})}function Qs(e,t){return new e({type:"string",format:"cidrv6",check:"string_format",abort:!1,...g(t)})}function Xs(e,t){return new e({type:"string",format:"base64",check:"string_format",abort:!1,...g(t)})}function ei(e,t){return new e({type:"string",format:"base64url",check:"string_format",abort:!1,...g(t)})}function ti(e,t){return new e({type:"string",format:"e164",check:"string_format",abort:!1,...g(t)})}function ri(e,t){return new e({type:"string",format:"jwt",check:"string_format",abort:!1,...g(t)})}var ni={Any:null,Minute:-1,Second:0,Millisecond:3,Microsecond:6};function oi(e,t){return new e({type:"string",format:"datetime",check:"string_format",offset:!1,local:!1,precision:null,...g(t)})}function si(e,t){return new e({type:"string",format:"date",check:"string_format",...g(t)})}function ii(e,t){return new e({type:"string",format:"time",check:"string_format",precision:null,...g(t)})}function ai(e,t){return new e({type:"string",format:"duration",check:"string_format",...g(t)})}function ci(e,t){return new e({type:"number",checks:[],...g(t)})}function ui(e,t){return new e({type:"number",coerce:!0,checks:[],...g(t)})}function li(e,t){return new e({type:"number",check:"number_format",abort:!1,format:"safeint",...g(t)})}function pi(e,t){return new e({type:"number",check:"number_format",abort:!1,format:"float32",...g(t)})}function fi(e,t){return new e({type:"number",check:"number_format",abort:!1,format:"float64",...g(t)})}function di(e,t){return new e({type:"number",check:"number_format",abort:!1,format:"int32",...g(t)})}function mi(e,t){return new e({type:"number",check:"number_format",abort:!1,format:"uint32",...g(t)})}function hi(e,t){return new e({type:"boolean",...g(t)})}function gi(e,t){return new e({type:"boolean",coerce:!0,...g(t)})}function yi(e,t){return new e({type:"bigint",...g(t)})}function _i(e,t){return new e({type:"bigint",coerce:!0,...g(t)})}function bi(e,t){return new e({type:"bigint",check:"bigint_format",abort:!1,format:"int64",...g(t)})}function wi(e,t){return new e({type:"bigint",check:"bigint_format",abort:!1,format:"uint64",...g(t)})}function $i(e,t){return new e({type:"symbol",...g(t)})}function ki(e,t){return new e({type:"undefined",...g(t)})}function xi(e,t){return new e({type:"null",...g(t)})}function Si(e){return new e({type:"any"})}function vi(e){return new e({type:"unknown"})}function zi(e,t){return new e({type:"never",...g(t)})}function Ti(e,t){return new e({type:"void",...g(t)})}function Ii(e,t){return new e({type:"date",...g(t)})}function Pi(e,t){return new e({type:"date",coerce:!0,...g(t)})}function Ei(e,t){return new e({type:"nan",...g(t)})}function gr(e,t){return new tr({check:"less_than",...g(t),value:e,inclusive:!1})}function ht(e,t){return new tr({check:"less_than",...g(t),value:e,inclusive:!0})}function yr(e,t){return new rr({check:"greater_than",...g(t),value:e,inclusive:!1})}function gt(e,t){return new rr({check:"greater_than",...g(t),value:e,inclusive:!0})}function Ai(e){return yr(0,e)}function Ri(e){return gr(0,e)}function Ci(e){return ht(0,e)}function Ni(e){return gt(0,e)}function Oi(e,t){return new ro({check:"multiple_of",...g(t),value:e})}function Li(e,t){return new so({check:"max_size",...g(t),maximum:e})}function Zi(e,t){return new io({check:"min_size",...g(t),minimum:e})}function ji(e,t){return new ao({check:"size_equals",...g(t),size:e})}function Di(e,t){return new co({check:"max_length",...g(t),maximum:e})}function yt(e,t){return new uo({check:"min_length",...g(t),minimum:e})}function Mi(e,t){return new lo({check:"length_equals",...g(t),length:e})}function _t(e,t){return new po({check:"string_format",format:"regex",...g(t),pattern:e})}function Bi(e){return new fo({check:"string_format",format:"lowercase",...g(e)})}function Ui(e){return new mo({check:"string_format",format:"uppercase",...g(e)})}function Fi(e,t){return new ho({check:"string_format",format:"includes",...g(t),includes:e})}function Hi(e,t){return new go({check:"string_format",format:"starts_with",...g(t),prefix:e})}function qi(e,t){return new yo({check:"string_format",format:"ends_with",...g(t),suffix:e})}function Ji(e,t,r){return new _o({check:"property",property:e,schema:t,...g(r)})}function Ki(e,t){return new bo({check:"mime_type",mime:e,...g(t)})}function _e(e){return new wo({check:"overwrite",tx:e})}function Yi(e){return _e(t=>t.normalize(e))}function Gi(){return _e(e=>e.trim())}function Wi(){return _e(e=>e.toLowerCase())}function Vi(){return _e(e=>e.toUpperCase())}function Pd(){return _e(e=>nn(e))}function Ed(e,t,r){return new e({type:"array",element:t,...g(r)})}function Ad(e,t,r){return new e({type:"union",options:t,...g(r)})}function Rd(e,t,r){return new e({type:"union",options:t,inclusive:!1,...g(r)})}function Cd(e,t,r,n){return new e({type:"union",options:r,discriminator:t,...g(n)})}function Nd(e,t,r){return new e({type:"intersection",left:t,right:r})}function Od(e,t,r,n){let o=r instanceof k,s=o?n:r,i=o?r:null;return new e({type:"tuple",items:t,rest:i,...g(s)})}function Ld(e,t,r,n){return new e({type:"record",keyType:t,valueType:r,...g(n)})}function Zd(e,t,r,n){return new e({type:"map",keyType:t,valueType:r,...g(n)})}function jd(e,t,r){return new e({type:"set",valueType:t,...g(r)})}function Dd(e,t,r){let n=Array.isArray(t)?Object.fromEntries(t.map(o=>[o,o])):t;return new e({type:"enum",entries:n,...g(r)})}function Md(e,t,r){return new e({type:"enum",entries:t,...g(r)})}function Bd(e,t,r){return new e({type:"literal",values:Array.isArray(t)?t:[t],...g(r)})}function Qi(e,t){return new e({type:"file",...g(t)})}function Ud(e,t){return new e({type:"transform",transform:t})}function Fd(e,t){return new e({type:"optional",innerType:t})}function Hd(e,t){return new e({type:"nullable",innerType:t})}function qd(e,t,r){return new e({type:"default",innerType:t,get defaultValue(){return typeof r=="function"?r():je(r)}})}function Jd(e,t,r){return new e({type:"nonoptional",innerType:t,...g(r)})}function Kd(e,t){return new e({type:"success",innerType:t})}function Yd(e,t,r){return new e({type:"catch",innerType:t,catchValue:typeof r=="function"?r:()=>r})}function Gd(e,t,r){return new e({type:"pipe",in:t,out:r})}function Wd(e,t){return new e({type:"readonly",innerType:t})}function Vd(e,t,r){return new e({type:"template_literal",parts:t,...g(r)})}function Qd(e,t){return new e({type:"lazy",getter:t})}function Xd(e,t){return new e({type:"promise",innerType:t})}function Xi(e,t,r){let n=g(r);return n.abort??(n.abort=!0),new e({type:"custom",check:"custom",fn:t,...n})}function ea(e,t,r){return new e({type:"custom",check:"custom",fn:t,...g(r)})}function ta(e){let t=Nc(r=>(r.addIssue=n=>{if(typeof n=="string")r.issues.push(De(n,r.value,t._zod.def));else{let o=n;o.fatal&&(o.continue=!1),o.code??(o.code="custom"),o.input??(o.input=r.value),o.inst??(o.inst=t),o.continue??(o.continue=!t._zod.def.abort),r.issues.push(De(o))}},e(r.value,r)));return t}function Nc(e,t){let r=new A({check:"custom",...g(t)});return r._zod.check=e,r}function ra(e){let t=new A({check:"describe"});return t._zod.onattach=[r=>{let n=ae.get(r)??{};ae.add(r,{...n,description:e})}],t._zod.check=()=>{},t}function na(e){let t=new A({check:"meta"});return t._zod.onattach=[r=>{let n=ae.get(r)??{};ae.add(r,{...n,...e})}],t._zod.check=()=>{},t}function oa(e,t){let r=g(t),n=r.truthy??["true","1","yes","on","y","enabled"],o=r.falsy??["false","0","no","off","n","disabled"];r.case!=="sensitive"&&(n=n.map(h=>typeof h=="string"?h.toLowerCase():h),o=o.map(h=>typeof h=="string"?h.toLowerCase():h));let s=new Set(n),i=new Set(o),a=e.Codec??dt,u=e.Boolean??pt,l=e.String??Be,p=new l({type:"string",error:r.error}),f=new u({type:"boolean",error:r.error}),m=new a({type:"pipe",in:p,out:f,transform:((h,y)=>{let _=h;return r.case!=="sensitive"&&(_=_.toLowerCase()),s.has(_)?!0:i.has(_)?!1:(y.issues.push({code:"invalid_value",expected:"stringbool",values:[...s,...i],input:y.value,inst:m,continue:!1}),{})}),reverseTransform:((h,y)=>h===!0?n[0]||"true":o[0]||"false"),error:r.error});return m}function Ue(e,t,r,n={}){let o=g(n),s={...g(n),check:"string_format",type:"string",format:t,fn:typeof r=="function"?r:a=>r.test(a),...o};return r instanceof RegExp&&(s.pattern=r),new e(s)}function be(e){let t=e?.target??"draft-2020-12";return t==="draft-4"&&(t="draft-04"),t==="draft-7"&&(t="draft-07"),{processors:e.processors??{},metadataRegistry:e?.metadata??ae,target:t,unrepresentable:e?.unrepresentable??"throw",override:e?.override??(()=>{}),io:e?.io??"output",counter:0,seen:new Map,cycles:e?.cycles??"ref",reused:e?.reused??"inline",external:e?.external??void 0}}function T(e,t,r={path:[],schemaPath:[]}){var n;let o=e._zod.def,s=t.seen.get(e);if(s)return s.count++,r.schemaPath.includes(e)&&(s.cycle=r.path),s.schema;let i={schema:{},count:1,cycle:void 0,path:r.path};t.seen.set(e,i);let a=e._zod.toJSONSchema?.();if(a)i.schema=a;else{let p={...r,schemaPath:[...r.schemaPath,e],path:r.path};if(e._zod.processJSONSchema)e._zod.processJSONSchema(t,i.schema,p);else{let m=i.schema,h=t.processors[o.type];if(!h)throw new Error(`[toJSONSchema]: Non-representable type encountered: ${o.type}`);h(e,t,m,p)}let f=e._zod.parent;f&&(i.ref||(i.ref=f),T(f,t,p),t.seen.get(f).isParent=!0)}let u=t.metadataRegistry.get(e);return u&&Object.assign(i.schema,u),t.io==="input"&&K(e)&&(delete i.schema.examples,delete i.schema.default),t.io==="input"&&i.schema._prefault&&((n=i.schema).default??(n.default=i.schema._prefault)),delete i.schema._prefault,t.seen.get(e).schema}function we(e,t){let r=e.seen.get(t);if(!r)throw new Error("Unprocessed schema. This is a bug in Zod.");let n=new Map;for(let i of e.seen.entries()){let a=e.metadataRegistry.get(i[0])?.id;if(a){let u=n.get(a);if(u&&u!==i[0])throw new Error(`Duplicate schema id "${a}" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);n.set(a,i[0])}}let o=i=>{let a=e.target==="draft-2020-12"?"$defs":"definitions";if(e.external){let f=e.external.registry.get(i[0])?.id,m=e.external.uri??(y=>y);if(f)return{ref:m(f)};let h=i[1].defId??i[1].schema.id??`schema${e.counter++}`;return i[1].defId=h,{defId:h,ref:`${m("__shared")}#/${a}/${h}`}}if(i[1]===r)return{ref:"#"};let l=`#/${a}/`,p=i[1].schema.id??`__schema${e.counter++}`;return{defId:p,ref:l+p}},s=i=>{if(i[1].schema.$ref)return;let a=i[1],{ref:u,defId:l}=o(i);a.def={...a.schema},l&&(a.defId=l);let p=a.schema;for(let f in p)delete p[f];p.$ref=u};if(e.cycles==="throw")for(let i of e.seen.entries()){let a=i[1];if(a.cycle)throw new Error(`Cycle detected: #/${a.cycle?.join("/")}/<root>
40
-
41
- Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(let i of e.seen.entries()){let a=i[1];if(t===i[0]){s(i);continue}if(e.external){let l=e.external.registry.get(i[0])?.id;if(t!==i[0]&&l){s(i);continue}}if(e.metadataRegistry.get(i[0])?.id){s(i);continue}if(a.cycle){s(i);continue}if(a.count>1&&e.reused==="ref"){s(i);continue}}}function $e(e,t){let r=e.seen.get(t);if(!r)throw new Error("Unprocessed schema. This is a bug in Zod.");let n=i=>{let a=e.seen.get(i);if(a.ref===null)return;let u=a.def??a.schema,l={...u},p=a.ref;if(a.ref=null,p){n(p);let m=e.seen.get(p),h=m.schema;if(h.$ref&&(e.target==="draft-07"||e.target==="draft-04"||e.target==="openapi-3.0")?(u.allOf=u.allOf??[],u.allOf.push(h)):Object.assign(u,h),Object.assign(u,l),i._zod.parent===p)for(let _ in u)_==="$ref"||_==="allOf"||_ in l||delete u[_];if(h.$ref&&m.def)for(let _ in u)_==="$ref"||_==="allOf"||_ in m.def&&JSON.stringify(u[_])===JSON.stringify(m.def[_])&&delete u[_]}let f=i._zod.parent;if(f&&f!==p){n(f);let m=e.seen.get(f);if(m?.schema.$ref&&(u.$ref=m.schema.$ref,m.def))for(let h in u)h==="$ref"||h==="allOf"||h in m.def&&JSON.stringify(u[h])===JSON.stringify(m.def[h])&&delete u[h]}e.override({zodSchema:i,jsonSchema:u,path:a.path??[]})};for(let i of[...e.seen.entries()].reverse())n(i[0]);let o={};if(e.target==="draft-2020-12"?o.$schema="https://json-schema.org/draft/2020-12/schema":e.target==="draft-07"?o.$schema="http://json-schema.org/draft-07/schema#":e.target==="draft-04"?o.$schema="http://json-schema.org/draft-04/schema#":e.target,e.external?.uri){let i=e.external.registry.get(t)?.id;if(!i)throw new Error("Schema is missing an `id` property");o.$id=e.external.uri(i)}Object.assign(o,r.def??r.schema);let s=e.external?.defs??{};for(let i of e.seen.entries()){let a=i[1];a.def&&a.defId&&(s[a.defId]=a.def)}e.external||Object.keys(s).length>0&&(e.target==="draft-2020-12"?o.$defs=s:o.definitions=s);try{let i=JSON.parse(JSON.stringify(o));return Object.defineProperty(i,"~standard",{value:{...t["~standard"],jsonSchema:{input:sa(t,"input",e.processors),output:sa(t,"output",e.processors)}},enumerable:!1,writable:!1}),i}catch{throw new Error("Error converting schema to JSON.")}}function K(e,t){let r=t??{seen:new Set};if(r.seen.has(e))return!1;r.seen.add(e);let n=e._zod.def;if(n.type==="transform")return!0;if(n.type==="array")return K(n.element,r);if(n.type==="set")return K(n.valueType,r);if(n.type==="lazy")return K(n.getter(),r);if(n.type==="promise"||n.type==="optional"||n.type==="nonoptional"||n.type==="nullable"||n.type==="readonly"||n.type==="default"||n.type==="prefault")return K(n.innerType,r);if(n.type==="intersection")return K(n.left,r)||K(n.right,r);if(n.type==="record"||n.type==="map")return K(n.keyType,r)||K(n.valueType,r);if(n.type==="pipe")return K(n.in,r)||K(n.out,r);if(n.type==="object"){for(let o in n.shape)if(K(n.shape[o],r))return!0;return!1}if(n.type==="union"){for(let o of n.options)if(K(o,r))return!0;return!1}if(n.type==="tuple"){for(let o of n.items)if(K(o,r))return!0;return!!(n.rest&&K(n.rest,r))}return!1}var em=(e,t={})=>r=>{let n=be({...r,processors:t});return T(e,n),we(n,e),$e(n,e)},sa=(e,t,r={})=>n=>{let{libraryOptions:o,target:s}=n??{},i=be({...o??{},target:s,io:t,processors:r});return T(e,i),we(i,e),$e(i,e)};var tm={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string",regex:""},rm=(e,t,r,n)=>{let o=r;o.type="string";let{minimum:s,maximum:i,format:a,patterns:u,contentEncoding:l}=e._zod.bag;if(typeof s=="number"&&(o.minLength=s),typeof i=="number"&&(o.maxLength=i),a&&(o.format=tm[a]??a,o.format===""&&delete o.format,a==="time"&&delete o.format),l&&(o.contentEncoding=l),u&&u.size>0){let p=[...u];p.length===1?o.pattern=p[0].source:p.length>1&&(o.allOf=[...p.map(f=>({...t.target==="draft-07"||t.target==="draft-04"||t.target==="openapi-3.0"?{type:"string"}:{},pattern:f.source}))])}},nm=(e,t,r,n)=>{let o=r,{minimum:s,maximum:i,format:a,multipleOf:u,exclusiveMaximum:l,exclusiveMinimum:p}=e._zod.bag;typeof a=="string"&&a.includes("int")?o.type="integer":o.type="number",typeof p=="number"&&(t.target==="draft-04"||t.target==="openapi-3.0"?(o.minimum=p,o.exclusiveMinimum=!0):o.exclusiveMinimum=p),typeof s=="number"&&(o.minimum=s,typeof p=="number"&&t.target!=="draft-04"&&(p>=s?delete o.minimum:delete o.exclusiveMinimum)),typeof l=="number"&&(t.target==="draft-04"||t.target==="openapi-3.0"?(o.maximum=l,o.exclusiveMaximum=!0):o.exclusiveMaximum=l),typeof i=="number"&&(o.maximum=i,typeof l=="number"&&t.target!=="draft-04"&&(l<=i?delete o.maximum:delete o.exclusiveMaximum)),typeof u=="number"&&(o.multipleOf=u)},om=(e,t,r,n)=>{r.type="boolean"},sm=(e,t,r,n)=>{if(t.unrepresentable==="throw")throw new Error("BigInt cannot be represented in JSON Schema")},im=(e,t,r,n)=>{if(t.unrepresentable==="throw")throw new Error("Symbols cannot be represented in JSON Schema")},am=(e,t,r,n)=>{t.target==="openapi-3.0"?(r.type="string",r.nullable=!0,r.enum=[null]):r.type="null"},cm=(e,t,r,n)=>{if(t.unrepresentable==="throw")throw new Error("Undefined cannot be represented in JSON Schema")},um=(e,t,r,n)=>{if(t.unrepresentable==="throw")throw new Error("Void cannot be represented in JSON Schema")},lm=(e,t,r,n)=>{r.not={}},pm=(e,t,r,n)=>{},fm=(e,t,r,n)=>{},dm=(e,t,r,n)=>{if(t.unrepresentable==="throw")throw new Error("Date cannot be represented in JSON Schema")},mm=(e,t,r,n)=>{let o=e._zod.def,s=nt(o.entries);s.every(i=>typeof i=="number")&&(r.type="number"),s.every(i=>typeof i=="string")&&(r.type="string"),r.enum=s},hm=(e,t,r,n)=>{let o=e._zod.def,s=[];for(let i of o.values)if(i===void 0){if(t.unrepresentable==="throw")throw new Error("Literal `undefined` cannot be represented in JSON Schema")}else if(typeof i=="bigint"){if(t.unrepresentable==="throw")throw new Error("BigInt literals cannot be represented in JSON Schema");s.push(Number(i))}else s.push(i);if(s.length!==0)if(s.length===1){let i=s[0];r.type=i===null?"null":typeof i,t.target==="draft-04"||t.target==="openapi-3.0"?r.enum=[i]:r.const=i}else s.every(i=>typeof i=="number")&&(r.type="number"),s.every(i=>typeof i=="string")&&(r.type="string"),s.every(i=>typeof i=="boolean")&&(r.type="boolean"),s.every(i=>i===null)&&(r.type="null"),r.enum=s},gm=(e,t,r,n)=>{if(t.unrepresentable==="throw")throw new Error("NaN cannot be represented in JSON Schema")},ym=(e,t,r,n)=>{let o=r,s=e._zod.pattern;if(!s)throw new Error("Pattern not found in template literal");o.type="string",o.pattern=s.source},_m=(e,t,r,n)=>{let o=r,s={type:"string",format:"binary",contentEncoding:"binary"},{minimum:i,maximum:a,mime:u}=e._zod.bag;i!==void 0&&(s.minLength=i),a!==void 0&&(s.maxLength=a),u?u.length===1?(s.contentMediaType=u[0],Object.assign(o,s)):(Object.assign(o,s),o.anyOf=u.map(l=>({contentMediaType:l}))):Object.assign(o,s)},bm=(e,t,r,n)=>{r.type="boolean"},wm=(e,t,r,n)=>{if(t.unrepresentable==="throw")throw new Error("Custom types cannot be represented in JSON Schema")},$m=(e,t,r,n)=>{if(t.unrepresentable==="throw")throw new Error("Function types cannot be represented in JSON Schema")},km=(e,t,r,n)=>{if(t.unrepresentable==="throw")throw new Error("Transforms cannot be represented in JSON Schema")},xm=(e,t,r,n)=>{if(t.unrepresentable==="throw")throw new Error("Map cannot be represented in JSON Schema")},Sm=(e,t,r,n)=>{if(t.unrepresentable==="throw")throw new Error("Set cannot be represented in JSON Schema")},vm=(e,t,r,n)=>{let o=r,s=e._zod.def,{minimum:i,maximum:a}=e._zod.bag;typeof i=="number"&&(o.minItems=i),typeof a=="number"&&(o.maxItems=a),o.type="array",o.items=T(s.element,t,{...n,path:[...n.path,"items"]})},zm=(e,t,r,n)=>{let o=r,s=e._zod.def;o.type="object",o.properties={};let i=s.shape;for(let l in i)o.properties[l]=T(i[l],t,{...n,path:[...n.path,"properties",l]});let a=new Set(Object.keys(i)),u=new Set([...a].filter(l=>{let p=s.shape[l]._zod;return t.io==="input"?p.optin===void 0:p.optout===void 0}));u.size>0&&(o.required=Array.from(u)),s.catchall?._zod.def.type==="never"?o.additionalProperties=!1:s.catchall?s.catchall&&(o.additionalProperties=T(s.catchall,t,{...n,path:[...n.path,"additionalProperties"]})):t.io==="output"&&(o.additionalProperties=!1)},Tm=(e,t,r,n)=>{let o=e._zod.def,s=o.inclusive===!1,i=o.options.map((a,u)=>T(a,t,{...n,path:[...n.path,s?"oneOf":"anyOf",u]}));s?r.oneOf=i:r.anyOf=i},Im=(e,t,r,n)=>{let o=e._zod.def,s=T(o.left,t,{...n,path:[...n.path,"allOf",0]}),i=T(o.right,t,{...n,path:[...n.path,"allOf",1]}),a=l=>"allOf"in l&&Object.keys(l).length===1,u=[...a(s)?s.allOf:[s],...a(i)?i.allOf:[i]];r.allOf=u},Pm=(e,t,r,n)=>{let o=r,s=e._zod.def;o.type="array";let i=t.target==="draft-2020-12"?"prefixItems":"items",a=t.target==="draft-2020-12"||t.target==="openapi-3.0"?"items":"additionalItems",u=s.items.map((m,h)=>T(m,t,{...n,path:[...n.path,i,h]})),l=s.rest?T(s.rest,t,{...n,path:[...n.path,a,...t.target==="openapi-3.0"?[s.items.length]:[]]}):null;t.target==="draft-2020-12"?(o.prefixItems=u,l&&(o.items=l)):t.target==="openapi-3.0"?(o.items={anyOf:u},l&&o.items.anyOf.push(l),o.minItems=u.length,l||(o.maxItems=u.length)):(o.items=u,l&&(o.additionalItems=l));let{minimum:p,maximum:f}=e._zod.bag;typeof p=="number"&&(o.minItems=p),typeof f=="number"&&(o.maxItems=f)},Em=(e,t,r,n)=>{let o=r,s=e._zod.def;o.type="object";let i=s.keyType,u=i._zod.bag?.patterns;if(s.mode==="loose"&&u&&u.size>0){let p=T(s.valueType,t,{...n,path:[...n.path,"patternProperties","*"]});o.patternProperties={};for(let f of u)o.patternProperties[f.source]=p}else(t.target==="draft-07"||t.target==="draft-2020-12")&&(o.propertyNames=T(s.keyType,t,{...n,path:[...n.path,"propertyNames"]})),o.additionalProperties=T(s.valueType,t,{...n,path:[...n.path,"additionalProperties"]});let l=i._zod.values;if(l){let p=[...l].filter(f=>typeof f=="string"||typeof f=="number");p.length>0&&(o.required=p)}},Am=(e,t,r,n)=>{let o=e._zod.def,s=T(o.innerType,t,n),i=t.seen.get(e);t.target==="openapi-3.0"?(i.ref=o.innerType,r.nullable=!0):r.anyOf=[s,{type:"null"}]},Rm=(e,t,r,n)=>{let o=e._zod.def;T(o.innerType,t,n);let s=t.seen.get(e);s.ref=o.innerType},Cm=(e,t,r,n)=>{let o=e._zod.def;T(o.innerType,t,n);let s=t.seen.get(e);s.ref=o.innerType,r.default=JSON.parse(JSON.stringify(o.defaultValue))},Nm=(e,t,r,n)=>{let o=e._zod.def;T(o.innerType,t,n);let s=t.seen.get(e);s.ref=o.innerType,t.io==="input"&&(r._prefault=JSON.parse(JSON.stringify(o.defaultValue)))},Om=(e,t,r,n)=>{let o=e._zod.def;T(o.innerType,t,n);let s=t.seen.get(e);s.ref=o.innerType;let i;try{i=o.catchValue(void 0)}catch{throw new Error("Dynamic catch values are not supported in JSON Schema")}r.default=i},Lm=(e,t,r,n)=>{let o=e._zod.def,s=t.io==="input"?o.in._zod.def.type==="transform"?o.out:o.in:o.out;T(s,t,n);let i=t.seen.get(e);i.ref=s},Zm=(e,t,r,n)=>{let o=e._zod.def;T(o.innerType,t,n);let s=t.seen.get(e);s.ref=o.innerType,r.readOnly=!0},jm=(e,t,r,n)=>{let o=e._zod.def;T(o.innerType,t,n);let s=t.seen.get(e);s.ref=o.innerType},Dm=(e,t,r,n)=>{let o=e._zod.def;T(o.innerType,t,n);let s=t.seen.get(e);s.ref=o.innerType},Mm=(e,t,r,n)=>{let o=e._zod.innerType;T(o,t,n);let s=t.seen.get(e);s.ref=o},_r={string:rm,number:nm,boolean:om,bigint:sm,symbol:im,null:am,undefined:cm,void:um,never:lm,any:pm,unknown:fm,date:dm,enum:mm,literal:hm,nan:gm,template_literal:ym,file:_m,success:bm,custom:wm,function:$m,transform:km,map:xm,set:Sm,array:vm,object:zm,union:Tm,intersection:Im,tuple:Pm,record:Em,nullable:Am,nonoptional:Rm,default:Cm,prefault:Nm,catch:Om,pipe:Lm,readonly:Zm,promise:jm,optional:Dm,lazy:Mm};function br(e,t){if("_idmap"in e){let n=e,o=be({...t,processors:_r}),s={};for(let u of n._idmap.entries()){let[l,p]=u;T(p,o)}let i={},a={registry:n,uri:t?.uri,defs:s};o.external=a;for(let u of n._idmap.entries()){let[l,p]=u;we(o,p),i[l]=$e(o,p)}if(Object.keys(s).length>0){let u=o.target==="draft-2020-12"?"$defs":"definitions";i.__shared={[u]:s}}return{schemas:i}}let r=be({...t,processors:_r});return T(e,r),we(r,e),$e(r,e)}var wr=class{get metadataRegistry(){return this.ctx.metadataRegistry}get target(){return this.ctx.target}get unrepresentable(){return this.ctx.unrepresentable}get override(){return this.ctx.override}get io(){return this.ctx.io}get counter(){return this.ctx.counter}set counter(t){this.ctx.counter=t}get seen(){return this.ctx.seen}constructor(t){let r=t?.target??"draft-2020-12";r==="draft-4"&&(r="draft-04"),r==="draft-7"&&(r="draft-07"),this.ctx=be({processors:_r,target:r,...t?.metadata&&{metadata:t.metadata},...t?.unrepresentable&&{unrepresentable:t.unrepresentable},...t?.override&&{override:t.override},...t?.io&&{io:t.io}})}process(t,r={path:[],schemaPath:[]}){return T(t,this.ctx,r)}emit(t,r){r&&(r.cycles&&(this.ctx.cycles=r.cycles),r.reused&&(this.ctx.reused=r.reused),r.external&&(this.ctx.external=r.external)),we(this.ctx,t);let n=$e(this.ctx,t),{"~standard":o,...s}=n;return s}};var Oc={};var v=d("ZodMiniType",(e,t)=>{if(!e._zod)throw new Error("Uninitialized schema in ZodMiniType.");k.init(e,t),e.def=t,e.type=t.type,e.parse=(r,n)=>ge(e,r,n,{callee:e.parse}),e.safeParse=(r,n)=>Te(e,r,n),e.parseAsync=async(r,n)=>ye(e,r,n,{callee:e.parseAsync}),e.safeParseAsync=async(r,n)=>Ie(e,r,n),e.check=(...r)=>e.clone({...t,checks:[...t.checks??[],...r.map(n=>typeof n=="function"?{_zod:{check:n,def:{check:"custom"},onattach:[]}}:n)]},{parent:!0}),e.with=e.check,e.clone=(r,n)=>J(e,r,n),e.brand=()=>e,e.register=((r,n)=>(r.add(e,n),e)),e.apply=r=>r(e)}),He=d("ZodMiniString",(e,t)=>{Be.init(e,t),v.init(e,t)});function b(e){return Cs(He,e)}var R=d("ZodMiniStringFormat",(e,t)=>{E.init(e,t),He.init(e,t)}),Lc=d("ZodMiniEmail",(e,t)=>{vo.init(e,t),R.init(e,t)});function Um(e){return Os(Lc,e)}var Zc=d("ZodMiniGUID",(e,t)=>{xo.init(e,t),R.init(e,t)});function Fm(e){return Ls(Zc,e)}var bt=d("ZodMiniUUID",(e,t)=>{So.init(e,t),R.init(e,t)});function Hm(e){return Zs(bt,e)}function qm(e){return js(bt,e)}function Jm(e){return Ds(bt,e)}function Km(e){return Ms(bt,e)}var ia=d("ZodMiniURL",(e,t)=>{zo.init(e,t),R.init(e,t)});function Ym(e){return hr(ia,e)}function Gm(e){return hr(ia,{protocol:/^https?$/,hostname:oe.domain,...g(e)})}var jc=d("ZodMiniEmoji",(e,t)=>{To.init(e,t),R.init(e,t)});function Wm(e){return Bs(jc,e)}var Dc=d("ZodMiniNanoID",(e,t)=>{Io.init(e,t),R.init(e,t)});function Vm(e){return Us(Dc,e)}var Mc=d("ZodMiniCUID",(e,t)=>{Po.init(e,t),R.init(e,t)});function Qm(e){return Fs(Mc,e)}var Bc=d("ZodMiniCUID2",(e,t)=>{Eo.init(e,t),R.init(e,t)});function Xm(e){return Hs(Bc,e)}var Uc=d("ZodMiniULID",(e,t)=>{Ao.init(e,t),R.init(e,t)});function eh(e){return qs(Uc,e)}var Fc=d("ZodMiniXID",(e,t)=>{Ro.init(e,t),R.init(e,t)});function th(e){return Js(Fc,e)}var Hc=d("ZodMiniKSUID",(e,t)=>{Co.init(e,t),R.init(e,t)});function rh(e){return Ks(Hc,e)}var qc=d("ZodMiniIPv4",(e,t)=>{jo.init(e,t),R.init(e,t)});function nh(e){return Ys(qc,e)}var Jc=d("ZodMiniIPv6",(e,t)=>{Do.init(e,t),R.init(e,t)});function oh(e){return Gs(Jc,e)}var Kc=d("ZodMiniCIDRv4",(e,t)=>{Bo.init(e,t),R.init(e,t)});function sh(e){return Vs(Kc,e)}var Yc=d("ZodMiniCIDRv6",(e,t)=>{Uo.init(e,t),R.init(e,t)});function ih(e){return Qs(Yc,e)}var Gc=d("ZodMiniMAC",(e,t)=>{Mo.init(e,t),R.init(e,t)});function ah(e){return Ws(Gc,e)}var Wc=d("ZodMiniBase64",(e,t)=>{Ho.init(e,t),R.init(e,t)});function ch(e){return Xs(Wc,e)}var Vc=d("ZodMiniBase64URL",(e,t)=>{qo.init(e,t),R.init(e,t)});function uh(e){return ei(Vc,e)}var Qc=d("ZodMiniE164",(e,t)=>{Jo.init(e,t),R.init(e,t)});function lh(e){return ti(Qc,e)}var Xc=d("ZodMiniJWT",(e,t)=>{Ko.init(e,t),R.init(e,t)});function ph(e){return ri(Xc,e)}var wt=d("ZodMiniCustomStringFormat",(e,t)=>{Yo.init(e,t),R.init(e,t)});function fh(e,t,r={}){return Ue(wt,e,t,r)}function dh(e){return Ue(wt,"hostname",oe.hostname,e)}function mh(e){return Ue(wt,"hex",oe.hex,e)}function hh(e,t){let r=t?.enc??"hex",n=`${e}_${r}`,o=oe[n];if(!o)throw new Error(`Unrecognized hash format: ${n}`);return Ue(wt,n,o,t)}var $t=d("ZodMiniNumber",(e,t)=>{cr.init(e,t),v.init(e,t)});function ke(e){return ci($t,e)}var qe=d("ZodMiniNumberFormat",(e,t)=>{Go.init(e,t),$t.init(e,t)});function gh(e){return li(qe,e)}function yh(e){return pi(qe,e)}function _h(e){return fi(qe,e)}function bh(e){return di(qe,e)}function wh(e){return mi(qe,e)}var kt=d("ZodMiniBoolean",(e,t)=>{pt.init(e,t),v.init(e,t)});function Je(e){return hi(kt,e)}var xt=d("ZodMiniBigInt",(e,t)=>{ur.init(e,t),v.init(e,t)});function $h(e){return yi(xt,e)}var aa=d("ZodMiniBigIntFormat",(e,t)=>{Wo.init(e,t),xt.init(e,t)});function kh(e){return bi(aa,e)}function xh(e){return wi(aa,e)}var eu=d("ZodMiniSymbol",(e,t)=>{Vo.init(e,t),v.init(e,t)});function Sh(e){return $i(eu,e)}var tu=d("ZodMiniUndefined",(e,t)=>{Qo.init(e,t),v.init(e,t)});function vh(e){return ki(tu,e)}var ru=d("ZodMiniNull",(e,t)=>{Xo.init(e,t),v.init(e,t)});function nu(e){return xi(ru,e)}var ou=d("ZodMiniAny",(e,t)=>{es.init(e,t),v.init(e,t)});function zh(){return Si(ou)}var su=d("ZodMiniUnknown",(e,t)=>{ts.init(e,t),v.init(e,t)});function $r(){return vi(su)}var iu=d("ZodMiniNever",(e,t)=>{rs.init(e,t),v.init(e,t)});function au(e){return zi(iu,e)}var cu=d("ZodMiniVoid",(e,t)=>{ns.init(e,t),v.init(e,t)});function Th(e){return Ti(cu,e)}var kr=d("ZodMiniDate",(e,t)=>{os.init(e,t),v.init(e,t)});function Ih(e){return Ii(kr,e)}var uu=d("ZodMiniArray",(e,t)=>{ss.init(e,t),v.init(e,t)});function Y(e,t){return new uu({type:"array",element:e,...g(t)})}function Ph(e){let t=e._zod.def.shape;return bu(Object.keys(t))}var xr=d("ZodMiniObject",(e,t)=>{lr.init(e,t),v.init(e,t),S(e,"shape",()=>t.shape)});function I(e,t){let r={type:"object",shape:e??{},...g(t)};return new xr(r)}function Eh(e,t){return new xr({type:"object",shape:e,catchall:au(),...g(t)})}function Ah(e,t){return new xr({type:"object",shape:e,catchall:$r(),...g(t)})}function xe(e,t){return Yt(e,t)}function Rh(e,t){return fn(e,t)}function Ch(e,t){return Yt(e,t)}function Nh(e,t){return ln(e,t)}function Oh(e,t){return pn(e,t)}function Lh(e,t){return dn(la,e,t)}function Zh(e,t){return mn(pa,e,t)}function jh(e,t){return e.clone({...e._zod.def,catchall:t})}var ca=d("ZodMiniUnion",(e,t)=>{ft.init(e,t),v.init(e,t)});function lu(e,t){return new ca({type:"union",options:e,...g(t)})}var pu=d("ZodMiniXor",(e,t)=>{ca.init(e,t),is.init(e,t)});function Dh(e,t){return new pu({type:"union",options:e,inclusive:!1,...g(t)})}var fu=d("ZodMiniDiscriminatedUnion",(e,t)=>{as.init(e,t),v.init(e,t)});function Mh(e,t,r){return new fu({type:"union",options:t,discriminator:e,...g(r)})}var du=d("ZodMiniIntersection",(e,t)=>{cs.init(e,t),v.init(e,t)});function Bh(e,t){return new du({type:"intersection",left:e,right:t})}var mu=d("ZodMiniTuple",(e,t)=>{pr.init(e,t),v.init(e,t)});function hu(e,t,r){let n=t instanceof k,o=n?r:t,s=n?t:null;return new mu({type:"tuple",items:e,rest:s,...g(o)})}var Sr=d("ZodMiniRecord",(e,t)=>{us.init(e,t),v.init(e,t)});function gu(e,t,r){return new Sr({type:"record",keyType:e,valueType:t,...g(r)})}function Uh(e,t,r){let n=J(e);return n._zod.values=void 0,new Sr({type:"record",keyType:n,valueType:t,...g(r)})}function Fh(e,t,r){return new Sr({type:"record",keyType:e,valueType:t,mode:"loose",...g(r)})}var yu=d("ZodMiniMap",(e,t)=>{ls.init(e,t),v.init(e,t)});function Hh(e,t,r){return new yu({type:"map",keyType:e,valueType:t,...g(r)})}var _u=d("ZodMiniSet",(e,t)=>{ps.init(e,t),v.init(e,t)});function qh(e,t){return new _u({type:"set",valueType:e,...g(t)})}var ua=d("ZodMiniEnum",(e,t)=>{fs.init(e,t),v.init(e,t),e.options=Object.values(t.entries)});function bu(e,t){let r=Array.isArray(e)?Object.fromEntries(e.map(n=>[n,n])):e;return new ua({type:"enum",entries:r,...g(t)})}function Jh(e,t){return new ua({type:"enum",entries:e,...g(t)})}var wu=d("ZodMiniLiteral",(e,t)=>{ds.init(e,t),v.init(e,t)});function Kh(e,t){return new wu({type:"literal",values:Array.isArray(e)?e:[e],...g(t)})}var $u=d("ZodMiniFile",(e,t)=>{ms.init(e,t),v.init(e,t)});function Yh(e){return Qi($u,e)}var ku=d("ZodMiniTransform",(e,t)=>{hs.init(e,t),v.init(e,t)});function Gh(e){return new ku({type:"transform",transform:e})}var la=d("ZodMiniOptional",(e,t)=>{fr.init(e,t),v.init(e,t)});function w(e){return new la({type:"optional",innerType:e})}var xu=d("ZodMiniExactOptional",(e,t)=>{gs.init(e,t),v.init(e,t)});function Wh(e){return new xu({type:"optional",innerType:e})}var Su=d("ZodMiniNullable",(e,t)=>{ys.init(e,t),v.init(e,t)});function vr(e){return new Su({type:"nullable",innerType:e})}function Vh(e){return w(vr(e))}var vu=d("ZodMiniDefault",(e,t)=>{_s.init(e,t),v.init(e,t)});function Qh(e,t){return new vu({type:"default",innerType:e,get defaultValue(){return typeof t=="function"?t():je(t)}})}var zu=d("ZodMiniPrefault",(e,t)=>{bs.init(e,t),v.init(e,t)});function Xh(e,t){return new zu({type:"prefault",innerType:e,get defaultValue(){return typeof t=="function"?t():je(t)}})}var pa=d("ZodMiniNonOptional",(e,t)=>{ws.init(e,t),v.init(e,t)});function eg(e,t){return new pa({type:"nonoptional",innerType:e,...g(t)})}var Tu=d("ZodMiniSuccess",(e,t)=>{$s.init(e,t),v.init(e,t)});function tg(e){return new Tu({type:"success",innerType:e})}var Iu=d("ZodMiniCatch",(e,t)=>{ks.init(e,t),v.init(e,t)});function rg(e,t){return new Iu({type:"catch",innerType:e,catchValue:typeof t=="function"?t:()=>t})}var Pu=d("ZodMiniNaN",(e,t)=>{xs.init(e,t),v.init(e,t)});function ng(e){return Ei(Pu,e)}var fa=d("ZodMiniPipe",(e,t)=>{Ss.init(e,t),v.init(e,t)});function og(e,t){return new fa({type:"pipe",in:e,out:t})}var da=d("ZodMiniCodec",(e,t)=>{fa.init(e,t),dt.init(e,t)});function sg(e,t,r){return new da({type:"pipe",in:e,out:t,transform:r.decode,reverseTransform:r.encode})}var Eu=d("ZodMiniReadonly",(e,t)=>{vs.init(e,t),v.init(e,t)});function ig(e){return new Eu({type:"readonly",innerType:e})}var Au=d("ZodMiniTemplateLiteral",(e,t)=>{zs.init(e,t),v.init(e,t)});function ag(e,t){return new Au({type:"template_literal",parts:e,...g(t)})}var Ru=d("ZodMiniLazy",(e,t)=>{Ps.init(e,t),v.init(e,t)});function Cu(e){return new Ru({type:"lazy",getter:e})}var Nu=d("ZodMiniPromise",(e,t)=>{Is.init(e,t),v.init(e,t)});function cg(e){return new Nu({type:"promise",innerType:e})}var ma=d("ZodMiniCustom",(e,t)=>{Es.init(e,t),v.init(e,t)});function ug(e,t){let r=new A({check:"custom",...g(t)});return r._zod.check=e,r}function Ou(e,t){return Xi(ma,e??(()=>!0),t)}function lg(e,t={}){return ea(ma,e,t)}function pg(e){return ta(e)}var fg=ra,dg=na;function mg(e,t={}){let r=Ou(n=>n instanceof e,t);return r._zod.bag.Class=e,r._zod.check=n=>{n.value instanceof e||n.issues.push({code:"invalid_type",expected:e.name,input:n.value,inst:r,path:[...r._zod.def.path??[]]})},r}var hg=(...e)=>oa({Codec:da,Boolean:kt,String:He},...e);function gg(){let e=Cu(()=>lu([b(),ke(),Je(),nu(),Y(e),gu(b(),e)]));return e}var Lu=d("ZodMiniFunction",(e,t)=>{Ts.init(e,t),v.init(e,t)});function yg(e){return new Lu({type:"function",input:Array.isArray(e?.input)?hu(e?.input):e?.input??Y($r()),output:e?.output??$r()})}var ha={};ve(ha,{ZodMiniISODate:()=>Tr,ZodMiniISODateTime:()=>zr,ZodMiniISODuration:()=>Pr,ZodMiniISOTime:()=>Ir,date:()=>bg,datetime:()=>_g,duration:()=>$g,time:()=>wg});var zr=d("ZodMiniISODateTime",(e,t)=>{No.init(e,t),R.init(e,t)});function _g(e){return oi(zr,e)}var Tr=d("ZodMiniISODate",(e,t)=>{Oo.init(e,t),R.init(e,t)});function bg(e){return si(Tr,e)}var Ir=d("ZodMiniISOTime",(e,t)=>{Lo.init(e,t),R.init(e,t)});function wg(e){return ii(Ir,e)}var Pr=d("ZodMiniISODuration",(e,t)=>{Zo.init(e,t),R.init(e,t)});function $g(e){return ai(Pr,e)}var ga={};ve(ga,{bigint:()=>vg,boolean:()=>Sg,date:()=>zg,number:()=>xg,string:()=>kg});function kg(e){return Ns(He,e)}function xg(e){return ui($t,e)}function Sg(e){return gi(kt,e)}function vg(e){return _i(xt,e)}function zg(e){return Pi(kr,e)}var X=b().check(yt(1)),Tg=b().check(_t(/^https?:\/\/.+/)),Ke=I({CLANCY_BASE_BRANCH:w(b()),CLANCY_LABEL:w(b()),CLANCY_MODEL:w(b()),CLANCY_NOTIFY_WEBHOOK:w(b()),CLANCY_STATUS_IN_PROGRESS:w(b()),CLANCY_STATUS_DONE:w(b()),CLANCY_STATUS_REVIEW:w(b()),MAX_ITERATIONS:w(b()),PLAYWRIGHT_ENABLED:w(b()),PLAYWRIGHT_DEV_PORT:w(b()),CLANCY_ROLES:w(b()),CLANCY_PLAN_STATUS:w(b()),CLANCY_PLAN_LABEL:w(b()),CLANCY_PLAN_STATE_TYPE:w(b()),CLANCY_STATUS_PLANNED:w(b()),CLANCY_SKIP_COMMENTS:w(b()),GITHUB_TOKEN:w(b()),GITLAB_TOKEN:w(b()),BITBUCKET_USER:w(b()),BITBUCKET_TOKEN:w(b()),CLANCY_GIT_PLATFORM:w(b()),CLANCY_GIT_API_URL:w(b()),CLANCY_MAX_REWORK:w(b()),CLANCY_TDD:w(b()),CLANCY_MODE:w(b()),CLANCY_BRIEF_ISSUE_TYPE:w(b()),CLANCY_BRIEF_EPIC:w(b()),CLANCY_COMPONENT:w(b()),CLANCY_FIX_RETRIES:w(b()),CLANCY_VERIFY_COMMANDS:w(b()),CLANCY_TOKEN_RATE:w(b()),CLANCY_TIME_LIMIT:w(b()),CLANCY_BRANCH_GUARD:w(b()),CLANCY_LABEL_BRIEF:w(b()),CLANCY_LABEL_PLAN:w(b()),CLANCY_LABEL_BUILD:w(b())}),ju=xe(Ke,{JIRA_BASE_URL:Tg,JIRA_USER:X,JIRA_API_TOKEN:X,JIRA_PROJECT_KEY:X,CLANCY_JQL_STATUS:w(b()),CLANCY_JQL_SPRINT:w(b())}),Du=xe(Ke,{GITHUB_TOKEN:X,GITHUB_REPO:X}),Mu=xe(Ke,{LINEAR_API_KEY:X,LINEAR_TEAM_ID:X}),Bu=xe(Ke,{SHORTCUT_API_TOKEN:X,SHORTCUT_WORKFLOW:w(b())}),Uu=xe(Ke,{NOTION_TOKEN:X,NOTION_DATABASE_ID:X,CLANCY_NOTION_STATUS:w(b()),CLANCY_NOTION_TODO:w(b()),CLANCY_NOTION_ASSIGNEE:w(b()),CLANCY_NOTION_LABELS:w(b()),CLANCY_NOTION_PARENT:w(b())}),Fu=xe(Ke,{AZDO_ORG:X,AZDO_PROJECT:X,AZDO_PAT:X,CLANCY_AZDO_STATUS:w(b()),CLANCY_AZDO_WIT:w(b())});function Er(e){if(e.JIRA_BASE_URL){let t=ju.safeParse(e);return t.success?{provider:"jira",env:t.data}:`\u2717 Jira env validation failed: ${t.error.message}`}if(e.GITHUB_TOKEN&&e.GITHUB_REPO){let t=Du.safeParse(e);return t.success?{provider:"github",env:t.data}:`\u2717 GitHub env validation failed: ${t.error.message}`}if(e.LINEAR_API_KEY){let t=Mu.safeParse(e);return t.success?{provider:"linear",env:t.data}:`\u2717 Linear env validation failed: ${t.error.message}`}if(e.SHORTCUT_API_TOKEN){let t=Bu.safeParse(e);return t.success?{provider:"shortcut",env:t.data}:`\u2717 Shortcut env validation failed: ${t.error.message}`}if(e.NOTION_DATABASE_ID){let t=Uu.safeParse(e);return t.success?{provider:"notion",env:t.data}:`\u2717 Notion env validation failed: ${t.error.message}`}if(e.AZDO_ORG){let t=Fu.safeParse(e);return t.success?{provider:"azdo",env:t.data}:`\u2717 Azure DevOps env validation failed: ${t.error.message}`}return"\u2717 No board detected \u2014 set Jira, GitHub, Linear, Shortcut, Notion, or Azure DevOps credentials in .clancy/.env"}function D(e){return e.env}import{appendFileSync as Hu,mkdirSync as Ig,readFileSync as Pg}from"node:fs";import{dirname as Eg,join as qu}from"node:path";function Ag(e){let t=e.getUTCFullYear(),r=String(e.getUTCMonth()+1).padStart(2,"0"),n=String(e.getUTCDate()).padStart(2,"0"),o=String(e.getUTCHours()).padStart(2,"0"),s=String(e.getUTCMinutes()).padStart(2,"0");return`${t}-${r}-${n} ${o}:${s}`}function C(e,t,r,n,o,s){let i=qu(e,".clancy","progress.txt");Ig(Eg(i),{recursive:!0});let a=Ag(new Date);if(n==="BRIEF"||n==="APPROVE_BRIEF"){let f=`${a} | ${n} | ${t} | ${r}
42
- `;Hu(i,f,"utf8");return}let u=o!=null?` | pr:${o}`:"",l=s?` | parent:${s}`:"",p=`${a} | ${t} | ${r} | ${n}${u}${l}
43
- `;Hu(i,p,"utf8")}function _a(e){let t=qu(e,".clancy","progress.txt"),r;try{r=Pg(t,"utf8")}catch{return[]}let n=[];for(let o of r.split(`
44
- `)){let s=o.trim();if(!s)continue;let i=s.split(" | ");if(i.length<4)continue;let a=i[0];if(i[1]==="BRIEF"||i[1]==="APPROVE_BRIEF"){n.push({timestamp:a,key:i[2],summary:i.slice(3).join(" | "),status:i[1]});continue}let u=i[1],l,p,f,m=[];for(let h=2;h<i.length;h++){let y=i[h],_=y.match(/^pr:(\d+)$/),x=y.match(/^parent:(.+)$/);_?p=parseInt(_[1],10):x?f=x[1]:h>=3&&!l&&y===y.toUpperCase()&&y.length>1?l=y:m.push(y)}l&&(l==="APPROVE"&&(l="APPROVE_PLAN"),n.push({timestamp:a,key:u,summary:m.join(" | "),status:l,...p!=null&&{prNumber:p},...f!=null&&{parent:f}}))}return n}function Ju(e,t){let r=_a(e),n=t.toLowerCase(),o;for(let s of r)s.key.toLowerCase()===n&&(o=s);return o}function Ku(e,t){let r=_a(e),n=t.toLowerCase(),o=0;for(let s of r)s.key.toLowerCase()===n&&s.status==="REWORK"&&o++;return o}function j(e,t){let r=_a(e),n=new Map;for(let o of r)n.set(o.key,o);return[...n.values()].filter(o=>o.status===t)}function ba(e){return e.startsWith("epic/")||e.startsWith("milestone/")}function Ye(e,t,r,n,o,s){let i=[],a=r?ba(r):!1;if(s&&a){i.push(`## Part of epic ${s.parentKey}`);let u=s.siblingsDelivered,l=u===0?"No siblings delivered yet":`${u} sibling${u===1?"":"s"} previously delivered to \`${s.epicBranch}\``;i.push(l),i.push(""),i.push(`> This PR targets \`${s.epicBranch}\`. A final epic PR will be created when all children are complete.`),i.push("")}switch(e.provider){case"github":i.push(a?`Part of ${t.key}`:`Closes ${t.key}`),o&&!a&&i.push(`Closes ${o}`);break;case"jira":i.push(`**Jira:** [${t.key}](${e.env.JIRA_BASE_URL}/browse/${t.key})`);break;case"linear":i.push(`**Linear:** ${t.key}`);break}return i.push(""),t.description&&(i.push("## Description"),i.push(""),i.push(t.description),i.push("")),n&&(i.push("## \u26A0 Verification Warning"),i.push(""),i.push(n),i.push(""),i.push("This PR may need manual fixes before merging."),i.push("")),i.push("---"),i.push("*Created by [Clancy](https://github.com/Pushedskydiver/clancy)*"),i.push(""),i.push("---"),i.push("<details>"),i.push("<summary><strong>Rework instructions</strong> (click to expand)</summary>"),i.push(""),i.push("To request changes:"),i.push("- **Code comments** \u2014 leave inline comments on specific lines. These are always picked up automatically."),i.push("- **General feedback** \u2014 reply with a comment starting with `Rework:` followed by what needs fixing. Comments without the `Rework:` prefix are treated as discussion."),i.push(""),i.push("Example: `Rework: The form validation doesn't handle empty passwords`"),i.push(""),i.push("</details>"),i.join(`
45
- `)}function Yu(e,t,r,n){let o=[];o.push(`## ${e} \u2014 ${t}`),o.push(""),o.push("### Children"),o.push("");for(let s of r){let i=s.prNumber?` (#${s.prNumber})`:"";o.push(`- ${s.key} \u2014 ${s.summary}${i}`)}if(n==="github"){o.push(""),o.push("### Closes"),o.push("");let s=r.map(i=>i.key).filter(i=>i.startsWith("#"));e.startsWith("#")&&s.unshift(e),s.length>0&&o.push(s.map(i=>`Closes ${i}`).join(", "))}return o.push(""),o.push("---"),o.push("*Created by [Clancy](https://github.com/Pushedskydiver/clancy)*"),o.join(`
46
- `)}import{execFileSync as Rg}from"node:child_process";function Gu(e){let t=e.trim().replace(/\.git$/,""),r=t.match(/^git@([^:]+):(.+)$/),n=t.match(/^(?:https?|ssh):\/\/(?:[^@]+@)?([^/:]+)(?::\d+)?\/(.+)$/),o=r?.[1]??n?.[1],s=r?.[2]??n?.[2];if(!(!o||!s))return{hostname:o,path:s}}function Cg(e){let t=Gu(e);if(!t)return{host:"unknown",url:e};let{hostname:r,path:n}=t;switch(Ng(r)){case"github":{let s=n.split("/");return s.length>=2?{host:"github",owner:s[0],repo:s[1],hostname:r}:{host:"unknown",url:e}}case"gitlab":return{host:"gitlab",projectPath:n,hostname:r};case"bitbucket":{let s=n.match(/^scm\/([^/]+)\/(.+)$/);if(s)return{host:"bitbucket-server",projectKey:s[1],repoSlug:s[2],hostname:r};let i=n.split("/");return i.length>=2?{host:"bitbucket",workspace:i[0],repoSlug:i[1],hostname:r}:{host:"unknown",url:e}}case"azure":return{host:"azure",url:e};default:return{host:"unknown",url:e}}}function Ng(e){let t=e.toLowerCase();return t==="github.com"||t.includes("github")?"github":t==="gitlab.com"||t.includes("gitlab")?"gitlab":t==="bitbucket.org"||t.includes("bitbucket")?"bitbucket":t.includes("dev.azure")||t.includes("visualstudio")?"azure":"unknown"}function ce(e){let t;try{t=Rg("git",["remote","get-url","origin"],{encoding:"utf8"}).trim()}catch{return{host:"none"}}return t?e?Og(t,e):Cg(t):{host:"none"}}function Og(e,t){let r=Gu(e);if(!r)return{host:"unknown",url:e};let{hostname:n,path:o}=r;switch(t.toLowerCase()){case"github":{let s=o.split("/");return s.length>=2?{host:"github",owner:s[0],repo:s[1],hostname:n}:{host:"unknown",url:e}}case"gitlab":return{host:"gitlab",projectPath:o,hostname:n};case"bitbucket":{let s=o.split("/");return s.length>=2?{host:"bitbucket",workspace:s[0],repoSlug:s[1],hostname:n}:{host:"unknown",url:e}}case"bitbucket-server":{let s=o.match(/^scm\/([^/]+)\/(.+)$/);if(s)return{host:"bitbucket-server",projectKey:s[1],repoSlug:s[2],hostname:n};let i=o.split("/");return i.length>=2?{host:"bitbucket-server",projectKey:i[0],repoSlug:i[1],hostname:n}:{host:"unknown",url:e}}default:return{host:"unknown",url:e}}}function St(e,t){if(t)return t.replace(/\/$/,"");switch(e.host){case"github":return e.hostname==="github.com"?"https://api.github.com":`https://${e.hostname}/api/v3`;case"gitlab":return`https://${e.hostname}/api/v4`;case"bitbucket":return"https://api.bitbucket.org/2.0";case"bitbucket-server":return`https://${e.hostname}/rest/api/1.0`;default:return}}var vt=new Set(["PR_CREATED","PUSHED","REWORK","RESUMED"]);function wa(e){return e.CLANCY_LABEL_BUILD||e.CLANCY_LABEL||void 0}function Lg(e){return e.CLANCY_LABEL_PLAN||e.CLANCY_PLAN_LABEL||void 0}function Zg(e){return e?.isAfk??process.env.CLANCY_AFK_MODE==="1"}async function Wu(e,t){let r=Zg(t),n=e.sharedEnv(),o=wa(n),s=Lg(n),i=await e.fetchTickets({excludeHitl:r,buildLabel:o});if(i.length)for(let a of i){if(s&&a.labels?.includes(s)){console.log(`Skipping ${a.key} \u2014 still has plan label`);continue}if(!await e.fetchBlockerStatus(a))return console.log(`Selected ${a.key}${a.status?` (status: ${a.status})`:""}`),a;console.log(`Skipping ${a.key} \u2014 blocked`)}}var jg=I({id:ke(),links:I({html:w(I({href:w(b())}))}),participants:Y(I({state:w(b()),role:b()}))}),Vu=I({values:Y(jg)}),Dg=I({content:I({raw:b()}),inline:w(I({path:w(b())})),created_on:b(),user:w(I({nickname:w(b())}))}),$a=I({values:Y(Dg)}),Mg=I({id:ke(),links:I({self:w(Y(I({href:w(b())})))}),reviewers:Y(I({status:b()}))}),Qu=I({values:Y(Mg)}),Bg=I({text:b(),anchor:w(I({path:w(b())})),createdDate:ke(),author:w(I({slug:w(b())}))}),Ug=I({action:b(),comment:w(Bg)}),ka=I({values:Y(Ug)});async function Ee(e,t,r,n,o){let s=new AbortController,i=setTimeout(()=>s.abort(),3e4);try{let a=await fetch(e,{method:"POST",headers:{...t,"Content-Type":"application/json"},body:JSON.stringify(r),signal:s.signal});if(!a.ok){let p=await a.text().catch(()=>""),f=o?.(a.status,p)??!1;return{ok:!1,error:`HTTP ${a.status}${p?`: ${p.slice(0,200)}`:""}`,alreadyExists:f}}let u=await a.json(),l=n(u);return!l.url&&!l.number?{ok:!1,error:"PR created but response missing URL and number"}:{ok:!0,url:l.url,number:l.number}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}finally{clearTimeout(i)}}function Ge(e,t){return`Basic ${Buffer.from(`${e}:${t}`).toString("base64")}`}function ie(e){return e.trim().toLowerCase().startsWith("rework:")}function Ae(e){return e.trim().replace(/^rework:\s*/i,"").trim()}async function Xu(e,t,r,n,o,s,i,a){return Ee(`https://api.bitbucket.org/2.0/repositories/${r}/${n}/pullrequests`,{Authorization:Ge(e,t)},{title:i,description:a,source:{branch:{name:o}},destination:{branch:{name:s}},close_source_branch:!0},u=>{let l=u;return{url:l.links?.html?.href??"",number:l.id??0}},(u,l)=>u===409&&l.includes("already exists"))}async function el(e,t,r,n,o,s,i,a){return Ee(`${t}/projects/${r}/repos/${n}/pull-requests`,{Authorization:`Bearer ${e}`},{title:i,description:a,fromRef:{id:`refs/heads/${o}`,repository:{slug:n,project:{key:r}}},toRef:{id:`refs/heads/${s}`,repository:{slug:n,project:{key:r}}}},u=>{let l=u;return{url:l.links?.self?.[0]?.href??"",number:l.id??0}},(u,l)=>u===409&&(l.includes("already exists")||l.includes("Only one pull request")))}async function tl(e,t,r,n,o,s){try{return(await fetch(`https://api.bitbucket.org/2.0/repositories/${r}/${n}/pullrequests/${o}/comments`,{method:"POST",headers:{Authorization:Ge(e,t),"Content-Type":"application/json"},body:JSON.stringify({content:{raw:s}})})).ok}catch{return!1}}async function rl(e,t,r,n,o,s){try{return(await fetch(`${t}/projects/${r}/repos/${n}/pull-requests/${o}/comments`,{method:"POST",headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json"},body:JSON.stringify({text:s})})).ok}catch{return!1}}async function nl(e,t,r,n,o,s){try{let i=`https://api.bitbucket.org/2.0/repositories/${r}/${n}/pullrequests?q=source.branch.name="${o}"&state=OPEN`,a=await fetch(i,{headers:{Authorization:Ge(e,t)}});if(!a.ok)return;let u=Vu.parse(await a.json());if(u.values.length===0)return;let l=u.values[0],p=l.links.html?.href??"",f=`https://api.bitbucket.org/2.0/repositories/${r}/${n}/pullrequests/${l.id}/comments?pagelen=100`,m=await fetch(f,{headers:{Authorization:Ge(e,t)}});if(!m.ok)return;let h=$a.parse(await m.json()),y=s?h.values.filter(B=>B.created_on>s):h.values,_=y.some(B=>B.inline!=null),x=y.some(B=>B.inline==null&&ie(B.content.raw));return{changesRequested:_||x,prNumber:l.id,prUrl:p}}catch{return}}async function ol(e,t,r,n,o,s){try{let i=`https://api.bitbucket.org/2.0/repositories/${r}/${n}/pullrequests/${o}/comments?pagelen=100`,a=await fetch(i,{headers:{Authorization:Ge(e,t)}});if(!a.ok)return[];let u=$a.parse(await a.json()),l=s?u.values.filter(f=>f.created_on>s):u.values,p=[];for(let f of l)if(f.inline!=null){let m=f.inline.path?`[${f.inline.path}] `:"";p.push(`${m}${f.content.raw}`)}else ie(f.content.raw)&&p.push(Ae(f.content.raw));return p}catch{return[]}}async function sl(e,t,r,n,o,s){try{let i=`${t}/projects/${r}/repos/${n}/pull-requests?state=OPEN&at=refs/heads/${o}`,a=await fetch(i,{headers:{Authorization:`Bearer ${e}`}});if(!a.ok)return;let u=Qu.parse(await a.json());if(u.values.length===0)return;let l=u.values[0],p=l.links.self?.[0]?.href??"",f=`${t}/projects/${r}/repos/${n}/pull-requests/${l.id}/activities?limit=100`,m=await fetch(f,{headers:{Authorization:`Bearer ${e}`}});if(!m.ok)return;let h=ka.parse(await m.json()),y=s?Date.parse(s):void 0,_=h.values.filter(N=>N.action==="COMMENTED"&&N.comment&&(y==null||N.comment.createdDate>y)),x=_.some(N=>N.comment.anchor!=null),P=_.some(N=>N.comment.anchor==null&&ie(N.comment.text));return{changesRequested:x||P,prNumber:l.id,prUrl:p}}catch{return}}async function il(e,t,r,n,o,s){try{let i=`${t}/projects/${r}/repos/${n}/pull-requests/${o}/activities?limit=100`,a=await fetch(i,{headers:{Authorization:`Bearer ${e}`}});if(!a.ok)return[];let u=ka.parse(await a.json()),l=s?Date.parse(s):void 0,p=[];for(let f of u.values){if(f.action!=="COMMENTED"||!f.comment||l!=null&&f.comment.createdDate<=l)continue;let m=f.comment;if(m.anchor!=null){let h=m.anchor.path?`[${m.anchor.path}] `:"";p.push(`${h}${m.text}`)}else ie(m.text)&&p.push(Ae(m.text))}return p}catch{return[]}}var Fg=c.object({number:c.number(),title:c.string(),body:c.optional(c.nullable(c.string())),pull_request:c.optional(c.unknown()),milestone:c.optional(c.nullable(c.object({title:c.string()}))),labels:c.optional(c.array(c.object({name:c.optional(c.string())})))}),al=c.array(Fg),Hg=c.object({id:c.number(),body:c.optional(c.nullable(c.string())),created_at:c.string(),user:c.optional(c.object({login:c.string()}))}),xa=c.array(Hg),qg=c.object({number:c.number(),html_url:c.string(),state:c.string()}),cl=c.array(qg),Jg=c.object({state:c.string(),user:c.object({login:c.string()}),submitted_at:c.string()}),ul=c.array(Jg),Kg=c.object({body:c.optional(c.nullable(c.string())),path:c.optional(c.string()),created_at:c.optional(c.string()),user:c.optional(c.object({login:c.string()}))}),Sa=c.array(Kg);var M="https://api.github.com";async function Ar(e,t,r,n){try{let o=new AbortController,s=setTimeout(()=>o.abort(),1e4),i=await fetch(e,{headers:t,signal:o.signal});if(clearTimeout(s),i.ok)return{ok:!0};let a=r[i.status];return a?{ok:!1,error:a}:{ok:!1,error:`\u2717 HTTP ${i.status}`}}catch{return{ok:!1,error:n}}}function H(e){return{Authorization:`Bearer ${e}`,Accept:"application/vnd.github+json","X-GitHub-Api-Version":"2022-11-28"}}function Se(e){return{Authorization:`Basic ${e}`,Accept:"application/json"}}function Rr(e){return e?.trimStart().startsWith("[clancy]")??!1}async function ll(e,t,r,n,o=M,s){try{let i=H(e),a=await fetch(`${o}/repos/${t}/pulls?head=${n}:${r}&state=open`,{headers:i});if(!a.ok)return;let u=cl.parse(await a.json());if(u.length===0)return;let l=u[0],p=s?`&since=${s}`:"",[f,m]=await Promise.all([fetch(`${o}/repos/${t}/pulls/${l.number}/comments?per_page=100${p}`,{headers:i}),fetch(`${o}/repos/${t}/issues/${l.number}/comments?per_page=100${p}`,{headers:i})]);if(!f.ok||!m.ok)return;let h=Sa.parse(await f.json()),y=xa.parse(await m.json()),_=h.filter(L=>!Rr(L.body)),x=y.filter(L=>!Rr(L.body)),P=_.length>0,B=x.some(L=>L.body&&ie(L.body)),N=P||B,U;if(!N)try{let L=await fetch(`${o}/repos/${t}/pulls/${l.number}/reviews?per_page=100`,{headers:i});if(L.ok){let Fa=ul.parse(await L.json()),Dt=new Map;for(let le of Fa)le.state==="PENDING"||le.state==="DISMISSED"||Dt.set(le.user.login,le.state);let Ha=[...Dt.entries()].filter(([,le])=>le==="CHANGES_REQUESTED");Ha.length>0&&(N=!0,U=Ha.map(([le])=>le))}}catch{}return{changesRequested:N,prNumber:l.number,prUrl:l.html_url,reviewers:U}}catch{return}}async function pl(e,t,r,n=M,o){try{let s=H(e),i=o?`&since=${o}`:"",[a,u]=await Promise.all([fetch(`${n}/repos/${t}/pulls/${r}/comments?per_page=100${i}`,{headers:s}),fetch(`${n}/repos/${t}/issues/${r}/comments?per_page=100${i}`,{headers:s})]);if(!a.ok||!u.ok)return[];let l=Sa.parse(await a.json()),p=xa.parse(await u.json()),f=l.filter(y=>!Rr(y.body)),m=p.filter(y=>!Rr(y.body)),h=[];for(let y of f){if(!y.body)continue;let _=y.path?`[${y.path}] `:"";h.push(`${_}${y.body}`)}for(let y of m)y.body&&ie(y.body)&&h.push(Ae(y.body));return h}catch{return[]}}async function fl(e,t,r,n,o=M){try{return(await fetch(`${o}/repos/${t}/issues/${r}/comments`,{method:"POST",headers:{...H(e),"Content-Type":"application/json"},body:JSON.stringify({body:n})})).ok}catch{return!1}}async function dl(e,t,r,n,o=M){try{return(await fetch(`${o}/repos/${t}/pulls/${r}/requested_reviewers`,{method:"POST",headers:{...H(e),"Content-Type":"application/json"},body:JSON.stringify({reviewers:n})})).ok}catch{return!1}}async function ml(e,t,r,n,o,s,i=M){return Ee(`${i}/repos/${t}/pulls`,H(e),{title:o,head:r,base:n,body:s},a=>{let u=a;return{url:u.html_url??"",number:u.number??0}},(a,u)=>a===422&&u.includes("already exists"))}var Yg=I({iid:ke(),web_url:b(),detailed_merge_status:w(b())}),hl=Y(Yg),Gg=I({body:b(),resolvable:Je(),resolved:w(Je()),system:Je(),type:w(vr(b())),created_at:w(b()),position:w(I({new_path:w(b())})),author:w(I({username:b()}))}),Wg=I({id:w(b()),notes:Y(Gg)}),va=Y(Wg);async function gl(e,t,r,n,o,s,i){let a=encodeURIComponent(r);return Ee(`${t}/projects/${a}/merge_requests`,{"PRIVATE-TOKEN":e},{source_branch:n,target_branch:o,title:s,description:i,remove_source_branch:!0},u=>{let l=u;return{url:l.web_url??"",number:l.iid??0}},(u,l)=>u===409&&l.includes("already exists"))}async function yl(e,t,r,n,o){try{let s=encodeURIComponent(r);return(await fetch(`${t}/projects/${s}/merge_requests/${n}/notes`,{method:"POST",headers:{"PRIVATE-TOKEN":e,"Content-Type":"application/json"},body:JSON.stringify({body:o})})).ok}catch{return!1}}async function _l(e,t,r,n,o){let s=encodeURIComponent(r),i=0;for(let a of o)try{(await fetch(`${t}/projects/${s}/merge_requests/${n}/discussions/${a}`,{method:"PUT",headers:{"PRIVATE-TOKEN":e,"Content-Type":"application/json"},body:JSON.stringify({resolved:!0})})).ok&&i++}catch{}return i}async function bl(e,t,r,n,o){try{let s=encodeURIComponent(r),i=`${t}/projects/${s}/merge_requests?source_branch=${n}&state=opened`,a=await fetch(i,{headers:{"PRIVATE-TOKEN":e}});if(!a.ok)return;let u=hl.parse(await a.json());if(u.length===0)return;let l=u[0],p=`${t}/projects/${s}/merge_requests/${l.iid}/discussions?per_page=100`,f=await fetch(p,{headers:{"PRIVATE-TOKEN":e}});if(!f.ok)return;let m=va.parse(await f.json()),h=!1;for(let y of m){for(let _ of y.notes)if(!_.system&&!(o&&_.created_at&&_.created_at<=o)){if(_.type==="DiffNote"&&_.resolvable!==!1&&_.resolved!==!0){h=!0;break}if(ie(_.body)){h=!0;break}}if(h)break}return{changesRequested:h,prNumber:l.iid,prUrl:l.web_url}}catch{return}}async function wl(e,t,r,n,o){try{let s=encodeURIComponent(r),i=`${t}/projects/${s}/merge_requests/${n}/discussions?per_page=100`,a=await fetch(i,{headers:{"PRIVATE-TOKEN":e}});if(!a.ok)return{comments:[],discussionIds:[]};let u=va.parse(await a.json()),l=[],p=[];for(let f of u){let m=!1;for(let h of f.notes)if(!h.system&&!(o&&h.created_at&&h.created_at<=o))if(h.type==="DiffNote"&&h.resolvable!==!1&&h.resolved!==!0){let y=h.position?.new_path?`[${h.position.new_path}] `:"";l.push(`${y}${h.body}`),m=!0}else ie(h.body)&&(l.push(Ae(h.body)),m=!0);m&&f.id&&p.push(f.id)}return{comments:l,discussionIds:p}}catch{return{comments:[],discussionIds:[]}}}function zt(e,t){let r=D(e);switch(t.host){case"github":if(r.GITHUB_TOKEN)return{token:r.GITHUB_TOKEN};break;case"gitlab":if(r.GITLAB_TOKEN)return{token:r.GITLAB_TOKEN};break;case"bitbucket":if(r.BITBUCKET_USER&&r.BITBUCKET_TOKEN)return{token:r.BITBUCKET_TOKEN,username:r.BITBUCKET_USER};break;case"bitbucket-server":if(r.BITBUCKET_TOKEN)return{token:r.BITBUCKET_TOKEN};break}}async function Re(e,t,r,n,o,s){let i=zt(e,t);if(!i)return;let a=St(t,D(e).CLANCY_GIT_API_URL);if(a)switch(t.host){case"github":return ml(i.token,`${t.owner}/${t.repo}`,r,n,o,s,a);case"gitlab":return gl(i.token,a,t.projectPath,r,n,o,s);case"bitbucket":return Xu(i.username,i.token,t.workspace,t.repoSlug,r,n,o,s);case"bitbucket-server":return el(i.token,a,t.projectKey,t.repoSlug,r,n,o,s);default:return}}function Cr(e,t,r){let n=encodeURIComponent(t),o=encodeURIComponent(r);if(e.host==="github")return`https://${e.hostname}/${e.owner}/${e.repo}/compare/${o}...${n}`;if(e.host==="gitlab")return`https://${e.hostname}/${e.projectPath}/-/merge_requests/new?merge_request[source_branch]=${n}&merge_request[target_branch]=${o}`;if(e.host==="bitbucket")return`https://${e.hostname}/${e.workspace}/${e.repoSlug}/pull-requests/new?source=${n}&dest=${o}`;if(e.host==="bitbucket-server")return`https://${e.hostname}/projects/${e.projectKey}/repos/${e.repoSlug}/pull-requests?create&sourceBranch=refs/heads/${n}&targetBranch=refs/heads/${o}`}function za(e,t){let r=Ja(e),n=Xe(e);if(r)return Bt(e)?!0:(console.log(z(`\u26A0 Epic branch ${e} exists on remote but could not be fetched.`)),!1);if(n)return console.log(Oe(`\u2717 Epic branch ${e} exists locally but not on remote.`)),console.log(z(" This may contain work from a previous Clancy version that squash-merged locally.")),console.log($(" To preserve this work, push it manually:")),console.log($(` git push -u origin ${e}`)),console.log($(" Then re-run /clancy:once to continue.")),!1;try{if($l("git",["fetch","origin",t],{encoding:"utf8",stdio:["pipe","pipe","pipe"],timeout:15e3}),$l("git",["checkout","-b",e,`origin/${t}`],{encoding:"utf8"}),et(e))console.log(O(` \u2713 Created epic branch ${e}`));else return console.log(z(`\u26A0 Created ${e} locally but could not push to origin.`)),!1;return!0}catch(o){return console.log(Oe(`\u2717 Could not create epic branch: ${o instanceof Error?o.message:String(o)}`)),!1}}async function Ta(e,t,r,n,o,s=!1,i,a,u){if(!et(r)){console.log(z(`\u26A0 Could not push ${r} to origin.`)),console.log($(" The branch is still available locally. Push manually:")),console.log($(` git push -u origin ${r}`)),s||C(process.cwd(),t.key,t.title,"PUSH_FAILED",void 0,i),Z(n);let x=Ce(Date.now()-o);return console.log(""),console.log(z(`\u26A0 ${t.key} implemented but push failed`)+$(` (${x})`)),!1}console.log(O(` \u2713 Pushed ${r}`));let p;try{let x=Qg(process.cwd(),".clancy","verify-attempt.txt"),P=Vg(x,"utf8").trim(),B=parseInt(P,10);B>0&&(p=`Verification checks did not fully pass (${B} attempt(s)). Review carefully.`)}catch{}let f=D(e).CLANCY_GIT_PLATFORM,m=ce(f),h=`feat(${t.key}): ${t.title}`,y;if(i&&ba(n)){let x=[...vt].flatMap(P=>j(process.cwd(),P)).filter(P=>P.parent===i&&P.key!==t.key);y={parentKey:i,siblingsDelivered:x.length,epicBranch:n}}let _=Ye(e,{key:t.key,title:t.title,description:t.description,provider:e.provider},n,p,u,y);if(m.host!=="none"&&m.host!=="unknown"&&m.host!=="azure"){let x=await Re(e,m,r,n,h,_);if(x?.ok)console.log(O(` \u2713 PR created: ${x.url}`)),s||C(process.cwd(),t.key,t.title,"PR_CREATED",x.number,i);else if(x&&!x.ok&&x.alreadyExists)console.log(z(` \u26A0 A PR/MR already exists for ${r}. Branch pushed.`)),s||C(process.cwd(),t.key,t.title,"PUSHED",void 0,i);else if(x&&!x.ok){console.log(z(` \u26A0 PR/MR creation failed: ${x.error}`));let P=Cr(m,r,n);console.log(P?$(` Create one manually: ${P}`):$(" Branch pushed \u2014 create a PR/MR manually.")),s||C(process.cwd(),t.key,t.title,"PUSHED",void 0,i)}else{let P=Cr(m,r,n);console.log(P?$(` Create a PR: ${P}`):$(" Branch pushed to remote. Create a PR/MR manually.")),s||C(process.cwd(),t.key,t.title,"PUSHED",void 0,i)}}else m.host==="none"?(console.log(z(`\u26A0 No git remote configured. Branch available locally: ${r}`)),s||C(process.cwd(),t.key,t.title,"LOCAL",void 0,i)):(console.log($(" Branch pushed to remote. Create a PR/MR manually.")),s||C(process.cwd(),t.key,t.title,"PUSHED",void 0,i));if(e.provider!=="github"&&a){let x=e.env.CLANCY_STATUS_REVIEW??e.env.CLANCY_STATUS_DONE;x&&await a.transitionTicket(t,x)}return Z(n),!0}async function kl(e,t,r,n,o,s){console.log(""),console.log(O(`\u{1F389} All children of ${t} are done!`)),console.log($(` Creating epic PR: ${n} \u2192 ${o}`));let i=j(process.cwd(),"PR_CREATED"),a=j(process.cwd(),"DONE"),u=j(process.cwd(),"REWORK"),l=j(process.cwd(),"PUSHED"),p=[...i,...a,...u,...l].filter(P=>P.parent===t),f=D(e).CLANCY_GIT_PLATFORM,m=ce(f),h=`feat(${t}): ${r}`,y=Yu(t,r,p,e.provider);if(m.host==="none"||m.host==="unknown"||m.host==="azure")return console.log(z("\u26A0 Cannot create epic PR \u2014 no supported git remote detected.")),console.log($(` Push manually: git push origin ${n}`)),console.log($(` Then create a PR targeting ${o}`)),!1;let _=await Re(e,m,n,o,h,y);if(_?.ok){if(console.log(O(` \u2713 Epic PR created: ${_.url}`)),C(process.cwd(),t,r,"EPIC_PR_CREATED",_.number),e.provider==="github"&&s){let P=wa(e.env);P&&(await s.addLabel(t,P),console.log($(` Requested ${P} on ${t} (best-effort)`)))}else if(s){let P=e.env.CLANCY_STATUS_REVIEW??e.env.CLANCY_STATUS_DONE;P&&await s.transitionTicket({key:t,title:r,description:"",parentInfo:"none",blockers:"None"},P)}return!0}if(_&&!_.ok&&_.alreadyExists)return console.log(z(` \u26A0 An epic PR already exists for ${n}.`)),C(process.cwd(),t,r,"EPIC_PR_CREATED"),!0;console.log(z(`\u26A0 Epic PR creation failed: ${_?.error??"unknown error"}`)),console.log($(" Create it manually:")),console.log($(` Branch: ${n} \u2192 ${o}`));let x=Cr(m,n,o);return x&&console.log($(` ${x}`)),!1}async function xl(e){let t=e.board,r=e.ticket,n=e.ticketBranch,o=e.targetBranch,s=e.baseBranch,i=e.hasParent,a=e.isRework??!1;e.originalBranch=qa();let u=!1;if(i&&!a){let p=await t.fetchChildrenStatus(r.parentInfo,r.linearIssueId,r.key);p&&p.total===1&&(u=!0)}e.skipEpicBranch=u;let l=i&&!u?o:s;if(e.effectiveTarget=l,a){if(i&&!u){if(!za(o,s))return e.originalBranch&&Z(e.originalBranch),!1}else Wr(l,s);Bt(n)?Z(n):(Z(l),Z(n,!0))}else if(i&&!u){if(!za(o,s))return e.originalBranch&&Z(e.originalBranch),!1;Z(o),Z(n,!0)}else Wr(s,s),Z(s),Z(n,!0);try{Wa(e.cwd,{pid:process.pid,ticketKey:r.key,ticketTitle:r.title,ticketBranch:n,targetBranch:l,parentKey:r.parentInfo,description:(r.description??"").slice(0,2e3),startedAt:new Date().toISOString()}),e.lockOwner=!0}catch{console.log($(" (warning: could not write lock file \u2014 crash recovery disabled)"))}return!0}function Xg(e){return e.includes("hooks.slack.com")}function ey(e){return JSON.stringify({text:e})}function ty(e){return JSON.stringify({type:"message",attachments:[{contentType:"application/vnd.microsoft.card.adaptive",content:{$schema:"http://adaptivecards.io/schemas/adaptive-card.json",type:"AdaptiveCard",version:"1.4",body:[{type:"TextBlock",text:e,wrap:!0}]}}]})}async function Sl(e,t){let r=Xg(e)?ey(t):ty(t);try{let n=await fetch(e,{method:"POST",headers:{"Content-Type":"application/json"},body:r});n.ok||console.warn(`\u26A0 Notification failed: HTTP ${n.status}`)}catch{console.warn("\u26A0 Notification failed: could not reach webhook")}}async function vl(e){let t=e.config,r=e.ticket,n=Ce(Date.now()-e.startTime);console.log(""),console.log(O(`\u{1F3C1} ${r.key} complete`)+$(` (${n})`)),console.log($(` "Bake 'em away, toys."`));let o=t.env.CLANCY_NOTIFY_WEBHOOK;return o&&await Sl(o,`\u2713 Clancy completed [${r.key}] ${r.title}`),!0}import{appendFileSync as ry,mkdirSync as ny}from"node:fs";import{dirname as oy,join as sy}from"node:path";function zl(e,t,r,n=6600){let o=sy(e,".clancy","costs.log");ny(oy(o),{recursive:!0});let s=new Date(r).getTime(),i=Date.now(),a=Number.isNaN(s)?0:Math.max(0,i-s),u=Math.round(a/6e4),l=Math.round(u*n),f=`${new Date().toISOString()} | ${t} | ${u}min | ~${l} tokens (estimated)
47
- `;ry(o,f,"utf8")}function Tl(e){let t=e.config,r=e.ticket;try{let n=Ft(e.cwd);if(n){let o=Number(t.env.CLANCY_TOKEN_RATE??"6600");zl(e.cwd,r.key,n.startedAt,Number.isFinite(o)&&o>0?o:6600)}}catch{}return!0}import{mkdirSync as iy,readFileSync as ay,renameSync as cy,writeFileSync as uy}from"node:fs";import{join as Il}from"node:path";function Pl(e){return Il(e,".clancy","quality.json")}function El(e){try{let t=ay(Pl(e),"utf8"),r=JSON.parse(t);if(r&&typeof r.tickets=="object"&&r.tickets!==null&&!Array.isArray(r.tickets))return Ia(r),r}catch{}return{tickets:{},summary:{totalTickets:0,avgReworkCycles:0,avgVerificationRetries:0,avgDuration:0}}}function Ia(e){let t=Object.values(e.tickets),r=t.length;if(r===0){e.summary={totalTickets:0,avgReworkCycles:0,avgVerificationRetries:0,avgDuration:0};return}let n=0,o=0,s=0,i=0;for(let a of t)n+=a.reworkCycles,o+=a.verificationRetries,a.duration!=null&&(s+=a.duration,i++);e.summary={totalTickets:r,avgReworkCycles:Math.round(n/r*100)/100,avgVerificationRetries:Math.round(o/r*100)/100,avgDuration:i>0?Math.round(s/i*100)/100:0}}function Al(e,t){let r=Pl(e),n=r+".tmp";iy(Il(e,".clancy"),{recursive:!0}),uy(n,JSON.stringify(t,null,2)+`
48
- `,"utf8"),cy(n,r)}function Rl(e,t){return e.tickets[t]||(e.tickets[t]={reworkCycles:0,verificationRetries:0}),e.tickets[t]}function Cl(e,t){try{let r=El(e),n=Rl(r,t);n.reworkCycles++,Ia(r),Al(e,r)}catch{}}function Nl(e,t,r){try{let n=El(e),o=Rl(n,t);o.deliveredAt=new Date().toISOString(),o.duration=r,Ia(n),Al(e,n)}catch{}}function We(e,t){return e==="github"?`feature/issue-${t.replace("#","")}`:`feature/${t.toLowerCase()}`}function Ve(e,t,r){if(!r)return t;if(e==="github"){let n=r.match(/^#(\d+)$/);return n?`epic/${n[1]}`:`milestone/${r.toLowerCase().replace(/\s+/g,"-").replace(/[^a-z0-9-]/g,"")}`}return`epic/${r.toLowerCase()}`}async function Ol(e){let t=j(process.cwd(),"PR_CREATED"),r=j(process.cwd(),"REWORK"),n=j(process.cwd(),"PUSHED"),o=j(process.cwd(),"PUSH_FAILED"),s=[...t,...r,...n,...o];if(s.length===0)return;let i=D(e).CLANCY_GIT_PLATFORM,a=ce(i);if(a.host==="none"||a.host==="unknown"||a.host==="azure")return;let u=zt(e,a);if(!u)return;let l=St(a,D(e).CLANCY_GIT_API_URL);if(!l)return;let p=s.slice(0,5);for(let f of p){let m=We(e.provider,f.key),h;if(f.timestamp){let _=new Date(f.timestamp.replace(" ","T")+"Z");h=Number.isNaN(_.getTime())?void 0:_.toISOString()}let y;switch(a.host){case"github":y=await ll(u.token,`${a.owner}/${a.repo}`,m,a.owner,l,h);break;case"gitlab":y=await bl(u.token,l,a.projectPath,m,h);break;case"bitbucket":y=await nl(u.username,u.token,a.workspace,a.repoSlug,m,h);break;case"bitbucket-server":y=await sl(u.token,l,a.projectKey,a.repoSlug,m,h);break}if(y?.changesRequested){let _=[],x;switch(a.host){case"github":_=await pl(u.token,`${a.owner}/${a.repo}`,y.prNumber,l,h);break;case"gitlab":{let B=await wl(u.token,l,a.projectPath,y.prNumber,h);_=B.comments,x=B.discussionIds;break}case"bitbucket":_=await ol(u.username,u.token,a.workspace,a.repoSlug,y.prNumber,h);break;case"bitbucket-server":_=await il(u.token,l,a.projectKey,a.repoSlug,y.prNumber,h);break}return{ticket:{key:f.key,title:f.summary,description:f.summary,parentInfo:f.parent??"none",blockers:"None"},feedback:_,prNumber:y.prNumber,discussionIds:x,reviewers:y.reviewers??[]}}}}function ly(e){if(e.length===0)return"[clancy] Rework pushed addressing reviewer feedback.";let t=e.length,r=e.slice(0,3).map(o=>`- ${o.slice(0,80)}`).join(`
49
- `),n=e.length>3?`
50
- - ...`:"";return`[clancy] Rework pushed addressing ${t} feedback item${t!==1?"s":""}.
51
-
52
- ${r}${n}`}async function Ll(e,t,r,n,o){let s=D(e).CLANCY_GIT_PLATFORM,i=ce(s);if(i.host==="none"||i.host==="unknown"||i.host==="azure")return;let a=zt(e,i);if(!a)return;let u=St(i,D(e).CLANCY_GIT_API_URL);if(!u)return;let l=ly(r);try{let p=!1;switch(i.host){case"github":p=await fl(a.token,`${i.owner}/${i.repo}`,t,l,u);break;case"gitlab":p=await yl(a.token,u,i.projectPath,t,l);break;case"bitbucket":p=await tl(a.username,a.token,i.workspace,i.repoSlug,t,l);break;case"bitbucket-server":p=await rl(a.token,u,i.projectKey,i.repoSlug,t,l);break}p&&console.log($(" \u2713 Posted rework comment"))}catch{}if(i.host==="gitlab"&&n&&n.length>0)try{let p=await _l(a.token,u,i.projectPath,t,n);p>0&&console.log($(` \u2713 Resolved ${p} discussion thread${p!==1?"s":""}`))}catch{}if(i.host==="github"&&o&&o.length>0)try{await dl(a.token,`${i.owner}/${i.repo}`,t,o,u)&&console.log($(` \u2713 Re-requested review from ${o.join(", ")}`))}catch{}}async function Zl(e){let t=e.config,r=e.ticket,n=e.ticketBranch,o=e.effectiveTarget,s=e.hasParent,i=e.skipEpicBranch??!1,a=e.isRework??!1,u=s&&!i?r.parentInfo:void 0,l=s&&i?r.parentInfo:void 0,p=l&&/^#\d+$/.test(l),f=l&&t.provider==="github"&&!p?void 0:l;if(a){if(!await Ta(t,r,n,o,e.startTime,!0,u,e.board))return C(e.cwd,r.key,r.title,"PUSH_FAILED",void 0,u),!1;C(e.cwd,r.key,r.title,"REWORK",e.reworkPrNumber,u),Cl(e.cwd,r.key),e.reworkPrNumber!=null&&await Ll(t,e.reworkPrNumber,e.prFeedback??[],e.reworkDiscussionIds,e.reworkReviewers)}else{if(!await Ta(t,r,n,o,e.startTime,!1,u,e.board,f))return!1;Nl(e.cwd,r.key,Date.now()-e.startTime)}return!0}function jl(e){if(!e.dryRun)return!0;let t=e.config,r=e.ticket,n=e.ticketBranch,o=e.targetBranch,s=t.provider==="github"?"Milestone":"Epic";return console.log(""),console.log(z("\u2500\u2500 Dry Run \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500")),console.log(` Ticket: ${Ne(`[${r.key}]`)} ${r.title}`),e.isRework&&console.log(" Mode: Rework"),console.log(` ${s}:${" ".repeat(14-s.length)}${r.parentInfo}`),t.provider!=="github"&&console.log(` Blockers: ${r.blockers}`),console.log(` Target branch: ${n} \u2192 ${o}`),r.description&&console.log(` Description: ${r.description}`),console.log(z("\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500")),console.log($(" No changes made. Remove --dry-run to run for real.")),!1}async function Dl(e){let t=e.config,r=e.board;try{let n=j(e.cwd,"PR_CREATED"),o=j(e.cwd,"REWORK"),s=j(e.cwd,"PUSHED"),i=[...n,...o,...s],a=new Set(j(e.cwd,"EPIC_PR_CREATED").map(p=>p.key)),u=new Set(i.map(p=>p.parent).filter(p=>!!p).filter(p=>!a.has(p))),l=t.env.CLANCY_BASE_BRANCH??"main";for(let p of u){let f=await r.fetchChildrenStatus(p);if(f&&f.incomplete===0&&f.total>0){let m=Ve(t.provider,l,p),h=await kl(t,p,p,m,l,r);console.log(h?O(` \u2713 Epic ${p} complete \u2014 PR created`):z(`\u26A0 Epic PR creation failed for ${p}. Create manually:
53
- git push origin ${m}
54
- Then create a PR targeting ${l}`))}}}catch{}return!0}import{spawnSync as Ml}from"node:child_process";function Bl(e,t){let r=["-p","--dangerously-skip-permissions"];t&&r.push("--model",t);let n=Ml("claude",r,{input:e,stdio:["pipe","pipe","pipe"],encoding:"utf8"});return{stdout:n.stdout??"",ok:n.status===0&&!n.error}}function Ul(e,t){let r=["--dangerously-skip-permissions"];t&&r.push("--model",t);let n=Ml("claude",r,{input:e,stdio:["pipe","inherit","inherit"],encoding:"utf8"});return n.status===0&&!n.error}function py(e){return["You are evaluating whether a ticket can be implemented as pure code changes in a repository.","",`Ticket: [${e.key}] ${e.title}`,"Description:",e.description,"","Can this ticket be completed entirely through code changes committed to a git repository?","","Answer INFEASIBLE if the ticket requires ANY of:","- Manual testing or configuration in external tools or admin panels","- Access to external services, APIs, or platforms not available in the codebase","- Physical, hardware, or infrastructure changes","- Design assets that do not yet exist","- Deployment or infrastructure changes outside the repository","- Human judgment calls that require stakeholder input","","Answer with exactly one line in this format:","FEASIBLE","or","INFEASIBLE: one-line reason","","Do not include any other text."].join(`
55
- `)}function fy(e){let t=e.trim().split(`
56
- `).pop()?.trim()??"";return/^INFEASIBLE/i.test(t)?{feasible:!1,reason:t.replace(/^INFEASIBLE:?\s*/i,"").trim()||void 0}:{feasible:!0}}function Fl(e,t){let r=py(e),{stdout:n,ok:o}=Bl(r,t);return o?fy(n):{feasible:!0}}function Hl(e){let t=e.config,r=e.ticket;if(!e.isRework&&!e.skipFeasibility){console.log($(" Checking feasibility..."));let n=Fl({key:r.key,title:r.title,description:r.description},t.env.CLANCY_MODEL);if(!n.feasible){let o=n.reason??"not implementable as code changes";return console.log(z(`\u23ED\uFE0F Ticket skipped [${r.key}]: ${o}`)),C(e.cwd,r.key,r.title,"SKIPPED"),!1}console.log(O(" \u2713 Feasibility check passed"))}return console.log(""),!0}var ql=`
57
- ## Test-Driven Development
58
-
59
- You MUST follow the red-green-refactor cycle for every behaviour change:
60
-
61
- 1. **Red** \u2014 Write a failing test that describes the desired behaviour.
62
- Run the test suite and confirm the new test fails.
63
- 2. **Green** \u2014 Write the minimum code to make the failing test pass.
64
- Do not add behaviour beyond what the test requires.
65
- 3. **Refactor** \u2014 Clean up the implementation while keeping all tests green.
66
- Look for duplication, unclear names, or unnecessary complexity.
67
-
68
- Repeat for each behaviour. Do not write implementation code without a failing test first.
69
- Design interfaces for testability \u2014 prefer pure functions and thin boundaries
70
- so modules are easy to test in isolation.`;function dy(e){switch(e){case"jira":return"Jira ticket";case"github":return"GitHub Issue";case"linear":return"Linear issue";case"shortcut":return"Shortcut story";case"notion":return"Notion page";case"azdo":return"Azure DevOps work item"}}function my(e){return e==="github"?"Milestone":e==="notion"?"Parent page":"Epic"}function Jl(e){let t=e.feedbackComments.length>0?e.feedbackComments.map((n,o)=>`${o+1}. ${n}`).join(`
71
- `):"No reviewer comments found. Review the existing implementation and fix any issues.",r=e.previousContext?`
72
-
73
- ## Previous Implementation
74
-
75
- \`\`\`
76
- ${e.previousContext}
77
- \`\`\``:"";return`You are fixing review feedback on [${e.key}] ${e.title}.
78
-
79
- Description:
80
- ${e.description}
81
-
82
- ## Reviewer Feedback
83
-
84
- ${t}${r}
85
-
86
- Address the specific feedback above. Don't re-implement unrelated areas. Focus only on what was flagged.${e.tdd?ql:""}
87
-
88
- Steps:
89
- 1. Read core docs in .clancy/docs/: STACK.md, ARCHITECTURE.md, CONVENTIONS.md, GIT.md, DEFINITION-OF-DONE.md, CONCERNS.md
90
- 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)
91
- 2. Follow the conventions in GIT.md exactly
92
- 3. Fix the issues identified in the reviewer feedback
93
- 4. Commit your work following the conventions in GIT.md
94
- 5. When done, confirm you are finished.`}function Kl(e){let t=dy(e.provider),r=my(e.provider),n=e.blockers&&e.provider!=="github"?`
95
- Blockers: ${e.blockers}`:"";return`You are implementing ${t} ${e.key}.
96
-
97
- ${e.provider==="github"?"Title":"Summary"}: ${e.title}
98
- ${r}: ${e.parentInfo}${n}
99
-
100
- Description:
101
- ${e.description}
102
-
103
- Step 0 \u2014 Executability check (do this before any git or file operation):
104
- Read the ${e.provider==="github"?"issue title and description":"ticket summary and description"} above. Can this ${e.provider==="github"?"issue":"ticket"} be implemented entirely
105
- as a code change committed to this repo? Consult the 'Executability check' section of
106
- CLAUDE.md for the full list of skip conditions.
107
-
108
- If you must SKIP this ${e.provider==="github"?"issue":"ticket"}:
109
- 1. Output: \u26A0 Skipping [${e.key}]: {one-line reason}
110
- 2. Output: Ticket skipped \u2014 update it to be codebase-only work, then re-run.
111
- 3. Append to .clancy/progress.txt: YYYY-MM-DD HH:MM | ${e.key} | {reason} | SKIPPED
112
- 4. Stop \u2014 no branches, no file changes, no git operations.
113
-
114
- If the ${e.provider==="github"?"issue":"ticket"} IS implementable, continue:${e.tdd?ql:""}
115
- 1. Read core docs in .clancy/docs/: STACK.md, ARCHITECTURE.md, CONVENTIONS.md, GIT.md, DEFINITION-OF-DONE.md, CONCERNS.md
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
- 2. Follow the conventions in GIT.md exactly
118
- 3. Implement the ${e.provider==="github"?"issue":"ticket"} fully
119
- 4. Commit your work following the conventions in GIT.md
120
- 5. When done, confirm you are finished.`}function Yl(e){let t=e.config,r=e.ticket,n=e.isRework??!1,o=e.targetBranch,s=t.env.CLANCY_TDD==="true",i;n?i=Jl({key:r.key,title:r.title,description:r.description,provider:t.provider,feedbackComments:e.prFeedback??[],previousContext:Ka(o),tdd:s}):i=Kl({provider:t.provider,key:r.key,title:r.title,description:r.description,parentInfo:r.parentInfo,blockers:t.provider!=="github"?r.blockers:void 0,tdd:s}),process.env.CLANCY_ONCE_ACTIVE="1";let a;try{a=Ul(i,t.env.CLANCY_MODEL)}finally{delete process.env.CLANCY_ONCE_ACTIVE}return a?!0:(console.log(z("\u26A0 Claude session exited with an error. Skipping merge.")),!1)}import{execFileSync as Pa}from"node:child_process";import{existsSync as hy,readFileSync as gy}from"node:fs";import{join as yy}from"node:path";function _y(e){let t={};for(let r of e.split(`
121
- `)){let n=r.trim();if(!n||n.startsWith("#"))continue;let o=n.indexOf("=");if(o===-1)continue;let s=n.slice(0,o).trim(),i=n.slice(o+1).trim();i.length>=2&&(i.startsWith('"')&&i.endsWith('"')||i.startsWith("'")&&i.endsWith("'"))&&(i=i.slice(1,-1)),t[s]=i}return t}function Gl(e){let t=yy(e,".clancy",".env");if(!hy(t))return;let r=gy(t,"utf8");return _y(r)}function by(e){try{return Pa("which",[e],{stdio:"ignore"}),!0}catch{return!1}}function wy(){try{return Pa("git",["rev-parse","--git-dir"],{stdio:"ignore"}),!0}catch{return!1}}function Nr(e){for(let n of["claude","git"])if(!by(n))return{ok:!1,error:`\u2717 ${n} is required but not found`};let t=Gl(e);if(!t)return{ok:!1,error:"\u2717 .clancy/.env not found \u2014 run /clancy:init first"};if(!wy())return{ok:!1,error:"\u2717 Not inside a git repository"};let r;try{Pa("git",["ls-remote","origin","HEAD"],{encoding:"utf8",timeout:5e3,stdio:["pipe","pipe","pipe"]})}catch{r="\u26A0 Could not reach origin. PR creation and rework detection may not work."}if(Mt()){let n="\u26A0 Working directory has uncommitted changes \u2014 they will be included in the branch";r=r?`${r}
122
- ${n}`:n}return{ok:!0,env:t,warning:r}}import{execFileSync as Tt}from"node:child_process";function Wl(e){let t=e.ticketBranch;if(!Xe(t))return;let r;try{r=Tt("git",["rev-parse","--abbrev-ref","HEAD"],{encoding:"utf8"}).trim()}catch{return}try{Z(t)}catch{return}let n=!1,o=!1;try{n=Mt()}catch{}try{o=Tt("git",["log",`origin/${t}..${t}`,"--oneline"],{encoding:"utf8"}).trim().length>0}catch{try{o=Tt("git",["log",`origin/${e.targetBranch}..${t}`,"--oneline"],{encoding:"utf8"}).trim().length>0}catch{}}try{Z(r)}catch{}if(!n&&!o){let s=Ju(process.cwd(),e.ticketKey);return s&&vt.has(s.status)?{branch:t,hasUncommitted:!1,hasUnpushed:!1,alreadyDelivered:!0}:void 0}return{branch:t,hasUncommitted:n,hasUnpushed:o,alreadyDelivered:!1}}async function Vl(e,t,r){try{if(Z(r.branch),r.hasUncommitted)try{Tt("git",["add","-A"],{encoding:"utf8"}),Tt("git",["commit","-m",`fix(${t.ticketKey}): resume after crash`],{encoding:"utf8"}),console.log(O(` \u2713 Committed in-progress work for ${t.ticketKey}`))}catch{return console.log(z(` \u26A0 Could not commit changes on ${r.branch}`)),!1}if(!et(r.branch))return console.log(z(` \u26A0 Could not push ${r.branch} to origin`)),!1;console.log(O(` \u2713 Pushed ${r.branch}`));let o=D(e).CLANCY_GIT_PLATFORM,s=ce(o),i=`feat(${t.ticketKey}): ${t.ticketTitle}`,a=Ye(e,{key:t.ticketKey,title:t.ticketTitle,description:"",provider:e.provider},t.targetBranch);if(s.host!=="none"&&s.host!=="unknown"&&s.host!=="azure"){let u=await Re(e,s,r.branch,t.targetBranch,i,a);u?.ok?(console.log(O(` \u2713 PR created: ${u.url}`)),C(process.cwd(),t.ticketKey,t.ticketTitle,"RESUMED",u.number,t.parentKey&&t.parentKey!=="none"?t.parentKey:void 0)):(console.log($(" Branch pushed \u2014 create a PR manually.")),C(process.cwd(),t.ticketKey,t.ticketTitle,"RESUMED",void 0,t.parentKey&&t.parentKey!=="none"?t.parentKey:void 0))}else C(process.cwd(),t.ticketKey,t.ticketTitle,"RESUMED",void 0,t.parentKey&&t.parentKey!=="none"?t.parentKey:void 0);try{Z(t.targetBranch)}catch{}return!0}catch(n){return console.log(z(` \u26A0 Resume failed: ${n instanceof Error?n.message:String(n)}`)),!1}}async function Ql(e){let t=Ft(e.cwd);if(!t)return!0;if(!Va(t))return console.log(z(`\u26A0 Another Clancy session is running (PID ${t.pid}, ticket ${t.ticketKey}). Aborting.`)),!1;console.log($(` Stale lock found (PID ${t.pid}, ticket ${t.ticketKey}). Cleaning up...`)),Ht(e.cwd),qt(e.cwd);try{let r=Wl(t);if(r?.alreadyDelivered)return console.log(O(` \u2713 ${t.ticketKey} was already delivered \u2014 skipping.`)),!0;if(r)if(e.isAfk){console.log(z(` \u21BB Resuming crashed session: ${t.ticketKey} on ${r.branch}`));let n=Nr(e.cwd);if(n.ok){let o=Er(n.env);if(typeof o!="string"&&await Vl(o,t,r))return console.log(O(` \u2713 Resumed ${t.ticketKey}`)),!1}}else console.log(z(` Found in-progress work on ${r.branch}.`+(r.hasUncommitted?" Has uncommitted changes.":"")+(r.hasUnpushed?" Has unpushed commits.":""))),console.log($(" Run in AFK mode (CLANCY_AFK_MODE=1) to auto-resume, or handle manually."))}catch{}return!0}async function Xl(e){let t=e.config;if(!t)return!0;try{let r=j(e.cwd,"PUSHED"),n=j(e.cwd,"PR_CREATED"),o=new Set(n.map(l=>l.key)),s=r.filter(l=>!o.has(l.key));if(!s.length)return!0;let i=D(t).CLANCY_GIT_PLATFORM,a=ce(i);if(a.host==="none"||a.host==="unknown"||a.host==="azure"){for(let l of s){console.log($(` Skipping PR retry for ${l.key} \u2014 remote host "${a.host}" does not support PR creation`));let p=l.parent&&l.parent!=="none"?l.parent:void 0;C(e.cwd,l.key,l.summary,"PR_CREATED",void 0,p)}return!0}let u=t.env.CLANCY_BASE_BRANCH??"main";for(let l of s){console.log(z(` \u21BB Retrying PR creation for ${l.key} (previously pushed)`));let p=l.parent&&l.parent!=="none"?l.parent:void 0,f=We(t.provider,l.key),m=Ve(t.provider,u,p),h=`feat(${l.key}): ${l.summary}`,y=Ye(t,{key:l.key,title:l.summary,description:l.summary,provider:t.provider},m),_=await Re(t,a,f,m,h,y);_?.ok?(console.log(O(` \u2713 PR created: ${_.url}`)),C(e.cwd,l.key,l.summary,"PR_CREATED",_.number,p)):_&&!_.ok&&_.alreadyExists?(console.log($(` PR already exists for ${l.key}`)),C(e.cwd,l.key,l.summary,"PR_CREATED",void 0,p)):console.log(z(` \u26A0 PR retry failed for ${l.key}${_&&!_.ok?`: ${_.error}`:""} \u2014 create manually`))}}catch{}return!0}var Ea=c.object({id:c.number(),url:c.optional(c.string())}),ep=c.object({workItems:c.array(Ea)}),$y=c.object({rel:c.string(),url:c.string(),attributes:c.optional(c.object({name:c.optional(c.string())}))}),ky=c.object({"System.Title":c.optional(c.string()),"System.Description":c.optional(c.nullable(c.string())),"System.State":c.optional(c.string()),"System.Tags":c.optional(c.nullable(c.string())),"System.AssignedTo":c.optional(c.nullable(c.object({displayName:c.optional(c.string()),uniqueName:c.optional(c.string())}))),"System.WorkItemType":c.optional(c.string())}),Aa=c.object({id:c.number(),fields:ky,relations:c.optional(c.nullable(c.array($y)))}),tp=c.object({value:c.array(Aa),count:c.optional(c.number())}),rp=c.object({id:c.string(),name:c.string(),state:c.optional(c.string())}),xy=c.object({source:c.optional(c.nullable(Ea)),target:c.optional(c.nullable(Ea))}),np=c.object({workItemRelations:c.optional(c.array(xy))});var Qe="7.1";function op(e){return`Basic ${btoa(`:${e}`)}`}function Et(e){return!(e.includes("'")||e.includes("\\")||e.includes("--")||e.includes(";")||e.includes("/*")||/[^\x20-\x7E\t\n\r]/.test(e))}function It(e){if(!Et(e))throw new Error(`Unsafe WIQL value: ${e.slice(0,50)}`);return e}function At(e,t){return`https://dev.azure.com/${encodeURIComponent(e)}/${encodeURIComponent(t)}/_apis`}function Rt(e){return{Authorization:op(e),"Content-Type":"application/json"}}function Sy(e){return{Authorization:op(e),"Content-Type":"application/json-patch+json"}}async function sp(e,t,r){let n;try{n=await fetch(`https://dev.azure.com/${encodeURIComponent(e)}/_apis/projects/${encodeURIComponent(t)}?api-version=${Qe}`,{headers:Rt(r)})}catch{return{ok:!1,error:"\u2717 Could not reach Azure DevOps \u2014 check network"}}if(!n.ok)return n.status===401||n.status===403?{ok:!1,error:"\u2717 Azure DevOps auth failed \u2014 check AZDO_PAT"}:{ok:!1,error:`\u2717 Azure DevOps API returned HTTP ${n.status}`};try{let o=await n.json(),s=rp.safeParse(o);if(s.success&&s.data.id)return{ok:!0}}catch{}return{ok:!1,error:"\u2717 Azure DevOps auth failed \u2014 check AZDO_PAT"}}async function ip(e,t,r,n){try{let o=await fetch(`${At(e,t)}/wit/wiql?api-version=${Qe}`,{method:"POST",headers:Rt(r),body:JSON.stringify({query:n})});if(!o.ok)return console.warn(`\u26A0 Azure DevOps WIQL returned HTTP ${o.status}`),[];let s=await o.json(),i=ep.safeParse(s);return i.success?i.data.workItems.map(a=>a.id):(console.warn(`\u26A0 Unexpected Azure DevOps WIQL response: ${i.error.message}`),[])}catch(o){return console.warn(`\u26A0 Azure DevOps WIQL request failed: ${o instanceof Error?o.message:String(o)}`),[]}}async function Ra(e,t,r,n){if(!n.length)return[];let o=[];for(let s=0;s<n.length;s+=200){let a=n.slice(s,s+200).join(",");try{let u=await fetch(`${At(e,t)}/wit/workitems?ids=${a}&$expand=relations&api-version=${Qe}`,{headers:Rt(r)});if(!u.ok){console.warn(`\u26A0 Azure DevOps work items batch returned HTTP ${u.status}`);continue}let l=await u.json(),p=tp.safeParse(l);if(!p.success){console.warn(`\u26A0 Unexpected Azure DevOps work items response: ${p.error.message}`);continue}o.push(...p.data.value)}catch(u){console.warn(`\u26A0 Azure DevOps work items fetch failed: ${u instanceof Error?u.message:String(u)}`)}}return o}async function Pt(e,t,r,n){try{let o=await fetch(`${At(e,t)}/wit/workitems/${n}?$expand=relations&api-version=${Qe}`,{headers:Rt(r)});if(!o.ok)return;let s=await o.json(),i=Aa.safeParse(s);return i.success?i.data:void 0}catch{return}}async function Or(e,t,r,n,o){try{return(await fetch(`${At(e,t)}/wit/workitems/${n}?api-version=${Qe}`,{method:"PATCH",headers:Sy(r),body:JSON.stringify(o)})).ok}catch{return!1}}function Lr(e){return e?e.split(";").map(t=>t.trim()).filter(Boolean):[]}function Ca(e){return e.join("; ")}function ap(e){let t=e.match(/workItems\/(\d+)/i);if(!t)return;let r=parseInt(t[1],10);return Number.isNaN(r)?void 0:r}async function cp(e,t,r,n,o,s,i=5){let a=`SELECT [System.Id] FROM WorkItems WHERE [System.TeamProject] = '${It(t)}' AND [System.State] = '${It(n)}' AND [System.AssignedTo] = @Me`;o&&(a+=` AND [System.WorkItemType] = '${It(o)}'`),a+=" ORDER BY [System.CreatedDate] ASC";let u=await ip(e,t,r,a);if(!u.length)return[];let l=u.slice(0,i*2),f=(await Ra(e,t,r,l)).map(m=>vy(m));return s&&(f=f.filter(m=>!m.labels?.some(h=>h==="clancy:hitl"))),f.slice(0,i)}function vy(e){let t=Lr(e.fields["System.Tags"]),r;if(e.relations){for(let n of e.relations)if(n.rel==="System.LinkTypes.Hierarchy-Reverse"){r=ap(n.url);break}}return{key:`azdo-${e.id}`,title:e.fields["System.Title"]??"",description:e.fields["System.Description"]??"",provider:"azdo",workItemId:e.id,parentId:r,labels:t}}var Na=new Set(["Done","Closed","Completed","Resolved"]);async function up(e,t,r,n){try{let o=await Pt(e,t,r,n);if(!o)return!1;let s=(o.relations??[]).filter(i=>i.rel==="System.LinkTypes.Dependency-Reverse");if(!s.length)return!1;for(let i of s){let a=ap(i.url);if(a===void 0)continue;let u=await Pt(e,t,r,a);if(!u)continue;let l=u.fields["System.State"];if(!l||!Na.has(l))return!0}return!1}catch{return!1}}async function lp(e,t,r,n,o){try{if(o){let s=`Epic: ${o}`,i=await zy(e,t,r,s);if(i&&i.total>0)return i}return await Ty(e,t,r,n)}catch{return}}async function zy(e,t,r,n){try{let o=`SELECT [System.Id] FROM WorkItems WHERE [System.TeamProject] = '${It(t)}' AND [System.Description] CONTAINS '${It(n)}'`,s=await ip(e,t,r,o);if(!s.length)return{total:0,incomplete:0};let i=await Ra(e,t,r,s),a=i.length,u=i.filter(l=>{let p=l.fields["System.State"];return!p||!Na.has(p)}).length;return{total:a,incomplete:u}}catch{return}}async function Ty(e,t,r,n){try{if(Number.isNaN(n))return;let o=`SELECT [System.Id] FROM WorkItemLinks WHERE [Source].[System.Id] = ${n} AND [System.Links.LinkType] = 'System.LinkTypes.Hierarchy-Forward' MODE (MustContain)`,s=await fetch(`${At(e,t)}/wit/wiql?api-version=${Qe}`,{method:"POST",headers:Rt(r),body:JSON.stringify({query:o})});if(!s.ok)return;let i=await s.json(),a=np.safeParse(i);if(!a.success)return;let l=(a.data.workItemRelations??[]).filter(h=>h.target?.id!==void 0&&h.target.id!==n).map(h=>h.target.id);if(!l.length)return{total:0,incomplete:0};let p=await Ra(e,t,r,l),f=p.length,m=p.filter(h=>{let y=h.fields["System.State"];return!y||!Na.has(y)}).length;return{total:f,incomplete:m}}catch{return}}function pp(e){let t=e.AZDO_ORG,r=e.AZDO_PROJECT,n=e.AZDO_PAT,o=e.CLANCY_AZDO_STATUS??"New",s=e.CLANCY_AZDO_WIT;return{async ping(){return sp(t,r,n)},validateInputs(){if(!t.trim())return"\u2717 AZDO_ORG must not be empty";if(!r.trim())return"\u2717 AZDO_PROJECT must not be empty";if(!n.trim())return"\u2717 AZDO_PAT must not be empty";if(!Et(r))return"\u2717 AZDO_PROJECT contains unsafe characters for WIQL queries";if(!Et(o))return"\u2717 CLANCY_AZDO_STATUS contains unsafe characters for WIQL queries";if(s&&!Et(s))return"\u2717 CLANCY_AZDO_WIT contains unsafe characters for WIQL queries"},async fetchTicket(i){return(await this.fetchTickets(i))[0]},async fetchTickets(i){let a=await cp(t,r,n,o,s,i.excludeHitl);if(i.buildLabel){let u=i.buildLabel;a=a.filter(l=>l.labels?.includes(u))}return a.map(u=>({key:u.key,title:u.title,description:u.description,parentInfo:u.parentId?`azdo-${u.parentId}`:"none",blockers:"None",issueId:String(u.workItemId),labels:u.labels??[],status:o}))},async fetchBlockerStatus(i){let a=Zr(i.key);return a===void 0?!1:up(t,r,n,a)},async fetchChildrenStatus(i,a){let u=a??i.replace("azdo-",""),l=parseInt(u,10);if(!Number.isNaN(l))return lp(t,r,n,l,i)},async transitionTicket(i,a){let u=Zr(i.key);if(u===void 0)return!1;let l=await Or(t,r,n,u,[{op:"replace",path:"/fields/System.State",value:a}]);return l&&console.log(` \u2192 Transitioned to ${a}`),l},async ensureLabel(i){},async addLabel(i,a){try{let u=Zr(i);if(u===void 0)return;let l=await Pt(t,r,n,u);if(!l)return;let p=Lr(l.fields["System.Tags"]);if(p.includes(a))return;let f=[...p,a];await Or(t,r,n,u,[{op:"replace",path:"/fields/System.Tags",value:Ca(f)}])}catch(u){console.warn(`\u26A0 addLabel failed: ${u instanceof Error?u.message:String(u)}`)}},async removeLabel(i,a){try{let u=Zr(i);if(u===void 0)return;let l=await Pt(t,r,n,u);if(!l)return;let p=Lr(l.fields["System.Tags"]);if(!p.includes(a))return;let f=p.filter(m=>m!==a);await Or(t,r,n,u,[{op:"replace",path:"/fields/System.Tags",value:Ca(f)}])}catch(u){console.warn(`\u26A0 removeLabel failed: ${u instanceof Error?u.message:String(u)}`)}},sharedEnv(){return e}}}function Zr(e){let t=parseInt(e.replace("azdo-",""),10);return Number.isNaN(t)?void 0:t}var Iy=c.object({login:c.string()}),Py=/^[a-zA-Z0-9_.-]+\/[a-zA-Z0-9_.-]+$/,jr;function Dr(e){return Py.test(e)}async function dp(e,t){return Ar(`${M}/repos/${t}`,H(e),{401:"\u2717 GitHub auth failed \u2014 check GITHUB_TOKEN",403:"\u2717 GitHub permission denied",404:`\u2717 GitHub repo "${t}" not found`},"\u2717 Could not reach GitHub \u2014 check network")}async function mp(e,t){if(jr)return jr;try{let r=await fetch(`${t??M}/user`,{headers:H(e)});if(!r.ok){let s=r.status===401||r.status===403?' Fine-grained PATs need "Account permissions \u2192 read" (or classic PATs need read:user scope).':"";return console.warn(`\u26A0 GitHub /user returned HTTP ${r.status} \u2014 falling back to @me.${s}`),"@me"}let n=await r.json(),o=Iy.safeParse(n);if(o.success)return jr=o.data.login,jr;console.warn("\u26A0 Unexpected GitHub /user response \u2014 falling back to @me")}catch(r){console.warn(`\u26A0 GitHub /user request failed: ${r instanceof Error?r.message:String(r)} \u2014 falling back to @me`)}return"@me"}async function hp(e,t,r,n,o,s=5){let i,a=new URLSearchParams({state:"open",assignee:n??"@me",per_page:"10"});r&&a.set("labels",r);try{i=await fetch(`${M}/repos/${t}/issues?${a}`,{headers:H(e)})}catch(f){return console.warn(`\u26A0 GitHub API request failed: ${f instanceof Error?f.message:String(f)}`),[]}if(!i.ok)return console.warn(`\u26A0 GitHub API returned HTTP ${i.status}`),[];let u;try{u=await i.json()}catch{return console.warn("\u26A0 GitHub API returned invalid JSON"),[]}let l=al.safeParse(u);if(!l.success)return console.warn(`\u26A0 Unexpected GitHub response shape: ${l.error.message}`),[];let p=l.data.filter(f=>!f.pull_request);return o&&(p=p.filter(f=>!f.labels?.some(m=>m.name==="clancy:hitl"))),p.slice(0,s).map(f=>({key:`#${f.number}`,title:f.title,description:f.body??"",provider:"github",milestone:f.milestone?.title,labels:f.labels?.map(m=>m.name).filter(m=>!!m)}))}async function gp(e,t,r,n){if(!Dr(t))return!1;let o=/Blocked by #(\d+)/gi,s=new Set,i;for(;(i=o.exec(n))!==null;){let a=parseInt(i[1],10);!Number.isNaN(a)&&a!==r&&s.add(a)}if(!s.size)return!1;try{for(let a of s){let u=await fetch(`${M}/repos/${t}/issues/${a}`,{headers:H(e)});if(!u.ok)continue;if((await u.json()).state!=="closed")return!0}return!1}catch{return!1}}async function yp(e,t,r,n){if(Dr(t))try{let o=await fp(e,t,`Epic: #${r}`);if(o&&o.total>0)return o;let s=await fp(e,t,`Parent: #${r}`);return s&&s.total>0?s:!o||!s?void 0:n?{total:1,incomplete:1}:s}catch{return}}async function fp(e,t,r){let n=H(e),o=`"${r}" repo:${t} is:issue`,s=new URLSearchParams({q:o,per_page:"1"}),i=await fetch(`${M}/search/issues?${s}`,{headers:n});if(!i.ok)return;let u=(await i.json()).total_count??0;if(u===0)return{total:0,incomplete:0};let l=`"${r}" repo:${t} is:issue is:open`,p=new URLSearchParams({q:l,per_page:"1"}),f=await fetch(`${M}/search/issues?${p}`,{headers:n});if(!f.ok)return{total:u,incomplete:u};let h=(await f.json()).total_count??0;return{total:u,incomplete:h}}var Ey=/^(?:Epic|Parent): (#\d+)/m;function Ay(e){return e.match(Ey)?.[1]}function _p(e){return{async ping(){return dp(e.GITHUB_TOKEN,e.GITHUB_REPO)},validateInputs(){if(!Dr(e.GITHUB_REPO))return"\u2717 GITHUB_REPO format is invalid \u2014 expected owner/repo"},async fetchTicket(t){return(await this.fetchTickets(t))[0]},async fetchTickets(t){let r=await mp(e.GITHUB_TOKEN);return(await hp(e.GITHUB_TOKEN,e.GITHUB_REPO,t.buildLabel??e.CLANCY_LABEL,r,t.excludeHitl)).map(o=>({key:o.key,title:o.title,description:o.description,parentInfo:o.milestone??Ay(o.description)??"none",blockers:"None",labels:o.labels??[],status:"open"}))},async fetchBlockerStatus(t){let r=parseInt(t.key.replace("#",""),10);return Number.isNaN(r)?!1:gp(e.GITHUB_TOKEN,e.GITHUB_REPO,r,t.description)},async fetchChildrenStatus(t,r,n){let o=parseInt(t.replace("#",""),10);if(!Number.isNaN(o))return yp(e.GITHUB_TOKEN,e.GITHUB_REPO,o,n)},async transitionTicket(){return!1},async ensureLabel(t){try{let r=H(e.GITHUB_TOKEN),n=await fetch(`${M}/repos/${e.GITHUB_REPO}/labels/${encodeURIComponent(t)}`,{headers:r});if(n.ok)return;if(n.status===404){let o=await fetch(`${M}/repos/${e.GITHUB_REPO}/labels`,{method:"POST",headers:{...r,"Content-Type":"application/json"},body:JSON.stringify({name:t,color:"0075ca"})});!o.ok&&o.status!==422&&console.warn(`\u26A0 ensureLabel create returned HTTP ${o.status}`)}else console.warn(`\u26A0 ensureLabel GET returned HTTP ${n.status}`)}catch(r){console.warn(`\u26A0 ensureLabel failed: ${r instanceof Error?r.message:String(r)}`)}},async addLabel(t,r){try{await this.ensureLabel(r);let n=parseInt(t.replace("#",""),10);if(Number.isNaN(n))return;let o=H(e.GITHUB_TOKEN),s=await fetch(`${M}/repos/${e.GITHUB_REPO}/issues/${n}/labels`,{method:"POST",headers:{...o,"Content-Type":"application/json"},body:JSON.stringify({labels:[r]})});s.ok||console.warn(`\u26A0 addLabel returned HTTP ${s.status}`)}catch(n){console.warn(`\u26A0 addLabel failed: ${n instanceof Error?n.message:String(n)}`)}},async removeLabel(t,r){try{let n=parseInt(t.replace("#",""),10);if(Number.isNaN(n))return;let o=H(e.GITHUB_TOKEN),s=await fetch(`${M}/repos/${e.GITHUB_REPO}/issues/${n}/labels/${encodeURIComponent(r)}`,{method:"DELETE",headers:o});!s.ok&&s.status!==404&&console.warn(`\u26A0 removeLabel returned HTTP ${s.status}`)}catch(n){console.warn(`\u26A0 removeLabel failed: ${n instanceof Error?n.message:String(n)}`)}},sharedEnv(){return e}}}var Ry=c.object({type:c.optional(c.object({name:c.optional(c.string())})),inwardIssue:c.optional(c.object({key:c.optional(c.string())}))}),Cy=c.object({summary:c.string(),description:c.optional(c.unknown()),issuelinks:c.optional(c.array(Ry)),parent:c.optional(c.object({key:c.optional(c.string())})),customfield_10014:c.optional(c.nullable(c.string())),labels:c.optional(c.array(c.string()))}),Ny=c.object({key:c.string(),fields:Cy}),bp=c.object({total:c.optional(c.number()),isLast:c.optional(c.boolean()),issues:c.array(Ny)}),Oy=c.object({id:c.string(),name:c.string()}),wp=c.object({transitions:c.array(Oy)}),Ly=c.object({type:c.optional(c.object({name:c.optional(c.string())})),inwardIssue:c.optional(c.object({key:c.optional(c.string()),fields:c.optional(c.object({status:c.optional(c.object({statusCategory:c.optional(c.object({key:c.optional(c.string())}))}))}))}))}),$p=c.object({fields:c.optional(c.object({issuelinks:c.optional(c.array(Ly))}))}),Oa=c.object({fields:c.optional(c.object({labels:c.optional(c.array(c.string()))}))});var Zy=/^[a-zA-Z0-9 _\-'.]+$/,La=/^[A-Z][A-Z0-9]+-\d+$/;function xp(e,t){return Buffer.from(`${e}:${t}`).toString("base64")}function Ct(e){return Zy.test(e)}async function Sp(e,t,r){return Ar(`${e}/rest/api/3/project/${t}`,Se(r),{401:"\u2717 Jira auth failed \u2014 check credentials",403:"\u2717 Jira permission denied for this project",404:`\u2717 Jira project "${t}" not found`},"\u2717 Could not reach Jira \u2014 check network")}function jy(e,t,r,n,o){let s=[`project="${e}"`];return r&&s.push("sprint in openSprints()"),n&&s.push(`labels = "${n}"`),o&&s.push('labels != "clancy:hitl"'),s.push("assignee=currentUser()"),s.push(`status="${t}"`),s.join(" AND ")+" ORDER BY priority ASC"}function Dy(e){if(!e||typeof e!="object")return"";let t=[];function r(n){if(typeof n=="string"){t.push(n);return}if(Array.isArray(n)){for(let o of n)r(o);return}if(n&&typeof n=="object")for(let o of Object.values(n))r(o)}return r(e),t.join(" ")}async function vp(e,t,r,n,o,s,i,a=5){let u=jy(r,n,o,s,i),l;try{l=await fetch(`${e}/rest/api/3/search/jql`,{method:"POST",headers:{...Se(t),"Content-Type":"application/json"},body:JSON.stringify({jql:u,maxResults:a,fields:["summary","description","issuelinks","parent","customfield_10014","labels"]})})}catch(m){return console.warn(`\u26A0 Jira API request failed: ${m instanceof Error?m.message:String(m)}`),[]}if(!l.ok)return console.warn(`\u26A0 Jira API returned HTTP ${l.status}`),[];let p;try{p=await l.json()}catch{return console.warn("\u26A0 Jira API returned invalid JSON"),[]}let f=bp.safeParse(p);return f.success?f.data.issues.map(m=>{let h=m.fields,y=(h.issuelinks??[]).filter(x=>x.type?.name==="Blocks"&&x.inwardIssue?.key).map(x=>x.inwardIssue?.key).filter(x=>!!x),_=h.parent?.key??h.customfield_10014??void 0;return{key:m.key,title:h.summary,description:Dy(h.description),provider:"jira",epicKey:_,blockers:y,labels:h.labels}}):(console.warn(`\u26A0 Unexpected Jira response shape: ${f.error.message}`),[])}async function zp(e,t,r){if(!La.test(r))return!1;try{let n=await fetch(`${e}/rest/api/3/issue/${r}?fields=issuelinks`,{headers:Se(t)});if(!n.ok)return!1;let o=await n.json(),s=$p.safeParse(o);return s.success?(s.data.fields?.issuelinks??[]).some(a=>{if(a.type?.name!=="Blocks"||!a.inwardIssue?.key)return!1;let u=a.inwardIssue.fields?.status?.statusCategory?.key;return u?u!=="done":!1}):!1}catch{return!1}}async function Tp(e,t,r){if(La.test(r))try{let n=r.split("-")[0],o=await kp(e,t,`project = "${n}" AND description ~ "Epic: ${r}"`);return o&&o.total>0?o:await kp(e,t,`parent = ${r}`)}catch{return}}async function kp(e,t,r){let n=await fetch(`${e}/rest/api/3/search/jql`,{method:"POST",headers:{...Se(t),"Content-Type":"application/json"},body:JSON.stringify({jql:r,maxResults:0})});if(!n.ok)return;let s=(await n.json()).total??0;if(s===0)return{total:0,incomplete:0};let i=await fetch(`${e}/rest/api/3/search/jql`,{method:"POST",headers:{...Se(t),"Content-Type":"application/json"},body:JSON.stringify({jql:`${r} AND statusCategory != "done"`,maxResults:0})});if(!i.ok)return;let u=(await i.json()).total??0;return{total:s,incomplete:u}}async function My(e,t,r,n){if(!La.test(r))return;let o;try{o=await fetch(`${e}/rest/api/3/issue/${r}/transitions`,{headers:Se(t)})}catch(u){console.warn(`\u26A0 Jira transitions request failed: ${u instanceof Error?u.message:String(u)}`);return}if(!o.ok)return;let s;try{s=await o.json()}catch{console.warn("\u26A0 Jira transitions returned invalid JSON");return}let i=wp.safeParse(s);if(!i.success){console.warn(`\u26A0 Unexpected Jira transitions response: ${i.error.message}`);return}return i.data.transitions.find(u=>u.name===n)?.id}async function Ip(e,t,r,n){try{let o=await My(e,t,r,n);return o?(await fetch(`${e}/rest/api/3/issue/${r}/transitions`,{method:"POST",headers:{...Se(t),"Content-Type":"application/json"},body:JSON.stringify({transition:{id:o}})})).ok:(console.warn(`\u26A0 Jira transition "${n}" not found for ${r}`),!1)}catch{return!1}}function Pp(e){let t=xp(e.JIRA_USER,e.JIRA_API_TOKEN);return{async ping(){return Sp(e.JIRA_BASE_URL,e.JIRA_PROJECT_KEY,t)},validateInputs(){if(!Ct(e.JIRA_PROJECT_KEY))return"\u2717 JIRA_PROJECT_KEY contains invalid characters";if(e.CLANCY_LABEL_BUILD&&!Ct(e.CLANCY_LABEL_BUILD))return"\u2717 CLANCY_LABEL_BUILD contains invalid characters";if(e.CLANCY_LABEL&&!Ct(e.CLANCY_LABEL))return"\u2717 CLANCY_LABEL contains invalid characters";if(e.CLANCY_JQL_STATUS&&!Ct(e.CLANCY_JQL_STATUS))return"\u2717 CLANCY_JQL_STATUS contains invalid characters"},async fetchTicket(r){return(await this.fetchTickets(r))[0]},async fetchTickets(r){let n=await vp(e.JIRA_BASE_URL,t,e.JIRA_PROJECT_KEY,e.CLANCY_JQL_STATUS??"To Do",e.CLANCY_JQL_SPRINT,r.buildLabel??e.CLANCY_LABEL,r.excludeHitl),o=e.CLANCY_JQL_STATUS??"To Do";return n.map(s=>{let i=s.blockers.length?`Blocked by: ${s.blockers.join(", ")}`:"None";return{key:s.key,title:s.title,description:s.description,parentInfo:s.epicKey??"none",blockers:i,labels:s.labels??[],status:o}})},async fetchBlockerStatus(r){return zp(e.JIRA_BASE_URL,t,r.key)},async fetchChildrenStatus(r){return Tp(e.JIRA_BASE_URL,t,r)},async transitionTicket(r,n){let o=await Ip(e.JIRA_BASE_URL,t,r.key,n);return o&&console.log(` \u2192 Transitioned to ${n}`),o},async ensureLabel(r){},async addLabel(r,n){try{if(!/^[A-Z][A-Z0-9]+-\d+$/.test(r))return;let o=await fetch(`${e.JIRA_BASE_URL}/rest/api/3/issue/${encodeURIComponent(r)}?fields=labels`,{headers:{Authorization:t,Accept:"application/json"}});if(!o.ok){console.warn(`\u26A0 addLabel GET failed: HTTP ${o.status}`);return}let i=Oa.parse(await o.json()).fields?.labels??[];if(i.includes(n))return;let a=await fetch(`${e.JIRA_BASE_URL}/rest/api/3/issue/${encodeURIComponent(r)}`,{method:"PUT",headers:{Authorization:t,"Content-Type":"application/json"},body:JSON.stringify({fields:{labels:[...i,n]}})});a.ok||console.warn(`\u26A0 addLabel PUT returned HTTP ${a.status}`)}catch(o){console.warn(`\u26A0 addLabel failed: ${o instanceof Error?o.message:String(o)}`)}},async removeLabel(r,n){try{if(!/^[A-Z][A-Z0-9]+-\d+$/.test(r))return;let o=await fetch(`${e.JIRA_BASE_URL}/rest/api/3/issue/${encodeURIComponent(r)}?fields=labels`,{headers:{Authorization:t,Accept:"application/json"}});if(!o.ok){console.warn(`\u26A0 removeLabel GET failed: HTTP ${o.status}`);return}let i=Oa.parse(await o.json()).fields?.labels??[];if(!i.includes(n))return;let a=await fetch(`${e.JIRA_BASE_URL}/rest/api/3/issue/${encodeURIComponent(r)}`,{method:"PUT",headers:{Authorization:t,"Content-Type":"application/json"},body:JSON.stringify({fields:{labels:i.filter(u=>u!==n)}})});a.ok||console.warn(`\u26A0 removeLabel PUT returned HTTP ${a.status}`)}catch(o){console.warn(`\u26A0 removeLabel failed: ${o instanceof Error?o.message:String(o)}`)}},sharedEnv(){return e}}}var By=c.object({id:c.string(),identifier:c.string(),title:c.string(),description:c.optional(c.nullable(c.string())),parent:c.optional(c.nullable(c.object({identifier:c.string(),title:c.optional(c.string())}))),labels:c.optional(c.object({nodes:c.array(c.object({name:c.string()}))}))}),Ep=c.object({data:c.optional(c.object({viewer:c.optional(c.object({assignedIssues:c.optional(c.object({nodes:c.array(By)}))}))}))}),Ap=c.object({data:c.optional(c.object({viewer:c.optional(c.object({id:c.optional(c.string())}))}))}),Rp=c.object({data:c.optional(c.object({workflowStates:c.optional(c.object({nodes:c.array(c.object({id:c.string()}))}))}))}),Cp=c.object({data:c.optional(c.object({issueUpdate:c.optional(c.object({success:c.optional(c.boolean())}))}))}),Uy=c.object({type:c.string(),relatedIssue:c.optional(c.object({state:c.optional(c.object({type:c.optional(c.string())}))}))}),Np=c.object({data:c.optional(c.object({issue:c.optional(c.object({relations:c.optional(c.object({nodes:c.array(Uy)}))}))}))}),Fy=c.object({state:c.optional(c.object({type:c.optional(c.string())}))}),Op=c.object({data:c.optional(c.object({issueSearch:c.optional(c.object({nodes:c.array(Fy)}))}))}),Lp=c.object({data:c.optional(c.object({team:c.optional(c.object({labels:c.optional(c.object({nodes:c.array(c.object({id:c.string(),name:c.string()}))}))}))}))}),Zp=c.object({data:c.optional(c.object({issueLabels:c.optional(c.object({nodes:c.array(c.object({id:c.string(),name:c.string()}))}))}))}),jp=c.object({data:c.optional(c.object({issueLabelCreate:c.optional(c.object({issueLabel:c.optional(c.object({id:c.string()})),success:c.optional(c.boolean())}))}))}),Za=c.object({data:c.optional(c.object({issueSearch:c.optional(c.object({nodes:c.array(c.object({id:c.string(),labels:c.optional(c.object({nodes:c.array(c.object({id:c.string(),name:c.optional(c.string())}))}))}))}))}))});var Hy=/^[a-zA-Z0-9_-]+$/,Dp="https://api.linear.app/graphql";function Mp(e){return Hy.test(e)}async function V(e,t,r){let n;try{n=await fetch(Dp,{method:"POST",headers:{Authorization:e,"Content-Type":"application/json"},body:JSON.stringify({query:t,variables:r})})}catch(o){console.warn(`\u26A0 Linear API request failed: ${o instanceof Error?o.message:String(o)}`);return}if(!n.ok){console.warn(`\u26A0 Linear API returned HTTP ${n.status}`);return}try{return await n.json()}catch{console.warn("\u26A0 Linear API returned invalid JSON");return}}async function Bp(e){let t;try{t=await fetch(Dp,{method:"POST",headers:{Authorization:e,"Content-Type":"application/json"},body:JSON.stringify({query:"{ viewer { id } }"})})}catch{return{ok:!1,error:"\u2717 Could not reach Linear \u2014 check network"}}if(!t.ok)return t.status===401||t.status===403?{ok:!1,error:"\u2717 Linear auth failed \u2014 check LINEAR_API_KEY"}:{ok:!1,error:`\u2717 Linear API returned HTTP ${t.status}`};try{let r=await t.json(),n=Ap.safeParse(r);if(n.success&&n.data.data?.viewer?.id)return{ok:!0}}catch{}return{ok:!1,error:"\u2717 Linear auth failed \u2014 check LINEAR_API_KEY"}}async function Up(e,t,r=5){let n=e.CLANCY_LABEL?.trim(),o=!!n,s=o?"labels: { name: { eq: $label } }":"",i=["$teamId: ID!",...o?["$label: String!"]:[]],a=['state: { type: { eq: "unstarted" } }',"team: { id: { eq: $teamId } }",s].filter(Boolean),u=`
123
- query(${i.join(", ")}) {
124
- viewer {
125
- assignedIssues(
126
- filter: {
127
- ${a.join(`
128
- `)}
129
- }
130
- first: ${t?r*3:r}
131
- orderBy: createdAt
132
- ) {
133
- nodes {
134
- id
135
- identifier
136
- title
137
- description
138
- parent { identifier title }
139
- labels { nodes { name } }
140
- }
141
- }
142
- }
143
- }
144
- `,l={teamId:e.LINEAR_TEAM_ID};o&&(l.label=n);let p=await V(e.LINEAR_API_KEY,u,l),f=Ep.safeParse(p);if(!f.success)return console.warn(`\u26A0 Unexpected Linear response shape: ${f.error.message}`),[];let m=f.data.data?.viewer?.assignedIssues?.nodes;return m?.length?(t&&(m=m.filter(h=>!h.labels?.nodes?.some(y=>y.name==="clancy:hitl"))),m=m.slice(0,r),m.map(h=>({key:h.identifier,title:h.title,description:h.description??"",provider:"linear",issueId:h.id,parentIdentifier:h.parent?.identifier,labels:h.labels?.nodes?.map(y=>y.name).filter(y=>!!y)}))):[]}async function Fp(e,t){let n=await V(e,`
145
- query($issueId: String!) {
146
- issue(id: $issueId) {
147
- relations {
148
- nodes {
149
- type
150
- relatedIssue {
151
- state { type }
152
- }
153
- }
154
- }
155
- }
156
- }
157
- `,{issueId:t}),o=Np.safeParse(n);if(!o.success)return!1;let s=o.data.data?.issue?.relations?.nodes??[],i=new Set(["completed","canceled"]);return s.some(a=>{if(a.type!=="blockedBy")return!1;let u=a.relatedIssue?.state?.type;return u?!i.has(u):!1})}async function Hp(e,t,r){try{if(r){let n=await qy(e,`Epic: ${r}`);if(n&&n.total>0)return n}return await Jy(e,t)}catch{return}}async function qy(e,t){let n=await V(e,`
158
- query($filter: String!) {
159
- issueSearch(query: $filter) {
160
- nodes {
161
- state { type }
162
- }
163
- }
164
- }
165
- `,{filter:t}),o=Op.safeParse(n);if(!o.success)return;let s=o.data.data?.issueSearch?.nodes??[],i=s.length,a=new Set(["completed","canceled"]),u=s.filter(l=>!l.state?.type||!a.has(l.state.type)).length;return{total:i,incomplete:u}}async function Jy(e,t){let n=await V(e,`
166
- query($issueId: String!) {
167
- issue(id: $issueId) {
168
- children {
169
- nodes {
170
- state { type }
171
- }
172
- }
173
- }
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 Ky(e,t,r){let o=await V(e,`
176
- query($teamId: String!, $name: String!) {
177
- workflowStates(filter: {
178
- team: { id: { eq: $teamId } }
179
- name: { eq: $name }
180
- }) {
181
- nodes { id }
182
- }
183
- }
184
- `,{teamId:t,name:r}),s=Rp.safeParse(o);if(!s.success){console.warn(`\u26A0 Unexpected Linear workflowStates response: ${s.error.message}`);return}return s.data.data?.workflowStates?.nodes?.[0]?.id}async function Yy(e,t,r){let o=await V(e,`
185
- mutation($issueId: String!, $stateId: String!) {
186
- issueUpdate(id: $issueId, input: { stateId: $stateId }) {
187
- success
188
- }
189
- }
190
- `,{issueId:t,stateId:r}),s=Cp.safeParse(o);return s.success?s.data.data?.issueUpdate?.success===!0:(console.warn(`\u26A0 Unexpected Linear issueUpdate response: ${s.error.message}`),!1)}async function qp(e,t,r,n){try{let o=await Ky(e,t,n);return o?await Yy(e,r,o):(console.warn(`\u26A0 Linear workflow state "${n}" not found \u2014 check team configuration`),!1)}catch{return!1}}function Jp(e){let t=new Map;return{async ping(){return Bp(e.LINEAR_API_KEY)},validateInputs(){if(!Mp(e.LINEAR_TEAM_ID))return"\u2717 LINEAR_TEAM_ID contains invalid characters"},async fetchTicket(r){return(await this.fetchTickets(r))[0]},async fetchTickets(r){return(await Up({LINEAR_API_KEY:e.LINEAR_API_KEY,LINEAR_TEAM_ID:e.LINEAR_TEAM_ID,CLANCY_LABEL:r.buildLabel??e.CLANCY_LABEL},r.excludeHitl)).map(o=>({key:o.key,title:o.title,description:o.description,parentInfo:o.parentIdentifier??"none",blockers:"None",linearIssueId:o.issueId,issueId:o.issueId,labels:o.labels??[],status:"unstarted"}))},async fetchBlockerStatus(r){return r.issueId?Fp(e.LINEAR_API_KEY,r.issueId):!1},async fetchChildrenStatus(r,n){return Hp(e.LINEAR_API_KEY,n??r,r)},async transitionTicket(r,n){if(!r.linearIssueId)return!1;let o=await qp(e.LINEAR_API_KEY,e.LINEAR_TEAM_ID,r.linearIssueId,n);return o&&console.log(` \u2192 Transitioned to ${n}`),o},async ensureLabel(r){try{if(t.has(r))return;let o=await V(e.LINEAR_API_KEY,`
191
- query($teamId: String!) {
192
- team(id: $teamId) {
193
- labels { nodes { id name } }
194
- }
195
- }
196
- `,{teamId:e.LINEAR_TEAM_ID}),i=Lp.parse(o)?.data?.team?.labels?.nodes?.find(_=>_.name===r);if(i){t.set(r,i.id);return}let u=await V(e.LINEAR_API_KEY,`
197
- query($name: String!) {
198
- issueLabels(filter: { name: { eq: $name } }) {
199
- nodes { id name }
200
- }
201
- }
202
- `,{name:r}),p=Zp.parse(u)?.data?.issueLabels?.nodes?.[0];if(p){t.set(r,p.id);return}let m=await V(e.LINEAR_API_KEY,`
203
- mutation($teamId: String!, $name: String!) {
204
- issueLabelCreate(input: { teamId: $teamId, name: $name, color: "#0075ca" }) {
205
- issueLabel { id }
206
- success
207
- }
208
- }
209
- `,{teamId:e.LINEAR_TEAM_ID,name:r}),y=jp.parse(m)?.data?.issueLabelCreate?.issueLabel?.id;y&&t.set(r,y)}catch(n){console.warn(`\u26A0 ensureLabel failed: ${n instanceof Error?n.message:String(n)}`)}},async addLabel(r,n){try{await this.ensureLabel(n);let o=t.get(n);if(!o)return;let i=await V(e.LINEAR_API_KEY,`
210
- query($identifier: String!) {
211
- issueSearch: issues(filter: { identifier: { eq: $identifier } }, first: 1) {
212
- nodes {
213
- id
214
- labels { nodes { id } }
215
- }
216
- }
217
- }
218
- `,{identifier:r}),u=Za.parse(i)?.data?.issueSearch?.nodes?.[0];if(!u)return;let l=u.labels?.nodes?.map(f=>f.id)??[];if(l.includes(o))return;await V(e.LINEAR_API_KEY,`
219
- mutation($issueId: String!, $labelIds: [String!]!) {
220
- issueUpdate(id: $issueId, input: { labelIds: $labelIds }) {
221
- success
222
- }
223
- }
224
- `,{issueId:u.id,labelIds:[...l,o]})}catch(o){console.warn(`\u26A0 addLabel failed: ${o instanceof Error?o.message:String(o)}`)}},async removeLabel(r,n){try{let o=t.get(n),i=await V(e.LINEAR_API_KEY,`
225
- query($identifier: String!) {
226
- issueSearch: issues(filter: { identifier: { eq: $identifier } }, first: 1) {
227
- nodes {
228
- id
229
- labels { nodes { id name } }
230
- }
231
- }
232
- }
233
- `,{identifier:r}),u=Za.parse(i)?.data?.issueSearch?.nodes?.[0];if(!u)return;let l=u.labels?.nodes??[],p=o??l.find(h=>h.name===n)?.id;if(!p)return;let f=l.map(h=>h.id).filter(h=>h!==p);if(f.length===l.length)return;await V(e.LINEAR_API_KEY,`
234
- mutation($issueId: String!, $labelIds: [String!]!) {
235
- issueUpdate(id: $issueId, input: { labelIds: $labelIds }) {
236
- success
237
- }
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 Kp=c.object({plain_text:c.string()}),Gy=c.object({type:c.literal("status"),status:c.nullable(c.object({id:c.optional(c.string()),name:c.string(),color:c.optional(c.string())}))}),Wy=c.object({type:c.literal("select"),select:c.nullable(c.object({id:c.optional(c.string()),name:c.string(),color:c.optional(c.string())}))}),Vy=c.object({id:c.optional(c.string()),name:c.string(),color:c.optional(c.string())}),Qy=c.object({type:c.literal("multi_select"),multi_select:c.array(Vy)}),Xy=c.object({type:c.literal("people"),people:c.array(c.object({id:c.string(),name:c.optional(c.nullable(c.string()))}))}),e_=c.object({type:c.literal("relation"),relation:c.array(c.object({id:c.string()}))}),t_=c.object({type:c.literal("title"),title:c.array(Kp)}),r_=c.object({type:c.literal("rich_text"),rich_text:c.array(Kp)}),n_=c.union([Gy,Wy,Qy,Xy,e_,t_,r_,c.object({type:c.string()})]),ja=c.object({id:c.string(),url:c.optional(c.string()),properties:c.record(c.string(),n_)}),Yp=c.object({results:c.array(ja),has_more:c.boolean(),next_cursor:c.nullable(c.optional(c.string()))}),Gp=c.object({id:c.string(),type:c.optional(c.string()),name:c.optional(c.nullable(c.string())),avatar_url:c.optional(c.nullable(c.string()))});function o_(e){if(!e)return;let t=parseInt(e,10);if(!Number.isNaN(t)&&t>=0)return t*1e3;let r=new Date(e);if(!Number.isNaN(r.getTime())){let n=r.getTime()-Date.now();return n>0?n:0}}function Da(e,t,r){let n=t*2**e;return Math.min(n,r)}function s_(e){return e===429||e>=500&&e<=599}async function Nt(e,t,r){let n=Math.max(0,r?.maxRetries??3),o=r?.baseDelayMs??1e3,s=r?.maxDelayMs??1e4,i;for(let a=0;a<=n;a++)try{let u=await fetch(e,t);if(!s_(u.status)||a===n)return u;let l;u.status===429?l=o_(u.headers.get("Retry-After"))??Da(a,o,s):l=Da(a,o,s),await u.arrayBuffer().catch(()=>{}),await new Promise(p=>setTimeout(p,l))}catch(u){if(i=u,a===n)throw i;let l=Da(a,o,s);await new Promise(p=>setTimeout(p,l))}throw i}var Br="https://api.notion.com/v1",i_="2022-06-28";function Ur(e){return{Authorization:`Bearer ${e}`,"Notion-Version":i_,"Content-Type":"application/json"}}async function Vp(e){let t;try{t=await Nt(`${Br}/users/me`,{headers:Ur(e)})}catch{return{ok:!1,error:"\u2717 Could not reach Notion \u2014 check network"}}if(!t.ok)return t.status===401||t.status===403?{ok:!1,error:"\u2717 Notion auth failed \u2014 check NOTION_TOKEN"}:{ok:!1,error:`\u2717 Notion API returned HTTP ${t.status}`};try{let r=await t.json(),n=Gp.safeParse(r);if(n.success&&n.data.id)return{ok:!0}}catch{}return{ok:!1,error:"\u2717 Notion auth failed \u2014 check NOTION_TOKEN"}}async function Fr(e,t,r,n,o){let s={};r&&(s.filter=r),n&&(s.sorts=n),o&&(s.start_cursor=o);let i;try{i=await Nt(`${Br}/databases/${t}/query`,{method:"POST",headers:Ur(e),body:JSON.stringify(s)})}catch(l){console.warn(`\u26A0 Notion API request failed: ${l instanceof Error?l.message:String(l)}`);return}if(!i.ok){console.warn(`\u26A0 Notion API returned HTTP ${i.status}`);return}let a;try{a=await i.json()}catch{console.warn("\u26A0 Notion API returned invalid JSON");return}let u=Yp.safeParse(a);if(!u.success){console.warn(`\u26A0 Unexpected Notion response shape: ${u.error.message}`);return}return u.data}async function Ot(e,t,r){let n=[],o;for(let i=0;i<10;i++){let a=await Fr(e,t,r,void 0,o);if(!a||(n.push(...a.results),!a.has_more||!a.next_cursor))break;o=a.next_cursor}return n}async function Wp(e,t){try{let r=await Nt(`${Br}/pages/${t}`,{headers:Ur(e)});if(!r.ok)return;let n=await r.json(),o=ja.safeParse(n);return o.success?o.data:void 0}catch{return}}async function Lt(e,t,r){try{return(await Nt(`${Br}/pages/${t}`,{method:"PATCH",headers:Ur(e),body:JSON.stringify({properties:r})})).ok}catch{return!1}}async function Qp(e,t,r,n="Status"){try{let o=await Wp(e,r);if(!o)return!1;let s=a_(o,"Blocked by");if(s?.type==="relation"){let u=s.relation;if(u.length>0){for(let l of u){let p=await Wp(e,l.id);if(!p)continue;let f=q(p,n,"status");if(f&&!Mr(f))return!0}return!1}}let i=r.replace(/-/g,"").slice(0,8),a=ef(o);if(a){let u=a.match(/Blocked by (notion-[a-f0-9]{8})/gi);if(u){let l=await Ot(e,t);if(!l.length)return!1;for(let p of u){let f=p.replace(/blocked by notion-/i,"").toLowerCase();if(f!==i){for(let m of l)if(m.id.replace(/-/g,"").slice(0,8)===f){let y=q(m,n,"status");if(y&&!Mr(y))return!0}}}}}return!1}catch{return!1}}async function Xp(e,t,r,n="Epic",o="Status"){try{let s=await c_(e,t,`Epic: ${r}`,o);if(s&&s.total>0)return s;let i=await l_(e,t,r);return i?await u_(e,t,i.id,n,o):void 0}catch{return}}function q(e,t,r){let n=e.properties[t];if(!(!n||n.type!==r))switch(r){case"status":return n.status?.name;case"select":return n.select?.name;case"title":return n.title.map(s=>s.plain_text).join("");case"rich_text":return n.rich_text.map(s=>s.plain_text).join("");case"multi_select":return n.multi_select.map(s=>s.name);case"people":return n.people.map(s=>s.id);case"relation":return n.relation.map(s=>s.id);default:return}}function a_(e,t){if(e.properties[t])return e.properties[t];let r=t.toLowerCase();for(let[n,o]of Object.entries(e.properties))if(n.toLowerCase()===r)return o}function Mr(e){let t=e.toLowerCase();return t==="done"||t==="complete"||t==="completed"||t==="closed"}function ef(e){for(let t of["Description","description","Body","body"]){let r=q(e,t,"rich_text");if(r)return r}}async function c_(e,t,r,n="Status"){let o=await Ot(e,t);if(!o.length)return;let s=o.filter(u=>ef(u)?.includes(r)),i=s.length;if(i===0)return{total:0,incomplete:0};let a=s.filter(u=>{let l=q(u,n,"status")??q(u,n,"select");return!l||!Mr(l)}).length;return{total:i,incomplete:a}}async function u_(e,t,r,n,o="Status"){let s=await Fr(e,t,{property:n,relation:{contains:r}});if(!s)return;let i=s.results.length;if(i===0)return{total:0,incomplete:0};let a=s.results.filter(u=>{let l=q(u,o,"status")??q(u,o,"select");return!l||!Mr(l)}).length;return{total:i,incomplete:a}}async function l_(e,t,r){let n=r.replace("notion-","");return n?(await Ot(e,t)).find(s=>s.id.replace(/-/g,"").slice(0,8)===n):void 0}var p_="Status",f_="Assignee",d_="Labels",m_="Epic";function rf(e){let t=e.CLANCY_NOTION_STATUS??p_,r=e.CLANCY_NOTION_ASSIGNEE??f_,n=e.CLANCY_NOTION_LABELS??d_,o=e.CLANCY_NOTION_PARENT??m_;return{async ping(){return Vp(e.NOTION_TOKEN)},validateInputs(){if(!/^[0-9a-f]{8}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{12}$/i.test(e.NOTION_DATABASE_ID))return"\u2717 NOTION_DATABASE_ID does not look like a valid UUID. Use the database ID from the Notion URL, not the full URL."},async fetchTicket(s){return(await this.fetchTickets(s))[0]},async fetchTickets(s){let i=e.CLANCY_NOTION_TODO??"To-do",a=h_(t,i),u=await Fr(e.NOTION_TOKEN,e.NOTION_DATABASE_ID,a);if(!u)return[];let l=u.results;s.excludeHitl&&(l=l.filter(f=>!q(f,n,"multi_select")?.includes("clancy:hitl")));let p=s.buildLabel??e.CLANCY_LABEL;return p&&(l=l.filter(f=>q(f,n,"multi_select")?.includes(p))),l.slice(0,5).map(f=>g_(f,{labelsProp:n,parentProp:o,assigneeProp:r}))},async fetchBlockerStatus(s){let i=s.issueId;return i?Qp(e.NOTION_TOKEN,e.NOTION_DATABASE_ID,i,t):!1},async fetchChildrenStatus(s){return Xp(e.NOTION_TOKEN,e.NOTION_DATABASE_ID,s,o,t)},async transitionTicket(s,i){let a=s.issueId;if(!a)return!1;if(await Lt(e.NOTION_TOKEN,a,{[t]:{status:{name:i}}}))return console.log(` \u2192 Transitioned to ${i}`),!0;let l=await Lt(e.NOTION_TOKEN,a,{[t]:{select:{name:i}}});return l&&console.log(` \u2192 Transitioned to ${i}`),l},async ensureLabel(s){},async addLabel(s,i){try{let a=await tf(e.NOTION_TOKEN,e.NOTION_DATABASE_ID,s);if(!a)return;let u=q(a,n,"multi_select")??[];if(u.includes(i))return;let l=[...u,i].map(p=>({name:p}));await Lt(e.NOTION_TOKEN,a.id,{[n]:{multi_select:l}})}catch(a){console.warn(`\u26A0 addLabel failed: ${a instanceof Error?a.message:String(a)}`)}},async removeLabel(s,i){try{let a=await tf(e.NOTION_TOKEN,e.NOTION_DATABASE_ID,s);if(!a)return;let u=q(a,n,"multi_select")??[];if(!u.includes(i))return;let l=u.filter(p=>p!==i).map(p=>({name:p}));await Lt(e.NOTION_TOKEN,a.id,{[n]:{multi_select:l}})}catch(a){console.warn(`\u26A0 removeLabel failed: ${a instanceof Error?a.message:String(a)}`)}},sharedEnv(){return e}}}function h_(e,t){return{property:e,status:{equals:t??"To-do"}}}function g_(e,t){let n=`notion-${e.id.replace(/-/g,"").slice(0,8)}`,o="";for(let[l,p]of Object.entries(e.properties))if(p.type==="title"){o=q(e,l,"title")??"";break}let s="";for(let l of["Description","description","Body","body"]){let p=q(e,l,"rich_text");if(p){s=p;break}}let i=q(e,t.parentProp,"relation"),a=i&&i.length>0?`notion-${i[0].replace(/-/g,"").slice(0,8)}`:"none",u=q(e,t.labelsProp,"multi_select")??[];return{key:n,title:o,description:s,parentInfo:a,blockers:"None",issueId:e.id,labels:u,status:"To-do"}}async function tf(e,t,r){let n=r.replace("notion-","");return n?(await Ot(e,t)).find(s=>s.id.replace(/-/g,"").slice(0,8)===n):void 0}var y_=c.object({verb:c.string(),subject_id:c.number(),object_id:c.number()}),Ma=c.object({id:c.number(),name:c.string(),description:c.optional(c.nullable(c.string())),story_type:c.optional(c.string()),blocked:c.optional(c.boolean()),story_links:c.optional(c.array(y_)),label_ids:c.optional(c.array(c.number())),labels:c.optional(c.array(c.object({id:c.number(),name:c.string()}))),epic_id:c.optional(c.nullable(c.number())),workflow_state_id:c.optional(c.number()),owner_ids:c.optional(c.array(c.string()))}),Hr=c.object({data:c.array(Ma),next:c.optional(c.nullable(c.string())),total:c.optional(c.number())}),qr=Ma,__=c.object({id:c.number(),name:c.string(),type:c.string()}),b_=c.object({id:c.number(),name:c.string(),states:c.array(__)}),nf=c.array(b_),of=c.object({id:c.number(),name:c.string()}),sf=c.array(of),af=of,cf=c.array(Ma),uf=c.object({id:c.string(),mention_name:c.optional(c.string())});var ee="https://api.app.shortcut.com/api/v3";function te(e){return{"Shortcut-Token":e,"Content-Type":"application/json"}}var Jr;var Zt;async function lf(e){let t;try{t=await fetch(`${ee}/member-info`,{headers:te(e)}),t.ok||(t=await fetch(`${ee}/workflows`,{headers:te(e)}))}catch{return{ok:!1,error:"\u2717 Could not reach Shortcut \u2014 check network"}}if(!t.ok)return t.status===401||t.status===403?{ok:!1,error:"\u2717 Shortcut auth failed \u2014 check SHORTCUT_API_TOKEN"}:{ok:!1,error:`\u2717 Shortcut API returned HTTP ${t.status}`};try{let r=await t.json(),n=uf.safeParse(r);if(n.success&&n.data.id)return{ok:!0};if(Array.isArray(r))return{ok:!0}}catch{}return{ok:!1,error:"\u2717 Shortcut auth failed \u2014 check SHORTCUT_API_TOKEN"}}async function jt(e){if(Jr)return Jr;try{let t=await fetch(`${ee}/workflows`,{headers:te(e)});if(!t.ok)return console.warn(`\u26A0 Shortcut /workflows returned HTTP ${t.status}`),[];let r=await t.json(),n=nf.safeParse(r);return n.success?(Jr=n.data,Jr):(console.warn(`\u26A0 Unexpected Shortcut workflows response: ${n.error.message}`),[])}catch(t){return console.warn(`\u26A0 Shortcut /workflows request failed: ${t instanceof Error?t.message:String(t)}`),[]}}async function pf(e,t,r){let n=await jt(e);for(let o of n){if(r&&o.name!==r)continue;let s=o.states.find(i=>i.name.toLowerCase()===t.toLowerCase());if(s)return s.id}}async function ff(e,t,r){let n=await jt(e),o=[];for(let s of n)if(!(r&&s.name!==r))for(let i of s.states)i.type===t&&o.push(i.id);return o}async function df(e,t,r,n,o,s=5){if(!t.length)return[];let i,a={};(t.length===1||t.length>1)&&(a.workflow_state_id=t[0]),n&&(a.owner_ids=[n]),r&&(a.label_name=r);try{i=await fetch(`${ee}/stories/search`,{method:"POST",headers:te(e),body:JSON.stringify(a)})}catch(f){return console.warn(`\u26A0 Shortcut API request failed: ${f instanceof Error?f.message:String(f)}`),[]}if(!i.ok)return console.warn(`\u26A0 Shortcut API returned HTTP ${i.status}`),[];let u;try{u=await i.json()}catch{return console.warn("\u26A0 Shortcut API returned invalid JSON"),[]}let l=Hr.safeParse(u),p;if(l.success)p=l.data.data;else if(Array.isArray(u)){let f=Hr.safeParse({data:u});if(!f.success)return console.warn(`\u26A0 Unexpected Shortcut response shape: ${f.error.message}`),[];p=f.data.data}else return console.warn(`\u26A0 Unexpected Shortcut response shape: ${l.error.message}`),[];return o&&(p=p.filter(f=>!f.labels?.some(m=>m.name==="clancy:hitl"))),p.slice(0,s).map(f=>({key:`sc-${f.id}`,title:f.name,description:f.description??"",provider:"shortcut",storyId:f.id,epicId:f.epic_id??void 0,labels:f.labels?.map(m=>m.name).filter(m=>!!m)}))}async function mf(e,t){try{let r=await fetch(`${ee}/stories/${t}`,{headers:te(e)});if(!r.ok)return!1;let n=await r.json(),o=qr.safeParse(n);if(!o.success)return!1;let s=o.data;if(!s.blocked)return!1;let i=(s.story_links??[]).filter(l=>l.verb==="is blocked by");if(!i.length)return!1;let a=await jt(e),u=new Set;for(let l of a)for(let p of l.states)p.type==="done"&&u.add(p.id);for(let l of i){let p=l.object_id,f=await fetch(`${ee}/stories/${p}`,{headers:te(e)});if(!f.ok)continue;let m=await f.json(),h=qr.safeParse(m);if(h.success&&h.data.workflow_state_id!==void 0&&!u.has(h.data.workflow_state_id))return!0}return!1}catch{return!1}}async function hf(e,t,r){try{if(r){let n=await w_(e,`Epic: ${r}`);if(n&&n.total>0)return n}return await $_(e,t)}catch{return}}async function w_(e,t){try{let r=await fetch(`${ee}/stories/search`,{method:"POST",headers:te(e),body:JSON.stringify({query:t})});if(!r.ok)return;let n=await r.json(),o=Hr.safeParse(n);if(!o.success)return;let s=o.data.data,i=s.length;if(i===0)return{total:0,incomplete:0};let a=await jt(e),u=new Set;for(let p of a)for(let f of p.states)f.type==="done"&&u.add(f.id);let l=s.filter(p=>p.workflow_state_id===void 0||!u.has(p.workflow_state_id)).length;return{total:i,incomplete:l}}catch{return}}async function $_(e,t){try{let r=await fetch(`${ee}/epics/${t}/stories`,{headers:te(e)});if(!r.ok)return;let n=await r.json(),o=cf.safeParse(n);if(!o.success)return;let s=o.data,i=s.length;if(i===0)return{total:0,incomplete:0};let a=await jt(e),u=new Set;for(let p of a)for(let f of p.states)f.type==="done"&&u.add(f.id);let l=s.filter(p=>p.workflow_state_id===void 0||!u.has(p.workflow_state_id)).length;return{total:i,incomplete:l}}catch{return}}async function gf(e,t,r){try{return(await fetch(`${ee}/stories/${t}`,{method:"PUT",headers:te(e),body:JSON.stringify({workflow_state_id:r})})).ok}catch{return!1}}async function Kr(e){if(Zt)return Zt;try{let t=await fetch(`${ee}/labels`,{headers:te(e)});if(!t.ok)return console.warn(`\u26A0 Shortcut /labels returned HTTP ${t.status}`),[];let r=await t.json(),n=sf.safeParse(r);return n.success?(Zt=n.data,Zt):(console.warn(`\u26A0 Unexpected Shortcut labels response: ${n.error.message}`),[])}catch(t){return console.warn(`\u26A0 Shortcut /labels request failed: ${t instanceof Error?t.message:String(t)}`),[]}}async function yf(e,t){try{let r=await fetch(`${ee}/labels`,{method:"POST",headers:te(e),body:JSON.stringify({name:t,color:"#0075ca"})});if(!r.ok){console.warn(`\u26A0 Shortcut label create returned HTTP ${r.status}`);return}let n=await r.json(),o=af.safeParse(n);return o.success?(Zt=void 0,o.data.id):void 0}catch(r){console.warn(`\u26A0 Shortcut label create failed: ${r instanceof Error?r.message:String(r)}`);return}}async function Ba(e,t){try{let r=await fetch(`${ee}/stories/${t}`,{headers:te(e)});if(!r.ok)return;let n=await r.json(),o=qr.safeParse(n);return o.success?o.data.label_ids??[]:void 0}catch{return}}async function Ua(e,t,r){try{let n=await fetch(`${ee}/stories/${t}`,{method:"PUT",headers:te(e),body:JSON.stringify({label_ids:r})});return n.ok||console.warn(`\u26A0 Shortcut story label update returned HTTP ${n.status}`),n.ok}catch(n){return console.warn(`\u26A0 Shortcut story label update failed: ${n instanceof Error?n.message:String(n)}`),!1}}function _f(e){return{async ping(){return lf(e.SHORTCUT_API_TOKEN)},validateInputs(){},async fetchTicket(t){return(await this.fetchTickets(t))[0]},async fetchTickets(t){let r=await ff(e.SHORTCUT_API_TOKEN,"unstarted",e.SHORTCUT_WORKFLOW);return(await df(e.SHORTCUT_API_TOKEN,r,t.buildLabel??e.CLANCY_LABEL,void 0,t.excludeHitl)).map(o=>({key:o.key,title:o.title,description:o.description,parentInfo:o.epicId?`epic-${o.epicId}`:"none",blockers:"None",issueId:String(o.storyId),labels:o.labels??[],status:"unstarted"}))},async fetchBlockerStatus(t){let r=Yr(t.key);return r===void 0?!1:mf(e.SHORTCUT_API_TOKEN,r)},async fetchChildrenStatus(t,r){let n=r??t.replace(/^(sc-|epic-)/,""),o=parseInt(n,10);if(!Number.isNaN(o))return hf(e.SHORTCUT_API_TOKEN,o,t)},async transitionTicket(t,r){let n=Yr(t.key);if(n===void 0)return!1;let o=await pf(e.SHORTCUT_API_TOKEN,r,e.SHORTCUT_WORKFLOW);if(o===void 0)return console.warn(`\u26A0 Shortcut workflow state "${r}" not found \u2014 check workflow configuration`),!1;let s=await gf(e.SHORTCUT_API_TOKEN,n,o);return s&&console.log(` \u2192 Transitioned to ${r}`),s},async ensureLabel(t){try{if((await Kr(e.SHORTCUT_API_TOKEN)).find(o=>o.name===t))return;await yf(e.SHORTCUT_API_TOKEN,t)}catch(r){console.warn(`\u26A0 ensureLabel failed: ${r instanceof Error?r.message:String(r)}`)}},async addLabel(t,r){try{await this.ensureLabel(r);let n=Yr(t);if(n===void 0)return;let s=(await Kr(e.SHORTCUT_API_TOKEN)).find(a=>a.name===r);if(!s)return;let i=await Ba(e.SHORTCUT_API_TOKEN,n);if(!i||i.includes(s.id))return;await Ua(e.SHORTCUT_API_TOKEN,n,[...i,s.id])}catch(n){console.warn(`\u26A0 addLabel failed: ${n instanceof Error?n.message:String(n)}`)}},async removeLabel(t,r){try{let n=Yr(t);if(n===void 0)return;let s=(await Kr(e.SHORTCUT_API_TOKEN)).find(a=>a.name===r);if(!s)return;let i=await Ba(e.SHORTCUT_API_TOKEN,n);if(!i||!i.includes(s.id))return;await Ua(e.SHORTCUT_API_TOKEN,n,i.filter(a=>a!==s.id))}catch(n){console.warn(`\u26A0 removeLabel failed: ${n instanceof Error?n.message:String(n)}`)}},sharedEnv(){return e}}}function Yr(e){let t=parseInt(e.replace("sc-",""),10);return Number.isNaN(t)?void 0:t}function bf(e){switch(e.provider){case"jira":return Pp(e.env);case"github":return _p(e.env);case"linear":return Jp(e.env);case"shortcut":return _f(e.env);case"notion":return rf(e.env);case"azdo":return pp(e.env)}}async function wf(e){console.log($("\u250C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510")),console.log($("\u2502")+Ne(" \u{1F916} Clancy \u2014 once mode ")+$("\u2502")),console.log($("\u2502")+$(` "Let's roll." `)+$("\u2502")),console.log($("\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518")),console.log("");let t=Nr(e.cwd);if(!t.ok)return console.log(t.error),!1;t.warning&&console.log(t.warning);let r=Er(t.env);if(typeof r=="string")return console.log(r),!1;let n=r,o=bf(n),s=o.validateInputs();if(s)return console.log(s),!1;let i=await o.ping();return i.ok?(console.log(O("\u2705 Preflight passed")),e.config=n,e.board=o,!0):(console.log(i.error),!1)}async function $f(e){let t=e.config;try{let r=await Ol(t);r&&(e.isRework=!0,e.ticket=r.ticket,e.prFeedback=r.feedback,e.reworkPrNumber=r.prNumber,e.reworkDiscussionIds=r.discussionIds,e.reworkReviewers=r.reviewers,console.log(z(` \u21BB PR rework: [${e.ticket.key}] ${e.ticket.title}`)))}catch{}return!0}async function kf(e){let t=e.config;if(e.ticket||(e.ticket=await Wu(e.board)),!e.ticket)return console.log($("No tickets found. All done!")),!1;if(e.isRework){let a=parseInt(D(t).CLANCY_MAX_REWORK??"3",10),u=Number.isFinite(a)&&a>0?a:3;if(Ku(e.cwd,e.ticket.key)>=u)return console.log(z(`\u26A0 ${e.ticket.key} has reached max rework cycles (${u}) \u2014 needs human intervention`)),C(e.cwd,e.ticket.key,e.ticket.title,"SKIPPED"),!1}let r=t.env.CLANCY_BASE_BRANCH??"main",n=e.ticket.parentInfo!=="none"?e.ticket.parentInfo:void 0,o=We(t.provider,e.ticket.key),s=Ve(t.provider,r,n);e.baseBranch=r,e.ticketBranch=o,e.targetBranch=s,e.hasParent=e.ticket.parentInfo!=="none";let i=t.provider==="github"?"Milestone":"Epic";return console.log(""),console.log(`\u{1F3AB} ${Ne(`[${e.ticket.key}]`)} ${e.ticket.title}`),console.log($(` ${i}: ${e.ticket.parentInfo} | Branch: ${o} \u2192 ${s}`)),t.provider!=="github"&&e.ticket.blockers!=="None"&&console.log(z(` Blockers: ${e.ticket.blockers}`)),console.log(""),!0}async function xf(e){let t=e.config,r=e.board,n=e.ticket,o=t.env.CLANCY_STATUS_IN_PROGRESS;return o&&await r.transitionTicket(n,o),!0}async function S_(e){let t=Ya(e);if(await Ql(t))try{if(!await wf(t)||!await Dl(t)||!await Xl(t)||!await $f(t)||!await kf(t)||!jl(t)||!Hl(t)||!await xl(t)||!await xf(t)||!Yl(t)||!await Zl(t))return;Tl(t),await vl(t)}catch(r){let n=r instanceof Error?r.message:String(r),o=Ce(Date.now()-t.startTime);if(console.error(""),console.error(Oe("\u274C Clancy stopped")+$(` (${o})`)),console.error(Oe(` ${n}`)),console.error($(` "I'd rather let Herman go."`)),t.originalBranch)try{Z(t.originalBranch)}catch{}}finally{t.lockOwner&&(Ht(t.cwd),qt(t.cwd))}}process.argv[1]&&x_(import.meta.url)===k_(process.argv[1])&&S_(process.argv);export{S_ as run};