claude-beacon 1.1.3 → 1.3.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.
package/README.md CHANGED
@@ -189,12 +189,14 @@ Replace `/home/you` with your home directory (`echo $HOME`). Bun installs global
189
189
  claude --dangerously-load-development-channels server:claude-beacon
190
190
  ```
191
191
 
192
+ > `server:claude-beacon` matches the key you used in `.mcp.json`. The `--dangerously-load-development-channels` flag is required because claude-beacon is a custom channel plugin (research preview) — it's safe to use, it just isn't on Anthropic's built-in allowlist yet.
193
+
192
194
  You should see:
193
195
  ```
194
196
  Listening for channel messages from: server:claude-beacon
195
197
  ```
196
198
 
197
- The server is now running. Push a commit, trigger a CI run, or let a PR fall behindnotifications will appear in your session automatically.
199
+ **Verify it's working:** go to your repo on GitHub Settings Webhooks click your webhook Recent Deliveries. Trigger any push you should see a green delivery. In Claude Code, watch for `[claude-beacon]` log lines confirming receipt.
198
200
 
199
201
  ---
200
202
 
@@ -320,9 +322,11 @@ To make this automatic, add to `~/.claude/CLAUDE.md`:
320
322
 
321
323
  ```markdown
322
324
  ## GitHub CI Channel — session filter
323
- When claude-beacon MCP connects, call `set_filter` immediately:
324
- run `git remote get-url origin` (parse to owner/repo) and
325
- `git branch --show-current`, then call set_filter with those values.
325
+ When the claude-beacon MCP server connects, call `set_filter` immediately with:
326
+ - repo: run `git remote get-url origin | sed 's/.*github\.com[:/]\(.*\)\.git$/\1/'`
327
+ - branch: run `git branch --show-current`
328
+ - label: the branch name
329
+ - worktree_path: run `git rev-parse --show-toplevel`
326
330
  ```
327
331
 
328
332
  For full details — routing rules, systemd setup, comparison table — see **[docs/multi-session.md](docs/multi-session.md)**.
@@ -1,11 +1,12 @@
1
- # github-ci-channel configuration
1
+ # claude-beacon configuration
2
2
  #
3
3
  # All fields are optional — omitted fields keep their default values.
4
- # Pass this file at startup: npx @modelcontextprotocol/inspector --config ./my-config.yaml
5
- # Or via the mcp entry in .claude/settings.json:
6
- # "args": ["run", "src/index.ts", "--config", "/path/to/config.yaml"]
4
+ # Pass this file at startup:
5
+ # claude-beacon-mux --config /path/to/this-file.yaml
6
+ # Or in .mcp.json args:
7
+ # "args": ["--config", "/path/to/this-file.yaml"]
7
8
  #
8
- # Environment variables still override YAML for server.port and server.debounce_ms.
9
+ # Environment variables (WEBHOOK_PORT, REVIEW_DEBOUNCE_MS) still override YAML.
9
10
 
10
11
  # ── Server ────────────────────────────────────────────────────────────────────
11
12
  server:
package/dist/index.js CHANGED
@@ -186,7 +186,7 @@ ${U.comment}`:U.comment}this.doc.range[2]=U.offset;break}default:this.errors.pus
186
186
 
187
187
  Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(let G of $.seen.entries()){let Q=G[1];if(U===G[0]){D(G);continue}if($.external){let Y=$.external.registry.get(G[0])?.id;if(U!==G[0]&&Y){D(G);continue}}if($.metadataRegistry.get(G[0])?.id){D(G);continue}if(Q.cycle){D(G);continue}if(Q.count>1){if($.reused==="ref"){D(G);continue}}}}function B6($,U){let J=$.seen.get(U);if(!J)throw Error("Unprocessed schema. This is a bug in Zod.");let X=(G)=>{let Q=$.seen.get(G);if(Q.ref===null)return;let W=Q.def??Q.schema,Y={...W},H=Q.ref;if(Q.ref=null,H){X(H);let O=$.seen.get(H),b=O.schema;if(b.$ref&&($.target==="draft-07"||$.target==="draft-04"||$.target==="openapi-3.0"))W.allOf=W.allOf??[],W.allOf.push(b);else Object.assign(W,b);if(Object.assign(W,Y),G._zod.parent===H)for(let B in W){if(B==="$ref"||B==="allOf")continue;if(!(B in Y))delete W[B]}if(b.$ref&&O.def)for(let B in W){if(B==="$ref"||B==="allOf")continue;if(B in O.def&&JSON.stringify(W[B])===JSON.stringify(O.def[B]))delete W[B]}}let I=G._zod.parent;if(I&&I!==H){X(I);let O=$.seen.get(I);if(O?.schema.$ref){if(W.$ref=O.schema.$ref,O.def)for(let b in W){if(b==="$ref"||b==="allOf")continue;if(b in O.def&&JSON.stringify(W[b])===JSON.stringify(O.def[b]))delete W[b]}}}$.override({zodSchema:G,jsonSchema:W,path:Q.path??[]})};for(let G of[...$.seen.entries()].reverse())X(G[0]);let z={};if($.target==="draft-2020-12")z.$schema="https://json-schema.org/draft/2020-12/schema";else if($.target==="draft-07")z.$schema="http://json-schema.org/draft-07/schema#";else if($.target==="draft-04")z.$schema="http://json-schema.org/draft-04/schema#";else if($.target==="openapi-3.0");if($.external?.uri){let G=$.external.registry.get(U)?.id;if(!G)throw Error("Schema is missing an `id` property");z.$id=$.external.uri(G)}Object.assign(z,J.def??J.schema);let D=$.external?.defs??{};for(let G of $.seen.entries()){let Q=G[1];if(Q.def&&Q.defId)D[Q.defId]=Q.def}if($.external);else if(Object.keys(D).length>0)if($.target==="draft-2020-12")z.$defs=D;else z.definitions=D;try{let G=JSON.parse(JSON.stringify(z));return Object.defineProperty(G,"~standard",{value:{...U["~standard"],jsonSchema:{input:h1(U,"input",$.processors),output:h1(U,"output",$.processors)}},enumerable:!1,writable:!1}),G}catch(G){throw Error("Error converting schema to JSON.")}}function h$($,U){let J=U??{seen:new Set};if(J.seen.has($))return!1;J.seen.add($);let X=$._zod.def;if(X.type==="transform")return!0;if(X.type==="array")return h$(X.element,J);if(X.type==="set")return h$(X.valueType,J);if(X.type==="lazy")return h$(X.getter(),J);if(X.type==="promise"||X.type==="optional"||X.type==="nonoptional"||X.type==="nullable"||X.type==="readonly"||X.type==="default"||X.type==="prefault")return h$(X.innerType,J);if(X.type==="intersection")return h$(X.left,J)||h$(X.right,J);if(X.type==="record"||X.type==="map")return h$(X.keyType,J)||h$(X.valueType,J);if(X.type==="pipe")return h$(X.in,J)||h$(X.out,J);if(X.type==="object"){for(let z in X.shape)if(h$(X.shape[z],J))return!0;return!1}if(X.type==="union"){for(let z of X.options)if(h$(z,J))return!0;return!1}if(X.type==="tuple"){for(let z of X.items)if(h$(z,J))return!0;if(X.rest&&h$(X.rest,J))return!0;return!1}return!1}var BW=($,U={})=>(J)=>{let X=O6({...J,processors:U});return Y$($,X),b6(X,$),B6(X,$)},h1=($,U,J={})=>(X)=>{let{libraryOptions:z,target:D}=X??{},G=O6({...z??{},target:D,io:U,processors:J});return Y$($,G),b6(G,$),B6(G,$)};var Jv={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string",regex:""},qW=($,U,J,X)=>{let z=J;z.type="string";let{minimum:D,maximum:G,format:Q,patterns:W,contentEncoding:Y}=$._zod.bag;if(typeof D==="number")z.minLength=D;if(typeof G==="number")z.maxLength=G;if(Q){if(z.format=Jv[Q]??Q,z.format==="")delete z.format;if(Q==="time")delete z.format}if(Y)z.contentEncoding=Y;if(W&&W.size>0){let H=[...W];if(H.length===1)z.pattern=H[0].source;else if(H.length>1)z.allOf=[...H.map((I)=>({...U.target==="draft-07"||U.target==="draft-04"||U.target==="openapi-3.0"?{type:"string"}:{},pattern:I.source}))]}},wW=($,U,J,X)=>{let z=J,{minimum:D,maximum:G,format:Q,multipleOf:W,exclusiveMaximum:Y,exclusiveMinimum:H}=$._zod.bag;if(typeof Q==="string"&&Q.includes("int"))z.type="integer";else z.type="number";if(typeof H==="number")if(U.target==="draft-04"||U.target==="openapi-3.0")z.minimum=H,z.exclusiveMinimum=!0;else z.exclusiveMinimum=H;if(typeof D==="number"){if(z.minimum=D,typeof H==="number"&&U.target!=="draft-04")if(H>=D)delete z.minimum;else delete z.exclusiveMinimum}if(typeof Y==="number")if(U.target==="draft-04"||U.target==="openapi-3.0")z.maximum=Y,z.exclusiveMaximum=!0;else z.exclusiveMaximum=Y;if(typeof G==="number"){if(z.maximum=G,typeof Y==="number"&&U.target!=="draft-04")if(Y<=G)delete z.maximum;else delete z.exclusiveMaximum}if(typeof W==="number")z.multipleOf=W},VW=($,U,J,X)=>{J.type="boolean"},LW=($,U,J,X)=>{if(U.unrepresentable==="throw")throw Error("BigInt cannot be represented in JSON Schema")},NW=($,U,J,X)=>{if(U.unrepresentable==="throw")throw Error("Symbols cannot be represented in JSON Schema")},AW=($,U,J,X)=>{if(U.target==="openapi-3.0")J.type="string",J.nullable=!0,J.enum=[null];else J.type="null"},FW=($,U,J,X)=>{if(U.unrepresentable==="throw")throw Error("Undefined cannot be represented in JSON Schema")},KW=($,U,J,X)=>{if(U.unrepresentable==="throw")throw Error("Void cannot be represented in JSON Schema")},vW=($,U,J,X)=>{J.not={}},jW=($,U,J,X)=>{},MW=($,U,J,X)=>{},PW=($,U,J,X)=>{if(U.unrepresentable==="throw")throw Error("Date cannot be represented in JSON Schema")},SW=($,U,J,X)=>{let z=$._zod.def,D=gU(z.entries);if(D.every((G)=>typeof G==="number"))J.type="number";if(D.every((G)=>typeof G==="string"))J.type="string";J.enum=D},RW=($,U,J,X)=>{let z=$._zod.def,D=[];for(let G of z.values)if(G===void 0){if(U.unrepresentable==="throw")throw Error("Literal `undefined` cannot be represented in JSON Schema")}else if(typeof G==="bigint")if(U.unrepresentable==="throw")throw Error("BigInt literals cannot be represented in JSON Schema");else D.push(Number(G));else D.push(G);if(D.length===0);else if(D.length===1){let G=D[0];if(J.type=G===null?"null":typeof G,U.target==="draft-04"||U.target==="openapi-3.0")J.enum=[G];else J.const=G}else{if(D.every((G)=>typeof G==="number"))J.type="number";if(D.every((G)=>typeof G==="string"))J.type="string";if(D.every((G)=>typeof G==="boolean"))J.type="boolean";if(D.every((G)=>G===null))J.type="null";J.enum=D}},_W=($,U,J,X)=>{if(U.unrepresentable==="throw")throw Error("NaN cannot be represented in JSON Schema")},EW=($,U,J,X)=>{let z=J,D=$._zod.pattern;if(!D)throw Error("Pattern not found in template literal");z.type="string",z.pattern=D.source},TW=($,U,J,X)=>{let z=J,D={type:"string",format:"binary",contentEncoding:"binary"},{minimum:G,maximum:Q,mime:W}=$._zod.bag;if(G!==void 0)D.minLength=G;if(Q!==void 0)D.maxLength=Q;if(W)if(W.length===1)D.contentMediaType=W[0],Object.assign(z,D);else Object.assign(z,D),z.anyOf=W.map((Y)=>({contentMediaType:Y}));else Object.assign(z,D)},ZW=($,U,J,X)=>{J.type="boolean"},kW=($,U,J,X)=>{if(U.unrepresentable==="throw")throw Error("Custom types cannot be represented in JSON Schema")},CW=($,U,J,X)=>{if(U.unrepresentable==="throw")throw Error("Function types cannot be represented in JSON Schema")},gW=($,U,J,X)=>{if(U.unrepresentable==="throw")throw Error("Transforms cannot be represented in JSON Schema")},uW=($,U,J,X)=>{if(U.unrepresentable==="throw")throw Error("Map cannot be represented in JSON Schema")},xW=($,U,J,X)=>{if(U.unrepresentable==="throw")throw Error("Set cannot be represented in JSON Schema")},fW=($,U,J,X)=>{let z=J,D=$._zod.def,{minimum:G,maximum:Q}=$._zod.bag;if(typeof G==="number")z.minItems=G;if(typeof Q==="number")z.maxItems=Q;z.type="array",z.items=Y$(D.element,U,{...X,path:[...X.path,"items"]})},yW=($,U,J,X)=>{let z=J,D=$._zod.def;z.type="object",z.properties={};let G=D.shape;for(let Y in G)z.properties[Y]=Y$(G[Y],U,{...X,path:[...X.path,"properties",Y]});let Q=new Set(Object.keys(G)),W=new Set([...Q].filter((Y)=>{let H=D.shape[Y]._zod;if(U.io==="input")return H.optin===void 0;else return H.optout===void 0}));if(W.size>0)z.required=Array.from(W);if(D.catchall?._zod.def.type==="never")z.additionalProperties=!1;else if(!D.catchall){if(U.io==="output")z.additionalProperties=!1}else if(D.catchall)z.additionalProperties=Y$(D.catchall,U,{...X,path:[...X.path,"additionalProperties"]})},WD=($,U,J,X)=>{let z=$._zod.def,D=z.inclusive===!1,G=z.options.map((Q,W)=>Y$(Q,U,{...X,path:[...X.path,D?"oneOf":"anyOf",W]}));if(D)J.oneOf=G;else J.anyOf=G},lW=($,U,J,X)=>{let z=$._zod.def,D=Y$(z.left,U,{...X,path:[...X.path,"allOf",0]}),G=Y$(z.right,U,{...X,path:[...X.path,"allOf",1]}),Q=(Y)=>("allOf"in Y)&&Object.keys(Y).length===1,W=[...Q(D)?D.allOf:[D],...Q(G)?G.allOf:[G]];J.allOf=W},hW=($,U,J,X)=>{let z=J,D=$._zod.def;z.type="array";let G=U.target==="draft-2020-12"?"prefixItems":"items",Q=U.target==="draft-2020-12"?"items":U.target==="openapi-3.0"?"items":"additionalItems",W=D.items.map((O,b)=>Y$(O,U,{...X,path:[...X.path,G,b]})),Y=D.rest?Y$(D.rest,U,{...X,path:[...X.path,Q,...U.target==="openapi-3.0"?[D.items.length]:[]]}):null;if(U.target==="draft-2020-12"){if(z.prefixItems=W,Y)z.items=Y}else if(U.target==="openapi-3.0"){if(z.items={anyOf:W},Y)z.items.anyOf.push(Y);if(z.minItems=W.length,!Y)z.maxItems=W.length}else if(z.items=W,Y)z.additionalItems=Y;let{minimum:H,maximum:I}=$._zod.bag;if(typeof H==="number")z.minItems=H;if(typeof I==="number")z.maxItems=I},mW=($,U,J,X)=>{let z=J,D=$._zod.def;z.type="object";let G=D.keyType,W=G._zod.bag?.patterns;if(D.mode==="loose"&&W&&W.size>0){let H=Y$(D.valueType,U,{...X,path:[...X.path,"patternProperties","*"]});z.patternProperties={};for(let I of W)z.patternProperties[I.source]=H}else{if(U.target==="draft-07"||U.target==="draft-2020-12")z.propertyNames=Y$(D.keyType,U,{...X,path:[...X.path,"propertyNames"]});z.additionalProperties=Y$(D.valueType,U,{...X,path:[...X.path,"additionalProperties"]})}let Y=G._zod.values;if(Y){let H=[...Y].filter((I)=>typeof I==="string"||typeof I==="number");if(H.length>0)z.required=H}},iW=($,U,J,X)=>{let z=$._zod.def,D=Y$(z.innerType,U,X),G=U.seen.get($);if(U.target==="openapi-3.0")G.ref=z.innerType,J.nullable=!0;else J.anyOf=[D,{type:"null"}]},nW=($,U,J,X)=>{let z=$._zod.def;Y$(z.innerType,U,X);let D=U.seen.get($);D.ref=z.innerType},rW=($,U,J,X)=>{let z=$._zod.def;Y$(z.innerType,U,X);let D=U.seen.get($);D.ref=z.innerType,J.default=JSON.parse(JSON.stringify(z.defaultValue))},cW=($,U,J,X)=>{let z=$._zod.def;Y$(z.innerType,U,X);let D=U.seen.get($);if(D.ref=z.innerType,U.io==="input")J._prefault=JSON.parse(JSON.stringify(z.defaultValue))},dW=($,U,J,X)=>{let z=$._zod.def;Y$(z.innerType,U,X);let D=U.seen.get($);D.ref=z.innerType;let G;try{G=z.catchValue(void 0)}catch{throw Error("Dynamic catch values are not supported in JSON Schema")}J.default=G},pW=($,U,J,X)=>{let z=$._zod.def,D=U.io==="input"?z.in._zod.def.type==="transform"?z.out:z.in:z.out;Y$(D,U,X);let G=U.seen.get($);G.ref=D},oW=($,U,J,X)=>{let z=$._zod.def;Y$(z.innerType,U,X);let D=U.seen.get($);D.ref=z.innerType,J.readOnly=!0},tW=($,U,J,X)=>{let z=$._zod.def;Y$(z.innerType,U,X);let D=U.seen.get($);D.ref=z.innerType},YD=($,U,J,X)=>{let z=$._zod.def;Y$(z.innerType,U,X);let D=U.seen.get($);D.ref=z.innerType},aW=($,U,J,X)=>{let z=$._zod.innerType;Y$(z,U,X);let D=U.seen.get($);D.ref=z},QD={string:qW,number:wW,boolean:VW,bigint:LW,symbol:NW,null:AW,undefined:FW,void:KW,never:vW,any:jW,unknown:MW,date:PW,enum:SW,literal:RW,nan:_W,template_literal:EW,file:TW,success:ZW,custom:kW,function:CW,transform:gW,map:uW,set:xW,array:fW,object:yW,union:WD,intersection:lW,tuple:hW,record:mW,nullable:iW,nonoptional:nW,default:rW,prefault:cW,catch:dW,pipe:pW,readonly:oW,promise:tW,optional:YD,lazy:aW};function p6($,U){if("_idmap"in $){let X=$,z=O6({...U,processors:QD}),D={};for(let W of X._idmap.entries()){let[Y,H]=W;Y$(H,z)}let G={},Q={registry:X,uri:U?.uri,defs:D};z.external=Q;for(let W of X._idmap.entries()){let[Y,H]=W;b6(z,H),G[Y]=B6(z,H)}if(Object.keys(D).length>0){let W=z.target==="draft-2020-12"?"$defs":"definitions";G.__shared={[W]:D}}return{schemas:G}}let J=O6({...U,processors:QD});return Y$($,J),b6(J,$),B6(J,$)}class sW{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($){this.ctx.counter=$}get seen(){return this.ctx.seen}constructor($){let U=$?.target??"draft-2020-12";if(U==="draft-4")U="draft-04";if(U==="draft-7")U="draft-07";this.ctx=O6({processors:QD,target:U,...$?.metadata&&{metadata:$.metadata},...$?.unrepresentable&&{unrepresentable:$.unrepresentable},...$?.override&&{override:$.override},...$?.io&&{io:$.io}})}process($,U={path:[],schemaPath:[]}){return Y$($,this.ctx,U)}emit($,U){if(U){if(U.cycles)this.ctx.cycles=U.cycles;if(U.reused)this.ctx.reused=U.reused;if(U.external)this.ctx.external=U.external}b6(this.ctx,$);let J=B6(this.ctx,$),{"~standard":X,...z}=J;return z}}var zI={};var A0={};m4(A0,{xor:()=>dI,xid:()=>LI,void:()=>iI,uuidv7:()=>HI,uuidv6:()=>YI,uuidv4:()=>WI,uuid:()=>QI,url:()=>II,unknown:()=>B$,union:()=>q$,undefined:()=>hI,ulid:()=>VI,uint64:()=>yI,uint32:()=>uI,tuple:()=>RY,transform:()=>gD,templateLiteral:()=>XO,symbol:()=>lI,superRefine:()=>$7,success:()=>UO,stringbool:()=>IO,stringFormat:()=>_I,string:()=>F,strictObject:()=>cI,set:()=>aI,refine:()=>eY,record:()=>I$,readonly:()=>dY,promise:()=>DO,preprocess:()=>Z0,prefault:()=>lY,pipe:()=>v0,partialRecord:()=>pI,optional:()=>w$,object:()=>g,number:()=>Q$,nullish:()=>$O,nullable:()=>K0,null:()=>M0,nonoptional:()=>hY,never:()=>CD,nativeEnum:()=>sI,nanoid:()=>BI,nan:()=>JO,meta:()=>YO,map:()=>tI,mac:()=>FI,looseRecord:()=>oI,looseObject:()=>Z$,literal:()=>f,lazy:()=>tY,ksuid:()=>NI,keyof:()=>rI,jwt:()=>RI,json:()=>OO,ipv6:()=>KI,ipv4:()=>AI,intersection:()=>p1,int64:()=>fI,int32:()=>gI,int:()=>qD,instanceof:()=>HO,httpUrl:()=>OI,hostname:()=>EI,hex:()=>TI,hash:()=>ZI,guid:()=>GI,function:()=>GO,float64:()=>CI,float32:()=>kI,file:()=>eI,exactOptional:()=>gY,enum:()=>k$,emoji:()=>bI,email:()=>DI,e164:()=>SI,discriminatedUnion:()=>_0,describe:()=>WO,date:()=>nI,custom:()=>yD,cuid2:()=>wI,cuid:()=>qI,codec:()=>zO,cidrv6:()=>jI,cidrv4:()=>vI,check:()=>QO,catch:()=>nY,boolean:()=>j$,bigint:()=>xI,base64url:()=>PI,base64:()=>MI,array:()=>s,any:()=>mI,_function:()=>GO,_default:()=>fY,_ZodString:()=>wD,ZodXor:()=>jY,ZodXID:()=>vD,ZodVoid:()=>KY,ZodUnknown:()=>AY,ZodUnion:()=>R0,ZodUndefined:()=>VY,ZodUUID:()=>k4,ZodURL:()=>j0,ZodULID:()=>KD,ZodType:()=>p,ZodTuple:()=>SY,ZodTransform:()=>kY,ZodTemplateLiteral:()=>pY,ZodSymbol:()=>wY,ZodSuccess:()=>mY,ZodStringFormat:()=>b$,ZodString:()=>i1,ZodSet:()=>EY,ZodRecord:()=>E0,ZodReadonly:()=>cY,ZodPromise:()=>aY,ZodPrefault:()=>yY,ZodPipe:()=>xD,ZodOptional:()=>o1,ZodObject:()=>S0,ZodNumberFormat:()=>o6,ZodNumber:()=>r1,ZodNullable:()=>uY,ZodNull:()=>LY,ZodNonOptional:()=>uD,ZodNever:()=>FY,ZodNanoID:()=>ND,ZodNaN:()=>rY,ZodMap:()=>_Y,ZodMAC:()=>qY,ZodLiteral:()=>TY,ZodLazy:()=>oY,ZodKSUID:()=>jD,ZodJWT:()=>ZD,ZodIntersection:()=>PY,ZodIPv6:()=>PD,ZodIPv4:()=>MD,ZodGUID:()=>F0,ZodFunction:()=>sY,ZodFile:()=>ZY,ZodExactOptional:()=>CY,ZodEnum:()=>m1,ZodEmoji:()=>LD,ZodEmail:()=>VD,ZodE164:()=>TD,ZodDiscriminatedUnion:()=>MY,ZodDefault:()=>xY,ZodDate:()=>P0,ZodCustomStringFormat:()=>n1,ZodCustom:()=>T0,ZodCodec:()=>fD,ZodCatch:()=>iY,ZodCUID2:()=>FD,ZodCUID:()=>AD,ZodCIDRv6:()=>RD,ZodCIDRv4:()=>SD,ZodBoolean:()=>c1,ZodBigIntFormat:()=>kD,ZodBigInt:()=>d1,ZodBase64URL:()=>ED,ZodBase64:()=>_D,ZodArray:()=>vY,ZodAny:()=>NY});var HD={};m4(HD,{uppercase:()=>T1,trim:()=>x1,toUpperCase:()=>y1,toLowerCase:()=>f1,startsWith:()=>k1,slugify:()=>l1,size:()=>n6,regex:()=>_1,property:()=>eX,positive:()=>oX,overwrite:()=>q4,normalize:()=>u1,nonpositive:()=>aX,nonnegative:()=>sX,negative:()=>tX,multipleOf:()=>H6,minSize:()=>Z4,minLength:()=>n4,mime:()=>g1,maxSize:()=>I6,maxLength:()=>r6,lte:()=>z4,lt:()=>E4,lowercase:()=>E1,length:()=>c6,includes:()=>Z1,gte:()=>l$,gt:()=>T4,endsWith:()=>C1});var q6={};m4(q6,{time:()=>UY,duration:()=>JY,datetime:()=>eW,date:()=>$Y,ZodISOTime:()=>bD,ZodISODuration:()=>BD,ZodISODateTime:()=>ID,ZodISODate:()=>OD});var ID=V("ZodISODateTime",($,U)=>{JQ.init($,U),b$.init($,U)});function eW($){return DW(ID,$)}var OD=V("ZodISODate",($,U)=>{zQ.init($,U),b$.init($,U)});function $Y($){return GW(OD,$)}var bD=V("ZodISOTime",($,U)=>{XQ.init($,U),b$.init($,U)});function UY($){return QW(bD,$)}var BD=V("ZodISODuration",($,U)=>{DQ.init($,U),b$.init($,U)});function JY($){return WW(BD,$)}var XI=($,U)=>{lU.init($,U),$.name="ZodError",Object.defineProperties($,{format:{value:(J)=>mU($,J)},flatten:{value:(J)=>hU($,J)},addIssue:{value:(J)=>{$.issues.push(J),$.message=JSON.stringify($.issues,B1,2)}},addIssues:{value:(J)=>{$.issues.push(...J),$.message=JSON.stringify($.issues,B1,2)}},isEmpty:{get(){return $.issues.length===0}}})},Xv=V("ZodError",XI),o$=V("ZodError",XI,{Parent:Error});var zY=V1(o$),XY=L1(o$),DY=N1(o$),GY=A1(o$),QY=Gz(o$),WY=Qz(o$),YY=Wz(o$),HY=Yz(o$),IY=Hz(o$),OY=Iz(o$),bY=Oz(o$),BY=bz(o$);var p=V("ZodType",($,U)=>{return r.init($,U),Object.assign($["~standard"],{jsonSchema:{input:h1($,"input"),output:h1($,"output")}}),$.toJSONSchema=BW($,{}),$.def=U,$.type=U.type,Object.defineProperty($,"_def",{value:U}),$.check=(...J)=>{return $.clone(R.mergeDefs(U,{checks:[...U.checks??[],...J.map((X)=>typeof X==="function"?{_zod:{check:X,def:{check:"custom"},onattach:[]}}:X)]}),{parent:!0})},$.with=$.check,$.clone=(J,X)=>E$($,J,X),$.brand=()=>$,$.register=(J,X)=>{return J.add($,X),$},$.parse=(J,X)=>zY($,J,X,{callee:$.parse}),$.safeParse=(J,X)=>DY($,J,X),$.parseAsync=async(J,X)=>XY($,J,X,{callee:$.parseAsync}),$.safeParseAsync=async(J,X)=>GY($,J,X),$.spa=$.safeParseAsync,$.encode=(J,X)=>QY($,J,X),$.decode=(J,X)=>WY($,J,X),$.encodeAsync=async(J,X)=>YY($,J,X),$.decodeAsync=async(J,X)=>HY($,J,X),$.safeEncode=(J,X)=>IY($,J,X),$.safeDecode=(J,X)=>OY($,J,X),$.safeEncodeAsync=async(J,X)=>bY($,J,X),$.safeDecodeAsync=async(J,X)=>BY($,J,X),$.refine=(J,X)=>$.check(eY(J,X)),$.superRefine=(J)=>$.check($7(J)),$.overwrite=(J)=>$.check(q4(J)),$.optional=()=>w$($),$.exactOptional=()=>gY($),$.nullable=()=>K0($),$.nullish=()=>w$(K0($)),$.nonoptional=(J)=>hY($,J),$.array=()=>s($),$.or=(J)=>q$([$,J]),$.and=(J)=>p1($,J),$.transform=(J)=>v0($,gD(J)),$.default=(J)=>fY($,J),$.prefault=(J)=>lY($,J),$.catch=(J)=>nY($,J),$.pipe=(J)=>v0($,J),$.readonly=()=>dY($),$.describe=(J)=>{let X=$.clone();return T$.add(X,{description:J}),X},Object.defineProperty($,"description",{get(){return T$.get($)?.description},configurable:!0}),$.meta=(...J)=>{if(J.length===0)return T$.get($);let X=$.clone();return T$.add(X,J[0]),X},$.isOptional=()=>$.safeParse(void 0).success,$.isNullable=()=>$.safeParse(null).success,$.apply=(J)=>J($),$}),wD=V("_ZodString",($,U)=>{Y6.init($,U),p.init($,U),$._zod.processJSONSchema=(X,z,D)=>qW($,X,z,D);let J=$._zod.bag;$.format=J.format??null,$.minLength=J.minimum??null,$.maxLength=J.maximum??null,$.regex=(...X)=>$.check(_1(...X)),$.includes=(...X)=>$.check(Z1(...X)),$.startsWith=(...X)=>$.check(k1(...X)),$.endsWith=(...X)=>$.check(C1(...X)),$.min=(...X)=>$.check(n4(...X)),$.max=(...X)=>$.check(r6(...X)),$.length=(...X)=>$.check(c6(...X)),$.nonempty=(...X)=>$.check(n4(1,...X)),$.lowercase=(X)=>$.check(E1(X)),$.uppercase=(X)=>$.check(T1(X)),$.trim=()=>$.check(x1()),$.normalize=(...X)=>$.check(u1(...X)),$.toLowerCase=()=>$.check(f1()),$.toUpperCase=()=>$.check(y1()),$.slugify=()=>$.check(l1())}),i1=V("ZodString",($,U)=>{Y6.init($,U),wD.init($,U),$.email=(J)=>$.check($0(VD,J)),$.url=(J)=>$.check(R1(j0,J)),$.jwt=(J)=>$.check(N0(ZD,J)),$.emoji=(J)=>$.check(D0(LD,J)),$.guid=(J)=>$.check(S1(F0,J)),$.uuid=(J)=>$.check(U0(k4,J)),$.uuidv4=(J)=>$.check(J0(k4,J)),$.uuidv6=(J)=>$.check(z0(k4,J)),$.uuidv7=(J)=>$.check(X0(k4,J)),$.nanoid=(J)=>$.check(G0(ND,J)),$.guid=(J)=>$.check(S1(F0,J)),$.cuid=(J)=>$.check(Q0(AD,J)),$.cuid2=(J)=>$.check(W0(FD,J)),$.ulid=(J)=>$.check(Y0(KD,J)),$.base64=(J)=>$.check(w0(_D,J)),$.base64url=(J)=>$.check(V0(ED,J)),$.xid=(J)=>$.check(H0(vD,J)),$.ksuid=(J)=>$.check(I0(jD,J)),$.ipv4=(J)=>$.check(O0(MD,J)),$.ipv6=(J)=>$.check(b0(PD,J)),$.cidrv4=(J)=>$.check(B0(SD,J)),$.cidrv6=(J)=>$.check(q0(RD,J)),$.e164=(J)=>$.check(L0(TD,J)),$.datetime=(J)=>$.check(eW(J)),$.date=(J)=>$.check($Y(J)),$.time=(J)=>$.check(UY(J)),$.duration=(J)=>$.check(JY(J))});function F($){return RX(i1,$)}var b$=V("ZodStringFormat",($,U)=>{H$.init($,U),wD.init($,U)}),VD=V("ZodEmail",($,U)=>{Mz.init($,U),b$.init($,U)});function DI($){return $0(VD,$)}var F0=V("ZodGUID",($,U)=>{vz.init($,U),b$.init($,U)});function GI($){return S1(F0,$)}var k4=V("ZodUUID",($,U)=>{jz.init($,U),b$.init($,U)});function QI($){return U0(k4,$)}function WI($){return J0(k4,$)}function YI($){return z0(k4,$)}function HI($){return X0(k4,$)}var j0=V("ZodURL",($,U)=>{Pz.init($,U),b$.init($,U)});function II($){return R1(j0,$)}function OI($){return R1(j0,{protocol:/^https?$/,hostname:J4.domain,...R.normalizeParams($)})}var LD=V("ZodEmoji",($,U)=>{Sz.init($,U),b$.init($,U)});function bI($){return D0(LD,$)}var ND=V("ZodNanoID",($,U)=>{Rz.init($,U),b$.init($,U)});function BI($){return G0(ND,$)}var AD=V("ZodCUID",($,U)=>{_z.init($,U),b$.init($,U)});function qI($){return Q0(AD,$)}var FD=V("ZodCUID2",($,U)=>{Ez.init($,U),b$.init($,U)});function wI($){return W0(FD,$)}var KD=V("ZodULID",($,U)=>{Tz.init($,U),b$.init($,U)});function VI($){return Y0(KD,$)}var vD=V("ZodXID",($,U)=>{Zz.init($,U),b$.init($,U)});function LI($){return H0(vD,$)}var jD=V("ZodKSUID",($,U)=>{kz.init($,U),b$.init($,U)});function NI($){return I0(jD,$)}var MD=V("ZodIPv4",($,U)=>{Cz.init($,U),b$.init($,U)});function AI($){return O0(MD,$)}var qY=V("ZodMAC",($,U)=>{uz.init($,U),b$.init($,U)});function FI($){return _X(qY,$)}var PD=V("ZodIPv6",($,U)=>{gz.init($,U),b$.init($,U)});function KI($){return b0(PD,$)}var SD=V("ZodCIDRv4",($,U)=>{xz.init($,U),b$.init($,U)});function vI($){return B0(SD,$)}var RD=V("ZodCIDRv6",($,U)=>{fz.init($,U),b$.init($,U)});function jI($){return q0(RD,$)}var _D=V("ZodBase64",($,U)=>{yz.init($,U),b$.init($,U)});function MI($){return w0(_D,$)}var ED=V("ZodBase64URL",($,U)=>{lz.init($,U),b$.init($,U)});function PI($){return V0(ED,$)}var TD=V("ZodE164",($,U)=>{hz.init($,U),b$.init($,U)});function SI($){return L0(TD,$)}var ZD=V("ZodJWT",($,U)=>{mz.init($,U),b$.init($,U)});function RI($){return N0(ZD,$)}var n1=V("ZodCustomStringFormat",($,U)=>{iz.init($,U),b$.init($,U)});function _I($,U,J={}){return d6(n1,$,U,J)}function EI($){return d6(n1,"hostname",J4.hostname,$)}function TI($){return d6(n1,"hex",J4.hex,$)}function ZI($,U){let J=U?.enc??"hex",X=`${$}_${J}`,z=J4[X];if(!z)throw Error(`Unrecognized hash format: ${X}`);return d6(n1,X,z,U)}var r1=V("ZodNumber",($,U)=>{cU.init($,U),p.init($,U),$._zod.processJSONSchema=(X,z,D)=>wW($,X,z,D),$.gt=(X,z)=>$.check(T4(X,z)),$.gte=(X,z)=>$.check(l$(X,z)),$.min=(X,z)=>$.check(l$(X,z)),$.lt=(X,z)=>$.check(E4(X,z)),$.lte=(X,z)=>$.check(z4(X,z)),$.max=(X,z)=>$.check(z4(X,z)),$.int=(X)=>$.check(qD(X)),$.safe=(X)=>$.check(qD(X)),$.positive=(X)=>$.check(T4(0,X)),$.nonnegative=(X)=>$.check(l$(0,X)),$.negative=(X)=>$.check(E4(0,X)),$.nonpositive=(X)=>$.check(z4(0,X)),$.multipleOf=(X,z)=>$.check(H6(X,z)),$.step=(X,z)=>$.check(H6(X,z)),$.finite=()=>$;let J=$._zod.bag;$.minValue=Math.max(J.minimum??Number.NEGATIVE_INFINITY,J.exclusiveMinimum??Number.NEGATIVE_INFINITY)??null,$.maxValue=Math.min(J.maximum??Number.POSITIVE_INFINITY,J.exclusiveMaximum??Number.POSITIVE_INFINITY)??null,$.isInt=(J.format??"").includes("int")||Number.isSafeInteger(J.multipleOf??0.5),$.isFinite=!0,$.format=J.format??null});function Q$($){return EX(r1,$)}var o6=V("ZodNumberFormat",($,U)=>{nz.init($,U),r1.init($,U)});function qD($){return TX(o6,$)}function kI($){return ZX(o6,$)}function CI($){return kX(o6,$)}function gI($){return CX(o6,$)}function uI($){return gX(o6,$)}var c1=V("ZodBoolean",($,U)=>{K1.init($,U),p.init($,U),$._zod.processJSONSchema=(J,X,z)=>VW($,J,X,z)});function j$($){return uX(c1,$)}var d1=V("ZodBigInt",($,U)=>{dU.init($,U),p.init($,U),$._zod.processJSONSchema=(X,z,D)=>LW($,X,z,D),$.gte=(X,z)=>$.check(l$(X,z)),$.min=(X,z)=>$.check(l$(X,z)),$.gt=(X,z)=>$.check(T4(X,z)),$.gte=(X,z)=>$.check(l$(X,z)),$.min=(X,z)=>$.check(l$(X,z)),$.lt=(X,z)=>$.check(E4(X,z)),$.lte=(X,z)=>$.check(z4(X,z)),$.max=(X,z)=>$.check(z4(X,z)),$.positive=(X)=>$.check(T4(BigInt(0),X)),$.negative=(X)=>$.check(E4(BigInt(0),X)),$.nonpositive=(X)=>$.check(z4(BigInt(0),X)),$.nonnegative=(X)=>$.check(l$(BigInt(0),X)),$.multipleOf=(X,z)=>$.check(H6(X,z));let J=$._zod.bag;$.minValue=J.minimum??null,$.maxValue=J.maximum??null,$.format=J.format??null});function xI($){return xX(d1,$)}var kD=V("ZodBigIntFormat",($,U)=>{rz.init($,U),d1.init($,U)});function fI($){return fX(kD,$)}function yI($){return yX(kD,$)}var wY=V("ZodSymbol",($,U)=>{cz.init($,U),p.init($,U),$._zod.processJSONSchema=(J,X,z)=>NW($,J,X,z)});function lI($){return lX(wY,$)}var VY=V("ZodUndefined",($,U)=>{dz.init($,U),p.init($,U),$._zod.processJSONSchema=(J,X,z)=>FW($,J,X,z)});function hI($){return hX(VY,$)}var LY=V("ZodNull",($,U)=>{pz.init($,U),p.init($,U),$._zod.processJSONSchema=(J,X,z)=>AW($,J,X,z)});function M0($){return mX(LY,$)}var NY=V("ZodAny",($,U)=>{oz.init($,U),p.init($,U),$._zod.processJSONSchema=(J,X,z)=>jW($,J,X,z)});function mI(){return iX(NY)}var AY=V("ZodUnknown",($,U)=>{tz.init($,U),p.init($,U),$._zod.processJSONSchema=(J,X,z)=>MW($,J,X,z)});function B$(){return nX(AY)}var FY=V("ZodNever",($,U)=>{az.init($,U),p.init($,U),$._zod.processJSONSchema=(J,X,z)=>vW($,J,X,z)});function CD($){return rX(FY,$)}var KY=V("ZodVoid",($,U)=>{sz.init($,U),p.init($,U),$._zod.processJSONSchema=(J,X,z)=>KW($,J,X,z)});function iI($){return cX(KY,$)}var P0=V("ZodDate",($,U)=>{ez.init($,U),p.init($,U),$._zod.processJSONSchema=(X,z,D)=>PW($,X,z,D),$.min=(X,z)=>$.check(l$(X,z)),$.max=(X,z)=>$.check(z4(X,z));let J=$._zod.bag;$.minDate=J.minimum?new Date(J.minimum):null,$.maxDate=J.maximum?new Date(J.maximum):null});function nI($){return dX(P0,$)}var vY=V("ZodArray",($,U)=>{$X.init($,U),p.init($,U),$._zod.processJSONSchema=(J,X,z)=>fW($,J,X,z),$.element=U.element,$.min=(J,X)=>$.check(n4(J,X)),$.nonempty=(J)=>$.check(n4(1,J)),$.max=(J,X)=>$.check(r6(J,X)),$.length=(J,X)=>$.check(c6(J,X)),$.unwrap=()=>$.element});function s($,U){return bW(vY,$,U)}function rI($){let U=$._zod.def.shape;return k$(Object.keys(U))}var S0=V("ZodObject",($,U)=>{QQ.init($,U),p.init($,U),$._zod.processJSONSchema=(J,X,z)=>yW($,J,X,z),R.defineLazy($,"shape",()=>{return U.shape}),$.keyof=()=>k$(Object.keys($._zod.def.shape)),$.catchall=(J)=>$.clone({...$._zod.def,catchall:J}),$.passthrough=()=>$.clone({...$._zod.def,catchall:B$()}),$.loose=()=>$.clone({...$._zod.def,catchall:B$()}),$.strict=()=>$.clone({...$._zod.def,catchall:CD()}),$.strip=()=>$.clone({...$._zod.def,catchall:void 0}),$.extend=(J)=>{return R.extend($,J)},$.safeExtend=(J)=>{return R.safeExtend($,J)},$.merge=(J)=>R.merge($,J),$.pick=(J)=>R.pick($,J),$.omit=(J)=>R.omit($,J),$.partial=(...J)=>R.partial(o1,$,J[0]),$.required=(...J)=>R.required(uD,$,J[0])});function g($,U){let J={type:"object",shape:$??{},...R.normalizeParams(U)};return new S0(J)}function cI($,U){return new S0({type:"object",shape:$,catchall:CD(),...R.normalizeParams(U)})}function Z$($,U){return new S0({type:"object",shape:$,catchall:B$(),...R.normalizeParams(U)})}var R0=V("ZodUnion",($,U)=>{v1.init($,U),p.init($,U),$._zod.processJSONSchema=(J,X,z)=>WD($,J,X,z),$.options=U.options});function q$($,U){return new R0({type:"union",options:$,...R.normalizeParams(U)})}var jY=V("ZodXor",($,U)=>{R0.init($,U),JX.init($,U),$._zod.processJSONSchema=(J,X,z)=>WD($,J,X,z),$.options=U.options});function dI($,U){return new jY({type:"union",options:$,inclusive:!1,...R.normalizeParams(U)})}var MY=V("ZodDiscriminatedUnion",($,U)=>{R0.init($,U),zX.init($,U)});function _0($,U,J){return new MY({type:"union",options:U,discriminator:$,...R.normalizeParams(J)})}var PY=V("ZodIntersection",($,U)=>{XX.init($,U),p.init($,U),$._zod.processJSONSchema=(J,X,z)=>lW($,J,X,z)});function p1($,U){return new PY({type:"intersection",left:$,right:U})}var SY=V("ZodTuple",($,U)=>{pU.init($,U),p.init($,U),$._zod.processJSONSchema=(J,X,z)=>hW($,J,X,z),$.rest=(J)=>$.clone({...$._zod.def,rest:J})});function RY($,U,J){let X=U instanceof r,z=X?J:U;return new SY({type:"tuple",items:$,rest:X?U:null,...R.normalizeParams(z)})}var E0=V("ZodRecord",($,U)=>{DX.init($,U),p.init($,U),$._zod.processJSONSchema=(J,X,z)=>mW($,J,X,z),$.keyType=U.keyType,$.valueType=U.valueType});function I$($,U,J){return new E0({type:"record",keyType:$,valueType:U,...R.normalizeParams(J)})}function pI($,U,J){let X=E$($);return X._zod.values=void 0,new E0({type:"record",keyType:X,valueType:U,...R.normalizeParams(J)})}function oI($,U,J){return new E0({type:"record",keyType:$,valueType:U,mode:"loose",...R.normalizeParams(J)})}var _Y=V("ZodMap",($,U)=>{GX.init($,U),p.init($,U),$._zod.processJSONSchema=(J,X,z)=>uW($,J,X,z),$.keyType=U.keyType,$.valueType=U.valueType,$.min=(...J)=>$.check(Z4(...J)),$.nonempty=(J)=>$.check(Z4(1,J)),$.max=(...J)=>$.check(I6(...J)),$.size=(...J)=>$.check(n6(...J))});function tI($,U,J){return new _Y({type:"map",keyType:$,valueType:U,...R.normalizeParams(J)})}var EY=V("ZodSet",($,U)=>{QX.init($,U),p.init($,U),$._zod.processJSONSchema=(J,X,z)=>xW($,J,X,z),$.min=(...J)=>$.check(Z4(...J)),$.nonempty=(J)=>$.check(Z4(1,J)),$.max=(...J)=>$.check(I6(...J)),$.size=(...J)=>$.check(n6(...J))});function aI($,U){return new EY({type:"set",valueType:$,...R.normalizeParams(U)})}var m1=V("ZodEnum",($,U)=>{WX.init($,U),p.init($,U),$._zod.processJSONSchema=(X,z,D)=>SW($,X,z,D),$.enum=U.entries,$.options=Object.values(U.entries);let J=new Set(Object.keys(U.entries));$.extract=(X,z)=>{let D={};for(let G of X)if(J.has(G))D[G]=U.entries[G];else throw Error(`Key ${G} not found in enum`);return new m1({...U,checks:[],...R.normalizeParams(z),entries:D})},$.exclude=(X,z)=>{let D={...U.entries};for(let G of X)if(J.has(G))delete D[G];else throw Error(`Key ${G} not found in enum`);return new m1({...U,checks:[],...R.normalizeParams(z),entries:D})}});function k$($,U){let J=Array.isArray($)?Object.fromEntries($.map((X)=>[X,X])):$;return new m1({type:"enum",entries:J,...R.normalizeParams(U)})}function sI($,U){return new m1({type:"enum",entries:$,...R.normalizeParams(U)})}var TY=V("ZodLiteral",($,U)=>{YX.init($,U),p.init($,U),$._zod.processJSONSchema=(J,X,z)=>RW($,J,X,z),$.values=new Set(U.values),Object.defineProperty($,"value",{get(){if(U.values.length>1)throw Error("This schema contains multiple valid literal values. Use `.values` instead.");return U.values[0]}})});function f($,U){return new TY({type:"literal",values:Array.isArray($)?$:[$],...R.normalizeParams(U)})}var ZY=V("ZodFile",($,U)=>{HX.init($,U),p.init($,U),$._zod.processJSONSchema=(J,X,z)=>TW($,J,X,z),$.min=(J,X)=>$.check(Z4(J,X)),$.max=(J,X)=>$.check(I6(J,X)),$.mime=(J,X)=>$.check(g1(Array.isArray(J)?J:[J],X))});function eI($){return $D(ZY,$)}var kY=V("ZodTransform",($,U)=>{IX.init($,U),p.init($,U),$._zod.processJSONSchema=(J,X,z)=>gW($,J,X,z),$._zod.parse=(J,X)=>{if(X.direction==="backward")throw new y6($.constructor.name);J.addIssue=(D)=>{if(typeof D==="string")J.issues.push(R.issue(D,J.value,U));else{let G=D;if(G.fatal)G.continue=!1;G.code??(G.code="custom"),G.input??(G.input=J.value),G.inst??(G.inst=$),J.issues.push(R.issue(G))}};let z=U.transform(J.value,J);if(z instanceof Promise)return z.then((D)=>{return J.value=D,J});return J.value=z,J}});function gD($){return new kY({type:"transform",transform:$})}var o1=V("ZodOptional",($,U)=>{oU.init($,U),p.init($,U),$._zod.processJSONSchema=(J,X,z)=>YD($,J,X,z),$.unwrap=()=>$._zod.def.innerType});function w$($){return new o1({type:"optional",innerType:$})}var CY=V("ZodExactOptional",($,U)=>{OX.init($,U),p.init($,U),$._zod.processJSONSchema=(J,X,z)=>YD($,J,X,z),$.unwrap=()=>$._zod.def.innerType});function gY($){return new CY({type:"optional",innerType:$})}var uY=V("ZodNullable",($,U)=>{bX.init($,U),p.init($,U),$._zod.processJSONSchema=(J,X,z)=>iW($,J,X,z),$.unwrap=()=>$._zod.def.innerType});function K0($){return new uY({type:"nullable",innerType:$})}function $O($){return w$(K0($))}var xY=V("ZodDefault",($,U)=>{BX.init($,U),p.init($,U),$._zod.processJSONSchema=(J,X,z)=>rW($,J,X,z),$.unwrap=()=>$._zod.def.innerType,$.removeDefault=$.unwrap});function fY($,U){return new xY({type:"default",innerType:$,get defaultValue(){return typeof U==="function"?U():R.shallowClone(U)}})}var yY=V("ZodPrefault",($,U)=>{qX.init($,U),p.init($,U),$._zod.processJSONSchema=(J,X,z)=>cW($,J,X,z),$.unwrap=()=>$._zod.def.innerType});function lY($,U){return new yY({type:"prefault",innerType:$,get defaultValue(){return typeof U==="function"?U():R.shallowClone(U)}})}var uD=V("ZodNonOptional",($,U)=>{wX.init($,U),p.init($,U),$._zod.processJSONSchema=(J,X,z)=>nW($,J,X,z),$.unwrap=()=>$._zod.def.innerType});function hY($,U){return new uD({type:"nonoptional",innerType:$,...R.normalizeParams(U)})}var mY=V("ZodSuccess",($,U)=>{VX.init($,U),p.init($,U),$._zod.processJSONSchema=(J,X,z)=>ZW($,J,X,z),$.unwrap=()=>$._zod.def.innerType});function UO($){return new mY({type:"success",innerType:$})}var iY=V("ZodCatch",($,U)=>{LX.init($,U),p.init($,U),$._zod.processJSONSchema=(J,X,z)=>dW($,J,X,z),$.unwrap=()=>$._zod.def.innerType,$.removeCatch=$.unwrap});function nY($,U){return new iY({type:"catch",innerType:$,catchValue:typeof U==="function"?U:()=>U})}var rY=V("ZodNaN",($,U)=>{NX.init($,U),p.init($,U),$._zod.processJSONSchema=(J,X,z)=>_W($,J,X,z)});function JO($){return pX(rY,$)}var xD=V("ZodPipe",($,U)=>{AX.init($,U),p.init($,U),$._zod.processJSONSchema=(J,X,z)=>pW($,J,X,z),$.in=U.in,$.out=U.out});function v0($,U){return new xD({type:"pipe",in:$,out:U})}var fD=V("ZodCodec",($,U)=>{xD.init($,U),j1.init($,U)});function zO($,U,J){return new fD({type:"pipe",in:$,out:U,transform:J.decode,reverseTransform:J.encode})}var cY=V("ZodReadonly",($,U)=>{FX.init($,U),p.init($,U),$._zod.processJSONSchema=(J,X,z)=>oW($,J,X,z),$.unwrap=()=>$._zod.def.innerType});function dY($){return new cY({type:"readonly",innerType:$})}var pY=V("ZodTemplateLiteral",($,U)=>{KX.init($,U),p.init($,U),$._zod.processJSONSchema=(J,X,z)=>EW($,J,X,z)});function XO($,U){return new pY({type:"template_literal",parts:$,...R.normalizeParams(U)})}var oY=V("ZodLazy",($,U)=>{MX.init($,U),p.init($,U),$._zod.processJSONSchema=(J,X,z)=>aW($,J,X,z),$.unwrap=()=>$._zod.def.getter()});function tY($){return new oY({type:"lazy",getter:$})}var aY=V("ZodPromise",($,U)=>{jX.init($,U),p.init($,U),$._zod.processJSONSchema=(J,X,z)=>tW($,J,X,z),$.unwrap=()=>$._zod.def.innerType});function DO($){return new aY({type:"promise",innerType:$})}var sY=V("ZodFunction",($,U)=>{vX.init($,U),p.init($,U),$._zod.processJSONSchema=(J,X,z)=>CW($,J,X,z)});function GO($){return new sY({type:"function",input:Array.isArray($?.input)?RY($?.input):$?.input??s(B$()),output:$?.output??B$()})}var T0=V("ZodCustom",($,U)=>{PX.init($,U),p.init($,U),$._zod.processJSONSchema=(J,X,z)=>kW($,J,X,z)});function QO($){let U=new O$({check:"custom"});return U._zod.check=$,U}function yD($,U){return UD(T0,$??(()=>!0),U)}function eY($,U={}){return JD(T0,$,U)}function $7($){return zD($)}var WO=XD,YO=DD;function HO($,U={}){let J=new T0({type:"custom",check:"custom",fn:(X)=>X instanceof $,abort:!0,...R.normalizeParams(U)});return J._zod.bag.Class=$,J._zod.check=(X)=>{if(!(X.value instanceof $))X.issues.push({code:"invalid_type",expected:$.name,input:X.value,inst:J,path:[...J._zod.def.path??[]]})},J}var IO=(...$)=>GD({Codec:fD,Boolean:c1,String:i1},...$);function OO($){let U=tY(()=>{return q$([F($),Q$(),j$(),M0(),s(U),I$(F(),U)])});return U}function Z0($,U){return v0(gD($),U)}var Gv={invalid_type:"invalid_type",too_big:"too_big",too_small:"too_small",invalid_format:"invalid_format",not_multiple_of:"not_multiple_of",unrecognized_keys:"unrecognized_keys",invalid_union:"invalid_union",invalid_key:"invalid_key",invalid_element:"invalid_element",invalid_value:"invalid_value",custom:"custom"};function Qv($){v$({customError:$})}function Wv(){return v$().customError}var U7;(function($){})(U7||(U7={}));var k={...A0,...HD,iso:q6},Yv=new Set(["$schema","$ref","$defs","definitions","$id","id","$comment","$anchor","$vocabulary","$dynamicRef","$dynamicAnchor","type","enum","const","anyOf","oneOf","allOf","not","properties","required","additionalProperties","patternProperties","propertyNames","minProperties","maxProperties","items","prefixItems","additionalItems","minItems","maxItems","uniqueItems","contains","minContains","maxContains","minLength","maxLength","pattern","format","minimum","maximum","exclusiveMinimum","exclusiveMaximum","multipleOf","description","default","contentEncoding","contentMediaType","contentSchema","unevaluatedItems","unevaluatedProperties","if","then","else","dependentSchemas","dependentRequired","nullable","readOnly"]);function Hv($,U){let J=$.$schema;if(J==="https://json-schema.org/draft/2020-12/schema")return"draft-2020-12";if(J==="http://json-schema.org/draft-07/schema#")return"draft-7";if(J==="http://json-schema.org/draft-04/schema#")return"draft-4";return U??"draft-2020-12"}function Iv($,U){if(!$.startsWith("#"))throw Error("External $ref is not supported, only local refs (#/...) are allowed");let J=$.slice(1).split("/").filter(Boolean);if(J.length===0)return U.rootSchema;let X=U.version==="draft-2020-12"?"$defs":"definitions";if(J[0]===X){let z=J[1];if(!z||!U.defs[z])throw Error(`Reference not found: ${$}`);return U.defs[z]}throw Error(`Reference not found: ${$}`)}function bO($,U){if($.not!==void 0){if(typeof $.not==="object"&&Object.keys($.not).length===0)return k.never();throw Error("not is not supported in Zod (except { not: {} } for never)")}if($.unevaluatedItems!==void 0)throw Error("unevaluatedItems is not supported");if($.unevaluatedProperties!==void 0)throw Error("unevaluatedProperties is not supported");if($.if!==void 0||$.then!==void 0||$.else!==void 0)throw Error("Conditional schemas (if/then/else) are not supported");if($.dependentSchemas!==void 0||$.dependentRequired!==void 0)throw Error("dependentSchemas and dependentRequired are not supported");if($.$ref){let z=$.$ref;if(U.refs.has(z))return U.refs.get(z);if(U.processing.has(z))return k.lazy(()=>{if(!U.refs.has(z))throw Error(`Circular reference not resolved: ${z}`);return U.refs.get(z)});U.processing.add(z);let D=Iv(z,U),G=x$(D,U);return U.refs.set(z,G),U.processing.delete(z),G}if($.enum!==void 0){let z=$.enum;if(U.version==="openapi-3.0"&&$.nullable===!0&&z.length===1&&z[0]===null)return k.null();if(z.length===0)return k.never();if(z.length===1)return k.literal(z[0]);if(z.every((G)=>typeof G==="string"))return k.enum(z);let D=z.map((G)=>k.literal(G));if(D.length<2)return D[0];return k.union([D[0],D[1],...D.slice(2)])}if($.const!==void 0)return k.literal($.const);let J=$.type;if(Array.isArray(J)){let z=J.map((D)=>{let G={...$,type:D};return bO(G,U)});if(z.length===0)return k.never();if(z.length===1)return z[0];return k.union(z)}if(!J)return k.any();let X;switch(J){case"string":{let z=k.string();if($.format){let D=$.format;if(D==="email")z=z.check(k.email());else if(D==="uri"||D==="uri-reference")z=z.check(k.url());else if(D==="uuid"||D==="guid")z=z.check(k.uuid());else if(D==="date-time")z=z.check(k.iso.datetime());else if(D==="date")z=z.check(k.iso.date());else if(D==="time")z=z.check(k.iso.time());else if(D==="duration")z=z.check(k.iso.duration());else if(D==="ipv4")z=z.check(k.ipv4());else if(D==="ipv6")z=z.check(k.ipv6());else if(D==="mac")z=z.check(k.mac());else if(D==="cidr")z=z.check(k.cidrv4());else if(D==="cidr-v6")z=z.check(k.cidrv6());else if(D==="base64")z=z.check(k.base64());else if(D==="base64url")z=z.check(k.base64url());else if(D==="e164")z=z.check(k.e164());else if(D==="jwt")z=z.check(k.jwt());else if(D==="emoji")z=z.check(k.emoji());else if(D==="nanoid")z=z.check(k.nanoid());else if(D==="cuid")z=z.check(k.cuid());else if(D==="cuid2")z=z.check(k.cuid2());else if(D==="ulid")z=z.check(k.ulid());else if(D==="xid")z=z.check(k.xid());else if(D==="ksuid")z=z.check(k.ksuid())}if(typeof $.minLength==="number")z=z.min($.minLength);if(typeof $.maxLength==="number")z=z.max($.maxLength);if($.pattern)z=z.regex(new RegExp($.pattern));X=z;break}case"number":case"integer":{let z=J==="integer"?k.number().int():k.number();if(typeof $.minimum==="number")z=z.min($.minimum);if(typeof $.maximum==="number")z=z.max($.maximum);if(typeof $.exclusiveMinimum==="number")z=z.gt($.exclusiveMinimum);else if($.exclusiveMinimum===!0&&typeof $.minimum==="number")z=z.gt($.minimum);if(typeof $.exclusiveMaximum==="number")z=z.lt($.exclusiveMaximum);else if($.exclusiveMaximum===!0&&typeof $.maximum==="number")z=z.lt($.maximum);if(typeof $.multipleOf==="number")z=z.multipleOf($.multipleOf);X=z;break}case"boolean":{X=k.boolean();break}case"null":{X=k.null();break}case"object":{let z={},D=$.properties||{},G=new Set($.required||[]);for(let[W,Y]of Object.entries(D)){let H=x$(Y,U);z[W]=G.has(W)?H:H.optional()}if($.propertyNames){let W=x$($.propertyNames,U),Y=$.additionalProperties&&typeof $.additionalProperties==="object"?x$($.additionalProperties,U):k.any();if(Object.keys(z).length===0){X=k.record(W,Y);break}let H=k.object(z).passthrough(),I=k.looseRecord(W,Y);X=k.intersection(H,I);break}if($.patternProperties){let W=$.patternProperties,Y=Object.keys(W),H=[];for(let O of Y){let b=x$(W[O],U),q=k.string().regex(new RegExp(O));H.push(k.looseRecord(q,b))}let I=[];if(Object.keys(z).length>0)I.push(k.object(z).passthrough());if(I.push(...H),I.length===0)X=k.object({}).passthrough();else if(I.length===1)X=I[0];else{let O=k.intersection(I[0],I[1]);for(let b=2;b<I.length;b++)O=k.intersection(O,I[b]);X=O}break}let Q=k.object(z);if($.additionalProperties===!1)X=Q.strict();else if(typeof $.additionalProperties==="object")X=Q.catchall(x$($.additionalProperties,U));else X=Q.passthrough();break}case"array":{let{prefixItems:z,items:D}=$;if(z&&Array.isArray(z)){let G=z.map((W)=>x$(W,U)),Q=D&&typeof D==="object"&&!Array.isArray(D)?x$(D,U):void 0;if(Q)X=k.tuple(G).rest(Q);else X=k.tuple(G);if(typeof $.minItems==="number")X=X.check(k.minLength($.minItems));if(typeof $.maxItems==="number")X=X.check(k.maxLength($.maxItems))}else if(Array.isArray(D)){let G=D.map((W)=>x$(W,U)),Q=$.additionalItems&&typeof $.additionalItems==="object"?x$($.additionalItems,U):void 0;if(Q)X=k.tuple(G).rest(Q);else X=k.tuple(G);if(typeof $.minItems==="number")X=X.check(k.minLength($.minItems));if(typeof $.maxItems==="number")X=X.check(k.maxLength($.maxItems))}else if(D!==void 0){let G=x$(D,U),Q=k.array(G);if(typeof $.minItems==="number")Q=Q.min($.minItems);if(typeof $.maxItems==="number")Q=Q.max($.maxItems);X=Q}else X=k.array(k.any());break}default:throw Error(`Unsupported type: ${J}`)}if($.description)X=X.describe($.description);if($.default!==void 0)X=X.default($.default);return X}function x$($,U){if(typeof $==="boolean")return $?k.any():k.never();let J=bO($,U),X=$.type||$.enum!==void 0||$.const!==void 0;if($.anyOf&&Array.isArray($.anyOf)){let Q=$.anyOf.map((Y)=>x$(Y,U)),W=k.union(Q);J=X?k.intersection(J,W):W}if($.oneOf&&Array.isArray($.oneOf)){let Q=$.oneOf.map((Y)=>x$(Y,U)),W=k.xor(Q);J=X?k.intersection(J,W):W}if($.allOf&&Array.isArray($.allOf))if($.allOf.length===0)J=X?J:k.any();else{let Q=X?J:x$($.allOf[0],U),W=X?0:1;for(let Y=W;Y<$.allOf.length;Y++)Q=k.intersection(Q,x$($.allOf[Y],U));J=Q}if($.nullable===!0&&U.version==="openapi-3.0")J=k.nullable(J);if($.readOnly===!0)J=k.readonly(J);let z={},D=["$id","id","$comment","$anchor","$vocabulary","$dynamicRef","$dynamicAnchor"];for(let Q of D)if(Q in $)z[Q]=$[Q];let G=["contentEncoding","contentMediaType","contentSchema"];for(let Q of G)if(Q in $)z[Q]=$[Q];for(let Q of Object.keys($))if(!Yv.has(Q))z[Q]=$[Q];if(Object.keys(z).length>0)U.registry.add(J,z);return J}function BO($,U){if(typeof $==="boolean")return $?k.any():k.never();let J=Hv($,U?.defaultTarget),X=$.$defs||$.definitions||{},z={version:J,defs:X,refs:new Map,processing:new Set,rootSchema:$,registry:U?.registry??T$};return x$($,z)}var J7={};m4(J7,{string:()=>Ov,number:()=>bv,date:()=>wv,boolean:()=>Bv,bigint:()=>qv});function Ov($){return zW(i1,$)}function bv($){return YW(r1,$)}function Bv($){return HW(c1,$)}function qv($){return IW(d1,$)}function wv($){return OW(P0,$)}v$(tU());var z7="2025-11-25";var qO=[z7,"2025-06-18","2025-03-26","2024-11-05","2024-10-07"],w6="io.modelcontextprotocol/related-task",mD="2.0",S$=yD(($)=>$!==null&&(typeof $==="object"||typeof $==="function")),wO=q$([F(),Q$().int()]),VO=F(),sn=Z$({ttl:Q$().optional(),pollInterval:Q$().optional()}),Vv=g({ttl:Q$().optional()}),Lv=g({taskId:F()}),X7=Z$({progressToken:wO.optional(),[w6]:Lv.optional()}),X4=g({_meta:X7.optional()}),k0=X4.extend({task:Vv.optional()}),LO=($)=>k0.safeParse($).success,C$=g({method:F(),params:X4.loose().optional()}),Q4=g({_meta:X7.optional()}),W4=g({method:F(),params:Q4.loose().optional()}),g$=Z$({_meta:X7.optional()}),iD=q$([F(),Q$().int()]),NO=g({jsonrpc:f(mD),id:iD,...C$.shape}).strict(),D7=($)=>NO.safeParse($).success,AO=g({jsonrpc:f(mD),...W4.shape}).strict(),FO=($)=>AO.safeParse($).success,G7=g({jsonrpc:f(mD),id:iD,result:g$}).strict(),C0=($)=>G7.safeParse($).success;var m;(function($){$[$.ConnectionClosed=-32000]="ConnectionClosed",$[$.RequestTimeout=-32001]="RequestTimeout",$[$.ParseError=-32700]="ParseError",$[$.InvalidRequest=-32600]="InvalidRequest",$[$.MethodNotFound=-32601]="MethodNotFound",$[$.InvalidParams=-32602]="InvalidParams",$[$.InternalError=-32603]="InternalError",$[$.UrlElicitationRequired=-32042]="UrlElicitationRequired"})(m||(m={}));var Q7=g({jsonrpc:f(mD),id:iD.optional(),error:g({code:Q$().int(),message:F(),data:B$().optional()})}).strict();var KO=($)=>Q7.safeParse($).success;var vO=q$([NO,AO,G7,Q7]),en=q$([G7,Q7]),nD=g$.strict(),Nv=Q4.extend({requestId:iD.optional(),reason:F().optional()}),rD=W4.extend({method:f("notifications/cancelled"),params:Nv}),Av=g({src:F(),mimeType:F().optional(),sizes:s(F()).optional(),theme:k$(["light","dark"]).optional()}),g0=g({icons:s(Av).optional()}),t1=g({name:F(),title:F().optional()}),jO=t1.extend({...t1.shape,...g0.shape,version:F(),websiteUrl:F().optional(),description:F().optional()}),Fv=p1(g({applyDefaults:j$().optional()}),I$(F(),B$())),Kv=Z0(($)=>{if($&&typeof $==="object"&&!Array.isArray($)){if(Object.keys($).length===0)return{form:{}}}return $},p1(g({form:Fv.optional(),url:S$.optional()}),I$(F(),B$()).optional())),vv=Z$({list:S$.optional(),cancel:S$.optional(),requests:Z$({sampling:Z$({createMessage:S$.optional()}).optional(),elicitation:Z$({create:S$.optional()}).optional()}).optional()}),jv=Z$({list:S$.optional(),cancel:S$.optional(),requests:Z$({tools:Z$({call:S$.optional()}).optional()}).optional()}),Mv=g({experimental:I$(F(),S$).optional(),sampling:g({context:S$.optional(),tools:S$.optional()}).optional(),elicitation:Kv.optional(),roots:g({listChanged:j$().optional()}).optional(),tasks:vv.optional(),extensions:I$(F(),S$).optional()}),Pv=X4.extend({protocolVersion:F(),capabilities:Mv,clientInfo:jO}),W7=C$.extend({method:f("initialize"),params:Pv});var Sv=g({experimental:I$(F(),S$).optional(),logging:S$.optional(),completions:S$.optional(),prompts:g({listChanged:j$().optional()}).optional(),resources:g({subscribe:j$().optional(),listChanged:j$().optional()}).optional(),tools:g({listChanged:j$().optional()}).optional(),tasks:jv.optional(),extensions:I$(F(),S$).optional()}),Rv=g$.extend({protocolVersion:F(),capabilities:Sv,serverInfo:jO,instructions:F().optional()}),Y7=W4.extend({method:f("notifications/initialized"),params:Q4.optional()});var cD=C$.extend({method:f("ping"),params:X4.optional()}),_v=g({progress:Q$(),total:w$(Q$()),message:w$(F())}),Ev=g({...Q4.shape,..._v.shape,progressToken:wO}),dD=W4.extend({method:f("notifications/progress"),params:Ev}),Tv=X4.extend({cursor:VO.optional()}),u0=C$.extend({params:Tv.optional()}),x0=g$.extend({nextCursor:VO.optional()}),Zv=k$(["working","input_required","completed","failed","cancelled"]),f0=g({taskId:F(),status:Zv,ttl:q$([Q$(),M0()]),createdAt:F(),lastUpdatedAt:F(),pollInterval:w$(Q$()),statusMessage:w$(F())}),a1=g$.extend({task:f0}),kv=Q4.merge(f0),y0=W4.extend({method:f("notifications/tasks/status"),params:kv}),pD=C$.extend({method:f("tasks/get"),params:X4.extend({taskId:F()})}),oD=g$.merge(f0),tD=C$.extend({method:f("tasks/result"),params:X4.extend({taskId:F()})}),$r=g$.loose(),aD=u0.extend({method:f("tasks/list")}),sD=x0.extend({tasks:s(f0)}),eD=C$.extend({method:f("tasks/cancel"),params:X4.extend({taskId:F()})}),MO=g$.merge(f0),PO=g({uri:F(),mimeType:w$(F()),_meta:I$(F(),B$()).optional()}),SO=PO.extend({text:F()}),H7=F().refine(($)=>{try{return atob($),!0}catch{return!1}},{message:"Invalid Base64 string"}),RO=PO.extend({blob:H7}),l0=k$(["user","assistant"]),s1=g({audience:s(l0).optional(),priority:Q$().min(0).max(1).optional(),lastModified:q6.datetime({offset:!0}).optional()}),_O=g({...t1.shape,...g0.shape,uri:F(),description:w$(F()),mimeType:w$(F()),size:w$(Q$()),annotations:s1.optional(),_meta:w$(Z$({}))}),Cv=g({...t1.shape,...g0.shape,uriTemplate:F(),description:w$(F()),mimeType:w$(F()),annotations:s1.optional(),_meta:w$(Z$({}))}),$9=u0.extend({method:f("resources/list")}),gv=x0.extend({resources:s(_O)}),U9=u0.extend({method:f("resources/templates/list")}),uv=x0.extend({resourceTemplates:s(Cv)}),I7=X4.extend({uri:F()}),xv=I7,J9=C$.extend({method:f("resources/read"),params:xv}),fv=g$.extend({contents:s(q$([SO,RO]))}),yv=W4.extend({method:f("notifications/resources/list_changed"),params:Q4.optional()}),lv=I7,hv=C$.extend({method:f("resources/subscribe"),params:lv}),mv=I7,iv=C$.extend({method:f("resources/unsubscribe"),params:mv}),nv=Q4.extend({uri:F()}),rv=W4.extend({method:f("notifications/resources/updated"),params:nv}),cv=g({name:F(),description:w$(F()),required:w$(j$())}),dv=g({...t1.shape,...g0.shape,description:w$(F()),arguments:w$(s(cv)),_meta:w$(Z$({}))}),z9=u0.extend({method:f("prompts/list")}),pv=x0.extend({prompts:s(dv)}),ov=X4.extend({name:F(),arguments:I$(F(),F()).optional()}),X9=C$.extend({method:f("prompts/get"),params:ov}),O7=g({type:f("text"),text:F(),annotations:s1.optional(),_meta:I$(F(),B$()).optional()}),b7=g({type:f("image"),data:H7,mimeType:F(),annotations:s1.optional(),_meta:I$(F(),B$()).optional()}),B7=g({type:f("audio"),data:H7,mimeType:F(),annotations:s1.optional(),_meta:I$(F(),B$()).optional()}),tv=g({type:f("tool_use"),name:F(),id:F(),input:I$(F(),B$()),_meta:I$(F(),B$()).optional()}),av=g({type:f("resource"),resource:q$([SO,RO]),annotations:s1.optional(),_meta:I$(F(),B$()).optional()}),sv=_O.extend({type:f("resource_link")}),q7=q$([O7,b7,B7,sv,av]),ev=g({role:l0,content:q7}),$j=g$.extend({description:F().optional(),messages:s(ev)}),Uj=W4.extend({method:f("notifications/prompts/list_changed"),params:Q4.optional()}),Jj=g({title:F().optional(),readOnlyHint:j$().optional(),destructiveHint:j$().optional(),idempotentHint:j$().optional(),openWorldHint:j$().optional()}),zj=g({taskSupport:k$(["required","optional","forbidden"]).optional()}),EO=g({...t1.shape,...g0.shape,description:F().optional(),inputSchema:g({type:f("object"),properties:I$(F(),S$).optional(),required:s(F()).optional()}).catchall(B$()),outputSchema:g({type:f("object"),properties:I$(F(),S$).optional(),required:s(F()).optional()}).catchall(B$()).optional(),annotations:Jj.optional(),execution:zj.optional(),_meta:I$(F(),B$()).optional()}),D9=u0.extend({method:f("tools/list")}),Xj=x0.extend({tools:s(EO)}),G9=g$.extend({content:s(q7).default([]),structuredContent:I$(F(),B$()).optional(),isError:j$().optional()}),Ur=G9.or(g$.extend({toolResult:B$()})),Dj=k0.extend({name:F(),arguments:I$(F(),B$()).optional()}),e1=C$.extend({method:f("tools/call"),params:Dj}),Gj=W4.extend({method:f("notifications/tools/list_changed"),params:Q4.optional()}),Jr=g({autoRefresh:j$().default(!0),debounceMs:Q$().int().nonnegative().default(300)}),h0=k$(["debug","info","notice","warning","error","critical","alert","emergency"]),Qj=X4.extend({level:h0}),w7=C$.extend({method:f("logging/setLevel"),params:Qj}),Wj=Q4.extend({level:h0,logger:F().optional(),data:B$()}),Yj=W4.extend({method:f("notifications/message"),params:Wj}),Hj=g({name:F().optional()}),Ij=g({hints:s(Hj).optional(),costPriority:Q$().min(0).max(1).optional(),speedPriority:Q$().min(0).max(1).optional(),intelligencePriority:Q$().min(0).max(1).optional()}),Oj=g({mode:k$(["auto","required","none"]).optional()}),bj=g({type:f("tool_result"),toolUseId:F().describe("The unique identifier for the corresponding tool call."),content:s(q7).default([]),structuredContent:g({}).loose().optional(),isError:j$().optional(),_meta:I$(F(),B$()).optional()}),Bj=_0("type",[O7,b7,B7]),hD=_0("type",[O7,b7,B7,tv,bj]),qj=g({role:l0,content:q$([hD,s(hD)]),_meta:I$(F(),B$()).optional()}),wj=k0.extend({messages:s(qj),modelPreferences:Ij.optional(),systemPrompt:F().optional(),includeContext:k$(["none","thisServer","allServers"]).optional(),temperature:Q$().optional(),maxTokens:Q$().int(),stopSequences:s(F()).optional(),metadata:S$.optional(),tools:s(EO).optional(),toolChoice:Oj.optional()}),Vj=C$.extend({method:f("sampling/createMessage"),params:wj}),m0=g$.extend({model:F(),stopReason:w$(k$(["endTurn","stopSequence","maxTokens"]).or(F())),role:l0,content:Bj}),V7=g$.extend({model:F(),stopReason:w$(k$(["endTurn","stopSequence","maxTokens","toolUse"]).or(F())),role:l0,content:q$([hD,s(hD)])}),Lj=g({type:f("boolean"),title:F().optional(),description:F().optional(),default:j$().optional()}),Nj=g({type:f("string"),title:F().optional(),description:F().optional(),minLength:Q$().optional(),maxLength:Q$().optional(),format:k$(["email","uri","date","date-time"]).optional(),default:F().optional()}),Aj=g({type:k$(["number","integer"]),title:F().optional(),description:F().optional(),minimum:Q$().optional(),maximum:Q$().optional(),default:Q$().optional()}),Fj=g({type:f("string"),title:F().optional(),description:F().optional(),enum:s(F()),default:F().optional()}),Kj=g({type:f("string"),title:F().optional(),description:F().optional(),oneOf:s(g({const:F(),title:F()})),default:F().optional()}),vj=g({type:f("string"),title:F().optional(),description:F().optional(),enum:s(F()),enumNames:s(F()).optional(),default:F().optional()}),jj=q$([Fj,Kj]),Mj=g({type:f("array"),title:F().optional(),description:F().optional(),minItems:Q$().optional(),maxItems:Q$().optional(),items:g({type:f("string"),enum:s(F())}),default:s(F()).optional()}),Pj=g({type:f("array"),title:F().optional(),description:F().optional(),minItems:Q$().optional(),maxItems:Q$().optional(),items:g({anyOf:s(g({const:F(),title:F()}))}),default:s(F()).optional()}),Sj=q$([Mj,Pj]),Rj=q$([vj,jj,Sj]),_j=q$([Rj,Lj,Nj,Aj]),Ej=k0.extend({mode:f("form").optional(),message:F(),requestedSchema:g({type:f("object"),properties:I$(F(),_j),required:s(F()).optional()})}),Tj=k0.extend({mode:f("url"),message:F(),elicitationId:F(),url:F().url()}),Zj=q$([Ej,Tj]),kj=C$.extend({method:f("elicitation/create"),params:Zj}),Cj=Q4.extend({elicitationId:F()}),gj=W4.extend({method:f("notifications/elicitation/complete"),params:Cj}),$U=g$.extend({action:k$(["accept","decline","cancel"]),content:Z0(($)=>$===null?void 0:$,I$(F(),q$([F(),Q$(),j$(),s(F())])).optional())}),uj=g({type:f("ref/resource"),uri:F()});var xj=g({type:f("ref/prompt"),name:F()}),fj=X4.extend({ref:q$([xj,uj]),argument:g({name:F(),value:F()}),context:g({arguments:I$(F(),F()).optional()}).optional()}),Q9=C$.extend({method:f("completion/complete"),params:fj});function TO($){if($.params.ref.type!=="ref/prompt")throw TypeError(`Expected CompleteRequestPrompt, but got ${$.params.ref.type}`)}function ZO($){if($.params.ref.type!=="ref/resource")throw TypeError(`Expected CompleteRequestResourceTemplate, but got ${$.params.ref.type}`)}var yj=g$.extend({completion:Z$({values:s(F()).max(100),total:w$(Q$().int()),hasMore:w$(j$())})}),lj=g({uri:F().startsWith("file://"),name:F().optional(),_meta:I$(F(),B$()).optional()}),hj=C$.extend({method:f("roots/list"),params:X4.optional()}),L7=g$.extend({roots:s(lj)}),mj=W4.extend({method:f("notifications/roots/list_changed"),params:Q4.optional()}),zr=q$([cD,W7,Q9,w7,X9,z9,$9,U9,J9,hv,iv,e1,D9,pD,tD,aD,eD]),Xr=q$([rD,dD,Y7,mj,y0]),Dr=q$([nD,m0,V7,$U,L7,oD,sD,a1]),Gr=q$([cD,Vj,kj,hj,pD,tD,aD,eD]),Qr=q$([rD,dD,Yj,rv,yv,Gj,Uj,y0,gj]),Wr=q$([nD,Rv,yj,$j,pv,gv,uv,fv,G9,Xj,oD,sD,a1]);class y extends Error{constructor($,U,J){super(`MCP error ${$}: ${U}`);this.code=$,this.data=J,this.name="McpError"}static fromError($,U,J){if($===m.UrlElicitationRequired&&J){let X=J;if(X.elicitations)return new kO(X.elicitations,U)}return new y($,U,J)}}class kO extends y{constructor($,U=`URL elicitation${$.length>1?"s":""} required`){super(m.UrlElicitationRequired,U,{elicitations:$})}get elicitations(){return this.data?.elicitations??[]}}class N7{append($){this._buffer=this._buffer?Buffer.concat([this._buffer,$]):$}readMessage(){if(!this._buffer)return null;let $=this._buffer.indexOf(`
188
188
  `);if($===-1)return null;let U=this._buffer.toString("utf8",0,$).replace(/\r$/,"");return this._buffer=this._buffer.subarray($+1),ij(U)}clear(){this._buffer=void 0}}function ij($){return vO.parse(JSON.parse($))}function CO($){return JSON.stringify($)+`
189
- `}class A7{constructor($=gO.stdin,U=gO.stdout){this._stdin=$,this._stdout=U,this._readBuffer=new N7,this._started=!1,this._ondata=(J)=>{this._readBuffer.append(J),this.processReadBuffer()},this._onerror=(J)=>{this.onerror?.(J)}}async start(){if(this._started)throw Error("StdioServerTransport already started! If using Server class, note that connect() calls start() automatically.");this._started=!0,this._stdin.on("data",this._ondata),this._stdin.on("error",this._onerror)}processReadBuffer(){while(!0)try{let $=this._readBuffer.readMessage();if($===null)break;this.onmessage?.($)}catch($){this.onerror?.($)}}async close(){if(this._stdin.off("data",this._ondata),this._stdin.off("error",this._onerror),this._stdin.listenerCount("data")===0)this._stdin.pause();this._readBuffer.clear(),this.onclose?.()}send($){return new Promise((U)=>{let J=CO($);if(this._stdout.write(J))U();else this._stdout.once("drain",U)})}}import{existsSync as yZ,readFileSync as lZ}from"fs";var UZ=N5(),JZ=GJ(),zZ=z5(),T5=QJ(),XZ=r0(),M6=X$(),DZ=A6(),GZ=P$(),QZ=K6(),WZ=v6(),Zc=r9(),YZ=R5(),HZ=_5(),IZ=E5(),p9=mB(),iB=i0();var OZ=UZ.Composer,bZ=JZ.Document,BZ=zZ.Schema,qZ=T5.YAMLError,wZ=T5.YAMLParseError,VZ=T5.YAMLWarning,LZ=XZ.Alias,NZ=M6.isAlias,AZ=M6.isCollection,FZ=M6.isDocument,KZ=M6.isMap,vZ=M6.isNode,jZ=M6.isPair,MZ=M6.isScalar,PZ=M6.isSeq,SZ=DZ.Pair,RZ=GZ.Scalar,_Z=QZ.YAMLMap,EZ=WZ.YAMLSeq;var TZ=YZ.Lexer,ZZ=HZ.LineCounter,kZ=IZ.Parser,Z5=p9.parse,CZ=p9.parseAllDocuments,gZ=p9.parseDocument,uZ=p9.stringify,xZ=iB.visit,fZ=iB.visitAsync;var I4={server:{port:Number.parseInt(process.env.WEBHOOK_PORT??"9443",10)||9443,debounce_ms:Number.parseInt(process.env.REVIEW_DEBOUNCE_MS??"30000",10)||30000,cooldown_ms:300000,max_events_per_window:50,main_branches:["main","master"]},webhooks:{allowed_authors:[],allowed_events:[],allowed_repos:[]},behavior:{worktrees:{mode:"temp"},on_ci_failure_main:{instruction:["Main branch is broken. Act immediately \u2014 no confirmation needed.","Use the Agent tool NOW to spawn a subagent with these instructions:","Diagnose and fix the broken CI on main in {repo}:",'1. Call fetch_workflow_logs("{run_url}") to read the failure',"2. Identify the failing step and root cause","3. Apply a targeted fix in the codebase","4. Commit and push to restore main","5. Confirm CI is green."].join(`
189
+ `}class A7{constructor($=gO.stdin,U=gO.stdout){this._stdin=$,this._stdout=U,this._readBuffer=new N7,this._started=!1,this._ondata=(J)=>{this._readBuffer.append(J),this.processReadBuffer()},this._onerror=(J)=>{this.onerror?.(J)}}async start(){if(this._started)throw Error("StdioServerTransport already started! If using Server class, note that connect() calls start() automatically.");this._started=!0,this._stdin.on("data",this._ondata),this._stdin.on("error",this._onerror)}processReadBuffer(){while(!0)try{let $=this._readBuffer.readMessage();if($===null)break;this.onmessage?.($)}catch($){this.onerror?.($)}}async close(){if(this._stdin.off("data",this._ondata),this._stdin.off("error",this._onerror),this._stdin.listenerCount("data")===0)this._stdin.pause();this._readBuffer.clear(),this.onclose?.()}send($){return new Promise((U)=>{let J=CO($);if(this._stdout.write(J))U();else this._stdout.once("drain",U)})}}import{existsSync as yZ,readFileSync as lZ}from"fs";var UZ=N5(),JZ=GJ(),zZ=z5(),T5=QJ(),XZ=r0(),M6=X$(),DZ=A6(),GZ=P$(),QZ=K6(),WZ=v6(),Zc=r9(),YZ=R5(),HZ=_5(),IZ=E5(),p9=mB(),iB=i0();var OZ=UZ.Composer,bZ=JZ.Document,BZ=zZ.Schema,qZ=T5.YAMLError,wZ=T5.YAMLParseError,VZ=T5.YAMLWarning,LZ=XZ.Alias,NZ=M6.isAlias,AZ=M6.isCollection,FZ=M6.isDocument,KZ=M6.isMap,vZ=M6.isNode,jZ=M6.isPair,MZ=M6.isScalar,PZ=M6.isSeq,SZ=DZ.Pair,RZ=GZ.Scalar,_Z=QZ.YAMLMap,EZ=WZ.YAMLSeq;var TZ=YZ.Lexer,ZZ=HZ.LineCounter,kZ=IZ.Parser,Z5=p9.parse,CZ=p9.parseAllDocuments,gZ=p9.parseDocument,uZ=p9.stringify,xZ=iB.visit,fZ=iB.visitAsync;var I4={server:{port:Number.parseInt(process.env.WEBHOOK_PORT??"9443",10)||9443,debounce_ms:Number.parseInt(process.env.REVIEW_DEBOUNCE_MS??"30000",10)||30000,cooldown_ms:300000,max_events_per_window:50,main_branches:["main","master"],claim_ttl_ms:600000},webhooks:{allowed_authors:[],allowed_events:[],allowed_repos:[]},behavior:{worktrees:{mode:"temp"},on_ci_failure_main:{instruction:["Main branch is broken. Act immediately \u2014 no confirmation needed.","Use the Agent tool NOW to spawn a subagent with these instructions:","Diagnose and fix the broken CI on main in {repo}:",'1. Call fetch_workflow_logs("{run_url}") to read the failure',"2. Identify the failing step and root cause","3. Apply a targeted fix in the codebase","4. Commit and push to restore main","5. Confirm CI is green."].join(`
190
190
  `)},on_ci_failure_branch:{instruction:["Act immediately \u2014 no confirmation needed.","Use the Agent tool NOW to spawn a subagent with these instructions:","Investigate the CI failure on branch {branch} in {repo}:",'1. Call fetch_workflow_logs("{run_url}") to read the failure',"2. Identify the root cause and fix it","3. Push the fix to the branch."].join(`
191
191
  `)},on_pr_review:{require_plan:!0,skill:"pr-comment-response",use_worktree:!1,instruction:["{worktree_preamble}MANDATORY: Enter plan mode first.","1. Read every linked thread and summarise what each one asks for","2. Draft a plan listing the file + change for each thread","3. Only after the plan is complete, use the {skill} skill to execute","","Do NOT apply any fix before the plan step is done.","","Execution phase:","1. For each comment thread above, open the link and read full context","2. Code comments: apply the fix, commit","3. Questions / style: reply inline with a concise explanation","4. Use gh-pr-reply.sh --batch to post all replies in one shot"].join(`
192
192
  `)},on_merge_conflict:{instruction:["PR #{pr_number} has merge conflicts with {base_branch}. Act immediately \u2014 no confirmation needed.","","Use the Agent tool NOW to spawn a subagent with these instructions:","Resolve merge conflicts for PR #{pr_number} in {repo}:","{worktree_steps}"].join(`
@@ -211,7 +211,7 @@ ${H}`);return{summary:I.join(`
211
211
  `),meta:{source:"github-ci",event:$,action:U.action??"",repo:X,status:D,job_name:z.name,job_url:z.html_url}}}if($==="check_suite"||$==="check_run"){let z=$==="check_suite"?U.check_suite:U.check_run;if(!z||U.action!=="completed")return W$(`[skip] ${$}: action=${U.action??"none"} (only "completed" acts)`),null;if(z.conclusion!=="failure"){let W="name"in z?z.name??"?":z.app?.name??"?";return W$(`[skip] ${$} "${W}" on ${X}: conclusion=${z.conclusion} (only "failure" notifies)`),null}let D=z.conclusion??"unknown",G=Q3(z.conclusion),Q="name"in z?z.name:z.app?.name??"Check";return{summary:`${G} ${$} ${D}: ${Q} on ${X}`,meta:{source:"github-ci",event:$,status:D,repo:X}}}return{summary:`GitHub event "${$}" (action: ${U.action??"none"}) on ${X}`,meta:{source:"github-ci",event:$,action:U.action??"",repo:X}}}function PA($,U=I4){let J=$.pull_request;if(!J)return null;let X=$.repository?.full_name??"unknown",z=J.mergeable_state,D=_$(J.title??"",200),G=_$(J.head.ref??"",100),Q=_$(J.base.ref??"",100),W={repo:X,pr_number:String(J.number),pr_title:D,pr_url:J.html_url,head_branch:G,base_branch:Q},Y={source:"github-ci",event:"pull_request",action:$.action??"",repo:X,pr_number:String(J.number),pr_title:D,head_branch:G,base_branch:Q,pr_url:J.html_url,mergeable_state:z,sender:$.sender?.login??""},H=U.behavior.worktrees.mode;if(z==="dirty"){let I=k5(H,W,!0),O=bJ(U.behavior.on_merge_conflict.instruction,{...W,worktree_steps:I});return{summary:[`\u26A0\uFE0F MERGE CONFLICT \u2014 PR #${J.number}: "${D}"`,`Repo: ${X} | Branch: ${G} \u2192 ${Q}`,`URL: ${J.html_url}`,"",O].join(`
212
212
  `),meta:Y}}if(z==="behind"){let I=k5(H,W,!1),O=bJ(U.behavior.on_branch_behind.instruction,{...W,worktree_steps:I});return{summary:[`\u2B07\uFE0F BRANCH BEHIND BASE \u2014 PR #${J.number}: "${D}"`,`Repo: ${X} | Branch: ${G} \u2192 ${Q}`,`URL: ${J.html_url}`,"",O].join(`
213
213
  `),meta:Y}}return W$(`[skip] pull_request PR #${J.number} on ${X}: mergeable_state=${z} (only "dirty" or "behind" notifies)`),null}function SA($){return{Authorization:`Bearer ${$}`,Accept:"application/vnd.github+json","X-GitHub-Api-Version":"2022-11-28"}}async function vA($,U,J){let X=await Uz(`https://api.github.com/repos/${$}/pulls/${U}`,{headers:SA(J)});if(!X.ok)return"unknown";return(await X.json()).mergeable_state}async function Um($,U,J,X,z=I4){await new Promise((Q)=>setTimeout(Q,4000));let D=await Uz(`https://api.github.com/repos/${$}/pulls?state=open&base=${U}&per_page=20`,{headers:SA(J)},15000);if(!D.ok){W$(`PR list fetch failed: ${D.status}`);return}let G=await D.json();for(let Q of G){if(!EA(Q.user.login,z.webhooks.allowed_authors)){if(!await TA($,Q.number,J,z.webhooks.allowed_authors)){W$(`PR #${Q.number} author "${Q.user.login}" not in allowed_authors \u2014 skipping`);continue}}let W=await vA($,Q.number,J);if(W==="unknown")await new Promise((H)=>setTimeout(H,5000)),W=await vA($,Q.number,J);if(W!=="dirty"&&W!=="behind")continue;let Y=PA({action:"synchronize",pull_request:{number:Q.number,title:Q.title,state:"open",html_url:Q.html_url,head:{ref:Q.head.ref,sha:""},base:{ref:Q.base.ref,sha:""},mergeable:W!=="dirty",mergeable_state:W,user:Q.user},repository:{full_name:$},sender:Q.user},z);if(!Y)continue;W$(`PR #${Q.number} is ${W} \u2014 notifying Claude`);try{await X(Y,{repo:$,branch:Q.head.ref})}catch(H){W$(`Failed to notify for PR #${Q.number}:`,H)}}}function Jm($,U,J){let X=J.repository?.full_name??"unknown";if($==="pull_request_review"&&U==="submitted"){let{review:z,pull_request:D}=J;if(!z||!D||z.state==="pending")return null;return{reviewEvent:{type:"review",reviewer:z.user.login,state:z.state,body:_$(z.body??"(no review body)"),url:z.html_url},prMeta:{prNumber:D.number,prTitle:_$(D.title??"",200),prUrl:D.html_url,repo:X}}}if($==="pull_request_review_comment"&&U==="created"){let{comment:z,pull_request:D}=J;if(!z||!D)return null;return{reviewEvent:{type:"review_comment",reviewer:z.user.login,body:_$(z.body),url:z.html_url,path:z.path},prMeta:{prNumber:D.number,prTitle:_$(D.title??"",200),prUrl:D.html_url,repo:X}}}if($==="issue_comment"&&U==="created"){let{comment:z,issue:D}=J;if(!z||!D?.pull_request)return null;return{reviewEvent:{type:"issue_comment",reviewer:z.user.login,body:_$(z.body),url:z.html_url},prMeta:{prNumber:D.number,prTitle:_$(D.title??"",200),prUrl:D.html_url,repo:X}}}if($==="pull_request_review_thread"&&U==="unresolved"){let{thread:z,pull_request:D}=J,G=z?.comments[0];if(!z||!D||!G)return null;return{reviewEvent:{type:"unresolved_thread",reviewer:J.sender?.login??G.user.login,body:_$(G.body),url:G.html_url,path:G.path},prMeta:{prNumber:D.number,prTitle:_$(D.title??"",200),prUrl:D.html_url,repo:X}}}return null}function zm($,U){if($==="ping")return!1;if($==="pull_request"){let X=U.pull_request?.mergeable_state;return["opened","synchronize","reopened"].includes(U.action??"")&&(X==="dirty"||X==="behind")}if($==="push")return!0;return["workflow_run","workflow_job","check_suite","check_run"].includes($)&&U.action==="completed"}function RA(){let $=new G3({name:"github-ci-channel",version:"1.0.0"},{capabilities:{experimental:{"claude/channel":{}}}});return $.tool("fetch_workflow_logs","Fetch logs for a GitHub Actions workflow run. Use when a CI failure notification arrives and you need to diagnose the root cause.",{run_url:lD.string().describe("GitHub Actions run URL (e.g. https://github.com/owner/repo/actions/runs/12345)")},async({run_url:U})=>{let J=process.env.GITHUB_TOKEN;if(!J)return{content:[{type:"text",text:"GITHUB_TOKEN not set \u2014 cannot fetch logs."}]};let X=U.match(/github\.com\/([^/]+)\/([^/]+)\/actions\/runs\/(\d+)/);if(!X)return{content:[{type:"text",text:`Could not parse run URL: ${U}`}]};let[,z,D,G]=X;try{let Q=await Uz(`https://api.github.com/repos/${z}/${D}/actions/runs/${G}/logs`,{headers:{Authorization:`Bearer ${J}`,Accept:"application/vnd.github+json"},redirect:"manual"},60000),W;if(Q.status===302||Q.status===301){let I=Q.headers.get("location");if(!I)return{content:[{type:"text",text:"GitHub redirected without a location header"}]};W=await Uz(I,{},60000)}else W=Q;if(!W.ok)return{content:[{type:"text",text:`GitHub API error: ${W.status} ${W.statusText}`}]};let Y=await W.text();return{content:[{type:"text",text:Y.length>KA?`...(truncated)
214
- ${Y.slice(-KA)}`:Y}]}}catch(Q){return{content:[{type:"text",text:`Fetch failed: ${String(Q)}`}]}}}),$}async function _A($,U){await $.server.notification({method:"notifications/claude/channel",params:{channel:"github-ci",content:U.summary,meta:U.meta}}),W$(`Pushed to Claude: ${U.meta.status??U.meta.mergeable_state} on ${U.meta.repo}`)}function jA($,U){let J=U.repository?.full_name??"unknown";if($==="workflow_run")return{repo:J,branch:U.workflow_run?.head_branch??null};if($==="pull_request"||MA.has($))return{repo:J,branch:U.pull_request?.head.ref??null};return{repo:J,branch:null}}function Xm($,U,J){if(J.webhooks.allowed_events.length>0&&!J.webhooks.allowed_events.includes($))return W$(`Skipping event "${$}" \u2014 not in allowed_events`),new Response("Skipped",{status:200});if(J.webhooks.allowed_repos.length>0&&U&&!J.webhooks.allowed_repos.includes(U))return W$(`Skipping repo "${U}" \u2014 not in allowed_repos`),new Response("Skipped",{status:200});return null}function EA($,U){return U.filter((J)=>!J.includes("@")).includes($)}async function TA($,U,J,X){let z=X.filter((W)=>W.includes("@")).map((W)=>W.toLowerCase());if(z.length===0)return!1;let D=await Uz(`https://api.github.com/repos/${$}/pulls/${U}/commits`,{headers:{Authorization:`Bearer ${J}`,Accept:"application/vnd.github+json","X-GitHub-Api-Version":"2022-11-28"}},1e4);if(!D.ok)return!1;let G=await D.json(),Q=/^Co-Authored-By:.*<([^>]+)>/gim;for(let{commit:W}of G)for(let Y of W.message.matchAll(Q))if(z.includes(Y[1]?.toLowerCase()??""))return!0;return!1}async function Dm($,U){let J=$.pull_request?.user.login??"";if(EA(J,U))return!0;let X=$.pull_request?.number,z=$.repository?.full_name??"",D=process.env.GITHUB_TOKEN;if(D&&X!==void 0)return TA(z,X,D,U);return!1}function Gm($,U){let J="";if($==="pull_request_review")J=` (review.state=${U.review?.state??"?"}; need submitted+non-pending)`;else if($==="issue_comment")J=` (issue.pull_request present: ${!!U.issue?.pull_request}; need PR comment, not issue comment)`;W$(`[skip] ${$}/${U.action??"?"} \u2014 parseReviewWebhookPayload returned null${J}`)}function ZA($,U=I4){return Bun.serve({port:U.server.port,async fetch(J){if(J.method==="GET")return new Response(JSON.stringify({status:"ok",server:"github-ci-channel"}),{headers:{"Content-Type":"application/json"}});if(J.method!=="POST")return new Response("Method not allowed",{status:405});let X=await J.text();if(nh(X))return W$("Rejected oversized payload"),new Response("Payload too large",{status:413});let z=J.headers.get("x-hub-signature-256");if(!th(X,z))return W$("Signature verification failed"),new Response("Unauthorized",{status:401});let D=J.headers.get("x-github-event")??"unknown",G=J.headers.get("x-github-delivery")??"";if(ch(G))return W$(`Duplicate delivery ${G} \u2014 skipping`),new Response("OK",{status:200});if(D==="ping")return W$("Ping received \u2014 webhook configured successfully"),new Response("pong",{status:200});let Q;try{Q=JSON.parse(X)}catch{return new Response("Invalid JSON",{status:400})}let W=Q.repository?.full_name,Y=Xm(D,W,U);if(Y)return Y;if(W$(`Received: ${D} (${Q.action??"no action"}) delivery=${G}`),D==="push"){let O=Q,b=O.ref.replace("refs/heads/",""),q=process.env.GITHUB_TOKEN,B=new Set(U.server.main_branches);if(!B.has(b))W$(`[skip] push to "${b}" \u2014 not a main branch (${[...B].join(", ")}) \u2014 PR checks skipped`);else if(!q)W$(`[skip] push to "${b}" \u2014 GITHUB_TOKEN not set \u2014 PR checks skipped`);else W$(`Push to ${b} \u2014 checking open PRs for merge status`),Um(O.repository.full_name,b,q,$,U);return new Response("OK",{status:200})}if(MA.has(D)){let O=Jm(D,Q.action,Q);if(O){let{reviewEvent:b,prMeta:q}=O,w=`${q.repo}/${q.prNumber}`,L=jA(D,Q);if(!ph(w,q,b,async(K,T)=>{let j=oh(K,T,U);try{await $(j,L),W$(`PR review notification sent for PR #${T.prNumber} (${K.length} event(s))`)}catch(h){W$(`Failed to send PR review notification for PR #${T.prNumber}:`,h)}},{debounceMs:U.server.debounce_ms,cooldownMs:U.server.cooldown_ms,maxEvents:U.server.max_events_per_window}))W$(`PR #${q.prNumber} review event discarded (cooldown active)`)}else Gm(D,Q);return new Response("OK",{status:200})}if(!zm(D,Q))return W$(`Skipping non-actionable event: ${D}/${Q.action??""}`),new Response("Skipped",{status:200});if(D==="pull_request"&&!await Dm(Q,U.webhooks.allowed_authors))return W$(`Skipping pull_request \u2014 PR author "${Q.pull_request?.user.login}" not in allowed_authors`),new Response("Skipped",{status:200});let H=D==="pull_request"?PA(Q,U):$m(D,Q,U);if(!H)return W$(`[skip] ${D}/${Q.action??"?"}: parse returned null (see reason above)`),new Response("OK",{status:200});let I=jA(D,Q);try{await $(H,I)}catch(O){return W$("Failed to send notification:",O),new Response("Notification failed",{status:500})}return new Response("OK",{status:200})}})}var b1=(...$)=>console.error("[github-ci]",...$);function Qm($){let U=$.indexOf("--config"),J=U!==-1?$[U+1]??null:null,X=[];for(let z=0;z<$.length;z++)if($[z]==="--author"&&$[z+1])X.push($[z+1]??"");return{configPath:J,authors:X}}var{configPath:W3,authors:kA}=Qm(process.argv.slice(2)),TU=I4;if(W3)try{TU=cB(W3),b1(`Loaded config from ${W3}`)}catch($){b1(`ERROR: Failed to load config: ${$}`),process.exit(1)}if(kA.length>0)TU.webhooks.allowed_authors=[...new Set([...TU.webhooks.allowed_authors,...kA])];if(TU.webhooks.allowed_authors.length===0)b1("ERROR: webhooks.allowed_authors is required and must not be empty.",`
214
+ ${Y.slice(-KA)}`:Y}]}}catch(Q){return{content:[{type:"text",text:`Fetch failed: ${String(Q)}`}]}}}),$}async function _A($,U){await $.server.notification({method:"notifications/claude/channel",params:{channel:"github-ci",content:U.summary,meta:U.meta}}),W$(`Pushed to Claude: ${U.meta.event??U.meta.status??U.meta.mergeable_state} on ${U.meta.repo}`)}function jA($,U){let J=U.repository?.full_name??"unknown";if($==="workflow_run")return{repo:J,branch:U.workflow_run?.head_branch??null};if($==="pull_request"||MA.has($))return{repo:J,branch:U.pull_request?.head.ref??null};return{repo:J,branch:null}}function Xm($,U,J){if(J.webhooks.allowed_events.length>0&&!J.webhooks.allowed_events.includes($))return W$(`Skipping event "${$}" \u2014 not in allowed_events`),new Response("Skipped",{status:200});if(J.webhooks.allowed_repos.length>0&&U&&!J.webhooks.allowed_repos.includes(U))return W$(`Skipping repo "${U}" \u2014 not in allowed_repos`),new Response("Skipped",{status:200});return null}function EA($,U){return U.filter((J)=>!J.includes("@")).includes($)}async function TA($,U,J,X){let z=X.filter((W)=>W.includes("@")).map((W)=>W.toLowerCase());if(z.length===0)return!1;let D=await Uz(`https://api.github.com/repos/${$}/pulls/${U}/commits`,{headers:{Authorization:`Bearer ${J}`,Accept:"application/vnd.github+json","X-GitHub-Api-Version":"2022-11-28"}},1e4);if(!D.ok)return!1;let G=await D.json(),Q=/^Co-Authored-By:.*<([^>]+)>/gim;for(let{commit:W}of G)for(let Y of W.message.matchAll(Q))if(z.includes(Y[1]?.toLowerCase()??""))return!0;return!1}async function Dm($,U){let J=$.pull_request?.user.login??"";if(EA(J,U))return!0;let X=$.pull_request?.number,z=$.repository?.full_name??"",D=process.env.GITHUB_TOKEN;if(D&&X!==void 0)return TA(z,X,D,U);return!1}function Gm($,U){let J="";if($==="pull_request_review")J=` (review.state=${U.review?.state??"?"}; need submitted+non-pending)`;else if($==="issue_comment")J=` (issue.pull_request present: ${!!U.issue?.pull_request}; need PR comment, not issue comment)`;W$(`[skip] ${$}/${U.action??"?"} \u2014 parseReviewWebhookPayload returned null${J}`)}function ZA($,U=I4){return Bun.serve({port:U.server.port,async fetch(J){if(J.method==="GET")return new Response(JSON.stringify({status:"ok",server:"github-ci-channel"}),{headers:{"Content-Type":"application/json"}});if(J.method!=="POST")return new Response("Method not allowed",{status:405});let X=await J.text();if(nh(X))return W$("Rejected oversized payload"),new Response("Payload too large",{status:413});let z=J.headers.get("x-hub-signature-256");if(!th(X,z))return W$("Signature verification failed"),new Response("Unauthorized",{status:401});let D=J.headers.get("x-github-event")??"unknown",G=J.headers.get("x-github-delivery")??"";if(ch(G))return W$(`Duplicate delivery ${G} \u2014 skipping`),new Response("OK",{status:200});if(D==="ping")return W$("Ping received \u2014 webhook configured successfully"),new Response("pong",{status:200});let Q;try{Q=JSON.parse(X)}catch{return new Response("Invalid JSON",{status:400})}let W=Q.repository?.full_name,Y=Xm(D,W,U);if(Y)return Y;if(W$(`Received: ${D} (${Q.action??"no action"}) delivery=${G}`),D==="push"){let O=Q,b=O.ref.replace("refs/heads/",""),q=process.env.GITHUB_TOKEN,B=new Set(U.server.main_branches);if(!B.has(b))W$(`[skip] push to "${b}" \u2014 not a main branch (${[...B].join(", ")}) \u2014 PR checks skipped`);else if(!q)W$(`[skip] push to "${b}" \u2014 GITHUB_TOKEN not set \u2014 PR checks skipped`);else W$(`Push to ${b} \u2014 checking open PRs for merge status`),Um(O.repository.full_name,b,q,$,U);return new Response("OK",{status:200})}if(MA.has(D)){let O=Jm(D,Q.action,Q);if(O){let{reviewEvent:b,prMeta:q}=O,w=`${q.repo}/${q.prNumber}`,L=jA(D,Q);if(!ph(w,q,b,async(K,T)=>{let j=oh(K,T,U);try{await $(j,L),W$(`PR review notification sent for PR #${T.prNumber} (${K.length} event(s))`)}catch(h){W$(`Failed to send PR review notification for PR #${T.prNumber}:`,h)}},{debounceMs:U.server.debounce_ms,cooldownMs:U.server.cooldown_ms,maxEvents:U.server.max_events_per_window}))W$(`PR #${q.prNumber} review event discarded (cooldown active)`)}else Gm(D,Q);return new Response("OK",{status:200})}if(!zm(D,Q))return W$(`Skipping non-actionable event: ${D}/${Q.action??""}`),new Response("Skipped",{status:200});if(D==="pull_request"&&!await Dm(Q,U.webhooks.allowed_authors))return W$(`Skipping pull_request \u2014 PR author "${Q.pull_request?.user.login}" not in allowed_authors`),new Response("Skipped",{status:200});let H=D==="pull_request"?PA(Q,U):$m(D,Q,U);if(!H)return W$(`[skip] ${D}/${Q.action??"?"}: parse returned null (see reason above)`),new Response("OK",{status:200});let I=jA(D,Q);try{await $(H,I)}catch(O){return W$("Failed to send notification:",O),new Response("Notification failed",{status:500})}return new Response("OK",{status:200})}})}var b1=(...$)=>console.error("[github-ci]",...$);function Qm($){let U=$.indexOf("--config"),J=U!==-1?$[U+1]??null:null,X=[];for(let z=0;z<$.length;z++)if($[z]==="--author"&&$[z+1])X.push($[z+1]??"");return{configPath:J,authors:X}}var{configPath:W3,authors:kA}=Qm(process.argv.slice(2)),TU=I4;if(W3)try{TU=cB(W3),b1(`Loaded config from ${W3}`)}catch($){b1(`ERROR: Failed to load config: ${$}`),process.exit(1)}if(kA.length>0)TU.webhooks.allowed_authors=[...new Set([...TU.webhooks.allowed_authors,...kA])];if(TU.webhooks.allowed_authors.length===0)b1("ERROR: webhooks.allowed_authors is required and must not be empty.",`
215
215
  Add your GitHub username (and optionally your email for co-author matching via bots like Devin).`,`
216
216
  Example config.yaml:`,`
217
217
  webhooks:`,`