@gjermundgaraba/clankerauth-dev 0.20.0 → 0.22.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/dist/THIRD_PARTY_NOTICES.txt +1 -1
- package/dist/index.mjs +2 -2
- package/dist/web/assets/DepartureMono-Regular-2BZob_Zz.woff2 +0 -0
- package/dist/web/assets/index-BGS5C7qQ.js +2300 -0
- package/dist/web/assets/index-bFLgbfdU.css +1 -0
- package/dist/web/index.html +3 -3
- package/package.json +2 -2
- package/dist/web/assets/index-9VtsK-ro.css +0 -1
- package/dist/web/assets/index-BYrIezBx.js +0 -47
package/dist/index.mjs
CHANGED
|
@@ -531,9 +531,9 @@ Most of the features of Better Auth will not work correctly.`);let u=t.secrets??
|
|
|
531
531
|
`,i=(yield*Xve(r)).map(e=>({client_id:e.clientId,onboarding:e.clientDiscoveryId===null?e.userId===null?`dcr`:`managed`:`cimd`,blocked:e.disabled===1,client_name:e.name??void 0,redirect_uris:e.redirectUris,token_endpoint_auth_method:e.tokenEndpointAuthMethod??void 0,application_type:e.applicationType,scope:e.scopes?.join(` `),grant_types:e.grantTypes??void 0})),a=yield*tp({resources:e.resources.list(),clientAccess:e.resources.access(),connections:e.clients.connections()});return{clients:i,resources:a.resources.map(e=>({...e,builtIn:e.identifier===XQ(n.baseURL)})),clientAccess:a.clientAccess,connections:a.connections,email:t,issuer:`${n.baseURL}/api/auth`}}),create:V(`Administration.create`)(function*(n){let{providerHeaders:r}=yield*hQ,i=yield*e.resources.scopesFor(n.resources),a=yield*r,o=yield*zQ(()=>t.api.adminCreateOAuthClient({headers:a,body:{client_name:n.client_name,redirect_uris:[...n.redirect_uris],token_endpoint_auth_method:n.token_endpoint_auth_method,application_type:n.application_type,grant_types:[`authorization_code`,`refresh_token`],scope:i.join(` `),skip_consent:!0}}));return yield*e.resources.setAccess(o.client_id,n.resources).pipe(kp(()=>zQ(()=>t.api.deleteOAuthClient({headers:a,body:{client_id:o.client_id}})))),o}),update:V(`Administration.update`)(function*(e){let{providerHeaders:n}=yield*hQ,r=yield*n;return yield*zQ(()=>t.api.updateOAuthClient({headers:r,body:{client_id:e.client_id,update:{client_name:e.client_name,redirect_uris:[...e.redirect_uris],application_type:e.application_type}}}))}),access:V(`Administration.access`)(function*(t){return yield*hQ,{clientAccess:yield*e.resources.setAccess(t.client_id,t.resources)}}),createResource:V(`Administration.createResource`)(function*(t){let{providerHeaders:n}=yield*hQ,r=yield*n;return yield*e.resources.create(t,r)}),updateResource:V(`Administration.updateResource`)(function*(t){let{providerHeaders:n}=yield*hQ,r=yield*n;return yield*e.resources.update(t,r)}),deleteResource:V(`Administration.deleteResource`)(function*(t){let{providerHeaders:n}=yield*hQ,r=yield*n;return yield*e.resources.delete(t.identifier,r)}),delete:V(`Administration.delete`)(function*(t){return yield*hQ,yield*e.clients.delete(t.client_id)}),revoke:V(`Administration.revoke`)(function*(t){return yield*hQ,yield*e.clients.revoke(t.client_id,t.resource)}),block:V(`Administration.block`)(function*(t){return yield*hQ,yield*e.clients.block(t.client_id,t.blocked)}),rotate:V(`Administration.rotate`)(function*(e){let{providerHeaders:n}=yield*hQ,r=yield*n;return yield*zQ(()=>t.api.rotateClientSecret({headers:r,body:e}))})}}),r3=`~effect/ai/AiError/Reason`;var Zve=class extends (/*#__PURE__*/ iC(`effect/ai/AiError/ToolParameterValidationError`)({_tag:/*#__PURE__*/ lS(`ToolParameterValidationError`),toolName:H,description:H})){[r3]=r3;get isRetryable(){return!0}get message(){return`Invalid parameters for tool '${this.toolName}': ${this.description}`}};const i3=`~effect/rpc/RpcMiddleware`,Qve=()=>(e,t)=>{let n=$n(),r;n!==0&&(er(2),r=new globalThis.Error,er(n));function i(){}let a=i;return Object.setPrototypeOf(i,Object.getPrototypeOf(j(e))),i.key=e,Object.defineProperty(i,"stack",{get(){return r?.stack}}),a[i3]=i3,a.error=t?.error??Wx,a.requiredForClient=t?.requiredForClient??!1,i},a3=(e,t)=>{let n=P(t);return zx(e).pipe(Xae({decode:av(n),encode:ev()}),cS(n))},Z=e=>zx(e).pipe(sS(Vx(Bx(e)),{decode:ev(),encode:rv(Ii(Mi))})),$ve=/*#__PURE__*/ G([H,vS]),o3=/*#__PURE__*/ G([H,vS]);var s3=class extends (/*#__PURE__*/ dS()(/*#__PURE__*/ U({_meta:/*#__PURE__*/ Z(/*#__PURE__*/ $x(/*#__PURE__*/ U({progressToken:/*#__PURE__*/ Z(o3)}),[K]))}))){},c3=class extends (/*#__PURE__*/ dS()(/*#__PURE__*/ U({_meta:/*#__PURE__*/ Z(K)}))){},l3=class extends (/*#__PURE__*/ dS()(/*#__PURE__*/ U({_meta:/*#__PURE__*/ Z(K)}))){};const eye=H;({...s3.fields});var u3=class extends (/*#__PURE__*/ dS()(/*#__PURE__*/ U({...c3.fields,nextCursor:/*#__PURE__*/ Z(eye)}))){};const d3=/*#__PURE__*/ iS([`user`,`assistant`]);var f3=class extends (/*#__PURE__*/ dS()(/*#__PURE__*/ U({audience:/*#__PURE__*/ Z(/*#__PURE__*/ W(d3)),priority:/*#__PURE__*/ Z(/*#__PURE__*/ vS.check(/*#__PURE__*/ xS({minimum:0,maximum:1}))),lastModified:/*#__PURE__*/ Z(H)}))){},p3=class extends (/*#__PURE__*/ rC(`@effect/ai/McpSchema/Icon`)({src:H,mimeType:/*#__PURE__*/ Z(H),sizes:/*#__PURE__*/ Z(/*#__PURE__*/ W(H)),theme:/*#__PURE__*/ Z(/*#__PURE__*/ iS([`light`,`dark`]))})){},m3=class extends (/*#__PURE__*/ dS()(/*#__PURE__*/ U({name:H,title:/*#__PURE__*/ Z(H),version:H,icons:/*#__PURE__*/ Z(/*#__PURE__*/ W(p3)),description:/*#__PURE__*/ Z(H),websiteUrl:/*#__PURE__*/ Z(H)}))){},h3=class extends (/*#__PURE__*/ rC(`@effect/ai/McpSchema/ClientCapabilities`)({experimental:/*#__PURE__*/ Z(/*#__PURE__*/ Qx(H,/*#__PURE__*/ U({}))),extensions:/*#__PURE__*/ Z(/*#__PURE__*/ Qx(/*#__PURE__*/ Ux([H,`/`,H]),uC)),roots:/*#__PURE__*/ Z(/*#__PURE__*/ U({listChanged:/*#__PURE__*/ Z(Jx)})),sampling:/*#__PURE__*/ Z(/*#__PURE__*/ U({context:/*#__PURE__*/ Z(/*#__PURE__*/ U({})),tools:/*#__PURE__*/ Z(/*#__PURE__*/ U({}))})),elicitation:/*#__PURE__*/ Z(/*#__PURE__*/ U({form:/*#__PURE__*/ Z(/*#__PURE__*/ U({})),url:/*#__PURE__*/ Z(/*#__PURE__*/ U({}))}))})){},tye=class extends (/*#__PURE__*/ dS()(/*#__PURE__*/ U({experimental:/*#__PURE__*/ Z(/*#__PURE__*/ Qx(H,/*#__PURE__*/ U({}))),extensions:/*#__PURE__*/ Z(/*#__PURE__*/ Qx(/*#__PURE__*/ Ux([H,`/`,H]),uC)),logging:/*#__PURE__*/ Z(/*#__PURE__*/ U({})),completions:/*#__PURE__*/ Z(/*#__PURE__*/ U({})),prompts:/*#__PURE__*/ Z(/*#__PURE__*/ U({listChanged:/*#__PURE__*/ Z(Jx)})),resources:/*#__PURE__*/ Z(/*#__PURE__*/ U({subscribe:/*#__PURE__*/ Z(Jx),listChanged:/*#__PURE__*/ Z(Jx)})),tools:/*#__PURE__*/ Z(/*#__PURE__*/ U({listChanged:/*#__PURE__*/ Z(Jx)}))}))){},g3=class extends (/*#__PURE__*/ rC(`@effect/ai/McpSchema/McpErrorBase`)({code:CS,message:H,data:/*#__PURE__*/ Z(Gx)})){};const _3=-32601,v3=-32602,y3=-32603,b3=-32020;var x3=class extends (/*#__PURE__*/ iC(`effect/ai/McpSchema/ParseError`)({...g3.fields,_tag:/*#__PURE__*/ lS(`ParseError`),code:/*#__PURE__*/ lS(-32700)})){},S3=class extends (/*#__PURE__*/ iC(`effect/ai/McpSchema/InvalidRequest`)({...g3.fields,_tag:/*#__PURE__*/ lS(`InvalidRequest`),code:/*#__PURE__*/ lS(-32600)})){},C3=class extends (/*#__PURE__*/ iC(`effect/ai/McpSchema/MethodNotFound`)({...g3.fields,_tag:/*#__PURE__*/ lS(`MethodNotFound`),code:/*#__PURE__*/ lS(_3)})){},w3=class extends (/*#__PURE__*/ iC(`effect/ai/McpSchema/InvalidParams`)({...g3.fields,_tag:/*#__PURE__*/ lS(`InvalidParams`),code:/*#__PURE__*/ lS(v3)})){},T3=class e extends (/*#__PURE__*/ iC(`effect/ai/McpSchema/InternalError`)({...g3.fields,_tag:/*#__PURE__*/ lS(`InternalError`),code:/*#__PURE__*/ lS(y3)})){static notImplemented=/*#__PURE__*/ new e({message:`Not implemented`})};const E3=/*#__PURE__*/ G([x3,S3,C3,w3,T3,g3]);var nye=class extends (/*#__PURE__*/ q(`ping`,{success:/*#__PURE__*/ U({}),error:E3,payload:/*#__PURE__*/ oS(s3)})){},rye=class extends (/*#__PURE__*/ dS()(/*#__PURE__*/ U({...c3.fields,protocolVersion:H,capabilities:tye,serverInfo:m3,instructions:/*#__PURE__*/ Z(H)}))){},iye=class extends (/*#__PURE__*/ q(`initialize`,{success:rye,error:E3,payload:{...s3.fields,protocolVersion:H,capabilities:h3,clientInfo:m3}})){},D3=class extends (/*#__PURE__*/ q(`notifications/cancelled`,{payload:{...l3.fields,requestId:$ve,reason:/*#__PURE__*/ Z(H)}})){},O3=class extends (/*#__PURE__*/ q(`notifications/progress`,{payload:{...l3.fields,progressToken:o3,progress:vS,total:/*#__PURE__*/ Z(vS),message:/*#__PURE__*/ Z(H)}})){},aye=class extends (/*#__PURE__*/ rC(`@effect/ai/McpSchema/Resource`)({uri:H,name:H,title:/*#__PURE__*/ Z(H),description:/*#__PURE__*/ Z(H),mimeType:/*#__PURE__*/ Z(H),annotations:/*#__PURE__*/ Z(f3),icons:/*#__PURE__*/ Z(/*#__PURE__*/ W(p3)),size:/*#__PURE__*/ Z(CS),_meta:/*#__PURE__*/ Z(K)})){},k3=class extends (/*#__PURE__*/ dS()(/*#__PURE__*/ U({uri:H,mimeType:/*#__PURE__*/ Z(H),_meta:/*#__PURE__*/ Z(K)}))){},oye=class extends (/*#__PURE__*/ dS()(/*#__PURE__*/ U({...k3.fields,text:H}))){},sye=class extends (/*#__PURE__*/ dS()(/*#__PURE__*/ U({...k3.fields,blob:BS}))){};({...u3.fields}),{...u3.fields},{...c3.fields},{...s3.fields};var A3=class extends (/*#__PURE__*/ q(`notifications/resources/list_changed`,{payload:/*#__PURE__*/ oS(l3)})){};({...s3.fields}),{...s3.fields};var j3=class extends (/*#__PURE__*/ q(`notifications/resources/updated`,{payload:{...l3.fields,uri:H}})){},cye=class extends (/*#__PURE__*/ dS()(/*#__PURE__*/ U({name:H,title:/*#__PURE__*/ Z(H),description:/*#__PURE__*/ Z(H),required:/*#__PURE__*/ Z(Jx)}))){},lye=class extends (/*#__PURE__*/ rC(`@effect/ai/McpSchema/Prompt`)({name:H,title:/*#__PURE__*/ Z(H),description:/*#__PURE__*/ Z(H),arguments:/*#__PURE__*/ Z(/*#__PURE__*/ W(cye)),icons:/*#__PURE__*/ Z(/*#__PURE__*/ W(p3)),_meta:/*#__PURE__*/ Z(K)})){},M3=class extends (/*#__PURE__*/ dS()(/*#__PURE__*/ U({type:/*#__PURE__*/ lS(`text`),text:H,annotations:/*#__PURE__*/ Z(f3),_meta:/*#__PURE__*/ Z(K)}))){},N3=class extends (/*#__PURE__*/ dS()(/*#__PURE__*/ U({type:/*#__PURE__*/ lS(`image`),data:BS,mimeType:H,annotations:/*#__PURE__*/ Z(f3),_meta:/*#__PURE__*/ Z(K)}))){},P3=class extends (/*#__PURE__*/ dS()(/*#__PURE__*/ U({type:/*#__PURE__*/ lS(`audio`),data:BS,mimeType:H,annotations:/*#__PURE__*/ Z(f3),_meta:/*#__PURE__*/ Z(K)}))){};const F3=/*#__PURE__*/ G([M3,N3,P3,class extends (/*#__PURE__*/ dS()(/*#__PURE__*/ U({type:/*#__PURE__*/ lS(`resource`),resource:/*#__PURE__*/ G([oye,sye]),annotations:/*#__PURE__*/ Z(f3),_meta:/*#__PURE__*/ Z(K)}))){},class extends (/*#__PURE__*/ dS()(/*#__PURE__*/ U({...aye.fields,type:/*#__PURE__*/ lS(`resource_link`)}))){}]);({...u3.fields}),{...c3.fields},{...s3.fields};var I3=class extends (/*#__PURE__*/ q(`notifications/prompts/list_changed`,{payload:/*#__PURE__*/ oS(l3)})){},uye=class extends (/*#__PURE__*/ dS()(/*#__PURE__*/ U({title:/*#__PURE__*/ Z(H),readOnlyHint:/*#__PURE__*/ a3(Jx,Tt),destructiveHint:/*#__PURE__*/ a3(Jx,wt),idempotentHint:/*#__PURE__*/ a3(Jx,Tt),openWorldHint:/*#__PURE__*/ a3(Jx,wt)}))){};const L3=/*#__PURE__*/ $x(/*#__PURE__*/ U({type:/*#__PURE__*/ Hx(`object`),properties:/*#__PURE__*/ Z(/*#__PURE__*/ Qx(H,K)),required:/*#__PURE__*/ Z(/*#__PURE__*/ W(H))}),[K]),R3=K;var z3=class extends (/*#__PURE__*/ rC(`@effect/ai/McpSchema/Tool`)({name:H,title:/*#__PURE__*/ Z(H),description:/*#__PURE__*/ Z(H),inputSchema:L3,outputSchema:/*#__PURE__*/ Z(R3),annotations:/*#__PURE__*/ Z(uye),icons:/*#__PURE__*/ Z(/*#__PURE__*/ W(p3)),_meta:/*#__PURE__*/ Z(K)})){};({...u3.fields});var B3=class extends (/*#__PURE__*/ rC(`@effect/ai/McpSchema/CallToolResult`)({...c3.fields,content:/*#__PURE__*/ W(F3),structuredContent:/*#__PURE__*/ Z(uC),isError:/*#__PURE__*/ Z(Jx)})){};({...s3.fields});var V3=class extends (/*#__PURE__*/ q(`notifications/tools/list_changed`,{payload:/*#__PURE__*/ oS(l3)})){};const H3=/*#__PURE__*/ iS([`debug`,`info`,`notice`,`warning`,`error`,`critical`,`alert`,`emergency`]);({...s3.fields});var U3=class extends (/*#__PURE__*/ q(`notifications/message`,{payload:/*#__PURE__*/ U({...l3.fields,level:H3,logger:/*#__PURE__*/ Z(H),data:Gx})})){};const W3=/*#__PURE__*/ G([M3,N3,P3,class extends (/*#__PURE__*/ rC(`@effect/ai/McpSchema/ToolUseContent`)({type:/*#__PURE__*/ lS(`tool_use`),id:H,name:H,input:/*#__PURE__*/ Qx(H,Kx),_meta:/*#__PURE__*/ Z(K)})){},class extends (/*#__PURE__*/ rC(`@effect/ai/McpSchema/ToolResultContent`)({type:/*#__PURE__*/ lS(`tool_result`),toolUseId:H,content:/*#__PURE__*/ W(F3),structuredContent:/*#__PURE__*/ Z(uC),isError:/*#__PURE__*/ Z(Jx),_meta:/*#__PURE__*/ Z(K)})){}]);var dye=class extends (/*#__PURE__*/ dS()(/*#__PURE__*/ U({role:d3,content:/*#__PURE__*/ G([W3,/*#__PURE__*/ W(W3)]),_meta:/*#__PURE__*/ Z(K)}))){},fye=class extends (/*#__PURE__*/ rC(`@effect/ai/McpSchema/ToolChoice`)({mode:/*#__PURE__*/ Z(/*#__PURE__*/ iS([`auto`,`required`,`none`]))})){},pye=class extends (/*#__PURE__*/ dS()(/*#__PURE__*/ U({name:/*#__PURE__*/ Z(H)}))){},mye=class extends (/*#__PURE__*/ rC(`@effect/ai/McpSchema/ModelPreferences`)({hints:/*#__PURE__*/ Z(/*#__PURE__*/ W(pye)),costPriority:/*#__PURE__*/ Z(/*#__PURE__*/ vS.check(/*#__PURE__*/ xS({minimum:0,maximum:1}))),speedPriority:/*#__PURE__*/ Z(/*#__PURE__*/ vS.check(/*#__PURE__*/ xS({minimum:0,maximum:1}))),intelligencePriority:/*#__PURE__*/ Z(/*#__PURE__*/ vS.check(/*#__PURE__*/ xS({minimum:0,maximum:1})))})){},hye=class extends (/*#__PURE__*/ rC(`@effect/ai/McpSchema/CreateMessageResult`)({role:d3,content:/*#__PURE__*/ G([W3,/*#__PURE__*/ W(W3)]),_meta:/*#__PURE__*/ Z(K),model:H,stopReason:/*#__PURE__*/ Z(H)})){},G3=class extends (/*#__PURE__*/ q(`sampling/createMessage`,{success:hye,error:E3,payload:{messages:/*#__PURE__*/ W(dye),modelPreferences:/*#__PURE__*/ Z(/*#__PURE__*/ U(mye.fields)),systemPrompt:/*#__PURE__*/ Z(H),includeContext:/*#__PURE__*/ Z(/*#__PURE__*/ iS([`none`,`thisServer`,`allServers`])),temperature:/*#__PURE__*/ Z(vS),maxTokens:CS,stopSequences:/*#__PURE__*/ Z(/*#__PURE__*/ W(H)),metadata:/*#__PURE__*/ Z(/*#__PURE__*/ Qx(H,Kx)),tools:/*#__PURE__*/ Z(/*#__PURE__*/ W(/*#__PURE__*/ U(z3.fields))),toolChoice:/*#__PURE__*/ Z(/*#__PURE__*/ U(fye.fields))}})){};({...c3.fields});var gye=class extends (/*#__PURE__*/ rC(`@effect/ai/McpSchema/Root`)({uri:H,name:/*#__PURE__*/ Z(H),_meta:/*#__PURE__*/ Z(K)})){},K3=class extends (/*#__PURE__*/ rC(`@effect/ai/McpSchema/ListRootsResult`)({roots:/*#__PURE__*/ W(gye)})){},q3=class extends (/*#__PURE__*/ q(`roots/list`,{success:K3,error:E3,payload:/*#__PURE__*/ oS(s3)})){};const _ye=/*#__PURE__*/ U({$schema:/*#__PURE__*/ Z(H),type:/*#__PURE__*/ lS(`object`),properties:/*#__PURE__*/ Qx(H,/* @__PURE__ */ G([/* @__PURE__ */ G([class extends (/*#__PURE__*/ rC(`@effect/ai/McpSchema/LegacyTitledEnum`)({type:/*#__PURE__*/ lS(`string`),title:/*#__PURE__*/ Z(H),description:/*#__PURE__*/ Z(H),enum:/*#__PURE__*/ W(H),enumNames:/*#__PURE__*/ Z(/*#__PURE__*/ W(H)),default:/*#__PURE__*/ Z(H)})){},/* @__PURE__ */ G([class extends (/*#__PURE__*/ rC(`@effect/ai/McpSchema/UntitledSingleSelectEnum`)({type:/*#__PURE__*/ lS(`string`),title:/*#__PURE__*/ Z(H),description:/*#__PURE__*/ Z(H),enum:/*#__PURE__*/ W(H),default:/*#__PURE__*/ Z(H)})){},class extends (/*#__PURE__*/ rC(`@effect/ai/McpSchema/TitledSingleSelectEnum`)({type:/*#__PURE__*/ lS(`string`),title:/*#__PURE__*/ Z(H),description:/*#__PURE__*/ Z(H),oneOf:/*#__PURE__*/ W(/*#__PURE__*/ U({const:H,title:H})),default:/*#__PURE__*/ Z(H)})){}]),/* @__PURE__ */ G([class extends (/*#__PURE__*/ rC(`@effect/ai/McpSchema/UntitledMultiSelectEnum`)({type:/*#__PURE__*/ lS(`array`),title:/*#__PURE__*/ Z(H),description:/*#__PURE__*/ Z(H),minItems:/*#__PURE__*/ Z(CS),maxItems:/*#__PURE__*/ Z(CS),items:/*#__PURE__*/ U({type:/*#__PURE__*/ lS(`string`),enum:/*#__PURE__*/ W(H)}),default:/*#__PURE__*/ Z(/*#__PURE__*/ W(H))})){},class extends (/*#__PURE__*/ rC(`@effect/ai/McpSchema/TitledMultiSelectEnum`)({type:/*#__PURE__*/ lS(`array`),title:/*#__PURE__*/ Z(H),description:/*#__PURE__*/ Z(H),minItems:/*#__PURE__*/ Z(CS),maxItems:/*#__PURE__*/ Z(CS),items:/*#__PURE__*/ U({anyOf:/*#__PURE__*/ W(/*#__PURE__*/ U({const:H,title:H}))}),default:/*#__PURE__*/ Z(/*#__PURE__*/ W(H))})){}])]),class extends (/*#__PURE__*/ rC(`@effect/ai/McpSchema/ElicitationString`)({type:/*#__PURE__*/ lS(`string`),title:/*#__PURE__*/ Z(H),description:/*#__PURE__*/ Z(H),minLength:/*#__PURE__*/ Z(CS),maxLength:/*#__PURE__*/ Z(CS),format:/*#__PURE__*/ Z(/*#__PURE__*/ iS([`email`,`uri`,`date`,`date-time`])),default:/*#__PURE__*/ Z(H)})){},class extends (/*#__PURE__*/ rC(`@effect/ai/McpSchema/ElicitationNumber`)({type:/*#__PURE__*/ iS([`number`,`integer`]),title:/*#__PURE__*/ Z(H),description:/*#__PURE__*/ Z(H),minimum:/*#__PURE__*/ Z(vS),maximum:/*#__PURE__*/ Z(vS),default:/*#__PURE__*/ Z(vS)})){},class extends (/*#__PURE__*/ rC(`@effect/ai/McpSchema/ElicitationBoolean`)({type:/*#__PURE__*/ lS(`boolean`),title:/*#__PURE__*/ Z(H),description:/*#__PURE__*/ Z(H),default:/*#__PURE__*/ Z(Jx)})){}])),required:/*#__PURE__*/ Z(/*#__PURE__*/ W(H))}),vye=/*#__PURE__*/ G([class extends (/*#__PURE__*/ rC(`@effect/ai/McpSchema/ElicitRequestFormParams`)({...s3.fields,mode:/*#__PURE__*/ Z(/*#__PURE__*/ Hx(`form`)),message:H,requestedSchema:_ye})){},class extends (/*#__PURE__*/ rC(`@effect/ai/McpSchema/ElicitRequestURLParams`)({...s3.fields,mode:/*#__PURE__*/ Hx(`url`),message:H,elicitationId:H,url:H})){}]),yye=/*#__PURE__*/ G([class extends (/*#__PURE__*/ rC(`@effect/ai/McpSchema/ElicitAcceptResult`)({...c3.fields,action:/*#__PURE__*/ Hx(`accept`),content:/*#__PURE__*/ Z(/*#__PURE__*/ Qx(H,/*#__PURE__*/ G([H,vS,Jx,/*#__PURE__*/ W(H)])))})){},class extends (/*#__PURE__*/ rC(`@effect/ai/McpSchema/ElicitDeclineResult`)({...c3.fields,action:/*#__PURE__*/ iS([`cancel`,`decline`])})){}]);var J3=class extends (/*#__PURE__*/ q(`elicitation/create`,{success:yye,error:E3,payload:vye})){},bye=class extends (/*#__PURE__*/ q(`notifications/elicitation/complete`,{payload:{elicitationId:H}})){};J3.payloadSchema;var Y3=class extends (/*#__PURE__*/ Ao(`McpReverseOperationUnsupported`)){},xye=class extends (/*#__PURE__*/ Ao(`McpReverseOperationError`)){},X3=class extends (/*#__PURE__*/ j()(`effect/ai/McpSchema/McpRequestContext`)){},Z3=class extends (/*#__PURE__*/ j()(`effect/ai/McpSchema/McpServerClient`)){},Q3=class extends (/*#__PURE__*/ Qve()(`effect/ai/McpSchema/McpServerClientMiddleware`)){},Sye=class extends (/*#__PURE__*/ hN(D3,O3,U3,j3,A3,V3,I3,bye)){},$3=class extends (/*#__PURE__*/ j()(`effect/ai/McpSchema/EnabledWhen`)){};const e6={Complete:e=>({_tag:`Complete`,value:e}),InputRequired:e=>({_tag:`InputRequired`,...e})};var Cye=class extends (/*#__PURE__*/ Ao(`ResourceNotFound`)){},wye=class extends (/*#__PURE__*/ Ao(`ToolNotFound`)){},Tye=class extends (/*#__PURE__*/ Ao(`InvalidToolInput`)){},Eye=class extends (/*#__PURE__*/ Ao(`InvalidToolContinuation`)){},Dye=class extends (/*#__PURE__*/ Ao(`ToolExecutionError`)){},t6=class extends (/*#__PURE__*/ Ao(`UnsupportedByProtocol`)){},Oye=class extends (/*#__PURE__*/ Ao(`PromptNotFound`)){};const n6=/*#__PURE__*/ Oo(),r6=/*#__PURE__*/ Oo(),kye=/*#__PURE__*/ P(()=>{let e=/* @__PURE__ */ new Map,t=[],n=[],r=/* @__PURE__ */ new Map,i=/* @__PURE__ */ new Map;return{tools:{register:t=>P(()=>{e.set(t.descriptor.name,t)}),list:t=>P(()=>{let n=[];for(let r of e.values())r.isVisible(t)&&n.push(r.descriptor);return n}),call:(t,n)=>sp(()=>{let r=e.get(t.name);return r===void 0||!r.isVisible(n.protocol)?new wye({name:t.name}):r.handle(t,n)})},resources:{register:e=>P(()=>{let n=t.findIndex(t=>t.descriptor.uri===e.descriptor.uri);n===-1?t.push(e):t[n]=e}),registerTemplate:e=>P(()=>{let t=n.findIndex(t=>t.descriptor.uriTemplate===e.descriptor.uriTemplate);t===-1?n.push(e):n[t]=e}),list:e=>P(()=>t.filter(t=>t.isVisible(e)).map(e=>e.descriptor)),listTemplates:e=>P(()=>n.filter(t=>t.isVisible(e)).map(e=>e.descriptor)),read:B(function*(e,r){let i=t.find(t=>t.descriptor.uri===e);if(i!==void 0&&i.isVisible(r.protocol))return yield*i.read(r);for(let t of n){let n=t.match(e);if(n!==void 0&&t.isVisible(r.protocol))return yield*t.read(e,n,r)}return yield*new Cye({uri:e})})},prompts:{register:e=>P(()=>{r.set(e.descriptor.name,e)}),list:e=>P(()=>Array.from(r.values()).filter(t=>t.isVisible(e)).map(e=>e.descriptor)),get:B(function*(e,t,n){let i=r.get(e);return i===void 0||!i.isVisible(n.protocol)?yield*new Oye({name:e}):yield*i.get(t,n)})},completions:{register:(e,t)=>P(()=>{i.set(e,t)}),complete:B(function*(e,t){let n=e.reference.type===`prompt`?`prompt/${e.reference.name}/${e.argument.name}`:`resource/${e.reference.uriTemplate}/${e.argument.name}`,r=i.get(n);if(r===void 0)return yield*new w3({message:`Unknown completion reference or argument`});let a=yield*r(e,t),o=Uee(a.values,100);return{...a,values:o,hasMore:a.hasMore===!0||o.length<a.values.length}})},registrationPresence:P(()=>({tools:e.size>0,resources:t.length>0||n.length>0,prompts:r.size>0}))}}),Aye=/*#__PURE__*/ new TextDecoder(`utf-8`,{fatal:!0,ignoreBOM:!0}),i6={debug:{effect:`Debug`,order:0},info:{effect:`Info`,order:1},notice:{effect:`Info`,order:2},warning:{effect:`Warn`,order:3},error:{effect:`Error`,order:4},critical:{effect:`Fatal`,order:5},alert:{effect:`Fatal`,order:6},emergency:{effect:`Fatal`,order:7}},a6=e=>{let t=e.startsWith(`=?base64?`),n=e.endsWith(`?=`);if(!t||!n)return/^[\t\x20-\x7e]*$/.test(e)?e:void 0;let r=jh(e.slice(9,-2));if(!Sa(r))try{return Aye.decode(r.success)}catch{return}},o6=e=>({protocolVersion:e.protocolVersion,clientCapabilities:e.clientCapabilities,clientInfo:e.clientInfo,requestMetadata:e.initializePayload._meta}),s6=e=>({clientId:e.clientId,protocol:o6(e),requestContext:X3.of({clientId:e.clientId,protocolVersion:e.protocolVersion,clientCapabilities:e.clientCapabilities,clientInfo:e.clientInfo,requestMetadata:e.requestMetadata}),serverClient:e}),c6=e=>({clientId:e.clientId,protocol:{protocolVersion:e.protocolVersion,clientCapabilities:e.clientCapabilities,clientInfo:e.clientInfo,requestMetadata:e.requestMetadata},requestContext:e}),l6=(e,t)=>t._tag===`Complete`?N(t.value):L(new t6({protocolVersion:e,feature:`Client input`})),u6=e=>{let{content:t,structuredContent:n}=e;if(typeof n!=`string`||t.length!==1)return t;let[r]=t;return r.type===`text`&&r.text===JSON.stringify(n)?[{...r,text:n}]:t},d6=e=>Jt(e)&&(e.type===`tool_use`||e.type===`tool_result`),f6=e=>Jt(e)?e.tools!==void 0||e.toolChoice!==void 0?!0:Array.isArray(e.messages)?e.messages.some(e=>{if(!Jt(e))return!1;let t=e.content;return Array.isArray(t)?t.some(d6):d6(t)}):!1:!1;var p6=class e extends (/*#__PURE__*/ Ao(`ProtocolError`)){static fromTool(t){let n=NE(t).pipe(FE(`ToolNotFound`,e=>`Tool '${e.name}' not found`),FE(`UnsupportedByProtocol`,e=>`${e.feature} is not supported by MCP ${e.protocolVersion}`),IE({InvalidToolInput:e=>e.message,InvalidToolContinuation:e=>e.message,ToolExecutionError:e=>e.message}),zE);return new e({code:t._tag===`ToolExecutionError`?y3:v3,message:n})}static fromFeature(t){if(A(t,`_tag`)){if(t._tag===`PromptNotFound`&&A(t,`name`)&&It(t.name))return new e({code:v3,message:`Prompt '${t.name}' not found`});if(t._tag===`ResourceNotFound`&&A(t,`uri`)&&It(t.uri))return new e({code:-32002,message:`Resource '${t.uri}' not found`})}let n=jye(t);return Ca(n)?new e(n.success):new e({code:y3,message:`MCP feature handler failed`})}};const jye=/*#__PURE__*/ Bae(/* @__PURE__ */ U({code:vS,message:H,data:/*#__PURE__*/ zx(Kx)})),Mye=e=>Xt(e,`McpReverseOperationUnsupported`),m6=e=>t=>Mye(t)?t:new xye({operation:e,cause:t}),h6=(e,t,n)=>Px(e)(n).pipe(R(Ax(t))),Nye=(e,t,n)=>Px(e)(n).pipe(R(Ax(t,{onExcessProperty:`error`}))),g6=/*#__PURE__*/ V(function*(e,t){return r6.$match(t,{Cancelled:e=>({tag:D3._tag,payload:D3.payloadSchema.make({_meta:e.metadata,requestId:e.requestId,reason:e.reason})}),Progress:t=>({tag:O3._tag,payload:O3.payloadSchema.make({_meta:t.metadata,progressToken:t.progressToken,progress:t.progress,total:t.total,message:e.supportsProgressMessage?t.message:void 0})}),LoggingMessage:e=>({tag:U3._tag,payload:U3.payloadSchema.make({_meta:e.metadata,level:e.level,logger:e.logger,data:e.data})}),ResourceUpdated:e=>({tag:j3._tag,payload:j3.payloadSchema.make({_meta:e.metadata,uri:e.uri})}),ResourcesChanged:e=>({tag:A3._tag,payload:A3.payloadSchema.make({_meta:e.metadata})}),ToolsChanged:e=>({tag:V3._tag,payload:V3.payloadSchema.make({_meta:e.metadata})}),PromptsChanged:e=>({tag:I3._tag,payload:I3.payloadSchema.make({_meta:e.metadata})}),ElicitationComplete:()=>void 0})}),_6=e=>{switch(e._tag){case`ToolsChanged`:case`PromptsChanged`:case`ResourcesChanged`:case`ResourceUpdated`:return!0;default:return!1}},v6=e=>{let t=/* @__PURE__ */ new WeakMap,n=e=>{let n=t.get(e);if(n===void 0){let r=sC(e.payloadSchema);n={decode:Ax(r),encode:Nx(r)},t.set(e,n)}return n},r=(t,n,r)=>e.handlerRpcs===void 0||e.makeHandlers===void 0?F:n===void 0&&e.runtime._tag===`Stateful`?fp(`MCP sessionful handler installation requires a lifecycle runtime`):r.install(e,e.handlerRpcs,e.makeHandlers(t,e.runtime._tag===`Stateful`?n:void 0,r.context)),i=t=>Yce(e.serverRequestRpcs,{spanPrefix:`McpServer/Client`}).pipe(z(n=>e.toReverseClient(t,n)));return{...e,payloadCodecs:n,installHandlers:r,makeReverseClient:i}},y6=e=>`@effect/mcp/${encodeURIComponent(e.protocolVersion)}/`,Pye=/*#__PURE__*/ B(function*(e){if(e.length===0)return yield*new hd(`MCP protocol declaration must contain at least one MCP protocol`);let t=Object.freeze(Array.from(e)),n=/* @__PURE__ */ new Map;for(let e of t){if(n.has(e.protocolVersion))return yield*new hd(`Duplicate MCP protocol version: ${e.protocolVersion}`);n.set(e.protocolVersion,e)}let r=t[0].clientRpcs.prefix(y6(t[0]));for(let e=1;e<t.length;e++)r=r.merge(t[e].clientRpcs.prefix(y6(t[e])));return{protocols:t,clientRpcs:r,select:e=>n.get(e)??t[0],protocolForInternalTag:e=>t.find(t=>e.startsWith(y6(t)))??t[0],routeClientRequest:(e,t)=>({...t,tag:`${y6(e)}${t.tag}`}),handlerTarget:(e,t)=>({context:t,install:B(function*(t,n,i){let a=yield*n.toHandlers(i);for(let i of n.requests.values()){let n=r.requests.get(`${y6(t)}${i._tag}`),o=a.mapUnsafe.get(i.key);if(n===void 0||o===void 0)return yield*fp(`MCP handler registration invariant failed for ${t.protocolVersion}/${i._tag}`);e.set(n.key,o)}})})}}),b6=e=>({initializePayload:e.initializePayload,negotiatedProfile:e.negotiatedProfile,protocol:e.protocol,resourceSubscriptions:e.supportsResourceSubscriptions?/* @__PURE__ */ new Set:void 0,logLevel:{_tag:`Effect`,level:e.logLevel}}),Fye=()=>{let e=/* @__PURE__ */ new Map,t=/* @__PURE__ */ new Map,n=/* @__PURE__ */ new Set,r=(n,r)=>{let i=r[`mcp-session-id`];return i===void 0?t.get(n):e.get(i)};return{registerHttp:(t,n)=>{let r=b6(n);return e.set(t,r),r},registerConnection:(e,n)=>{let r=b6(n);return t.set(e,r),r},resolve:r,resolveSessionId:t=>e.get(t),terminateSession:t=>e.delete(t),setLogLevel:(e,t,n)=>P(()=>{let i=r(t,n);i!==void 0&&(i.logLevel={_tag:`Mcp`,level:e})}),subscribe:(e,t,n)=>{let i=r(t,n)?.resourceSubscriptions;return i===void 0?L(new p6({code:_3,message:`Resource subscriptions are not supported`})):P(()=>i.add(e)).pipe(xp)},unsubscribe:(e,t,n)=>{let i=r(t,n)?.resourceSubscriptions;return i===void 0?L(new p6({code:_3,message:`Resource subscriptions are not supported`})):P(()=>i.delete(e)).pipe(xp)},effectLogLevel:(e,t,n)=>{let i=r(e,t);return i?.logLevel._tag===`Mcp`?i6[i.logLevel.level].effect:i?.logLevel.level??n},canDeliver:(e,t,n,i)=>{let a=r(e,t);if(n._tag===`LoggingMessage`){let e=a?.logLevel;return e?._tag===`Mcp`?i6[n.level].order>=i6[e.level].order:Mse(i6[n.level].effect,e?.level??i)}return n._tag!==`ResourceUpdated`||a?.resourceSubscriptions?.has(n.uri)===!0},markInitialized:e=>{n.add(e)},initializedClientIds:()=>n.values(),disconnect:e=>{t.delete(e),n.delete(e)}}},x6=`mcp-session-id`,S6=`mcp-protocol-version`,C6=`io.modelcontextprotocol/protocolVersion`,w6=`io.modelcontextprotocol/clientCapabilities`,T6=-32022,E6=e=>typeof e==`object`&&e?e:void 0,D6=e=>{let t=E6(e);return t!==void 0&&C6 in t?{present:!0,value:t[C6]}:{present:!1,value:void 0}},Iye=e=>D6(E6(E6(e)?.params)?._meta).present,Lye=e=>{switch(e){case`tools/call`:case`prompts/get`:return`name`;case`resources/read`:return`uri`;default:return}},O6=e=>({_tag:`Rejected`,status:400,error:{code:b3,message:e}}),k6=/*#__PURE__*/ hN(nye),A6=e=>({_tag:`Stateful`,transport:e});var j6=class extends (/*#__PURE__*/ j()(`effect/ai/McpRuntime/ServerRuntime`)){};const M6=(e,t)=>e.find(e=>e.runtime._tag===`Stateful`&&e.protocolVersion===t)??e.find(e=>e.runtime._tag===`Stateful`),Rye=/*#__PURE__*/ B(function*(e){let t=e.find(e=>e.runtime._tag===`Stateful`)===void 0?void 0:Fye(),n=e.map(e=>e.protocolVersion),r,i;for(let t of e)if(t.runtime._tag===`Stateless`){if(r!==void 0)return yield*new hd(`MCP runtime supports at most one stateless protocol`);r=t.runtime,i=t}let a=yield*Pye(e),o=/* @__PURE__ */ new Set,s=e=>({code:T6,message:`Unsupported protocol version '${e}'`,data:{supported:n,requested:e}}),c=(e,r)=>{let i=e[S6],a=e[x6],o=a===void 0?void 0:t?.resolveSessionId(a);if(a!==void 0&&o===void 0)return{_tag:`Rejected`,status:404};if(!r&&i!==void 0){if(!n.includes(i))return{_tag:`Rejected`,status:400,error:s(i)};if(o?.protocol.runtime.transport.http.requiresVersionHeader===!0&&i!==o.protocol.protocolVersion)return O6(`MCP-Protocol-Version header '${i}' does not match negotiated protocol version '${o.protocol.protocolVersion}'`)}return{_tag:`Accepted`,binding:o,protocol:o?.protocol}},l=(e,n)=>{let r=e[S6],a=E6(n),o=E6(E6(a?.params)?._meta),l=D6(o),u=a?.id,d=a?.jsonrpc===`2.0`&&a.method===`initialize`&&(typeof u==`string`||typeof u==`number`),f=a?.jsonrpc===`2.0`&&a.method===`notifications/cancelled`&&u===void 0;if(l.present||(!d||t===void 0)&&i!==void 0&&(r===i.protocolVersion||t===void 0&&a?.jsonrpc===`2.0`&&typeof a.method==`string`&&(typeof u==`string`||typeof u==`number`))){if(r===void 0)return O6(`MCP-Protocol-Version header is required`);if(!f&&(o===void 0||typeof l.value!=`string`))return{_tag:`Rejected`,status:400,error:{code:v3,message:`Required request metadata is missing`}};if((!f||l.present)&&l.value!==r)return O6(`MCP-Protocol-Version header does not match request metadata`);if(!f&&E6(o?.[w6])===void 0)return{_tag:`Rejected`,status:400,error:{code:v3,message:`${w6} request metadata is required`}};if(i===void 0||r!==i.protocolVersion)return{_tag:`Rejected`,status:400,error:s(r)};let t=a?.method;if(typeof t!=`string`||e[`mcp-method`]!==t)return O6(`Mcp-Method header does not match request method`);let n=Lye(t);if(n!==void 0){let t=E6(a?.params)?.[n],r=e[`mcp-name`];if(typeof t!=`string`||r===void 0||a6(r)!==t)return O6(`Mcp-Name header does not match request parameters`)}return{_tag:`Accepted`,binding:void 0,protocol:i}}return c(e,d)};return j6.of({protocols:a.protocols,clientRpcs:a.clientRpcs,selectProtocol:a.select,protocolForInternalTag:a.protocolForInternalTag,routeClientRequest:a.routeClientRequest,prepareRequest:B(function*(e,n,o){let c=E6(o.payload)?._meta,l=D6(c),u=typeof l.value==`string`?l.value:void 0,d=l.present?void 0:t?.resolve(e,n),f;if(l.present)f=a.protocols.find(e=>e.protocolVersion===u)??i??a.protocols[0];else if(d!==void 0)f=d.protocol;else if(o.tag===`initialize`){let e=o.payload?.protocolVersion,t=M6(a.protocols,e);if(t===void 0)return yield*new p6({code:T6,message:`initialize is not supported by the configured MCP protocols (requested '${e}')`});f=t}else f=o.tag===`ping`?M6(a.protocols,void 0)??a.protocols[0]:a.protocols[0];if(f.runtime._tag===`Stateful`)return{protocol:f,binding:d};if(o.isNotification&&o.tag===`notifications/cancelled`)return{protocol:f};if(r===void 0)return yield*fp(`MCP stateless runtime invariant failed`);if(u!==void 0&&u!==f.protocolVersion)return yield*new p6(s(u));let p=yield*r.profileFromRequestMetadata(c),m={protocolVersion:p.protocolVersion,clientCapabilities:p.clientCapabilities,clientInfo:p.clientInfo,requestMetadata:p.requestMetadata},h=X3.of({clientId:e,protocolVersion:m.protocolVersion,clientCapabilities:m.clientCapabilities,clientInfo:m.clientInfo,requestMetadata:m.requestMetadata});return{protocol:f,profile:m,requestContext:h}}),resolveRequest:(e,n)=>t?.resolve(e,n),admitHttp:(e,r)=>{let i=(e,t,n=null)=>({_tag:`Rejected`,response:t===void 0?sA({status:e}):pA({jsonrpc:`2.0`,id:n,error:t},{status:e})});if(Sa(r)){let t=e[S6];if(t!==void 0&&!n.includes(t))return i(400,s(t));let r=l(e,void 0);return r._tag===`Rejected`&&(r.error===void 0||r.error.code===-32020)?i(r.status,r.error):i(200,new x3({message:`Parse error`}))}let a=r.success;if(Array.isArray(a)){if(a.length===0)return i(400,new S3({message:`Invalid Request`}));let t=l(e,a);return t._tag===`Rejected`||a.some(Iye)||a.some(e=>A(e,`method`)&&e.method===`initialize`)||t.binding?.protocol.runtime.transport.jsonRpc.acceptsBatches!==!0?i(400):{_tag:`Accepted`,acknowledge:!a.some(e=>A(e,`method`)&&A(e,`id`)),isSubscription:!1}}let o=A(a,`id`),c=o&&(typeof a.id==`string`||typeof a.id==`number`)?a.id:null,u=A(a,`jsonrpc`)&&a.jsonrpc===`2.0`,d=!o||typeof a.id==`string`||typeof a.id==`number`,f=u&&d&&A(a,`method`)&&typeof a.method==`string`,p=o&&(typeof a.id==`string`||typeof a.id==`number`||a.id===null),m=A(a,`result`),h=A(a,`error`),g=u&&p&&m!==h,_=l(e,a);if(_._tag===`Rejected`)return i(_.status,_.error,c);if(!f&&!g)return i(200,new S3({message:`Invalid Request`}),c);let v=A(a,`method`)&&a.method===`initialize`,y=e[x6]!==void 0;return v&&y?i(400,new S3({message:`initialize must not include an MCP-Session-Id header`}),c):!v&&!y&&_.protocol?.runtime._tag!==`Stateless`?i(400,t===void 0?void 0:new S3({message:`MCP-Session-Id header is required; send initialize to start a session`}),c):f&&_.protocol?.runtime._tag===`Stateless`&&!(_.protocol.handlerRpcs?.requests.has(a.method)??_.protocol.clientRpcs.requests.has(a.method))?i(404,new C3({message:`Method not found: ${a.method}`}),c):{_tag:`Accepted`,acknowledge:!f||!o,isSubscription:A(a,`method`)&&a.method===`subscriptions/listen`}},effectLogLevel:(e,n,r)=>t?.effectLogLevel(e,n,r)??r,disconnect:e=>t?.disconnect(e),terminateHttpSession:e=>sp(()=>{let n=e[x6];if(n===void 0)return N(sA({status:400}));let r=c(e,!1);if(r._tag===`Rejected`)return N(sA({status:r.status}));let i=r.binding;return t.terminateSession(n),bp(np(o,e=>e(i),{discard:!0}),sA({status:204}))}),onSessionTerminated:e=>Yp(P(()=>{o.add(e)}),()=>P(()=>{o.delete(e)})),deliveryClientIds:()=>t?.initializedClientIds()??[],canDeliver:(e,n,r,i)=>t?.canDeliver(e,n,r,i)??!0,installHandlers:B(function*(e){let r=/* @__PURE__ */ new Map,i={subscribeServerNotifications:e.subscribeServerNotifications,getListChangeRevision:e.getListChangeRevision,...e.sendNotification===void 0?{}:{sendNotification:e.sendNotification},...e.markSubscriptionCancelled===void 0?{}:{markSubscriptionCancelled:e.markSubscriptionCancelled},...e.terminateSubscription===void 0?{}:{terminateSubscription:e.terminateSubscription},supportedVersions:n,serverInfo:e.serverInfo,registrationPresence:e.core.registrationPresence},o=a.handlerTarget(r,i);for(let n of a.protocols){if(n.runtime._tag===`Stateless`){yield*n.installHandlers(e.core,void 0,o);continue}if(t===void 0)return yield*fp(`MCP sessionful runtime invariant failed`);yield*o.install(n,k6,k6.of({ping:()=>N({})}));let r={initialize:B(function*(r,i,a){let o=yield*e.core.registrationPresence;return yield*mp(s=>{let c=ia(s.context,sM),l={completions:!0,logging:!0,...o.tools?{tools:{listChanged:!0}}:{},...o.resources?{resources:{listChanged:!0,subscribe:c===void 0}}:{},...o.prompts?{prompts:{listChanged:!0}}:{},...e.serverInfo.extensions?{extensions:e.serverInfo.extensions}:{}},u={initializePayload:iye.payloadSchema.make({protocolVersion:r,capabilities:i.clientCapabilities,clientInfo:i.clientInfo,_meta:i.requestMetadata}),negotiatedProfile:i,protocol:n,supportsResourceSubscriptions:c===void 0&&l.resources?.subscribe===!0,logLevel:e.defaultLogLevel};if(c!==void 0){let e=crypto.randomUUID();t.registerHttp(e,u),yM(c,(t,r)=>N(yA(r,{[x6]:e,[S6]:n.protocolVersion})))}else t.registerConnection(a,u);return N({capabilities:l,instructions:e.serverInfo.instructions,serverInfo:m3.make({name:e.serverInfo.name,version:e.serverInfo.version,description:e.serverInfo.description,websiteUrl:e.serverInfo.websiteUrl,icons:e.serverInfo.icons})})})}),setLogLevel:t.setLogLevel,subscribe:t.subscribe,unsubscribe:t.unsubscribe,clientNotification:B(function*(e,n){e._tag===`Initialized`&&t.markInitialized(n)})};yield*n.installHandlers(e.core,r,o)}return Yi(r)})})}),N6=e=>Cf(j6)(Rye(e)),P6=e=>zx(e).pipe(sS(Vx(Bx(e)),{decode:ev(),encode:rv(Ii(Mi))})),F6=K,zye=/*#__PURE__*/ G([H,vS]),I6=/*#__PURE__*/ G([H,vS]),L6=/*#__PURE__*/ iS([`user`,`assistant`]),R6=/*#__PURE__*/ iS([`debug`,`info`,`notice`,`warning`,`error`,`critical`,`alert`,`emergency`]),z6=/*#__PURE__*/ U({_meta:/*#__PURE__*/ P6(/*#__PURE__*/ $x(/*#__PURE__*/ U({progressToken:/*#__PURE__*/ P6(I6)}),[K]))}),B6=/*#__PURE__*/ U({_meta:/*#__PURE__*/ P6(F6)}),V6=/*#__PURE__*/ U({_meta:/*#__PURE__*/ P6(F6)}),H6=/*#__PURE__*/ U({...z6.fields,cursor:/*#__PURE__*/ P6(H)}),U6=/*#__PURE__*/ U({...V6.fields,nextCursor:/*#__PURE__*/ P6(H)}),Bye=/*#__PURE__*/ U({extensions:/*#__PURE__*/ P6(/*#__PURE__*/ Qx(/*#__PURE__*/ Ux([H,`/`,H]),uC)),experimental:/*#__PURE__*/ P6(/*#__PURE__*/ Qx(H,F6)),roots:/*#__PURE__*/ P6(/*#__PURE__*/ U({listChanged:/*#__PURE__*/ P6(Jx)})),sampling:/*#__PURE__*/ P6(F6)}),Vye=/*#__PURE__*/ U({extensions:/*#__PURE__*/ P6(/*#__PURE__*/ Qx(/*#__PURE__*/ Ux([H,`/`,H]),uC)),experimental:/*#__PURE__*/ P6(/*#__PURE__*/ Qx(H,F6)),logging:/*#__PURE__*/ P6(F6),prompts:/*#__PURE__*/ P6(/*#__PURE__*/ U({listChanged:/*#__PURE__*/ P6(Jx)})),resources:/*#__PURE__*/ P6(/*#__PURE__*/ U({subscribe:/*#__PURE__*/ P6(Jx),listChanged:/*#__PURE__*/ P6(Jx)})),tools:/*#__PURE__*/ P6(/*#__PURE__*/ U({listChanged:/*#__PURE__*/ P6(Jx)}))}),W6=/*#__PURE__*/ U({code:CS,message:H,data:/*#__PURE__*/ P6(Gx)}),G6=/*#__PURE__*/ U({audience:/*#__PURE__*/ P6(/*#__PURE__*/ W(L6)),priority:/*#__PURE__*/ P6(/*#__PURE__*/ vS.check(/*#__PURE__*/ xS({minimum:0,maximum:1})))}),Hye=/*#__PURE__*/ U({uri:H,mimeType:/*#__PURE__*/ P6(H),text:H}),Uye=/*#__PURE__*/ U({uri:H,mimeType:/*#__PURE__*/ P6(H),blob:H}),Wye=/*#__PURE__*/ U({type:/*#__PURE__*/ Hx(`text`),text:H,annotations:/*#__PURE__*/ P6(G6)}),Gye=/*#__PURE__*/ U({type:/*#__PURE__*/ Hx(`image`),data:H,mimeType:H,annotations:/*#__PURE__*/ P6(G6)}),Kye=/*#__PURE__*/ U({uri:H,name:H,description:/*#__PURE__*/ P6(H),mimeType:/*#__PURE__*/ P6(H),size:/*#__PURE__*/ P6(vS),annotations:/*#__PURE__*/ P6(G6)}),qye=/*#__PURE__*/ U({uriTemplate:H,name:H,description:/*#__PURE__*/ P6(H),mimeType:/*#__PURE__*/ P6(H),annotations:/*#__PURE__*/ P6(G6)}),K6=/*#__PURE__*/ U({name:H,description:/*#__PURE__*/ P6(H),required:/*#__PURE__*/ P6(Jx)}),Jye=/*#__PURE__*/ U({name:H,description:/*#__PURE__*/ P6(H),arguments:/*#__PURE__*/ P6(/*#__PURE__*/ W(K6))}),Yye=/*#__PURE__*/ U({name:H,description:/*#__PURE__*/ P6(H),inputSchema:/* @__PURE__ */ U({type:/*#__PURE__*/ Hx(`object`),properties:/*#__PURE__*/ P6(/*#__PURE__*/ Qx(H,F6)),required:/*#__PURE__*/ P6(/*#__PURE__*/ W(H))})}),q6=/*#__PURE__*/ U({hints:/*#__PURE__*/ P6(/*#__PURE__*/ W(/* @__PURE__ */ U({name:/*#__PURE__*/ P6(H)}))),costPriority:/*#__PURE__*/ P6(/*#__PURE__*/ vS.check(/*#__PURE__*/ xS({minimum:0,maximum:1}))),speedPriority:/*#__PURE__*/ P6(/*#__PURE__*/ vS.check(/*#__PURE__*/ xS({minimum:0,maximum:1}))),intelligencePriority:/*#__PURE__*/ P6(/*#__PURE__*/ vS.check(/*#__PURE__*/ xS({minimum:0,maximum:1})))}),Xye=/*#__PURE__*/ U({type:/*#__PURE__*/ Hx(`ref/prompt`),name:H}),J6=/*#__PURE__*/ U({uri:H,name:/*#__PURE__*/ P6(H)});({...V6.fields}),{...U6.fields},{...U6.fields},{...V6.fields},{...U6.fields},{...V6.fields},{...U6.fields},{...V6.fields},{...V6.fields};const Zye=/*#__PURE__*/ U({...V6.fields,completion:/*#__PURE__*/ U({values:/*#__PURE__*/ W(H),total:/*#__PURE__*/ P6(vS),hasMore:/*#__PURE__*/ P6(Jx)})}),Qye=/*#__PURE__*/ U({...V6.fields,roots:/*#__PURE__*/ W(J6)});var Y6=class extends (/*#__PURE__*/ q(`ping`,{success:V6,error:W6,payload:/*#__PURE__*/ oS(z6)})){};({...z6.fields}),{...z6.fields};var X6=class extends (/*#__PURE__*/ q(`logging/setLevel`,{success:V6,error:W6,payload:{...z6.fields,level:R6}})){};({...z6.fields}),{...z6.fields};var Z6=class extends (/*#__PURE__*/ q(`resources/subscribe`,{success:V6,error:W6,payload:{...z6.fields,uri:H}})){},Q6=class extends (/*#__PURE__*/ q(`resources/unsubscribe`,{success:V6,error:W6,payload:{...z6.fields,uri:H}})){};({...z6.fields}),{...z6.fields};var $6=class extends (/*#__PURE__*/ q(`roots/list`,{success:Qye,error:W6,payload:/*#__PURE__*/ oS(z6)})){},e8=class extends (/*#__PURE__*/ q(`notifications/cancelled`,{payload:{...B6.fields,requestId:zye,reason:/*#__PURE__*/ P6(H)}})){};({...B6.fields});var t8=class extends (/*#__PURE__*/ q(`notifications/initialized`,{payload:/*#__PURE__*/ oS(B6)})){},n8=class extends (/*#__PURE__*/ q(`notifications/roots/list_changed`,{payload:/*#__PURE__*/ oS(B6)})){},r8=class extends (/*#__PURE__*/ q(`notifications/message`,{payload:{...B6.fields,level:R6,logger:/*#__PURE__*/ P6(H),data:Gx}})){},i8=class extends (/*#__PURE__*/ q(`notifications/resources/updated`,{payload:{...B6.fields,uri:H}})){},a8=class extends (/*#__PURE__*/ q(`notifications/resources/list_changed`,{payload:/*#__PURE__*/ oS(B6)})){},o8=class extends (/*#__PURE__*/ q(`notifications/tools/list_changed`,{payload:/*#__PURE__*/ oS(B6)})){},s8=class extends (/*#__PURE__*/ q(`notifications/prompts/list_changed`,{payload:/*#__PURE__*/ oS(B6)})){};const c8=P6,$ye=/*#__PURE__*/ U({...Vye.fields,completions:/*#__PURE__*/ c8(/*#__PURE__*/ U({}))}),ebe=/*#__PURE__*/ U({type:/*#__PURE__*/ Hx(`audio`),data:H,mimeType:H,annotations:/*#__PURE__*/ c8(G6)}),l8=/*#__PURE__*/ U({title:/*#__PURE__*/ c8(H),readOnlyHint:/*#__PURE__*/ c8(Jx),destructiveHint:/*#__PURE__*/ c8(Jx),idempotentHint:/*#__PURE__*/ c8(Jx),openWorldHint:/*#__PURE__*/ c8(Jx)});({...Yye.fields}),{...V6.fields},{...V6.fields},{...U6.fields},{...V6.fields},{...V6.fields},{...z6.fields},{...z6.fields},{...z6.fields},{...z6.fields};var u8=class extends (/*#__PURE__*/ q(`notifications/progress`,{payload:{...B6.fields,progressToken:I6,progress:vS,total:/*#__PURE__*/ c8(vS),message:/*#__PURE__*/ c8(H)}})){};const d8=`2025-06-18`,f8=P6,p8=K,m8=/*#__PURE__*/ f8(p8),h8=/*#__PURE__*/ U({name:H,title:/*#__PURE__*/ f8(H),version:H}),g8=/*#__PURE__*/ U({...Bye.fields,elicitation:/*#__PURE__*/ f8(/*#__PURE__*/ U({}))}),_8=/*#__PURE__*/ U({audience:/*#__PURE__*/ f8(/*#__PURE__*/ W(L6)),priority:/*#__PURE__*/ f8(/*#__PURE__*/ vS.check(/*#__PURE__*/ xS({minimum:0,maximum:1})))}),v8=/*#__PURE__*/ U({...Kye.fields,title:/*#__PURE__*/ f8(H),annotations:/*#__PURE__*/ f8(_8),_meta:m8}),y8=/*#__PURE__*/ U({...qye.fields,title:/*#__PURE__*/ f8(H),annotations:/*#__PURE__*/ f8(_8),_meta:m8}),b8=/*#__PURE__*/ G([/* @__PURE__ */ U({...Hye.fields,_meta:m8}),/* @__PURE__ */ U({...Uye.fields,_meta:m8})]),tbe=/*#__PURE__*/ U({...K6.fields,title:/*#__PURE__*/ f8(H)}),x8=/*#__PURE__*/ U({...Jye.fields,title:/*#__PURE__*/ f8(H),arguments:/*#__PURE__*/ f8(/*#__PURE__*/ W(tbe)),_meta:m8}),S8=/*#__PURE__*/ U({type:/*#__PURE__*/ Hx(`resource`),resource:b8,annotations:/*#__PURE__*/ f8(_8),_meta:m8}),nbe=/*#__PURE__*/ U({...v8.fields,type:/*#__PURE__*/ Hx(`resource_link`)}),C8=/*#__PURE__*/ U({...Wye.fields,annotations:/*#__PURE__*/ f8(_8),_meta:m8}),w8=/*#__PURE__*/ U({...Gye.fields,annotations:/*#__PURE__*/ f8(_8),_meta:m8}),T8=/*#__PURE__*/ U({...ebe.fields,annotations:/*#__PURE__*/ f8(_8),_meta:m8}),E8=/*#__PURE__*/ G([C8,w8,T8,S8,nbe]),D8=/*#__PURE__*/ G([C8,w8,T8]),rbe=/*#__PURE__*/ U({role:L6,content:E8}),ibe=/*#__PURE__*/ U({role:L6,content:D8}),abe=/*#__PURE__*/ U({...$ye.fields}),O8=/*#__PURE__*/ U({...V6.fields,protocolVersion:H,capabilities:abe,serverInfo:h8,instructions:/*#__PURE__*/ f8(H)});var k8=class extends (/*#__PURE__*/ q(`initialize`,{success:O8,error:W6,payload:{...z6.fields,protocolVersion:H,capabilities:g8,clientInfo:h8}})){};const A8=/*#__PURE__*/ $x(/*#__PURE__*/ U({type:/*#__PURE__*/ Hx(`object`),properties:/*#__PURE__*/ f8(/*#__PURE__*/ Qx(H,p8)),required:/*#__PURE__*/ f8(/*#__PURE__*/ W(H))}),[K]),j8=/*#__PURE__*/ U({name:H,title:/*#__PURE__*/ f8(H),description:/*#__PURE__*/ f8(H),inputSchema:A8,outputSchema:/*#__PURE__*/ f8(A8),annotations:/*#__PURE__*/ f8(l8),_meta:m8}),M8=/*#__PURE__*/ U({...V6.fields,content:/*#__PURE__*/ W(E8),structuredContent:/*#__PURE__*/ f8(p8),isError:/*#__PURE__*/ f8(Jx)}),obe=/*#__PURE__*/ U({...V6.fields,role:L6,content:D8,model:H,stopReason:/*#__PURE__*/ f8(H)});var N8=class extends (/*#__PURE__*/ q(`sampling/createMessage`,{success:obe,error:W6,payload:{...z6.fields,messages:/*#__PURE__*/ W(ibe),modelPreferences:/*#__PURE__*/ f8(q6),systemPrompt:/*#__PURE__*/ f8(H),includeContext:/*#__PURE__*/ f8(/*#__PURE__*/ iS([`none`,`thisServer`,`allServers`])),temperature:/*#__PURE__*/ f8(vS),maxTokens:vS,stopSequences:/*#__PURE__*/ f8(/*#__PURE__*/ W(H)),metadata:/*#__PURE__*/ f8(p8)}})){};const P8=/*#__PURE__*/ U({...Xye.fields,title:/*#__PURE__*/ f8(H)}),F8=/*#__PURE__*/ U({type:/*#__PURE__*/ Hx(`ref/resource`),uri:H}),I8=Zye;var L8=class extends (/*#__PURE__*/ q(`completion/complete`,{success:I8,error:W6,payload:{...z6.fields,ref:/*#__PURE__*/ G([P8,F8]),argument:/*#__PURE__*/ U({name:H,value:H}),context:/*#__PURE__*/ f8(/*#__PURE__*/ U({arguments:/*#__PURE__*/ f8(/*#__PURE__*/ Qx(H,H))}))}})){};const R8=/*#__PURE__*/ U({...U6.fields,resources:/*#__PURE__*/ W(v8)}),z8=/*#__PURE__*/ U({...U6.fields,resourceTemplates:/*#__PURE__*/ W(y8)}),B8=/*#__PURE__*/ U({...V6.fields,contents:/*#__PURE__*/ W(b8)}),V8=/*#__PURE__*/ U({...U6.fields,prompts:/*#__PURE__*/ W(x8)}),H8=/*#__PURE__*/ U({...V6.fields,description:/*#__PURE__*/ f8(H),messages:/*#__PURE__*/ W(rbe)}),U8=/*#__PURE__*/ U({...U6.fields,tools:/*#__PURE__*/ W(j8)});var sbe=class extends (/*#__PURE__*/ q(`resources/list`,{success:R8,error:W6,payload:/*#__PURE__*/ oS(H6)})){},cbe=class extends (/*#__PURE__*/ q(`resources/templates/list`,{success:z8,error:W6,payload:/*#__PURE__*/ oS(H6)})){},W8=class extends (/*#__PURE__*/ q(`resources/read`,{success:B8,error:W6,payload:{...z6.fields,uri:H}})){},lbe=class extends (/*#__PURE__*/ q(`prompts/list`,{success:V8,error:W6,payload:/*#__PURE__*/ oS(H6)})){},ube=class extends (/*#__PURE__*/ q(`prompts/get`,{success:H8,error:W6,payload:{...z6.fields,name:H,arguments:/*#__PURE__*/ f8(/*#__PURE__*/ Qx(H,H))}})){},dbe=class extends (/*#__PURE__*/ q(`tools/list`,{success:U8,error:W6,payload:/*#__PURE__*/ oS(H6)})){},G8=class extends (/*#__PURE__*/ q(`tools/call`,{success:M8,error:W6,payload:{...z6.fields,name:H,arguments:/*#__PURE__*/ f8(p8)}})){};const fbe=/*#__PURE__*/ U({...V6.fields,action:/*#__PURE__*/ iS([`accept`,`decline`,`cancel`]),content:/*#__PURE__*/ f8(/*#__PURE__*/ Qx(H,/*#__PURE__*/ G([H,vS,Jx])))}),pbe=/*#__PURE__*/ U({type:/*#__PURE__*/ Hx(`object`),properties:/*#__PURE__*/ Qx(H,/*#__PURE__*/ G([/* @__PURE__ */ U({type:/*#__PURE__*/ Hx(`string`),title:/*#__PURE__*/ f8(H),description:/*#__PURE__*/ f8(H),minLength:/*#__PURE__*/ f8(CS),maxLength:/*#__PURE__*/ f8(CS),format:/*#__PURE__*/ f8(/*#__PURE__*/ iS([`email`,`uri`,`date`,`date-time`]))}),/* @__PURE__ */ U({type:/*#__PURE__*/ iS([`number`,`integer`]),title:/*#__PURE__*/ f8(H),description:/*#__PURE__*/ f8(H),minimum:/*#__PURE__*/ f8(vS),maximum:/*#__PURE__*/ f8(vS)}),/* @__PURE__ */ U({type:/*#__PURE__*/ Hx(`boolean`),title:/*#__PURE__*/ f8(H),description:/*#__PURE__*/ f8(H),default:/*#__PURE__*/ f8(Jx)}),/* @__PURE__ */ U({type:/*#__PURE__*/ Hx(`string`),title:/*#__PURE__*/ f8(H),description:/*#__PURE__*/ f8(H),enum:/*#__PURE__*/ W(H),enumNames:/*#__PURE__*/ f8(/*#__PURE__*/ W(H))})])),required:/*#__PURE__*/ f8(/*#__PURE__*/ W(H))});var K8=class extends (/*#__PURE__*/ q(`elicitation/create`,{success:fbe,error:W6,payload:{...z6.fields,message:H,requestedSchema:pbe}})){},mbe=class extends (/*#__PURE__*/ hN(Y6,k8,L8,X6,ube,lbe,sbe,cbe,W8,Z6,Q6,G8,dbe)){},q8=class extends (/*#__PURE__*/ hN(e8,u8,t8,n8)){},hbe=class extends (/*#__PURE__*/ hN(Y6,N8,$6,K8)){},gbe=class extends (/*#__PURE__*/ hN(e8,u8,r8,i8,a8,o8,s8)){};const J8=/*#__PURE__*/ (/* @__PURE__ */ mbe.omit(`ping`).middleware(Q3).add(Y6)).merge(q8),Y8=/*#__PURE__*/ J8.omit(`ping`),_be=e=>{if(e?.type!==`object`)return!1;let t=e.properties===void 0||Jt(e.properties)&&Object.values(e.properties).every(Jt),n=e.required===void 0||Array.isArray(e.required)&&e.required.every(It);return t&&n},vbe=e=>({protocolVersion:d8,clientCapabilities:h3.make(e.capabilities),clientInfo:m3.make(e.clientInfo),requestMetadata:e._meta}),X8=(e,t)=>new Y3({operation:e,protocolVersion:d8,reason:t}),Z8=(e,t,n)=>Object.hasOwn(e.clientCapabilities,n)&&e.clientCapabilities[n]!==void 0?F:L(X8(t,`Client did not advertise the ${n} capability`)),Q8=/*#__PURE__*/ B(function*(e){return NE(e).pipe(PE({type:LE(`text`,`resource_link`)},e=>e),PE({type:LE(`image`,`audio`)},e=>({type:e.type,mimeType:e.mimeType,data:Ah(e.data),annotations:e.annotations,_meta:e._meta})),PE({type:`resource`},e=>{let t=e.resource;return`text`in t?S8.make({type:`resource`,resource:{uri:t.uri,mimeType:t.mimeType,_meta:t._meta,text:t.text},annotations:e.annotations,_meta:e._meta}):S8.make({type:`resource`,resource:{uri:t.uri,mimeType:t.mimeType,_meta:t._meta,blob:Ah(t.blob)},annotations:e.annotations,_meta:e._meta})}),zE)}),ybe=e=>`text`in e?{uri:e.uri,mimeType:e.mimeType,_meta:e._meta,text:e.text}:{uri:e.uri,mimeType:e.mimeType,_meta:e._meta,blob:Ah(e.blob)},bbe=e=>e===void 0||xbe(e)?e:void 0,xbe=e=>Jt(e),Sbe=/*#__PURE__*/ v6({protocolVersion:d8,runtime:/*#__PURE__*/ A6({jsonRpc:{acceptsBatches:!1},http:{requiresVersionHeader:!0}}),clientRpcs:J8,clientNotificationRpcs:q8,serverRequestRpcs:hbe,serverNotificationRpcs:gbe,handlerRpcs:Y8,makeHandlers:(e,t)=>Y8.of({initialize:(e,{client:n})=>t.initialize(d8,vbe(e),n.id).pipe(z(e=>O8.make({protocolVersion:d8,capabilities:{experimental:e.capabilities.experimental,extensions:e.capabilities.extensions,logging:e.capabilities.logging?{}:void 0,completions:e.capabilities.completions?{}:void 0,prompts:e.capabilities.prompts,resources:e.capabilities.resources,tools:e.capabilities.tools},serverInfo:e.serverInfo,instructions:e.instructions}))),"logging/setLevel":({level:e},{client:n,headers:r})=>t.setLogLevel(e,n.id,r).pipe(bp({})),"notifications/cancelled":()=>F,"notifications/initialized":(e,{client:n,headers:r})=>t.clientNotification(n6.Initialized(),n.id,r),"notifications/progress":(e,{client:n,headers:r})=>t.clientNotification(n6.Progress({progressToken:e.progressToken,progress:e.progress,total:e.total,message:e.message,metadata:e._meta}),n.id,r),"notifications/roots/list_changed":(e,{client:n,headers:r})=>t.clientNotification(n6.RootsChanged(),n.id,r),"resources/list":t=>Z3.use(t=>e.resources.list(o6(t))).pipe(z(e=>R8.make({resources:e}))),"resources/templates/list":t=>Z3.use(t=>e.resources.listTemplates(o6(t))).pipe(z(e=>z8.make({resourceTemplates:e}))),"resources/read":B(function*({uri:t}){let n=yield*Z3,r=yield*e.resources.read(t,s6(n)).pipe(Dp(p6.fromFeature));return B8.make({contents:r.contents.map(ybe),_meta:r._meta})}),"resources/subscribe":({uri:e},{client:n,headers:r})=>t.subscribe(e,n.id,r).pipe(bp({})),"resources/unsubscribe":({uri:e},{client:n,headers:r})=>t.unsubscribe(e,n.id,r).pipe(bp({})),"prompts/list":t=>Z3.use(t=>e.prompts.list(o6(t))).pipe(z(e=>V8.make({prompts:e}))),"prompts/get":B(function*({arguments:t,name:n}){let r=yield*Z3,i=yield*e.prompts.get(n,t??{},s6(r)).pipe(Dp(p6.fromFeature));if(i._tag===`InputRequired`)return yield*p6.fromFeature(new t6({protocolVersion:d8,feature:`prompt input requirements`}));let a=i.value,o=yield*np(a.messages,e=>Q8(e.content).pipe(z(t=>({role:e.role,content:t})),Dp(p6.fromTool)));return H8.make({description:a.description,messages:o,_meta:a._meta})}),"completion/complete":B(function*(t){let n=yield*Z3,r=yield*e.completions.complete({reference:t.ref.type===`ref/prompt`?{type:`prompt`,name:t.ref.name,title:t.ref.title}:{type:`resourceTemplate`,uriTemplate:t.ref.uri},argument:t.argument,context:t.context?.arguments===void 0?void 0:{arguments:t.context.arguments},metadata:t._meta},s6(n)).pipe(Dp(p6.fromFeature));return I8.make({completion:{values:Array.from(r.values),total:r.total,hasMore:r.hasMore},_meta:r.metadata})}),"tools/list":B(function*(){let t=yield*Z3,n=yield*e.tools.list(o6(t));return U8.make({tools:n.map(e=>j8.make({name:e.name,title:e.title,description:e.description,inputSchema:e.inputSchema,outputSchema:_be(e.outputSchema)?e.outputSchema:void 0,annotations:e.annotations===void 0?void 0:l8.make({title:e.annotations.title,readOnlyHint:e.annotations.readOnlyHint,destructiveHint:e.annotations.destructiveHint,idempotentHint:e.annotations.idempotentHint,openWorldHint:e.annotations.openWorldHint}),_meta:e._meta}))})}),"tools/call":B(function*(t){let n=yield*Z3,r=yield*e.tools.call({...t,arguments:t.arguments??{}},s6(n)).pipe(R(e=>l6(d8,e)),Dp(p6.fromTool)),i=yield*np(u6(r),Q8).pipe(Dp(p6.fromTool)),a=bbe(r.structuredContent);return M8.make({content:i,structuredContent:a,isError:r.isError,_meta:r._meta})})}),toReverseClient:(e,t)=>({listRoots:B(function*(n){yield*Z8(e,`roots/list`,`roots`);let r=yield*h6(q3.payloadSchema,$6.payloadSchema,n).pipe(Dp(()=>X8(`roots/list`,`Request is not representable by this protocol`))),{roots:i}=yield*t[`roots/list`](r).pipe(Dp(m6(`roots/list`)));return new K3({roots:i})}),createMessage:B(function*(n){yield*Z8(e,`sampling/createMessage`,`sampling`);let r=yield*Nye(G3.payloadSchema,N8.payloadSchema,n).pipe(Dp(()=>X8(`sampling/createMessage`,`Request is not representable by this protocol`))),i=yield*t[`sampling/createMessage`](r).pipe(Dp(m6(`sampling/createMessage`)));return yield*h6(N8.successSchema,G3.successSchema,i).pipe(Dp(()=>X8(`sampling/createMessage`,`Response is not representable by the canonical model`)))}),elicit:B(function*(n){yield*Z8(e,`elicitation/create`,`elicitation`);let r=n.mode===`form`?jae(n,[`mode`]):n,i=yield*Ax(K8.payloadSchema,{onExcessProperty:`error`})(r).pipe(Dp(()=>X8(`elicitation/create`,`Request is not representable by this protocol`))),a=yield*t[`elicitation/create`](i).pipe(Dp(m6(`elicitation/create`)));return yield*h6(K8.successSchema,J3.successSchema,a).pipe(Dp(()=>X8(`elicitation/create`,`Response is not representable by the canonical model`)))})}),projectNotification:e=>g6({supportsProgressMessage:!0},e),normalizeCancellation:e=>Ax(e8.payloadSchema)(e).pipe(z(e=>({requestId:e.requestId,reason:e.reason,metadata:e._meta})))}),$8=`2025-11-25`,Q=P6,e5=K,t5=/*#__PURE__*/ Q(e5),n5=/*#__PURE__*/ U({src:H,mimeType:/*#__PURE__*/ Q(H),sizes:/*#__PURE__*/ Q(/*#__PURE__*/ W(H)),theme:/*#__PURE__*/ Q(/*#__PURE__*/ iS([`light`,`dark`]))}),r5=/*#__PURE__*/ U({...h8.fields,description:/*#__PURE__*/ Q(H),websiteUrl:/*#__PURE__*/ Q(H),icons:/*#__PURE__*/ Q(/*#__PURE__*/ W(n5))}),Cbe=/*#__PURE__*/ U({...g8.fields,sampling:/*#__PURE__*/ Q(/*#__PURE__*/ U({context:/*#__PURE__*/ Q(e5),tools:/*#__PURE__*/ Q(e5)})),elicitation:/*#__PURE__*/ Q(/*#__PURE__*/ U({form:/*#__PURE__*/ Q(e5),url:/*#__PURE__*/ Q(e5)}))}),i5=/*#__PURE__*/ U({..._8.fields,lastModified:/*#__PURE__*/ Q(H)}),a5=/*#__PURE__*/ U({...v8.fields,annotations:/*#__PURE__*/ Q(i5),icons:/*#__PURE__*/ Q(/*#__PURE__*/ W(n5))}),o5=/*#__PURE__*/ U({...y8.fields,annotations:/*#__PURE__*/ Q(i5),icons:/*#__PURE__*/ Q(/*#__PURE__*/ W(n5))}),s5=/*#__PURE__*/ U({...x8.fields,icons:/*#__PURE__*/ Q(/*#__PURE__*/ W(n5))}),c5=/*#__PURE__*/ U({...C8.fields,annotations:/*#__PURE__*/ Q(i5)}),l5=/*#__PURE__*/ U({...w8.fields,annotations:/*#__PURE__*/ Q(i5)}),u5=/*#__PURE__*/ U({...T8.fields,annotations:/*#__PURE__*/ Q(i5)}),d5=/*#__PURE__*/ U({...S8.fields,annotations:/*#__PURE__*/ Q(i5)}),f5=/*#__PURE__*/ G([c5,l5,u5,/* @__PURE__ */ U({...a5.fields,type:/*#__PURE__*/ Hx(`resource_link`)}),d5]),wbe=/*#__PURE__*/ U({role:L6,content:f5}),p5=/*#__PURE__*/ U({...j8.fields,icons:/*#__PURE__*/ Q(/*#__PURE__*/ W(n5))}),m5=/*#__PURE__*/ U({...M8.fields,content:/*#__PURE__*/ W(f5)});var Tbe=class extends (/*#__PURE__*/ q(`tools/call`,{success:m5,error:W6,payload:G8.payloadSchema})){};const h5=/*#__PURE__*/ U({type:/*#__PURE__*/ Hx(`tool_use`),id:H,name:H,input:e5,_meta:t5}),g5=/*#__PURE__*/ G([c5,l5,u5,h5,/* @__PURE__ */ U({type:/*#__PURE__*/ Hx(`tool_result`),toolUseId:H,content:/*#__PURE__*/ W(f5),structuredContent:/*#__PURE__*/ Q(e5),isError:/*#__PURE__*/ Q(Jx),_meta:t5})]),_5=/*#__PURE__*/ U({role:L6,content:/*#__PURE__*/ G([g5,/*#__PURE__*/ W(g5)]),_meta:t5}),v5=/*#__PURE__*/ U({mode:/*#__PURE__*/ Q(/*#__PURE__*/ iS([`auto`,`required`,`none`]))}),Ebe=/*#__PURE__*/ U({...V6.fields,..._5.fields,model:H,stopReason:/*#__PURE__*/ Q(H)});var y5=class extends (/*#__PURE__*/ q(`sampling/createMessage`,{success:Ebe,error:W6,payload:{...N8.payloadSchema.fields,messages:/*#__PURE__*/ W(_5),maxTokens:CS,tools:/*#__PURE__*/ Q(/*#__PURE__*/ W(p5)),toolChoice:/*#__PURE__*/ Q(v5)}})){};const b5=/*#__PURE__*/ U({...J6.fields,_meta:t5}),Dbe=/*#__PURE__*/ U({...V6.fields,roots:/*#__PURE__*/ W(b5)});var x5=class extends (/*#__PURE__*/ q(`roots/list`,{success:Dbe,error:W6,payload:/*#__PURE__*/ oS(z6)})){};const S5=/*#__PURE__*/ U({type:/*#__PURE__*/ Hx(`string`),title:/*#__PURE__*/ Q(H),description:/*#__PURE__*/ Q(H),minLength:/*#__PURE__*/ Q(CS),maxLength:/*#__PURE__*/ Q(CS),format:/*#__PURE__*/ Q(/*#__PURE__*/ iS([`email`,`uri`,`date`,`date-time`])),default:/*#__PURE__*/ Q(H)}),C5=/*#__PURE__*/ U({type:/*#__PURE__*/ iS([`number`,`integer`]),title:/*#__PURE__*/ Q(H),description:/*#__PURE__*/ Q(H),minimum:/*#__PURE__*/ Q(vS),maximum:/*#__PURE__*/ Q(vS),default:/*#__PURE__*/ Q(vS)}),w5=/*#__PURE__*/ U({type:/*#__PURE__*/ Hx(`boolean`),title:/*#__PURE__*/ Q(H),description:/*#__PURE__*/ Q(H),default:/*#__PURE__*/ Q(Jx)}),T5=/*#__PURE__*/ U({const:H,title:H}),E5=/*#__PURE__*/ G([/* @__PURE__ */ U({type:/*#__PURE__*/ Hx(`string`),title:/*#__PURE__*/ Q(H),description:/*#__PURE__*/ Q(H),enum:/*#__PURE__*/ W(H),default:/*#__PURE__*/ Q(H)}),/* @__PURE__ */ U({type:/*#__PURE__*/ Hx(`string`),title:/*#__PURE__*/ Q(H),description:/*#__PURE__*/ Q(H),oneOf:/*#__PURE__*/ W(T5),default:/*#__PURE__*/ Q(H)})]),D5=/*#__PURE__*/ G([/* @__PURE__ */ U({type:/*#__PURE__*/ Hx(`array`),title:/*#__PURE__*/ Q(H),description:/*#__PURE__*/ Q(H),minItems:/*#__PURE__*/ Q(CS),maxItems:/*#__PURE__*/ Q(CS),items:/*#__PURE__*/ U({type:/*#__PURE__*/ Hx(`string`),enum:/*#__PURE__*/ W(H)}),default:/*#__PURE__*/ Q(/*#__PURE__*/ W(H))}),/* @__PURE__ */ U({type:/*#__PURE__*/ Hx(`array`),title:/*#__PURE__*/ Q(H),description:/*#__PURE__*/ Q(H),minItems:/*#__PURE__*/ Q(CS),maxItems:/*#__PURE__*/ Q(CS),items:/*#__PURE__*/ U({anyOf:/*#__PURE__*/ W(T5)}),default:/*#__PURE__*/ Q(/*#__PURE__*/ W(H))})]),O5=/*#__PURE__*/ U({type:/*#__PURE__*/ Hx(`string`),title:/*#__PURE__*/ Q(H),description:/*#__PURE__*/ Q(H),enum:/*#__PURE__*/ W(H),enumNames:/*#__PURE__*/ Q(/*#__PURE__*/ W(H)),default:/*#__PURE__*/ Q(H)}),Obe=/*#__PURE__*/ U({$schema:/*#__PURE__*/ Q(H),type:/*#__PURE__*/ Hx(`object`),properties:/*#__PURE__*/ Qx(H,/* @__PURE__ */ G([/* @__PURE__ */ G([O5,E5,D5]),S5,C5,w5])),required:/*#__PURE__*/ Q(/*#__PURE__*/ W(H))}),kbe=/*#__PURE__*/ G([/* @__PURE__ */ U({...z6.fields,mode:/*#__PURE__*/ Q(/*#__PURE__*/ Hx(`form`)),message:H,requestedSchema:Obe}),/* @__PURE__ */ U({...z6.fields,mode:/*#__PURE__*/ Hx(`url`),message:H,elicitationId:H,url:H})]),Abe=/*#__PURE__*/ U({...V6.fields,action:/*#__PURE__*/ iS([`accept`,`decline`,`cancel`]),content:/*#__PURE__*/ Q(/*#__PURE__*/ Qx(H,/*#__PURE__*/ G([H,vS,Jx,/*#__PURE__*/ W(H)])))});var k5=class extends (/*#__PURE__*/ q(`elicitation/create`,{success:Abe,error:W6,payload:kbe})){},jbe=class extends (/*#__PURE__*/ q(`notifications/elicitation/complete`,{payload:{elicitationId:H}})){};const A5=/*#__PURE__*/ U({...O8.fields,serverInfo:r5});var Mbe=class extends (/*#__PURE__*/ q(`initialize`,{success:A5,error:W6,payload:{...k8.payloadSchema.fields,capabilities:Cbe,clientInfo:r5}})){};const j5=/*#__PURE__*/ U({...U6.fields,resources:/*#__PURE__*/ W(a5)}),M5=/*#__PURE__*/ U({...U6.fields,resourceTemplates:/*#__PURE__*/ W(o5)}),N5=/*#__PURE__*/ U({...U6.fields,prompts:/*#__PURE__*/ W(s5)}),P5=/*#__PURE__*/ U({...H8.fields,messages:/*#__PURE__*/ W(wbe)}),F5=/*#__PURE__*/ U({...U6.fields,tools:/*#__PURE__*/ W(p5)});var Nbe=class extends (/*#__PURE__*/ q(`resources/list`,{success:j5,error:W6,payload:/*#__PURE__*/ oS(H6)})){},Pbe=class extends (/*#__PURE__*/ q(`resources/templates/list`,{success:M5,error:W6,payload:/*#__PURE__*/ oS(H6)})){},Fbe=class extends (/*#__PURE__*/ q(`prompts/list`,{success:N5,error:W6,payload:/*#__PURE__*/ oS(H6)})){},Ibe=class extends (/*#__PURE__*/ q(`prompts/get`,{success:P5,error:W6,payload:{...z6.fields,name:H,arguments:/*#__PURE__*/ Q(/*#__PURE__*/ Qx(H,H))}})){},Lbe=class extends (/*#__PURE__*/ q(`tools/list`,{success:F5,error:W6,payload:/*#__PURE__*/ oS(H6)})){},Rbe=class extends (/*#__PURE__*/ hN(Y6,Mbe,L8,X6,Ibe,Fbe,Nbe,Pbe,W8,Z6,Q6,Tbe,Lbe)){},I5=class extends (/*#__PURE__*/ hN(e8,u8,t8,n8)){},zbe=class extends (/*#__PURE__*/ hN(Y6,y5,x5,k5)){},Bbe=class extends (/*#__PURE__*/ hN(e8,u8,r8,i8,a8,o8,s8,jbe)){};const L5=/*#__PURE__*/ (/* @__PURE__ */ Rbe.omit(`ping`).middleware(Q3).add(Y6)).merge(I5),R5=/*#__PURE__*/ L5.omit(`ping`),Vbe=e=>{if(e?.type!==`object`)return!1;let t=e.properties===void 0||Jt(e.properties)&&Object.values(e.properties).every(Jt),n=e.required===void 0||Array.isArray(e.required)&&e.required.every(It);return t&&n},z5=(e,t)=>new Y3({operation:e,protocolVersion:$8,reason:t}),B5=(e,t,n)=>Object.hasOwn(e.clientCapabilities,n)&&e.clientCapabilities[n]!==void 0?F:L(z5(t,`Client did not advertise the ${n} capability`)),Hbe=e=>e.stopReason===`toolUse`||(`type`in e.content?e.content.type===`tool_use`||e.content.type===`tool_result`:e.content.some(e=>e.type===`tool_use`||e.type===`tool_result`)),Ube=(e,t)=>{let n=e.clientCapabilities.elicitation;return n===void 0?!1:t===`form`?n.form!==void 0||n.url===void 0:n.url!==void 0},V5=/*#__PURE__*/ B(function*(e){return NE(e).pipe(PE({type:LE(`text`,`resource_link`)},e=>e),PE({type:LE(`image`,`audio`)},e=>({type:e.type,mimeType:e.mimeType,data:Ah(e.data),annotations:e.annotations,_meta:e._meta})),PE({type:`resource`},e=>{let t=e.resource;return`text`in t?d5.make({type:`resource`,resource:{uri:t.uri,mimeType:t.mimeType,_meta:t._meta,text:t.text},annotations:e.annotations,_meta:e._meta}):d5.make({type:`resource`,resource:{uri:t.uri,mimeType:t.mimeType,_meta:t._meta,blob:Ah(t.blob)},annotations:e.annotations,_meta:e._meta})}),zE)}),Wbe=e=>e===void 0||Gbe(e)?e:void 0,Gbe=e=>Jt(e),Kbe=/*#__PURE__*/ v6({protocolVersion:$8,runtime:/*#__PURE__*/ A6({jsonRpc:{acceptsBatches:!1},http:{requiresVersionHeader:!0}}),clientRpcs:L5,clientNotificationRpcs:I5,serverRequestRpcs:zbe,serverNotificationRpcs:Bbe,handlerRpcs:R5,makeHandlers:(e,t)=>R5.of({initialize:(e,{client:n})=>t.initialize($8,{protocolVersion:$8,clientCapabilities:h3.make(e.capabilities),clientInfo:m3.make(e.clientInfo),requestMetadata:e._meta},n.id).pipe(z(e=>A5.make({protocolVersion:$8,capabilities:{experimental:e.capabilities.experimental,extensions:e.capabilities.extensions,logging:e.capabilities.logging?{}:void 0,completions:e.capabilities.completions?{}:void 0,prompts:e.capabilities.prompts,resources:e.capabilities.resources,tools:e.capabilities.tools},serverInfo:e.serverInfo,instructions:e.instructions}))),"logging/setLevel":({level:e},{client:n,headers:r})=>t.setLogLevel(e,n.id,r).pipe(bp({})),"notifications/cancelled":()=>F,"notifications/initialized":(e,{client:n,headers:r})=>t.clientNotification(n6.Initialized(),n.id,r),"notifications/progress":(e,{client:n,headers:r})=>t.clientNotification(n6.Progress({progressToken:e.progressToken,progress:e.progress,total:e.total,message:e.message,metadata:e._meta}),n.id,r),"notifications/roots/list_changed":(e,{client:n,headers:r})=>t.clientNotification(n6.RootsChanged(),n.id,r),"resources/list":()=>Z3.use(t=>e.resources.list(o6(t))).pipe(z(e=>j5.make({resources:e.map(e=>a5.make(e))}))),"resources/templates/list":()=>Z3.use(t=>e.resources.listTemplates(o6(t))).pipe(z(e=>M5.make({resourceTemplates:e.map(e=>o5.make(e))}))),"resources/read":B(function*({uri:t}){let n=yield*Z3,r=yield*e.resources.read(t,s6(n)).pipe(Dp(p6.fromFeature));return B8.make({contents:r.contents.map(e=>`text`in e?{uri:e.uri,mimeType:e.mimeType,_meta:e._meta,text:e.text}:{uri:e.uri,mimeType:e.mimeType,_meta:e._meta,blob:Ah(e.blob)}),_meta:r._meta})}),"resources/subscribe":({uri:e},{client:n,headers:r})=>t.subscribe(e,n.id,r).pipe(bp({})),"resources/unsubscribe":({uri:e},{client:n,headers:r})=>t.unsubscribe(e,n.id,r).pipe(bp({})),"prompts/list":()=>Z3.use(t=>e.prompts.list(o6(t))).pipe(z(e=>N5.make({prompts:e.map(e=>s5.make(e))}))),"prompts/get":B(function*({arguments:t,name:n}){let r=yield*Z3,i=yield*e.prompts.get(n,t??{},s6(r)).pipe(Dp(p6.fromFeature));if(i._tag===`InputRequired`)return yield*p6.fromFeature(new t6({protocolVersion:$8,feature:`prompt input requirements`}));let a=i.value,o=yield*np(a.messages,e=>V5(e.content).pipe(z(t=>({role:e.role,content:t})),Dp(p6.fromTool)));return P5.make({description:a.description,messages:o,_meta:a._meta})}),"completion/complete":B(function*(t){let n=yield*Z3,r=yield*e.completions.complete({reference:t.ref.type===`ref/prompt`?{type:`prompt`,name:t.ref.name,title:t.ref.title}:{type:`resourceTemplate`,uriTemplate:t.ref.uri},argument:t.argument,context:t.context?.arguments===void 0?void 0:{arguments:t.context.arguments},metadata:t._meta},s6(n)).pipe(Dp(p6.fromFeature));return I8.make({completion:{values:Array.from(r.values),total:r.total,hasMore:r.hasMore},_meta:r.metadata})}),"tools/list":B(function*(){let t=yield*Z3,n=yield*e.tools.list(o6(t));return F5.make({tools:n.map(e=>p5.make({name:e.name,title:e.title,description:e.description,inputSchema:e.inputSchema,outputSchema:Vbe(e.outputSchema)?e.outputSchema:void 0,icons:e.icons,annotations:e.annotations===void 0?void 0:l8.make({title:e.annotations.title,readOnlyHint:e.annotations.readOnlyHint,destructiveHint:e.annotations.destructiveHint,idempotentHint:e.annotations.idempotentHint,openWorldHint:e.annotations.openWorldHint}),_meta:e._meta}))})}),"tools/call":B(function*(t){let n=yield*Z3,r=yield*e.tools.call({...t,arguments:t.arguments??{}},s6(n)).pipe(R(e=>l6($8,e)),Cp([`InvalidToolInput`,`ToolExecutionError`],e=>N(B3.make({content:[M3.make({type:`text`,text:e.message})],isError:!0}))),Dp(p6.fromTool)),i=yield*np(u6(r),V5).pipe(Dp(p6.fromTool)),a=Wbe(r.structuredContent);return m5.make({content:i,structuredContent:a,isError:r.isError,_meta:r._meta})})}),toReverseClient:(e,t)=>({listRoots:B(function*(n){yield*B5(e,`roots/list`,`roots`);let r=yield*h6(q3.payloadSchema,x5.payloadSchema,n).pipe(Dp(()=>z5(`roots/list`,`Request is not representable by this protocol`))),{roots:i}=yield*t[`roots/list`](r).pipe(Dp(m6(`roots/list`)));return new K3({roots:i})}),createMessage:B(function*(n){if(yield*B5(e,`sampling/createMessage`,`sampling`),f6(n)&&e.clientCapabilities.sampling?.tools==null)return yield*z5(`sampling/createMessage`,`Client did not advertise the sampling.tools capability`);if((n.includeContext===`thisServer`||n.includeContext===`allServers`)&&e.clientCapabilities.sampling?.context==null)return yield*z5(`sampling/createMessage`,`Client did not advertise the sampling.context capability`);let r=yield*h6(G3.payloadSchema,y5.payloadSchema,n).pipe(Dp(()=>z5(`sampling/createMessage`,`Request is not representable by this protocol`))),i=yield*t[`sampling/createMessage`](r).pipe(Dp(m6(`sampling/createMessage`)));return Hbe(i)&&e.clientCapabilities.sampling?.tools==null?yield*z5(`sampling/createMessage`,`Client did not advertise the sampling.tools capability`):yield*h6(y5.successSchema,G3.successSchema,i).pipe(Dp(()=>z5(`sampling/createMessage`,`Response is not representable by the canonical model`)))}),elicit:B(function*(n){yield*B5(e,`elicitation/create`,`elicitation`);let r=n.mode===`url`?`url`:`form`;if(!Ube(e,r))return yield*z5(`elicitation/create`,`Client did not advertise the elicitation.${r} capability`);let i=yield*h6(J3.payloadSchema,k5.payloadSchema,n).pipe(Dp(()=>z5(`elicitation/create`,`Request is not representable by this protocol`))),a=yield*t[`elicitation/create`](i).pipe(Dp(m6(`elicitation/create`)));return yield*h6(k5.successSchema,J3.successSchema,a).pipe(Dp(()=>z5(`elicitation/create`,`Response is not representable by the canonical model`)))})}),projectNotification:e=>e._tag===`ElicitationComplete`?N({tag:`notifications/elicitation/complete`,payload:{elicitationId:e.elicitationId}}):g6({supportsProgressMessage:!0},e),normalizeCancellation:e=>Ax(e8.payloadSchema)(e).pipe(z(e=>({requestId:e.requestId,reason:e.reason,metadata:e._meta})))}),H5=`2026-07-28`,$=P6,U5=/*#__PURE__*/ $(K),W5=/*#__PURE__*/ G([H,CS]),G5=W5,K5=L6,q5=R6,J5=r5,qbe=/*#__PURE__*/ $x(/*#__PURE__*/ U({experimental:/*#__PURE__*/ $(/*#__PURE__*/ Qx(H,K)),roots:/*#__PURE__*/ $(/*#__PURE__*/ U({})),sampling:/*#__PURE__*/ $(/*#__PURE__*/ U({context:/*#__PURE__*/ $(K),tools:/*#__PURE__*/ $(K)})),elicitation:/*#__PURE__*/ $(/*#__PURE__*/ U({form:/*#__PURE__*/ $(K),url:/*#__PURE__*/ $(K)})),extensions:/*#__PURE__*/ $(/*#__PURE__*/ Qx(H,K))}),[K]),Jbe=/*#__PURE__*/ $x(/*#__PURE__*/ U({experimental:/*#__PURE__*/ $(/*#__PURE__*/ Qx(H,K)),logging:/*#__PURE__*/ $(K),completions:/*#__PURE__*/ $(K),prompts:/*#__PURE__*/ $(/*#__PURE__*/ U({listChanged:/*#__PURE__*/ $(Jx)})),resources:/*#__PURE__*/ $(/*#__PURE__*/ U({subscribe:/*#__PURE__*/ $(Jx),listChanged:/*#__PURE__*/ $(Jx)})),tools:/*#__PURE__*/ $(/*#__PURE__*/ U({listChanged:/*#__PURE__*/ $(Jx)})),extensions:/*#__PURE__*/ $(/*#__PURE__*/ Qx(H,K))}),[K]),Y5=/*#__PURE__*/ $x(/*#__PURE__*/ U({progressToken:/*#__PURE__*/ $(G5),"io.modelcontextprotocol/protocolVersion":H,"io.modelcontextprotocol/clientInfo":/*#__PURE__*/ $(J5),"io.modelcontextprotocol/clientCapabilities":qbe,"io.modelcontextprotocol/logLevel":/*#__PURE__*/ $(q5)}),[K]),X5=/*#__PURE__*/ U({_meta:Y5}),Z5=/*#__PURE__*/ U({_meta:/*#__PURE__*/ $(/* @__PURE__ */ $x(/*#__PURE__*/ U({"io.modelcontextprotocol/subscriptionId":/*#__PURE__*/ $(W5)}),[K]))}),Q5=/*#__PURE__*/ $x(/*#__PURE__*/ U({"io.modelcontextprotocol/serverInfo":J5}),[K]),$5={_meta:Q5,resultType:/*#__PURE__*/ Hx(`complete`)},e7=/*#__PURE__*/ U({code:CS,message:H,data:/*#__PURE__*/ $(uC)}),Ybe=i5,t7=/*#__PURE__*/ U({...a5.fields,size:/*#__PURE__*/ $(CS),annotations:/*#__PURE__*/ $(Ybe)}),n7=o5,Xbe=b8,r7=c5,i7=l5,a7=u5,o7=/*#__PURE__*/ G([r7,i7,a7,/* @__PURE__ */ U({...t7.fields,type:/*#__PURE__*/ Hx(`resource_link`)}),d5]),s7=s5,Zbe=/*#__PURE__*/ U({role:K5,content:o7}),Qbe=/*#__PURE__*/ $x(/*#__PURE__*/ U({$schema:/*#__PURE__*/ $(H),type:/*#__PURE__*/ Hx(`object`)}),[K]),$be=/*#__PURE__*/ $x(/*#__PURE__*/ U({$schema:/*#__PURE__*/ $(H)}),[K]),exe=l8,c7=/*#__PURE__*/ U({...p5.fields,inputSchema:Qbe,outputSchema:/*#__PURE__*/ $($be),annotations:/*#__PURE__*/ $(exe)}),l7=/*#__PURE__*/ G([r7,i7,a7,h5,/* @__PURE__ */ U({type:/*#__PURE__*/ Hx(`tool_result`),toolUseId:H,content:/*#__PURE__*/ W(o7),structuredContent:/*#__PURE__*/ $(uC),isError:/*#__PURE__*/ $(Jx),_meta:U5})]),u7=/*#__PURE__*/ U({role:K5,content:/*#__PURE__*/ G([l7,/*#__PURE__*/ W(l7)]),_meta:U5}),txe=/*#__PURE__*/ $x(/*#__PURE__*/ U({name:/*#__PURE__*/ $(H)}),[K]),d7=/*#__PURE__*/ vS.check(/*#__PURE__*/ xS({minimum:0,maximum:1})),nxe=/*#__PURE__*/ U({...q6.fields,hints:/*#__PURE__*/ $(/*#__PURE__*/ W(txe)),costPriority:/*#__PURE__*/ $(d7),speedPriority:/*#__PURE__*/ $(d7),intelligencePriority:/*#__PURE__*/ $(d7)}),rxe=/*#__PURE__*/ U({method:/*#__PURE__*/ Hx(`sampling/createMessage`),params:/*#__PURE__*/ U({messages:/*#__PURE__*/ W(u7),modelPreferences:/*#__PURE__*/ $(nxe),systemPrompt:/*#__PURE__*/ $(H),includeContext:/*#__PURE__*/ $(/*#__PURE__*/ iS([`none`,`thisServer`,`allServers`])),temperature:/*#__PURE__*/ $(vS),maxTokens:CS,stopSequences:/*#__PURE__*/ $(/*#__PURE__*/ W(H)),metadata:/*#__PURE__*/ $(K),tools:/*#__PURE__*/ $(/*#__PURE__*/ W(c7)),toolChoice:/*#__PURE__*/ $(v5)})}),ixe=/*#__PURE__*/ U({...u7.fields,model:H,stopReason:/*#__PURE__*/ $(H)}),axe=b5,oxe=/*#__PURE__*/ U({method:/*#__PURE__*/ Hx(`roots/list`),params:/*#__PURE__*/ $(/*#__PURE__*/ U({_meta:U5}))}),sxe=/*#__PURE__*/ U({roots:/*#__PURE__*/ W(axe)}),cxe=/*#__PURE__*/ U({method:/*#__PURE__*/ Hx(`elicitation/create`),params:/* @__PURE__ */ G([/* @__PURE__ */ U({mode:/*#__PURE__*/ $(/*#__PURE__*/ Hx(`form`)),message:H,requestedSchema:/* @__PURE__ */ U({$schema:/*#__PURE__*/ $(H),type:/*#__PURE__*/ Hx(`object`),properties:/*#__PURE__*/ Qx(H,/* @__PURE__ */ G([/* @__PURE__ */ G([O5,E5,D5]),S5,C5,w5])),required:/*#__PURE__*/ $(/*#__PURE__*/ W(H))})}),/* @__PURE__ */ U({mode:/*#__PURE__*/ Hx(`url`),message:H,url:H})])}),lxe=/*#__PURE__*/ U({action:/*#__PURE__*/ iS([`accept`,`decline`,`cancel`]),content:/*#__PURE__*/ $(/*#__PURE__*/ Qx(H,/*#__PURE__*/ G([H,vS,Jx,/*#__PURE__*/ W(H)])))}),uxe=/*#__PURE__*/ G([rxe,oxe,cxe]),dxe=/*#__PURE__*/ G([ixe,sxe,lxe]),f7=/*#__PURE__*/ Qx(H,uxe),fxe=/*#__PURE__*/ Qx(H,dxe),p7={_meta:Q5,resultType:/*#__PURE__*/ Hx(`input_required`)},m7=/*#__PURE__*/ G([/*#__PURE__*/ $x(/*#__PURE__*/ U({...p7,inputRequests:f7,requestState:/*#__PURE__*/ $(H)}),[K]),/*#__PURE__*/ $x(/*#__PURE__*/ U({...p7,inputRequests:/*#__PURE__*/ $(f7),requestState:H}),[K])]),h7={...X5.fields,inputResponses:/*#__PURE__*/ $(fxe),requestState:/*#__PURE__*/ $(H)},g7={...$5,ttlMs:/*#__PURE__*/ CS.check(/*#__PURE__*/ Qae(0)),cacheScope:/*#__PURE__*/ iS([`public`,`private`])},_7={...X5.fields,cursor:/*#__PURE__*/ $(H)},v7={...$5,nextCursor:/*#__PURE__*/ $(H)},y7=/*#__PURE__*/ $x(/*#__PURE__*/ U({...g7,supportedVersions:/*#__PURE__*/ W(H),capabilities:Jbe,instructions:/*#__PURE__*/ $(H)}),[K]);var pxe=class extends (/*#__PURE__*/ q(`server/discover`,{success:y7,error:e7,payload:X5})){};const b7=/*#__PURE__*/ $x(/*#__PURE__*/ U({...v7,...g7,resources:/*#__PURE__*/ W(t7)}),[K]);var mxe=class extends (/*#__PURE__*/ q(`resources/list`,{success:b7,error:e7,payload:_7})){};const x7=/*#__PURE__*/ $x(/*#__PURE__*/ U({...v7,...g7,resourceTemplates:/*#__PURE__*/ W(n7)}),[K]);var hxe=class extends (/*#__PURE__*/ q(`resources/templates/list`,{success:x7,error:e7,payload:_7})){};const S7=/*#__PURE__*/ $x(/*#__PURE__*/ U({...g7,contents:/*#__PURE__*/ W(Xbe)}),[K]);var gxe=class extends (/*#__PURE__*/ q(`resources/read`,{success:/*#__PURE__*/ G([S7,m7]),error:e7,payload:{...h7,uri:H}})){};const C7=/*#__PURE__*/ $x(/*#__PURE__*/ U({...v7,...g7,prompts:/*#__PURE__*/ W(s7)}),[K]);var _xe=class extends (/*#__PURE__*/ q(`prompts/list`,{success:C7,error:e7,payload:_7})){};const w7=/*#__PURE__*/ $x(/*#__PURE__*/ U({...$5,description:/*#__PURE__*/ $(H),messages:/*#__PURE__*/ W(Zbe)}),[K]);var vxe=class extends (/*#__PURE__*/ q(`prompts/get`,{success:/*#__PURE__*/ G([w7,m7]),error:e7,payload:{...h7,name:H,arguments:/*#__PURE__*/ $(/*#__PURE__*/ Qx(H,H))}})){};const T7=/*#__PURE__*/ $x(/*#__PURE__*/ U({...v7,...g7,tools:/*#__PURE__*/ W(c7)}),[K]);var yxe=class extends (/*#__PURE__*/ q(`tools/list`,{success:T7,error:e7,payload:_7})){};const E7=/*#__PURE__*/ $x(/*#__PURE__*/ U({...$5,content:/*#__PURE__*/ W(o7),structuredContent:/*#__PURE__*/ $(uC),isError:/*#__PURE__*/ $(Jx)}),[K]);var bxe=class extends (/*#__PURE__*/ q(`tools/call`,{success:/*#__PURE__*/ G([E7,m7]),error:e7,payload:{...h7,name:H,arguments:/*#__PURE__*/ $(K)}})){};const xxe=P8,Sxe=F8,D7=/*#__PURE__*/ $x(/*#__PURE__*/ U({...$5,completion:/*#__PURE__*/ U({values:/*#__PURE__*/ W(H).check(/*#__PURE__*/ DS(100)),total:/*#__PURE__*/ $(CS),hasMore:/*#__PURE__*/ $(Jx)})}),[K]);var Cxe=class extends (/*#__PURE__*/ q(`completion/complete`,{success:D7,error:e7,payload:{...X5.fields,ref:/*#__PURE__*/ G([xxe,Sxe]),argument:/*#__PURE__*/ U({name:H,value:H}),context:/*#__PURE__*/ $(/*#__PURE__*/ U({arguments:/*#__PURE__*/ $(/*#__PURE__*/ Qx(H,H))}))}})){};const O7=/*#__PURE__*/ U({toolsListChanged:/*#__PURE__*/ $(Jx),promptsListChanged:/*#__PURE__*/ $(Jx),resourcesListChanged:/*#__PURE__*/ $(Jx),resourceSubscriptions:/*#__PURE__*/ $(/*#__PURE__*/ W(H))}),k7=/*#__PURE__*/ $x(/*#__PURE__*/ U({_meta:/* @__PURE__ */ $x(/*#__PURE__*/ U({"io.modelcontextprotocol/serverInfo":J5,"io.modelcontextprotocol/subscriptionId":W5}),[K]),resultType:/*#__PURE__*/ Hx(`complete`)}),[K]);var wxe=class extends (/*#__PURE__*/ q(`subscriptions/listen`,{success:k7,error:e7,payload:{...X5.fields,notifications:O7}})){},A7=class extends (/*#__PURE__*/ q(`notifications/cancelled`,{payload:{...Z5.fields,requestId:W5,reason:/*#__PURE__*/ $(H)}})){},Txe=class extends (/*#__PURE__*/ q(`notifications/progress`,{payload:{...Z5.fields,progressToken:G5,progress:vS,total:/*#__PURE__*/ $(vS),message:/*#__PURE__*/ $(H)}})){},Exe=class extends (/*#__PURE__*/ q(`notifications/message`,{payload:{...Z5.fields,level:q5,logger:/*#__PURE__*/ $(H),data:uC}})){},j7=class extends (/*#__PURE__*/ q(`notifications/resources/updated`,{payload:{...Z5.fields,uri:H}})){},M7=class extends (/*#__PURE__*/ q(`notifications/resources/list_changed`,{payload:/*#__PURE__*/ oS(Z5)})){},N7=class extends (/*#__PURE__*/ q(`notifications/tools/list_changed`,{payload:/*#__PURE__*/ oS(Z5)})){},P7=class extends (/*#__PURE__*/ q(`notifications/prompts/list_changed`,{payload:/*#__PURE__*/ oS(Z5)})){},F7=class extends (/*#__PURE__*/ q(`notifications/subscriptions/acknowledged`,{payload:{...Z5.fields,notifications:O7}})){},I7=class extends (/*#__PURE__*/ hN(pxe,Cxe,vxe,_xe,mxe,hxe,gxe,wxe,bxe,yxe)){},L7=class extends (/*#__PURE__*/ hN(A7)){},Dxe=class extends (/*#__PURE__*/ I7.merge(L7)){},Oxe=class extends (/*#__PURE__*/ hN()){},kxe=class extends (/*#__PURE__*/ hN(A7,Txe,Exe,j7,M7,N7,P7,F7)){};const Axe=/*#__PURE__*/ Qx(H,K),jxe=/*#__PURE__*/ Ax(Y5),Mxe=/*#__PURE__*/ Ax(A7.payloadSchema),Nxe=/*#__PURE__*/ kx(uC),R7=/*#__PURE__*/ Px(J5),z7=e=>{let t={};for(let n in e)e[n]!==void 0&&(t[n]=e[n]);return t},Pxe=(e,t)=>{if(Gt(t))return e===void 0;if(e===void 0)return!1;let n=a6(e);return n!==void 0&&NE(t).pipe(PE(uce,e=>n===e),PE(fce,e=>n===String(e)),PE(dce,e=>Number.isSafeInteger(e)&&n.trim().length>0&&Number(n)===e),RE(()=>!1))},Fxe=/*#__PURE__*/ B(function*(e){let t=yield*jxe(e);return{protocolVersion:H5,clientCapabilities:t[`io.modelcontextprotocol/clientCapabilities`],clientInfo:t[`io.modelcontextprotocol/clientInfo`],requestMetadata:t}}),B7=(e,t)=>{let n=e._meta;return{...Jt(n)?n:{},"io.modelcontextprotocol/serverInfo":t}},V7=(e,t)=>z7({_meta:{"io.modelcontextprotocol/serverInfo":t},resultType:`input_required`,inputRequests:e.inputRequests,requestState:e.requestState}),H7=/*#__PURE__*/ Ax(/*#__PURE__*/ G([E7,m7])),U7=/*#__PURE__*/ B(function*(e,t){let n=yield*R7(t);return e._tag===`Complete`?yield*H7({...z7(e.value),_meta:B7(e.value,n),resultType:`complete`}):yield*H7(V7(e,n))}),Ixe=(e,t)=>{let n={};for(let r of Object.values(e??{}))NE(r).pipe(PE({method:`roots/list`},()=>{t.roots===void 0&&(n.roots={})}),PE({method:`sampling/createMessage`},e=>{let r=n.sampling??{};f6(e.params)&&t.sampling?.tools===void 0&&(r.tools={}),(e.params.includeContext===`thisServer`||e.params.includeContext===`allServers`)&&t.sampling?.context===void 0&&(r.context={}),(t.sampling===void 0||Object.keys(r).length>0)&&(n.sampling=r)}),PE({method:`elicitation/create`},e=>{let r=e.params.mode===`url`?`url`:`form`,i=t.elicitation;i!==void 0&&(r===`url`?i.url!==void 0:i.form!==void 0||Object.keys(i).length===0)||((n.elicitation??={})[r]={})}),zE);return n},W7=e=>z7({uri:e.uri,mimeType:e.mimeType,_meta:e._meta,...`text`in e?{text:e.text}:{blob:Ah(e.blob)}}),G7=/*#__PURE__*/ ME().pipe(/*#__PURE__*/ PE({type:/*#__PURE__*/ LE(`text`,`resource_link`)},e=>e),/*#__PURE__*/ PE({type:/*#__PURE__*/ LE(`image`,`audio`)},e=>z7({type:e.type,mimeType:e.mimeType,data:Ah(e.data),annotations:e.annotations,_meta:e._meta})),/*#__PURE__*/ PE({type:`resource`},e=>z7({type:`resource`,resource:W7(e.resource),annotations:e.annotations,_meta:e._meta})),zE),Lxe=e=>t7.make(e),Rxe=e=>n7.make(e),zxe=e=>h6(lye,s7,e),Bxe=e=>h6(z3,c7,e),K7={ttlMs:0,cacheScope:`private`},q7=/*#__PURE__*/ B(function*(e,t){let n=yield*R7(t);return{...z7(e),_meta:B7(e,n),resultType:`complete`}}),Vxe=/*#__PURE__*/ ME().pipe(/*#__PURE__*/ FE(`ResourceNotFound`,e=>new p6({code:-32602,message:`Resource '${e.uri}' not found`,data:{uri:e.uri}})),/*#__PURE__*/ FE(`ToolNotFound`,`InvalidToolInput`,`InvalidToolContinuation`,`ToolExecutionError`,`UnsupportedByProtocol`,p6.fromTool),/*#__PURE__*/ RE(p6.fromFeature)),J7=e=>{let t=Vxe(e);return e7.make({code:t.code,message:t.message,...Nxe(t.data)?{data:t.data}:{}})},Y7=/*#__PURE__*/ B(function*(e,t){let n=yield*Wp(sM);return Oi(n)&&yM(n.value,(t,n)=>N(CA(n,e))),yield*t}),Hxe=e=>Mxe(e).pipe(z(e=>({requestId:e.requestId,reason:e.reason,metadata:e._meta}))),X7=e=>new Y3({operation:e,protocolVersion:H5,reason:`MCP 2026-07-28 carries server input requests in multi round-trip results`}),Z7=/* @__PURE__ */ v6({protocolVersion:H5,runtime:{_tag:`Stateless`,transport:{jsonRpc:{acceptsBatches:!1},http:{}},profileFromRequestMetadata:Fxe},clientRpcs:Dxe,clientNotificationRpcs:L7,serverRequestRpcs:Oxe,serverNotificationRpcs:kxe,handlerRpcs:/* @__PURE__ */ I7.merge(L7),makeHandlers:(e,t,n)=>{let r=Ax(Axe),i=Ax(y7),a=Ax(b7),o=Ax(x7),s=Ax(S7),c=Ax(C7),l=Ax(w7),u=Ax(G([w7,m7])),d=Ax(D7),f=Ax(T7),p=n.sendNotification,m=p!==void 0,h=n.serverInfo.extensions===void 0?void 0:Pa(n.serverInfo.extensions,e=>Jt(e)),g=z(n.registrationPresence,e=>{let t={completions:{},logging:{}};return h!==void 0&&(t.extensions=h),e.tools&&(t.tools={listChanged:m}),e.resources&&(t.resources={listChanged:m,subscribe:m}),e.prompts&&(t.prompts={listChanged:m}),{supportedVersions:n.supportedVersions,capabilities:t,serverInfo:n.serverInfo}}),_=X3.useSync(c6),v=B(function*(e){let t=yield*X3,n=e.inputResponses===void 0?void 0:yield*r(e.inputResponses).pipe(Op);return c6(X3.of({...t,inputResponses:n,requestState:e.requestState}))}),y=B(function*(e,t){let n=Ixe(e.inputRequests,t);if(Object.keys(n).length!==0)return yield*Y7(400,new p6({code:-32021,message:`The request requires client capabilities that were not declared`,data:{requiredCapabilities:n}}))});return{"subscriptions/listen":B(function*(e,{client:t,requestId:r}){if(p===void 0)return yield*new p6({code:-32601,message:`Method not found: subscriptions/listen`});let i=yield*n.registrationPresence,a=yield*ef(yield*qp),o=n.getListChangeRevision?.()??0,s=yield*Zd(n.subscribeServerNotifications,a),c={...i.tools&&e.notifications.toolsListChanged===!0?{toolsListChanged:!0}:{},...i.prompts&&e.notifications.promptsListChanged===!0?{promptsListChanged:!0}:{},...i.resources&&e.notifications.resourcesListChanged===!0?{resourcesListChanged:!0}:{},...i.resources&&e.notifications.resourceSubscriptions!==void 0?{resourceSubscriptions:e.notifications.resourceSubscriptions}:{}},l={"io.modelcontextprotocol/subscriptionId":r},u=new Set(c.resourceSubscriptions),d=yield*joe(64),f=yield*Id();yield*I(function*(){for(;;){let e=yield*moe(s);if(e.listChangeRevision!==void 0&&e.listChangeRevision<=o||e.targetClientId!==void 0&&e.targetClientId!==t.id)continue;let n=e.notification,r=NE(n).pipe(IE({ToolsChanged:()=>c.toolsListChanged===!0?N7:void 0,PromptsChanged:()=>c.promptsListChanged===!0?P7:void 0,ResourcesChanged:()=>c.resourcesListChanged===!0?M7:void 0,ResourceUpdated:e=>u.has(e.uri)?j7:void 0}),zE);if(r===void 0)continue;let i={tag:r._tag,payload:r.payloadSchema.make({_meta:{...n.metadata,...l},...n._tag===`ResourceUpdated`?{uri:n.uri}:{}})};if(!(yield*PC(d,i)))break}}).pipe(af(a),gp(sp(()=>n.markSubscriptionCancelled?.(t.id,r)??F)),gp(Ud(f,void 0)),gm),yield*p(H5,t.id,{tag:F7._tag,payload:F7.payloadSchema.make({_meta:l,notifications:c})});let m=cm(GC(d).pipe(R(e=>p(H5,t.id,e))));yield*jre(m,Ld(f)),yield*n.terminateSubscription?.(`2026-07-28`,t.id,r,`Pending notification limit exceeded`)??F;let h=yield*R7(n.serverInfo);return k7.make({_meta:{...l,"io.modelcontextprotocol/serverInfo":h},resultType:`complete`})},Dp(J7)),"server/discover":B(function*(e){let t=yield*g,r=yield*q7({...K7,supportedVersions:Array.from(t.supportedVersions),capabilities:t.capabilities,instructions:n.serverInfo.instructions},n.serverInfo);return yield*i(r)},Dp(J7)),"resources/list":B(function*(t){let r=yield*_,i=yield*e.resources.list(r.protocol),o=yield*q7({...K7,resources:i.map(Lxe)},n.serverInfo);return yield*a(o)},Dp(J7)),"resources/templates/list":B(function*(t){let r=yield*_,i=yield*e.resources.listTemplates(r.protocol),a=yield*q7({...K7,resourceTemplates:i.map(Rxe)},n.serverInfo);return yield*o(a)},Dp(J7)),"resources/read":B(function*(t){let r=yield*v(t),i=yield*e.resources.read(t.uri,r),a=i.contents.map(W7),o=yield*q7({...K7,contents:a,_meta:i._meta},n.serverInfo);return yield*s(o)},Dp(J7)),"prompts/list":B(function*(t){if(!(yield*n.registrationPresence).prompts)return yield*Y7(404,new p6({code:_3,message:`Method not found`}));let r=yield*_,i=yield*e.prompts.list(r.protocol),a=yield*np(i,zxe),o=yield*q7({...K7,prompts:a},n.serverInfo);return yield*c(o)},Dp(J7)),"prompts/get":B(function*(t){let r=yield*v(t),i=yield*e.prompts.get(t.name,t.arguments??{},r);if(i._tag===`InputRequired`){yield*y(i,r.protocol.clientCapabilities);let e=yield*R7(n.serverInfo);return yield*u(V7(i,e))}let a=i.value,o=a.messages.map(e=>({role:e.role,content:G7(e.content)})),s=yield*q7({description:a.description,messages:o,_meta:a._meta},n.serverInfo);return yield*l(s)},Dp(J7)),"completion/complete":B(function*(t){let r=yield*_,i=yield*e.completions.complete({reference:t.ref.type===`ref/prompt`?{type:`prompt`,name:t.ref.name,title:t.ref.title}:{type:`resourceTemplate`,uriTemplate:t.ref.uri},argument:t.argument,context:t.context?.arguments===void 0?void 0:{arguments:t.context.arguments},metadata:t._meta},r),a=yield*q7({completion:z7({values:Array.from(i.values),total:i.total,hasMore:i.hasMore}),_meta:i.metadata},n.serverInfo);return yield*d(a)},Dp(J7)),"tools/list":B(function*(t){let r=yield*_,i=yield*e.tools.list(r.protocol),a=yield*np(i,Bxe),o=yield*q7({...K7,tools:a},n.serverInfo);return yield*f(o)},Dp(J7)),"tools/call":B(function*(t){let r=yield*v(t),i=(yield*e.tools.list(r.protocol)).find(e=>e.name===t.name),a=yield*Wp(sM);if(i!==void 0&&Oi(a)){let e=[{schema:i.inputSchema,argument:t.arguments,path:``}];for(;e.length>0;){let{schema:t,argument:n,path:r}=e.pop();if(!Jt(t))continue;let i=t[`x-mcp-header`];if(typeof i==`string`){let e=`mcp-param-${i.toLowerCase()}`;if(!Pxe(a.value.headers[e],n))return yield*Y7(400,new p6({code:b3,message:`${e} does not match argument '${r}'`}))}if(Jt(t.properties))for(let[i,a]of Object.entries(t.properties))e.push({schema:a,argument:Jt(n)&&Object.hasOwn(n,i)?n[i]:void 0,path:r===``?i:`${r}.${i}`})}}let o=yield*e.tools.call({name:t.name,arguments:t.arguments??{}},r).pipe(Cp([`ToolExecutionError`,`InvalidToolInput`],e=>N(e6.Complete(B3.make({content:[M3.make({type:`text`,text:e.message})],isError:!0})))));if(o._tag===`InputRequired`)return yield*y(o,r.protocol.clientCapabilities),yield*U7(o,n.serverInfo);let s=o.value,c=s.content.map(G7);return yield*U7(e6.Complete({content:c,structuredContent:s.structuredContent,isError:s.isError,_meta:s._meta}),n.serverInfo)},Dp(J7)),"notifications/cancelled":B(function*(e){return yield*F})}},toReverseClient:()=>({listRoots:()=>L(X7(`roots/list`)),createMessage:()=>L(X7(`sampling/createMessage`)),elicit:()=>L(X7(`elicitation/create`))}),projectNotification:e=>_6(e)?N(void 0):g6({supportsProgressMessage:!0},e),normalizeCancellation:Hxe}),Uxe=Kbe,Wxe=Sbe,Q7=/*#__PURE__*/ new WeakMap,$7=/*#__PURE__*/ ha(`effect/ai/McpServer/RequestNotificationQueue`,{defaultValue:()=>void 0}),e9=e=>e._tag===`Progress`||e._tag===`LoggingMessage`,Gxe=/*#__PURE__*/ Sye.omit(`notifications/elicitation/complete`),t9=/*#__PURE__*/ kx(H3),Kxe=e=>{switch(e.tag){case`notifications/cancelled`:return r6.Cancelled({requestId:e.payload.requestId,reason:e.payload.reason,metadata:e.payload._meta});case`notifications/progress`:return r6.Progress({progressToken:e.payload.progressToken,progress:e.payload.progress,total:e.payload.total,message:e.payload.message,metadata:e.payload._meta});case`notifications/message`:return r6.LoggingMessage({level:e.payload.level,logger:e.payload.logger,data:e.payload.data,metadata:e.payload._meta});case`notifications/resources/updated`:return r6.ResourceUpdated({uri:e.payload.uri,metadata:e.payload._meta});case`notifications/resources/list_changed`:return r6.ResourcesChanged({metadata:e.payload?._meta});case`notifications/tools/list_changed`:return r6.ToolsChanged({metadata:e.payload?._meta});case`notifications/prompts/list_changed`:return r6.PromptsChanged({metadata:e.payload?._meta});default:return}},n9=(e,t)=>{let n=Kp(e,X3,t.requestContext),r=t.requestContext.requestMetadata,i=A(r,`io.modelcontextprotocol/logLevel`)?r[`io.modelcontextprotocol/logLevel`]:void 0;return t9(i)&&(n=Kp(n,Kd,i6[i].effect)),t.serverClient===void 0?n:Kp(n,Z3,t.serverClient)};var r9=class e extends (/*#__PURE__*/ j()(`effect/ai/McpServer`)){static make=/*#__PURE__*/ I(function*(){let t=yield*kye,n=Ga(),r=[],i=[],a=[],o=yield*MC(),s={consumers:0,listChangeRevision:0,requestEndpoints:0},c=()=>s.consumers===0&&s.requestEndpoints>0,l=/* @__PURE__ */ new Map,u=(yield*Co).makeDispatcher(),d=yield*rN(Gxe,{spanPrefix:`McpServer/Notifications`,onFromClient:e=>Id().pipe(R(t=>mp(n=>{let r=e.message;if(r._tag!==`Request`)return F;let i=Kxe(r);if(i===void 0)return F;let a={notification:i,delivered:t,requestContext:ia(n.context,X3),requestHeaders:ia(n.context,sM)?.headers},f=sp(()=>d.write({clientId:0,requestId:r.id,_tag:`Exit`,exit:Ed})),p=sa(n.context,$7);if(p!==void 0&&a.requestContext!==void 0&&e9(i))return FC(p,a),gp(Ld(t),f);if(c())return f;let m=!1;if(r.tag.includes(`list_changed`)){let e=++s.listChangeRevision,t=l.get(r.tag);t===void 0?(a.listChangeRevision=e,m=!0,l.set(r.tag,a),u.scheduleTask(()=>{l.delete(r.tag),FC(o,a)},0)):t.listChangeRevision=e}else m=!0,FC(o,a);return m&&a.requestContext!==void 0&&s.consumers>0?gp(Ld(t),f):f})))}),f=e.of({notifications:d.client,notifyElicitationComplete:({clientId:e,elicitationId:t})=>c()?F:Id().pipe(R(n=>PC(o,{notification:r6.ElicitationComplete({elicitationId:t}),targetClientId:e,delivered:n}).pipe(gp(sp(()=>s.consumers>0?Ld(n):F))))),get tools(){return n},addTool:e=>I(function*(){let r=n.findIndex(({tool:t})=>t.name===e.tool.name);r===-1?n.push(e):n[r]=e;let i=ia(e.annotations,$3);yield*t.tools.register({descriptor:new z3({...e.tool,title:e.tool.title??e.tool.annotations?.title}),isVisible:e=>i===void 0||i({protocolVersion:e.protocolVersion,capabilities:e.clientCapabilities,clientInfo:e.clientInfo}),handle:(t,n)=>n9(e.handle(t.arguments),n).pipe(Ere({InternalError:t=>L(new Dye({name:e.tool.name,message:t.message})),InvalidParams:t=>L(new(n.requestContext.requestState===void 0&&n.requestContext.inputResponses===void 0?Tye:Eye)({name:e.tool.name,message:t.message}))}),z(e=>Xt(e,`InputRequired`)?e6.InputRequired(e):e6.Complete(e)))}),yield*d.client[`notifications/tools/list_changed`]({})}),callTool:e=>I(function*(){let n=yield*Z3,r=yield*t.tools.call(e,s6(n)).pipe(Dp(e=>new w3({message:e._tag===`ToolNotFound`?`Tool '${e.name}' not found`:e.message})));return r._tag===`InputRequired`?yield*new w3({message:`Client input is not supported by this MCP protocol`}):r.value}),get resources(){return r},get resourceTemplates(){return i},addResource:e=>I(function*(){let n=r.findIndex(({resource:t})=>t.uri===e.resource.uri);n===-1?r.push(e):r[n]=e,yield*t.resources.register({descriptor:e.resource,isVisible:t=>{let n=ia(e.annotations,$3);return n===void 0||n({protocolVersion:t.protocolVersion,capabilities:t.clientCapabilities,clientInfo:t.clientInfo})},read:t=>n9(e.handle,t)}),yield*d.client[`notifications/resources/list_changed`]({})}),addResourceTemplate:({annotations:e,completions:n,handle:r,routerPath:a,template:o})=>I(function*(){let s=i.findIndex(({template:e})=>e.uriTemplate===o.uriTemplate);s===-1?i.push({template:o,annotations:e}):i[s]={template:o,annotations:e};let c=eSe();c.add(a,!0),yield*t.resources.registerTemplate({descriptor:o,isVisible:t=>{let n=ia(e,$3);return n===void 0||n({protocolVersion:t.protocolVersion,capabilities:t.clientCapabilities,clientInfo:t.clientInfo})},match:e=>{let t=c.find(e);if(t===void 0)return;let n=[];for(let e of Object.keys(t.params))n[Number(e)]=t.params[e];return n},read:(e,t,n)=>n9(r(e,Array.from(t)),n)});for(let[e,r]of Object.entries(n))yield*t.completions.register(`resource/${o.uriTemplate}/${e}`,(e,t)=>n9(r(e.argument.value,e.context),t).pipe(z(e=>({values:e.completion.values,total:e.completion.total,hasMore:e.completion.hasMore,metadata:e._meta}))));yield*d.client[`notifications/resources/list_changed`]({})}),findResource:e=>I(function*(){let n=yield*Z3;return yield*t.resources.read(e,s6(n)).pipe(Cp(`ResourceNotFound`,e=>L(new w3({message:`Resource '${e.uri}' not found`}))))}),get prompts(){return a},addPrompt:e=>I(function*(){let n=a.findIndex(({prompt:t})=>t.name===e.prompt.name);n===-1?a.push(e):a[n]=e,yield*t.prompts.register({descriptor:e.prompt,isVisible:t=>{let n=ia(e.annotations,$3);return n===void 0||n({protocolVersion:t.protocolVersion,capabilities:t.clientCapabilities,clientInfo:t.clientInfo})},get:(t,n)=>n9(e.handle(t),n).pipe(z(e=>Xt(e,`InputRequired`)?e6.InputRequired(e):e6.Complete(e)))});for(let[n,r]of Object.entries(e.completions))yield*t.completions.register(`prompt/${e.prompt.name}/${n}`,(e,t)=>n9(r(e.argument.value,e.context),t).pipe(z(e=>({values:e.completion.values,total:e.completion.total,hasMore:e.completion.hasMore,metadata:e._meta}))));yield*d.client[`notifications/prompts/list_changed`]({})}),getPromptResult:B(function*({arguments:e,name:n}){let r=yield*Z3,i=yield*t.prompts.get(n,e??{},s6(r)).pipe(Cp(`PromptNotFound`,()=>new w3({message:`Prompt '${n}' not found`})));return i._tag===`Complete`?i.value:yield*new w3({message:`Client input is not supported by this MCP protocol`})}),completion:B(function*(e){let n=yield*Z3,r=e.ref,i=yield*t.completions.complete({reference:r.type===`ref/resource`?{type:`resourceTemplate`,uriTemplate:r.uri}:{type:`prompt`,name:r.name},argument:e.argument,context:e.context},s6(n));return{_meta:i.metadata,completion:{values:i.values,total:i.total,hasMore:i.hasMore}}})});return Q7.set(f,{core:t,notifications:o,notificationDelivery:s}),f});static layer=/*#__PURE__*/ Cf(e)(e.make)};const i9=`mcp-session-id`,a9=/*#__PURE__*/ new WeakMap,o9=/*#__PURE__*/ new WeakMap,s9=e=>`${typeof e}:${e}`;var c9=class extends Do{};const l9=/*#__PURE__*/ B(function*(e,t,n,r){let i=yield*fN,a=yield*r9,o=yield*Kd,s=n===`http`,c=/* @__PURE__ */ new Map,l=/* @__PURE__ */ new Map,u=/* @__PURE__ */ new Map,d=e=>{l.delete(e),c.delete(e),t.disconnect(e)},f=(e,t,n)=>i.send(e,{_tag:`Exit`,requestId:t,exit:{_tag:`Failure`,cause:[{_tag:`Fail`,error:n}]}}),p=(e,t)=>{let n=u.get(e);if(n===void 0)return;let r=n.filter(e=>e!==t);r.length===0?u.delete(e):u.set(e,r)},m=yield*loe(),h=(e,n,r)=>sp(()=>{let a=t.selectProtocol(e),o=a.serverNotificationRpcs.requests.get(r.tag);return o===void 0?fp(`MCP protocol ${e} does not define server notification ${r.tag}`):a.payloadCodecs(o).encode(r.payload).pipe(Op,R(e=>i.send(n,{_tag:`Request`,id:``,tag:r.tag,payload:e,headers:[],isNotification:!0})))}),g=(e,t)=>{let n=l.get(e),r=s9(t),i=n?.get(r);return i!==void 0&&(n.set(r,{...i,cancelled:!0}),!0)},_=(e,t,n,r)=>sp(()=>g(t,n)?s?i.end(t):h(e,t,{tag:`notifications/cancelled`,payload:{requestId:n,reason:r}}):F),v,{core:y,notificationDelivery:b,notifications:x}=Q7.get(a),S=r?.handlers??(yield*t.installHandlers({core:y,subscribeServerNotifications:foe(m),getListChangeRevision:()=>b.listChangeRevision,...!i.supportsNotifications||e.allowSubscriptions===!1?{}:{sendNotification:h,markSubscriptionCancelled:(e,t)=>P(()=>{g(e,t)}),terminateSubscription:_},defaultLogLevel:o,serverInfo:e})),C=yield*zoe({lookup:B(function*(e){let n=t.selectProtocol(e.profile.protocolVersion),r,a=yield*aN.make(B(function*(t){let n=0;return r=e=>t(n,e),{send(t,r,a){if(n=t,r._tag===`Request`){let t=s9(r.id),n=u.get(t)??[];return n.push(e),u.set(t,n),i.send(e.clientId,{_tag:`Request`,id:r.id,tag:r.tag,payload:r.payload,headers:[]}).pipe(Qp(()=>P(()=>p(t,e))))}return r._tag===`Interrupt`?(p(s9(r.requestId),e),h(e.profile.protocolVersion,e.clientId,{tag:`notifications/cancelled`,payload:{requestId:r.requestId}})):F},supportsAck:!0,supportsTransferables:!1,supportsStructuredClone:!1,codecFor:i.codecFor}}));return{client:yield*n.makeReverseClient(e.profile).pipe(Kp(aN,a)),write:r}}),idleTimeToLive:1e4}),w=Q3.of((e,{client:n,headers:r,payload:i,rpc:a})=>{let s=t.resolveRequest(n.id,r);if(!a._tag.endsWith(`/initialize`)&&!s){let e=mC(),t=ia(e.context,sM);return t&&yM(t,()=>N(sA({status:r[i9]===void 0?400:404}))),fp(/* @__PURE__ */ Error(`Mcp-Session-Id does not exist`))}let l=s?.initializePayload??i,u=c.get(n.id),d=s?.protocol??u?.protocol??t.protocolForInternalTag(a._tag);if(!tSe(d.protocolVersion)||d.protocolVersion===`2026-07-28`)return fp(`Unsupported selected MCP protocol version: ${d.protocolVersion}`);let f=s?.negotiatedProfile??{protocolVersion:d.protocolVersion,clientCapabilities:l.capabilities,clientInfo:l.clientInfo};u!==void 0&&(u.profile=f);let p=X3.of({clientId:n.id,protocolVersion:f.protocolVersion,clientCapabilities:f.clientCapabilities,clientInfo:f.clientInfo,requestMetadata:l._meta});return Kp(Kp(Kp(e,Z3,Z3.of({clientId:n.id,protocolVersion:f.protocolVersion,clientCapabilities:f.clientCapabilities,clientInfo:f.clientInfo,initializePayload:l,requestMetadata:Jt(i)&&Jt(i._meta)?i._meta:void 0,getClient:AT(C,new c9({clientId:n.id,profile:f})).pipe(z(({client:e})=>e))})),X3,p),Kd,t.effectLogLevel(n.id,r,o))}),T=fN.of({...i,send:(e,t)=>{if(t._tag===`Exit`){let r=l.get(e),a=s9(t.requestId),o=r?.get(a);if(r!==void 0&&r.delete(a)&&r.size===0&&l.delete(e),o?.cancelled===!0)return n===`custom`?F:(o.httpPost!==void 0&&o.httpPost.expected--,a9.set(t,t.requestId),i.send(e,t));if(t.exit._tag===`Failure`&&!t.exit.cause.some(e=>e._tag===`Fail`))return i.send(e,{_tag:`Exit`,requestId:t.requestId,exit:{_tag:`Failure`,cause:[{_tag:`Fail`,error:new T3({message:`Internal error`})}]}})}return i.send(e,t)},run:e=>(v=e,i.run((n,r)=>{let i=mC(),a=r,o=s?ia(i.context,sM):void 0;switch(o!==void 0&&a._tag!==`Eof`&&yM(o,(e,t)=>N(t.status===200&&t.body._tag===`Uint8Array`&&t.body.contentLength===0?sA({headers:Mg(t.headers,`content-type`),status:202}):t)),a._tag){case`Request`:{if(o!==void 0&&a.isNotification!==!0){let e=o9.get(o)??{expected:0};e.expected++,o9.set(o,e)}let r=s?oa(mC().context,sM).headers:Dg(a.headers),u=a.tag===`notifications/cancelled`&&typeof a.payload==`object`&&a.payload!==null&&`requestId`in a.payload&&(typeof a.payload.requestId==`string`||typeof a.payload.requestId==`number`)?l.get(n)?.get(s9(a.payload.requestId)):void 0,p=u===void 0?t.prepareRequest(n,r,a):N(u.prepared);return I(function*(){let u=yield*p,m=c.get(n);s&&m===void 0&&(yield*$d(oa(i.context,Jd),P(()=>d(n))));let h=u.binding,_=u.protocol;if(c.set(n,{protocol:_,profile:u.profile??m?.profile,sessionHeaders:s&&r[i9]!==void 0?Dg({[i9]:r[i9]}):m?.sessionHeaders}),a.tag===`invalid/json-rpc-batch`)return yield*f(n,a.id,new S3({message:`JSON-RPC batches are not supported`}));o!==void 0&&h!==void 0&&yM(o,(e,i)=>N(t.resolveRequest(n,r)===void 0?sA({status:404}):_A(i,`mcp-protocol-version`,h.protocol.protocolVersion)));let v=t.routeClientRequest(_,a),y=t.clientRpcs.requests.get(v.tag),b=_.clientNotificationRpcs.requests.has(a.tag);if(y&&b&&a.isNotification){if(!h&&_.runtime._tag===`Stateful`){o&&yM(o,()=>N(sA({status:r[i9]===void 0?400:404})));return}let t=_.payloadCodecs(y).decode(a.payload);return yield*I(function*(){let i=yield*t;if(a.tag===`notifications/cancelled`){let t=yield*_.normalizeCancellation(i),r=s9(t.requestId),a=n;if(s){if(h===void 0)return;let e=Array.from(l).find(([,e])=>e.get(r)?.prepared.binding===h);if(e===void 0)return;a=e[0]}return g(a,t.requestId)?yield*e(a,{_tag:`Interrupt`,requestId:t.requestId}):void 0}let o=S.mapUnsafe.get(y.key),c=o?o.handler(i,{rpc:y,requestId:JM(a.id),client:new UM(n),headers:r}):F;return yield*u.requestContext===void 0?c:Kp(c,X3,u.requestContext)}).pipe(Mp)}if(!y||b)return a.isNotification?void 0:yield*f(n,a.id,new C3({message:`Method not found: ${a.tag}`}));let x=yield*vp(_.payloadCodecs(y).decode(a.payload));if(Sa(x))return yield*a.isNotification?F:f(n,a.id,new w3({message:`Invalid method parameters`}));if(a.isNotification!==!0){let e=l.get(n)??/* @__PURE__ */ new Map;e.set(s9(a.id),{requestId:JM(a.id),prepared:u,cancelled:!1,httpPost:o===void 0?void 0:o9.get(o)}),l.set(n,e)}let C=e(n,v);return yield*u.requestContext===void 0?C:Kp(C,X3,u.requestContext)}).pipe(Sp(e=>a.isNotification?F:f(n,a.id,Xt(e,`ProtocolError`)?p6.fromFeature(e):new w3({message:`Invalid request metadata`}))))}case`Ping`:case`Ack`:case`Interrupt`:return e(n,a);case`Eof`:return s||d(n),e(n,a);case`Pong`:case`Exit`:case`Chunk`:case`ClientProtocolError`:case`Defect`:{let e=a._tag===`Exit`?s9(a.requestId):void 0,r=s?t.resolveRequest(n,oa(mC().context,sM).headers):void 0,i=(e===void 0?void 0:u.get(e))?.find(e=>s?e.profile===r?.negotiatedProfile:e.clientId===n);if(a._tag===`Exit`&&i===void 0)return F;i!==void 0&&e!==void 0&&p(e,i);let o=i?.clientId??n,l=c.get(o),d=l?.protocol??t.protocols[0],f=i?.profile??l?.profile??{protocolVersion:d.protocolVersion,clientCapabilities:{},clientInfo:{name:`unknown`,version:`unknown`}};return AT(C,new c9({clientId:o,profile:f})).pipe(R(({write:e})=>e(a)),Jp)}}}))});s&&(yield*t.onSessionTerminated(e=>{let t=[];for(let[n,r]of l)for(let{prepared:i,requestId:a}of r.values())i.binding===e&&g(n,a)&&t.push(v(n,{_tag:`Interrupt`,requestId:a}));return tp(t,{discard:!0})})),r===void 0&&(yield*Yp(P(()=>{b.consumers++}),()=>P(()=>{b.consumers--})));let ee=/* @__PURE__ */ new Map;return yield*GC(r?.notifications??x).pipe(R(B(function*(e){let{delivered:n,listChangeRevision:r,notification:i,targetClientId:a,requestContext:l,requestHeaders:u}=e;_6(i)&&(yield*doe(m,{notification:i,targetClientId:a,listChangeRevision:r}));let d=yield*T.clientIds;for(let e of c.keys())d.has(e)||(c.delete(e),t.disconnect(e));let f=e9(i),p=f&&l!==void 0?[l.clientId]:a===void 0?s?c.keys():t.deliveryClientIds():[a],h=[],g=!1;for(let e of p){if(a!==void 0&&e!==a)continue;if(!d.has(e)){t.disconnect(e);continue}if(!T.supportsNotifications)continue;let r=f&&l!==void 0?t.selectProtocol(l.protocolVersion):c.get(e)?.protocol;if(!r)continue;let s=ee.get(e),p=e===(a??l?.clientId);g||=p;let m=p?n:Fd();ee.set(e,m);let _=I(function*(){s!==void 0&&(yield*Ld(s));let n=yield*r.projectNotification(i);if(n===void 0||i._tag===`Progress`&&r.runtime._tag===`Stateless`&&l?.requestMetadata?.progressToken!==i.progressToken)return;if(i._tag===`LoggingMessage`&&r.runtime._tag===`Stateless`){let t=l?.requestMetadata,n=A(t,`io.modelcontextprotocol/logLevel`)?t[`io.modelcontextprotocol/logLevel`]:void 0;if(l?.clientId!==e||!t9(n)||H3.literals.indexOf(i.level)<H3.literals.indexOf(n))return}else if(!t.canDeliver(e,(l?.clientId===e?u:void 0)??c.get(e)?.sessionHeaders??Eg,i,o))return;let a=r.serverNotificationRpcs.requests.get(n.tag);if(!a)return;let d=yield*r.payloadCodecs(a).encode(n.payload);yield*T.send(e,{_tag:`Request`,id:``,tag:n.tag,payload:d,headers:[],isNotification:!0})}).pipe(Mp,Zp(P(()=>{Wd(m,Ed),ee.get(e)===m&&ee.delete(e)})));h.push(_)}g||(yield*Ud(n,void 0)),yield*tp(h,{concurrency:`unbounded`,discard:!0}).pipe(gm({startImmediately:!0}))})),Mp,cm,gm),yield*tle(t.clientRpcs,{spanPrefix:`McpServer`,disableFatalDefects:!0}).pipe(Kp(fN,T),Kp(Q3,w),Vp(S))},Jp),qxe=(e,t)=>Ef(I(function*(){let n=yield*j6;yield*gm(l9(e,n,t))})).pipe(Nf(r9.layer)),Jxe=e=>{let t=N6(e.protocols);return qxe(e,`http`).pipe(Mf(Xxe(e)),Mf(t),Mf(Wce()))},Yxe=e=>Ef(I(function*(){let t=yield*j6,n=t.protocols.find(e=>e.runtime._tag===`Stateful`);if(n!==void 0)return yield*new hd(`McpServer.layerHttpRequestScoped does not support the sessionful MCP protocol ${n.protocolVersion}`);let r=yield*r9,{core:i,notificationDelivery:a}=Q7.get(r),o=yield*t.installHandlers({core:i,subscribeServerNotifications:fp(`Subscriptions are disabled for request-scoped MCP servers`),getListChangeRevision:()=>a.listChangeRevision,defaultLogLevel:yield*Kd,serverInfo:e});yield*Yp(P(()=>{a.requestEndpoints++}),()=>P(()=>{a.requestEndpoints--})),yield*u9(e,I(function*(){let{httpEffect:n,protocol:i}=yield*pN().pipe(Kp(QM,d9)),a=yield*MC();return yield*l9(e,t,`http`,{notifications:a,handlers:o}).pipe(Kp(fN,i),Kp(r9,r),gm({startImmediately:!0})),yield*Kp(n,$7,a)}))})).pipe(Nf(r9.layer),Mf(N6(e.protocols))),Xxe=e=>Cf(fN)(I(function*(){let{httpEffect:t,protocol:n}=yield*pN().pipe(Kp(QM,d9));return yield*u9(e,t),n})),u9=/*#__PURE__*/ B(function*(e,t){let n=yield*j6,r=yield*xM,i=e.allowSessionTermination===!0&&n.protocols.some(e=>e.runtime._tag===`Stateful`),a=N(sA({status:403})),o=t=>n=>p9(n,e.allowedOrigins)?t(n):a,s=N(sA({status:405,headers:{allow:i?`POST, DELETE`:`POST`}})),c=o(()=>s);for(let t of[`GET`,`PUT`,`PATCH`,`OPTIONS`])yield*r.add(t,e.path,c);yield*r.add(`DELETE`,e.path,i?o(e=>n.terminateHttpSession(e.headers)):c),yield*r.add(`POST`,e.path,r=>{if(!p9(r,e.allowedOrigins))return N(sA({status:403}));if(m9(r.headers[`content-type`])[0]!==`application/json`)return N(sA({status:415}));let i=m9(r.headers.accept);return!i.includes(`application/json`)||!i.includes(`text/event-stream`)?N(sA({status:406})):I(function*(){let e=yield*vp(R(r.text,jx($ae))),i=n.admitHttp(r.headers,e);if(i._tag===`Rejected`)return i.response;let a=e=>{let t=e.body._tag===`Uint8Array`&&e.body.body.subarray(0,-1).includes(10);return i.isSubscription||e.body._tag===`Stream`||t?$xe(e,i.isSubscription):e};return i.acknowledge?yield*wp(z(t,a),()=>N(sA({status:202}))):yield*R(t,e=>e.body._tag!==`Uint8Array`||e.body.body.length>0?N(a(e)):o9.get(r)?.expected===0?N(gA(VT,{contentType:`text/event-stream`})):fp(/* @__PURE__ */ Error(`MCP request ended without writing its response`)))})})}),d9=/*#__PURE__*/ (()=>{let e=/*#__PURE__*/ Qxe();return QM.of({contentType:e.contentType,includesFraming:!0,codecFor:e.codecFor,makeUnsafe:()=>{let t=e.makeUnsafe();return{decode:t.decode,encode:e=>{let n=t.encode(e);return typeof n==`string`?`${n}\n`:n}}}})})(),Zxe=/*#__PURE__*/ kx(/*#__PURE__*/ uS(`Cause`,{data:/*#__PURE__*/ tS([/*#__PURE__*/ uS(`Fail`,{error:/*#__PURE__*/ Hae(E3)})])})),f9=e=>Array.isArray(e)?e.map(f9):!Jt(e)||!A(e,`error`)?e:Zxe(e.error)?{...e,error:e.error.data[0].error}:e;function Qxe(e){let t=$M(e);return QM.of({...t,makeUnsafe:()=>{let e=t.makeUnsafe(),n=/* @__PURE__ */ new Set;return{decode:e.decode,encode:t=>{if(Jt(t)){let e=a9.get(t);e!==void 0&&(a9.delete(t),n.add(e))}let r=e.encode(t);if(typeof r!=`string`||n.size===0&&!r.includes(`"_tag":"Cause"`))return r;let i=JSON.parse(r);if(n.size>0){let e=e=>!(Jt(e)&&!A(e,`method`)&&(typeof e.id==`string`||typeof e.id==`number`)&&n.delete(e.id));if(Array.isArray(i)){let t=i.filter(e);if(t.length===0)return;i=t}else if(!e(i))return}return JSON.stringify(f9(i))}}}})}const $xe=(e,t)=>{let n=new TextEncoder,r=new TextDecoder,i=e=>n.encode(r.decode(e).trimEnd().split(`
|
|
532
532
|
`).map(e=>`data: ${e}\n\n`).join(``)),a={status:e.status,statusText:e.statusText,headers:Mg(e.headers,`content-type`),cookies:e.cookies,contentType:`text/event-stream`};if(e.body._tag===`Stream`){let r=e.body.stream.pipe(KT(i));if(!t)return gA(r,a);let o=Xoe(`15 seconds`).pipe(ose(1),KT(()=>n.encode(`: keepalive
|
|
533
533
|
|
|
534
|
-
`)));return gA(JT(r,o,{haltStrategy:`left`}),a)}return e.body._tag===`Uint8Array`?lA(i(e.body.body),a):_A(e,`content-type`,`text/event-stream`)},p9=(e,t)=>{let n=e.headers.origin;return n===void 0||(t??[]).includes(n)},m9=e=>e===void 0?[]:e.split(`,`).flatMap(e=>{let[t,...n]=e.split(`;`),r=n.map(e=>e.trim().toLowerCase()).find(e=>e.startsWith(`q=`));if(r!==void 0){let e=Number(r.slice(2));if(!Number.isFinite(e)||e<=0||e>1)return[]}return[t.trim().toLowerCase()]}),eSe=()=>{let e=Xk({ignoreTrailingSlash:!0,ignoreDuplicateSlashes:!0,caseSensitive:!0});return{add:(t,n)=>{e.on(`GET`,`/${t}`,n)},find:t=>e.find(`GET`,`/${t}`)}},tSe=e=>e===`2024-11-05`||e===`2025-03-26`||e===`2025-06-18`||e===`2025-11-25`||e===`2026-07-28`,h9=Z7,nSe=[Z7,Uxe,Wxe],rSe=kx(rJ),iSe=kx(W(rJ)),g9=e=>aJ(Nq(e)),_9=e=>{let t=Nq(e),n=aJ(t);if(n!==void 0)return{kind:n,many:!1};if(!Av(t)||t.encoding!==void 0)return;let[r,...i]=new Set([...t.elements,...t.rest].map(g9));return r===void 0||i.length>0?void 0:{kind:r,many:!0}},aSe=e=>{let t=e.context?.isOptional===!0,n=Nq(e);if(t&&Mv(n)&&n.types.length===2){let[e,...t]=n.types.filter(e=>!Kre(e)),r=e===void 0||t.length>0?void 0:g9(e);return r===void 0?void 0:{kind:r,many:!1}}let r=_9(n);return r===void 0||t&&r.many?void 0:r},v9=e=>{let t=Nq(e.ast),n=_9(t);if(n!==void 0)return{fields:[{name:void 0,...n}],rest:void 0};if(!jv(t)||t.encoding!==void 0)return{fields:[],rest:e};let r=t.propertySignatures.flatMap(({name:e,type:t})=>{let n=aSe(t);return n===void 0?[]:[{name:String(e),...n}]});if(r.length===0)return{fields:r,rest:e};let i=new Set(r.map(({name:e})=>e)),a=t.propertySignatures.filter(({name:e})=>!i.has(e)),{identifier:o,...s}=t.annotations??{};return{fields:r,rest:a.length===0&&t.indexSignatures.length===0?void 0:Lx(new oy(a,t.indexSignatures,s))}},oSe=e=>[...Ev(e)?e.typeParameters:[],...Av(e)?[...e.elements,...e.rest]:[],...jv(e)?[...e.propertySignatures,...e.indexSignatures].map(({type:e})=>e):[],...Mv(e)?e.types:[],...Nv(e)?[e.thunk()]:[],...(e.encoding??[]).map(({to:e})=>e)],sSe=e=>{let t=/* @__PURE__ */ new Set,n=[e];for(let e=n.pop();e!==void 0;e=n.pop())if(!t.has(e)){if(t.add(e),iJ(e))return!0;n.push(...oSe(e))}return!1},cSe=(e,{rest:t})=>[e.input,...e.error,...t===void 0?[]:[t]].some(({ast:e})=>sSe(e)),lSe=(e,t)=>e.fields.flatMap(({name:e,kind:n,many:r})=>{let i=e===void 0?t:A(t,e)?t[e]:void 0;return(r?iSe(i)?i:[]:rSe(i)?[i]:[]).map(t=>({kind:n,field:e,value:t}))}),uSe=kx(L3),y9=(e,t)=>{let n=oC(e,{onExcessProperty:t?`error`:`ignore`}),[r,i]=It(n.schema.$ref)?Gb(n.schema.$ref)??[]:[],a=r===`$defs`&&i!==void 0?n.definitions[i]:n.schema;return a===void 0||Object.keys(n.definitions).length===0?a:{...a,$defs:n.definitions}},dSe=e=>{let t=e.map(([e])=>e).filter(e=>!uSe(y9(sC(e.input),!0))).map(({name:e})=>e);if(t.length>0)throw Error(`MCP tool input must be one object with keys, such as a struct: ${t.join(`, `)}`);let n=e.filter(([e,t])=>cSe(e,t)).map(([{name:e}])=>e);if(n.length>0)throw Error(`MCP media must be the success or an array of it, or a top-level field of a struct success, one, optional or a required array: ${n.join(`, `)}`)},fSe=e=>new B3({isError:!0,content:[{type:`text`,text:e}]}),b9=e=>e===void 0?[]:[{type:`text`,text:JSON.stringify(e)}],pSe=({kind:e,field:t,value:n})=>({type:e,data:n.data,mimeType:n.mimeType,...t===void 0?{}:{_meta:{"effect-actions/field":t}}}),mSe=(e,t)=>z(Ax(L3)(y9(sC(e.input),!0)),n=>new z3({name:e.name,description:e.description,inputSchema:n,outputSchema:t,annotations:{...e.mcp.title===void 0?{}:{title:e.mcp.title},...Uq(e)},_meta:e.mcp._meta===void 0?void 0:{...e.mcp._meta}})),hSe=B(function*(e,t){let n=yield*r9,r=yield*$q(e),i=yield*zp(),a=e=>Em(e).pipe(gp(Zse(e)),bp(fSe(`Tool execution failed due to an internal server error.`))),o=e=>sd(e)?a(e):up(e);for(let[e,a]of r){let r=v9(e.success),s=r.fields.length===0?void 0:r,c=s===void 0?sC(e.success):s.rest===void 0?void 0:sC(s.rest),l=c===void 0?void 0:yield*Ax(R3)(y9(c,!1)).pipe(Op),u=yield*mSe(e,l).pipe(Op),d=Ax(sC(e.input),tJ),f=e=>{let t=Nx(sC(e));return e=>Op(t(e))},p=f(e.success),m=f(G(wq(e))),h=t===void 0||e.caller===Dq?a:e=>GZ(gJ(t,a(e))),g=new Set(s?.fields.map(({name:e})=>e)),_=(e,t)=>{if(s===void 0)return new B3({isError:!1,structuredContent:e,content:b9(e)});let n=lSe(s,t).map(pSe);if(c===void 0)return new B3({isError:!1,content:n});let r=qt(e)?Object.fromEntries(Object.entries(e).filter(([e])=>!g.has(e))):e;return new B3({isError:!1,structuredContent:r,content:[...b9(r),...n]})};yield*n.addTool({tool:u,annotations:ea(),handle:t=>lm({tool:e.name,parameters:t??{}}).pipe(gp(()=>d(t??{})),Dp(({message:t})=>new w3({message:new Zve({toolName:e.name,description:t}).message})),R(e=>h(e).pipe(Rp({onFailure:e=>z(m(e),e=>new B3({isError:!0,content:b9(e)})),onSuccess:e=>z(p(e),t=>_(t,e))}))),wp(o),Gp(e=>fa(i,e)))})}}),gSe=(e,t,n=Sf,r)=>{jq(`MCP tool`,e.flatMap(e=>e.actions));let i=e.flatMap(e=>e.actions.map(e=>[e,v9(e.success)]));dSe(i);let a=new Set(i.map(([{name:e}])=>e)),o=I(function*(){let t=(yield*r9).tools.flatMap(({tool:e})=>a.has(e.name)?[e.name]:[]);if(t.length>0)return yield*fp(/* @__PURE__ */ Error(`Duplicate MCP tool: ${t.join(`, `)}, claimed by an action and a native feature`));yield*hSe(e,r)});return Ef(o).pipe(Mf(n),Mf(t),tre,Qq(e))},_Se=/* @__PURE__ */ new Set([`server/discover`,`tools/list`,`notifications/cancelled`]),vSe=e=>{let t=new Set(e.filter(({caller:e})=>e===Dq).flatMap(({name:e})=>[e,`=?base64?${Ah(e)}?=`]));return e=>{if(t.size===0||e[`mcp-protocol-version`]!==h9.protocolVersion)return!0;let n=e[`mcp-method`];if(n===void 0)return!0;if(_Se.has(n))return!1;if(n!==`tools/call`)return!0;let r=e[`mcp-name`];return r===void 0||!t.has(r)}},ySe=e=>Ip(e.json,{onFailure:()=>!0,onSuccess:t=>!A(t,`method`)||t.method===e.headers[`mcp-method`]});function bSe(e,{actions:t,features:n,path:r=`/mcp`,authentication:i,requestScoped:a,...o}){let s=Yq(qq(e),t),c=s.flatMap(e=>e.actions);Eq(c,i);let l=gSe(s,a===!0?Yxe({...o,path:r,protocols:[h9]}):Jxe({...o,path:r,protocols:nSe,allowSessionTermination:!0}),n,i);if(i===void 0)return l;let u=vSe(c),d=AM(z(hJ(i),e=>t=>R(sM,n=>n.method!==`POST`||u(n.headers)?e.http(t,!1):R(ySe(n),n=>e.http(t,n)))));return l.pipe(Mf(d.layer))}var xSe=`0.20.0`,x9=class extends Ao(`Unauthorized`){constructor(e={}){super({message:e.message??`Authentication required`}),Object.defineProperty(this,"cause",{value:e.cause})}},S9=class extends aC()(`ProviderUnavailable`,{operation:H},{httpApiStatus:503}){constructor(e){super({operation:e.operation}),Object.defineProperty(this,"cause",{value:e.cause})}},C9=class extends Ao(`InsufficientScope`){},SSe=class extends aC()(`ConfigurationError`,{message:H}){};const w9=`key-list+jwt`,CSe=U({keys:W(U({id:H,sealed:H}))}),T9=LS(U({keyId:jS,ownerId:jS,scopes:W(jS),expiresAt:aS(vS)})),E9=new TextEncoder,wSe=async e=>new Uint8Array(await crypto.subtle.digest(`SHA-256`,E9.encode(e))),D9=async(e,t)=>{let n=await crypto.subtle.importKey(`raw`,e,`HKDF`,!1,[`deriveBits`]),r=new Uint8Array(await crypto.subtle.deriveBits({name:`HKDF`,hash:`SHA-256`,salt:/* @__PURE__ */ new Uint8Array,info:E9.encode(`clankerauth key list\0${t}`)},n,512));return{id:AI(r.subarray(0,32)),key:await crypto.subtle.importKey(`raw`,r.subarray(32),`AES-GCM`,!1,[`encrypt`,`decrypt`])}},TSe=async(e,t,n)=>{let{id:r,key:i}=await D9(e,t),a=crypto.getRandomValues(/* @__PURE__ */ new Uint8Array(12)),o=await crypto.subtle.encrypt({name:`AES-GCM`,iv:a},i,E9.encode(Ix(T9)(n))),s=new Uint8Array(a.length+o.byteLength);return s.set(a),s.set(new Uint8Array(o),a.length),{id:r,sealed:AI(s)}},ESe=async(e,t,n)=>{let r=await D9(await wSe(e),t),i=n.get(r.id);if(i===void 0)return;let a=new Uint8Array(kI(i)),o=await crypto.subtle.decrypt({name:`AES-GCM`,iv:a.subarray(0,12)},r.key,a.subarray(12));return Mx(T9)(new TextDecoder().decode(o))},O9=vo(1),k9=(e,t)=>Bp(n=>mk(e).execute(t).pipe(Kp(AN,{...ia(n,AN),redirect:`error`}),Dp(e=>new S9({operation:`http.request`,cause:e})))),DSe=U({keys:W(U({kty:H,crv:zx(H),x:zx(H),kid:zx(H),alg:zx(H),use:zx(H),key_ops:zx(W(H))}))}),OSe=U({sub:jS,client_id:jS,scope:H,iat:vS,exp:vS}),kSe=U({list:H}),ASe=CSe.pipe(Zx({exp:vS})),A9=e=>new x9({cause:e}),j9=_o(5),M9=V(`Verifier.make`)(function*(e){let t=yield*sk,n=yield*pp({try:()=>({jwks:new URL(`${e.issuer}/jwks`).href,keyList:new URL(`/api/keyList`,e.issuer).href}),catch:()=>new SSe({message:`Invalid issuer URL`})}),r=V(`Verifier.jwks`)(function*(){let e=yield*k9(t,DO(n.jwks));return e.status===200?dz({keys:(yield*HO(DSe)(e).pipe(Dp(e=>new S9({operation:`jwks.decode`,cause:e})))).keys.map(({key_ops:e,...t})=>e?{...t,key_ops:[...e]}:t)}):yield*new S9({operation:`jwks.fetch`,cause:{status:e.status}})},Jp),i=yield*nm(r(),e=>Dd(e)?`1 minute`:j9),a=V(`Verifier.signingKey`)(function*(e){let t=yield*i;return yield*ap({try:()=>t({alg:`EdDSA`,kid:e}),catch:A9})}),o=V(`Verifier.signed`)(function*(t,n){let r=yield*pp({try:()=>xz(t),catch:A9});if(r.alg!==`EdDSA`||r.kid===void 0)return yield*A9();let i=yield*a(r.kid),o=yield*Ff,{payload:s}=yield*ap({try:()=>XR(t,i,{issuer:e.issuer,audience:e.resource,algorithms:[`EdDSA`],typ:n,currentDate:new Date(o)}),catch:A9});return s}),s=V(`Verifier.jwt`)(function*(e){let t=yield*o(e,`at+jwt`);if(t.cnf!==void 0)return yield*A9();let n=yield*Ax(OSe)(t).pipe(Dp(A9));return{subject:n.sub,scopes:n.scope.split(` `).filter(Boolean),actor:{kind:`client`,clientId:n.client_id},expiresAt:n.exp*1e3}}),c=V(`Verifier.keyList`)(function*(){let r=OO(n.keyList).pipe(zO({resource:e.resource})),i=yield*k9(t,r);if(i.status!==200)return yield*new S9({operation:`key-list.fetch`,cause:{status:i.status}});let{list:a}=yield*HO(kSe)(i).pipe(Dp(e=>new S9({operation:`key-list.decode`,cause:e}))),s=e=>new S9({operation:`key-list.verify`,cause:e}),c=yield*o(a,w9).pipe(Cp(`Unauthorized`,e=>L(s(e)))),l=yield*Ax(ASe)(c).pipe(Dp(s));return{readAt:yield*Ff,expiresAt:l.exp*1e3,entries:new Map(l.keys.map(e=>[e.id,e.sealed]))}},Jp),l=yield*BE(!1),u=yield*nm(c().pipe(Np({duration:`3 seconds`,orElse:()=>L(new S9({operation:`key-list.timeout`}))}),kp(({operation:e})=>R(UE(l,!0),t=>t?F:Tm(`clankerauth key list reads are failing; a held list decides until it expires`,{operation:e}))),_p(()=>R(UE(l,!1),e=>e?Dm(`clankerauth key list reads have recovered`):F))),j9),d=yield*BE(void 0),f=I(function*(){let e=yield*vp(u);Ca(e)&&(yield*HE(d,e.success));let t=yield*VE(d);return t!==void 0&&t.expiresAt>(yield*Ff)?t:yield*Sa(e)?e.failure:new S9({operation:`key-list.expired`})}),p=V(`Verifier.apiKey`)(function*(t){let n=n=>ap({try:()=>ESe(t,e.resource,n.entries),catch:A9}),r=yield*Ff,i=yield*VE(d),a=i!==void 0&&r-i.readAt<yo(O9)&&i.expiresAt>r?i:yield*f,o=(yield*n(a))??(yield*R(f,e=>e===a?N(void 0):n(e)));return o===void 0||o.expiresAt!==null&&o.expiresAt<=(yield*Ff)?yield*A9():{subject:o.ownerId,scopes:o.scopes,actor:{kind:`key`,keyId:o.keyId},expiresAt:o.expiresAt??void 0}});return{verifyToken:V(`Verifier.verifyToken`)(function*(t){let n=yield*t.startsWith(`clankerauth_`)?e.apiKeys===!1?L(A9()):p(t):s(t),r=e.requiredScopes?.find(e=>!n.scopes.includes(e));return r===void 0?n:yield*new C9({scope:r,actor:n.actor})})}}),jSe=V(`AdministrationResource.make`)(function*(){let e=yield*e3,t=`${e.settings.baseURL}/api/auth`,n=XQ(e.settings.baseURL);return{protectedResource:{resource:n,authorizationServers:[t],scopesSupported:[YQ.read,YQ.write,`offline_access`],scopesRequired:[YQ.read,YQ.write]},verifier:yield*M9({issuer:t,resource:n,apiKeys:!1}).pipe(Vp(jN.pipe(Mf(bf(kN,(t,n)=>{let r=new Request(t,n);return r.headers.set(`x-clankerauth-peer`,`127.0.0.1`),e.auth.handler(r)})))))}}),MSe=Ax(EQ),NSe=Ax(U({id:H,key:H,referenceId:H,expiresAt:aS(qS),permissions:aS(LS(EQ))})),N9=B(function*(e){return{keyId:e.id,name:e.name??``,enabled:e.enabled,permissions:yield*MSe(e.permissions??{}).pipe(Sp(()=>bp(Tm(`An API key's stored permissions do not decode; it is listed with none`,{keyId:e.id}),{}))),expiresAt:e.expiresAt?wh(e.expiresAt):null,createdAt:wh(e.createdAt)}}),P9=z(e3,e=>{let t=V(`MachineKeys.validate`)(function*(t){if(t!==void 0)for(let[n,r]of Object.entries(t)){if(n===XQ(e.settings.baseURL))return yield*RQ([`permissions`,n],`Administration requires OAuth access tokens, not API keys`);let t=yield*e.resources.get(n);if(!t||r.some(e=>!t.scopes.includes(e)))return yield*RQ([`permissions`,n],`Select explicitly granted, currently available Resource scopes`)}});return{list:V(`MachineKeys.list`)(function*(){let{providerHeaders:t}=yield*hQ,n=yield*t,r=yield*zQ(()=>e.auth.api.listApiKeys({headers:n,query:{sortBy:`createdAt`,sortDirection:`asc`}}));return{keys:yield*np(r.apiKeys,N9)}}),create:V(`MachineKeys.create`)(function*(n){let r=yield*hQ;yield*t(n.permissions);let i=n.expiresAt===null?null:(Oh(n.expiresAt)-(yield*Ff))/1e3;if(i!==null&&i<1)return yield*RQ([`expiresAt`],`Expiry must be in the future`);let a=yield*zQ(()=>e.auth.api.createApiKey({body:{userId:r.userId,name:n.name.trim(),permissions:Object.fromEntries(Object.entries(n.permissions).map(([e,t])=>[e,[...t]])),expiresIn:i}}));return{...yield*N9(a),key:a.key}}),update:V(`MachineKeys.update`)(function*(n){let r=yield*hQ;return yield*t(n.permissions),yield*N9(yield*zQ(()=>e.auth.api.updateApiKey({body:{userId:r.userId,keyId:n.keyId,name:n.name?.trim(),enabled:n.enabled,permissions:n.permissions?Object.fromEntries(Object.entries(n.permissions).map(([e,t])=>[e,[...t]])):void 0}})))}),delete:V(`MachineKeys.delete`)(function*({keyId:t}){let{providerHeaders:n}=yield*hQ,r=yield*n;return yield*zQ(()=>e.auth.api.deleteApiKey({headers:r,body:{keyId:t}})),{deleted:!0}}),keyList:V(`MachineKeys.keyList`)(function*(t){let n=yield*Ff,r=yield*e.resources.get(t),i=r===void 0||t===XQ(e.settings.baseURL)?[]:r.scopes,a=i.length?yield*e.sql`
|
|
534
|
+
`)));return gA(JT(r,o,{haltStrategy:`left`}),a)}return e.body._tag===`Uint8Array`?lA(i(e.body.body),a):_A(e,`content-type`,`text/event-stream`)},p9=(e,t)=>{let n=e.headers.origin;return n===void 0||(t??[]).includes(n)},m9=e=>e===void 0?[]:e.split(`,`).flatMap(e=>{let[t,...n]=e.split(`;`),r=n.map(e=>e.trim().toLowerCase()).find(e=>e.startsWith(`q=`));if(r!==void 0){let e=Number(r.slice(2));if(!Number.isFinite(e)||e<=0||e>1)return[]}return[t.trim().toLowerCase()]}),eSe=()=>{let e=Xk({ignoreTrailingSlash:!0,ignoreDuplicateSlashes:!0,caseSensitive:!0});return{add:(t,n)=>{e.on(`GET`,`/${t}`,n)},find:t=>e.find(`GET`,`/${t}`)}},tSe=e=>e===`2024-11-05`||e===`2025-03-26`||e===`2025-06-18`||e===`2025-11-25`||e===`2026-07-28`,h9=Z7,nSe=[Z7,Uxe,Wxe],rSe=kx(rJ),iSe=kx(W(rJ)),g9=e=>aJ(Nq(e)),_9=e=>{let t=Nq(e),n=aJ(t);if(n!==void 0)return{kind:n,many:!1};if(!Av(t)||t.encoding!==void 0)return;let[r,...i]=new Set([...t.elements,...t.rest].map(g9));return r===void 0||i.length>0?void 0:{kind:r,many:!0}},aSe=e=>{let t=e.context?.isOptional===!0,n=Nq(e);if(t&&Mv(n)&&n.types.length===2){let[e,...t]=n.types.filter(e=>!Kre(e)),r=e===void 0||t.length>0?void 0:g9(e);return r===void 0?void 0:{kind:r,many:!1}}let r=_9(n);return r===void 0||t&&r.many?void 0:r},v9=e=>{let t=Nq(e.ast),n=_9(t);if(n!==void 0)return{fields:[{name:void 0,...n}],rest:void 0};if(!jv(t)||t.encoding!==void 0)return{fields:[],rest:e};let r=t.propertySignatures.flatMap(({name:e,type:t})=>{let n=aSe(t);return n===void 0?[]:[{name:String(e),...n}]});if(r.length===0)return{fields:r,rest:e};let i=new Set(r.map(({name:e})=>e)),a=t.propertySignatures.filter(({name:e})=>!i.has(e)),{identifier:o,...s}=t.annotations??{};return{fields:r,rest:a.length===0&&t.indexSignatures.length===0?void 0:Lx(new oy(a,t.indexSignatures,s))}},oSe=e=>[...Ev(e)?e.typeParameters:[],...Av(e)?[...e.elements,...e.rest]:[],...jv(e)?[...e.propertySignatures,...e.indexSignatures].map(({type:e})=>e):[],...Mv(e)?e.types:[],...Nv(e)?[e.thunk()]:[],...(e.encoding??[]).map(({to:e})=>e)],sSe=e=>{let t=/* @__PURE__ */ new Set,n=[e];for(let e=n.pop();e!==void 0;e=n.pop())if(!t.has(e)){if(t.add(e),iJ(e))return!0;n.push(...oSe(e))}return!1},cSe=(e,{rest:t})=>[e.input,...e.error,...t===void 0?[]:[t]].some(({ast:e})=>sSe(e)),lSe=(e,t)=>e.fields.flatMap(({name:e,kind:n,many:r})=>{let i=e===void 0?t:A(t,e)?t[e]:void 0;return(r?iSe(i)?i:[]:rSe(i)?[i]:[]).map(t=>({kind:n,field:e,value:t}))}),uSe=kx(L3),y9=(e,t)=>{let n=oC(e,{onExcessProperty:t?`error`:`ignore`}),[r,i]=It(n.schema.$ref)?Gb(n.schema.$ref)??[]:[],a=r===`$defs`&&i!==void 0?n.definitions[i]:n.schema;return a===void 0||Object.keys(n.definitions).length===0?a:{...a,$defs:n.definitions}},dSe=e=>{let t=e.map(([e])=>e).filter(e=>!uSe(y9(sC(e.input),!0))).map(({name:e})=>e);if(t.length>0)throw Error(`MCP tool input must be one object with keys, such as a struct: ${t.join(`, `)}`);let n=e.filter(([e,t])=>cSe(e,t)).map(([{name:e}])=>e);if(n.length>0)throw Error(`MCP media must be the success or an array of it, or a top-level field of a struct success, one, optional or a required array: ${n.join(`, `)}`)},fSe=e=>new B3({isError:!0,content:[{type:`text`,text:e}]}),b9=e=>e===void 0?[]:[{type:`text`,text:JSON.stringify(e)}],pSe=({kind:e,field:t,value:n})=>({type:e,data:n.data,mimeType:n.mimeType,...t===void 0?{}:{_meta:{"effect-actions/field":t}}}),mSe=(e,t)=>z(Ax(L3)(y9(sC(e.input),!0)),n=>new z3({name:e.name,description:e.description,inputSchema:n,outputSchema:t,annotations:{...e.mcp.title===void 0?{}:{title:e.mcp.title},...Uq(e)},_meta:e.mcp._meta===void 0?void 0:{...e.mcp._meta}})),hSe=B(function*(e,t){let n=yield*r9,r=yield*$q(e),i=yield*zp(),a=e=>Em(e).pipe(gp(Zse(e)),bp(fSe(`Tool execution failed due to an internal server error.`))),o=e=>sd(e)?a(e):up(e);for(let[e,a]of r){let r=v9(e.success),s=r.fields.length===0?void 0:r,c=s===void 0?sC(e.success):s.rest===void 0?void 0:sC(s.rest),l=c===void 0?void 0:yield*Ax(R3)(y9(c,!1)).pipe(Op),u=yield*mSe(e,l).pipe(Op),d=Ax(sC(e.input),tJ),f=e=>{let t=Nx(sC(e));return e=>Op(t(e))},p=f(e.success),m=f(G(wq(e))),h=t===void 0||e.caller===Dq?a:e=>GZ(gJ(t,a(e))),g=new Set(s?.fields.map(({name:e})=>e)),_=(e,t)=>{if(s===void 0)return new B3({isError:!1,structuredContent:e,content:b9(e)});let n=lSe(s,t).map(pSe);if(c===void 0)return new B3({isError:!1,content:n});let r=qt(e)?Object.fromEntries(Object.entries(e).filter(([e])=>!g.has(e))):e;return new B3({isError:!1,structuredContent:r,content:[...b9(r),...n]})};yield*n.addTool({tool:u,annotations:ea(),handle:t=>lm({tool:e.name,parameters:t??{}}).pipe(gp(()=>d(t??{})),Dp(({message:t})=>new w3({message:new Zve({toolName:e.name,description:t}).message})),R(e=>h(e).pipe(Rp({onFailure:e=>z(m(e),e=>new B3({isError:!0,content:b9(e)})),onSuccess:e=>z(p(e),t=>_(t,e))}))),wp(o),Gp(e=>fa(i,e)))})}}),gSe=(e,t,n=Sf,r)=>{jq(`MCP tool`,e.flatMap(e=>e.actions));let i=e.flatMap(e=>e.actions.map(e=>[e,v9(e.success)]));dSe(i);let a=new Set(i.map(([{name:e}])=>e)),o=I(function*(){let t=(yield*r9).tools.flatMap(({tool:e})=>a.has(e.name)?[e.name]:[]);if(t.length>0)return yield*fp(/* @__PURE__ */ Error(`Duplicate MCP tool: ${t.join(`, `)}, claimed by an action and a native feature`));yield*hSe(e,r)});return Ef(o).pipe(Mf(n),Mf(t),tre,Qq(e))},_Se=/* @__PURE__ */ new Set([`server/discover`,`tools/list`,`notifications/cancelled`]),vSe=e=>{let t=new Set(e.filter(({caller:e})=>e===Dq).flatMap(({name:e})=>[e,`=?base64?${Ah(e)}?=`]));return e=>{if(t.size===0||e[`mcp-protocol-version`]!==h9.protocolVersion)return!0;let n=e[`mcp-method`];if(n===void 0)return!0;if(_Se.has(n))return!1;if(n!==`tools/call`)return!0;let r=e[`mcp-name`];return r===void 0||!t.has(r)}},ySe=e=>Ip(e.json,{onFailure:()=>!0,onSuccess:t=>!A(t,`method`)||t.method===e.headers[`mcp-method`]});function bSe(e,{actions:t,features:n,path:r=`/mcp`,authentication:i,requestScoped:a,allowSubscriptions:o=n!==void 0,...s}){let c=Yq(qq(e),t),l=c.flatMap(e=>e.actions);Eq(l,i);let u=gSe(c,a===!0?Yxe({...s,path:r,protocols:[h9]}):Jxe({...s,path:r,protocols:nSe,allowSessionTermination:!0,allowSubscriptions:o}),n,i);if(i===void 0)return u;let d=vSe(l),f=AM(z(hJ(i),e=>t=>R(sM,n=>n.method!==`POST`||d(n.headers)?e.http(t,!1):R(ySe(n),n=>e.http(t,n)))));return u.pipe(Mf(f.layer))}var xSe=`0.22.0`,x9=class extends Ao(`Unauthorized`){constructor(e={}){super({message:e.message??`Authentication required`}),Object.defineProperty(this,"cause",{value:e.cause})}},S9=class extends aC()(`ProviderUnavailable`,{operation:H},{httpApiStatus:503}){constructor(e){super({operation:e.operation}),Object.defineProperty(this,"cause",{value:e.cause})}},C9=class extends Ao(`InsufficientScope`){},SSe=class extends aC()(`ConfigurationError`,{message:H}){};const w9=`key-list+jwt`,CSe=U({keys:W(U({id:H,sealed:H}))}),T9=LS(U({keyId:jS,ownerId:jS,scopes:W(jS),expiresAt:aS(vS)})),E9=new TextEncoder,wSe=async e=>new Uint8Array(await crypto.subtle.digest(`SHA-256`,E9.encode(e))),D9=async(e,t)=>{let n=await crypto.subtle.importKey(`raw`,e,`HKDF`,!1,[`deriveBits`]),r=new Uint8Array(await crypto.subtle.deriveBits({name:`HKDF`,hash:`SHA-256`,salt:/* @__PURE__ */ new Uint8Array,info:E9.encode(`clankerauth key list\0${t}`)},n,512));return{id:AI(r.subarray(0,32)),key:await crypto.subtle.importKey(`raw`,r.subarray(32),`AES-GCM`,!1,[`encrypt`,`decrypt`])}},TSe=async(e,t,n)=>{let{id:r,key:i}=await D9(e,t),a=crypto.getRandomValues(/* @__PURE__ */ new Uint8Array(12)),o=await crypto.subtle.encrypt({name:`AES-GCM`,iv:a},i,E9.encode(Ix(T9)(n))),s=new Uint8Array(a.length+o.byteLength);return s.set(a),s.set(new Uint8Array(o),a.length),{id:r,sealed:AI(s)}},ESe=async(e,t,n)=>{let r=await D9(await wSe(e),t),i=n.get(r.id);if(i===void 0)return;let a=new Uint8Array(kI(i)),o=await crypto.subtle.decrypt({name:`AES-GCM`,iv:a.subarray(0,12)},r.key,a.subarray(12));return Mx(T9)(new TextDecoder().decode(o))},O9=vo(1),k9=(e,t)=>Bp(n=>mk(e).execute(t).pipe(Kp(AN,{...ia(n,AN),redirect:`error`}),Dp(e=>new S9({operation:`http.request`,cause:e})))),DSe=U({keys:W(U({kty:H,crv:zx(H),x:zx(H),kid:zx(H),alg:zx(H),use:zx(H),key_ops:zx(W(H))}))}),OSe=U({sub:jS,client_id:jS,scope:H,iat:vS,exp:vS}),kSe=U({list:H}),ASe=CSe.pipe(Zx({exp:vS})),A9=e=>new x9({cause:e}),j9=_o(5),M9=V(`Verifier.make`)(function*(e){let t=yield*sk,n=yield*pp({try:()=>({jwks:new URL(`${e.issuer}/jwks`).href,keyList:new URL(`/api/keyList`,e.issuer).href}),catch:()=>new SSe({message:`Invalid issuer URL`})}),r=V(`Verifier.jwks`)(function*(){let e=yield*k9(t,DO(n.jwks));return e.status===200?dz({keys:(yield*HO(DSe)(e).pipe(Dp(e=>new S9({operation:`jwks.decode`,cause:e})))).keys.map(({key_ops:e,...t})=>e?{...t,key_ops:[...e]}:t)}):yield*new S9({operation:`jwks.fetch`,cause:{status:e.status}})},Jp),i=yield*nm(r(),e=>Dd(e)?`1 minute`:j9),a=V(`Verifier.signingKey`)(function*(e){let t=yield*i;return yield*ap({try:()=>t({alg:`EdDSA`,kid:e}),catch:A9})}),o=V(`Verifier.signed`)(function*(t,n){let r=yield*pp({try:()=>xz(t),catch:A9});if(r.alg!==`EdDSA`||r.kid===void 0)return yield*A9();let i=yield*a(r.kid),o=yield*Ff,{payload:s}=yield*ap({try:()=>XR(t,i,{issuer:e.issuer,audience:e.resource,algorithms:[`EdDSA`],typ:n,currentDate:new Date(o)}),catch:A9});return s}),s=V(`Verifier.jwt`)(function*(e){let t=yield*o(e,`at+jwt`);if(t.cnf!==void 0)return yield*A9();let n=yield*Ax(OSe)(t).pipe(Dp(A9));return{subject:n.sub,scopes:n.scope.split(` `).filter(Boolean),actor:{kind:`client`,clientId:n.client_id},expiresAt:n.exp*1e3}}),c=V(`Verifier.keyList`)(function*(){let r=OO(n.keyList).pipe(zO({resource:e.resource})),i=yield*k9(t,r);if(i.status!==200)return yield*new S9({operation:`key-list.fetch`,cause:{status:i.status}});let{list:a}=yield*HO(kSe)(i).pipe(Dp(e=>new S9({operation:`key-list.decode`,cause:e}))),s=e=>new S9({operation:`key-list.verify`,cause:e}),c=yield*o(a,w9).pipe(Cp(`Unauthorized`,e=>L(s(e)))),l=yield*Ax(ASe)(c).pipe(Dp(s));return{readAt:yield*Ff,expiresAt:l.exp*1e3,entries:new Map(l.keys.map(e=>[e.id,e.sealed]))}},Jp),l=yield*BE(!1),u=yield*nm(c().pipe(Np({duration:`3 seconds`,orElse:()=>L(new S9({operation:`key-list.timeout`}))}),kp(({operation:e})=>R(UE(l,!0),t=>t?F:Tm(`clankerauth key list reads are failing; a held list decides until it expires`,{operation:e}))),_p(()=>R(UE(l,!1),e=>e?Dm(`clankerauth key list reads have recovered`):F))),j9),d=yield*BE(void 0),f=I(function*(){let e=yield*vp(u);Ca(e)&&(yield*HE(d,e.success));let t=yield*VE(d);return t!==void 0&&t.expiresAt>(yield*Ff)?t:yield*Sa(e)?e.failure:new S9({operation:`key-list.expired`})}),p=V(`Verifier.apiKey`)(function*(t){let n=n=>ap({try:()=>ESe(t,e.resource,n.entries),catch:A9}),r=yield*Ff,i=yield*VE(d),a=i!==void 0&&r-i.readAt<yo(O9)&&i.expiresAt>r?i:yield*f,o=(yield*n(a))??(yield*R(f,e=>e===a?N(void 0):n(e)));return o===void 0||o.expiresAt!==null&&o.expiresAt<=(yield*Ff)?yield*A9():{subject:o.ownerId,scopes:o.scopes,actor:{kind:`key`,keyId:o.keyId},expiresAt:o.expiresAt??void 0}});return{verifyToken:V(`Verifier.verifyToken`)(function*(t){let n=yield*t.startsWith(`clankerauth_`)?e.apiKeys===!1?L(A9()):p(t):s(t),r=e.requiredScopes?.find(e=>!n.scopes.includes(e));return r===void 0?n:yield*new C9({scope:r,actor:n.actor})})}}),jSe=V(`AdministrationResource.make`)(function*(){let e=yield*e3,t=`${e.settings.baseURL}/api/auth`,n=XQ(e.settings.baseURL);return{protectedResource:{resource:n,authorizationServers:[t],scopesSupported:[YQ.read,YQ.write,`offline_access`],scopesRequired:[YQ.read,YQ.write]},verifier:yield*M9({issuer:t,resource:n,apiKeys:!1}).pipe(Vp(jN.pipe(Mf(bf(kN,(t,n)=>{let r=new Request(t,n);return r.headers.set(`x-clankerauth-peer`,`127.0.0.1`),e.auth.handler(r)})))))}}),MSe=Ax(EQ),NSe=Ax(U({id:H,key:H,referenceId:H,expiresAt:aS(qS),permissions:aS(LS(EQ))})),N9=B(function*(e){return{keyId:e.id,name:e.name??``,enabled:e.enabled,permissions:yield*MSe(e.permissions??{}).pipe(Sp(()=>bp(Tm(`An API key's stored permissions do not decode; it is listed with none`,{keyId:e.id}),{}))),expiresAt:e.expiresAt?wh(e.expiresAt):null,createdAt:wh(e.createdAt)}}),P9=z(e3,e=>{let t=V(`MachineKeys.validate`)(function*(t){if(t!==void 0)for(let[n,r]of Object.entries(t)){if(n===XQ(e.settings.baseURL))return yield*RQ([`permissions`,n],`Administration requires OAuth access tokens, not API keys`);let t=yield*e.resources.get(n);if(!t||r.some(e=>!t.scopes.includes(e)))return yield*RQ([`permissions`,n],`Select explicitly granted, currently available Resource scopes`)}});return{list:V(`MachineKeys.list`)(function*(){let{providerHeaders:t}=yield*hQ,n=yield*t,r=yield*zQ(()=>e.auth.api.listApiKeys({headers:n,query:{sortBy:`createdAt`,sortDirection:`asc`}}));return{keys:yield*np(r.apiKeys,N9)}}),create:V(`MachineKeys.create`)(function*(n){let r=yield*hQ;yield*t(n.permissions);let i=n.expiresAt===null?null:(Oh(n.expiresAt)-(yield*Ff))/1e3;if(i!==null&&i<1)return yield*RQ([`expiresAt`],`Expiry must be in the future`);let a=yield*zQ(()=>e.auth.api.createApiKey({body:{userId:r.userId,name:n.name.trim(),permissions:Object.fromEntries(Object.entries(n.permissions).map(([e,t])=>[e,[...t]])),expiresIn:i}}));return{...yield*N9(a),key:a.key}}),update:V(`MachineKeys.update`)(function*(n){let r=yield*hQ;return yield*t(n.permissions),yield*N9(yield*zQ(()=>e.auth.api.updateApiKey({body:{userId:r.userId,keyId:n.keyId,name:n.name?.trim(),enabled:n.enabled,permissions:n.permissions?Object.fromEntries(Object.entries(n.permissions).map(([e,t])=>[e,[...t]])):void 0}})))}),delete:V(`MachineKeys.delete`)(function*({keyId:t}){let{providerHeaders:n}=yield*hQ,r=yield*n;return yield*zQ(()=>e.auth.api.deleteApiKey({headers:r,body:{keyId:t}})),{deleted:!0}}),keyList:V(`MachineKeys.keyList`)(function*(t){let n=yield*Ff,r=yield*e.resources.get(t),i=r===void 0||t===XQ(e.settings.baseURL)?[]:r.scopes,a=i.length?yield*e.sql`
|
|
535
535
|
SELECT id, key, referenceId, expiresAt, permissions FROM apikey
|
|
536
536
|
WHERE enabled = 1 AND (expiresAt IS NULL OR expiresAt > ${new Date(n).toISOString()})
|
|
537
537
|
`:[],o=yield*np(a,e=>I(function*(){let n=yield*NSe(e),r=(n.permissions?.[t]??[]).filter(e=>i.includes(e));return r.length?[yield*ap(()=>TSe(new Uint8Array(Buffer.from(n.key,`base64url`)),t,{keyId:n.id,ownerId:n.referenceId,scopes:r,expiresAt:n.expiresAt===null?null:Oh(n.expiresAt)}))]:[]}).pipe(Sp(()=>bp(Tm(`An API key row cannot be listed; it is left out of key lists`,{keyId:e.id}),[])))),s=Math.floor(n/1e3),{token:c}=yield*zQ(()=>e.auth.api.signDocument({body:{typ:w9,payload:{aud:t,iat:s,exp:s+86400,keys:o.flat()}}}));return{list:c}})}}),F9=(e,t)=>{let n=`Requires ${e}.`;return t.kind===`client`?new yq({message:n,scopes:[e]}):new yq({message:n})},PSe=(e,t)=>t===void 0||e.scopes.includes(t)?void 0:F9(t,e.actor),I9=e=>e instanceof x9?new gq({message:e.message}):e instanceof C9?F9(e.scope,e.actor):e,L9=(e,t)=>Dp(e.verifyToken(bg(t)),I9);V(`Resource.layer`)(function*(e,{scopes:t,required:n},r){let i=new URL(`/`,r.publicUrl).href,a={resource:i,authorizationServers:[r.issuer],scopesSupported:t,scopesRequired:[n]},o=r.discovery===!1?void 0:a,s=yield*M9({issuer:r.issuer,resource:i,requiredScopes:[n],apiKeys:r.apiKeys}),c=e=>Np(e,{duration:`5 seconds`,orElse:()=>L(new S9({operation:`verify.timeout`}))}),l={verifyToken:e=>c(s.verifyToken(e))},u=V(`Resource.principal`)(function*(e,t){let n=JZ(e);if(Di(n))return yield*new gq({message:`A bearer token is required.`});let r=yield*L9(l,n.value),i=PSe(r,t);return i===void 0?r:yield*i}),d=V(`Resource.admit`)(function*(t,n){let r=yield*vp(u(t,n));if(Ca(r))return{ok:!0,principal:r.success};let i=EA(ofe(r.failure,{authentication:e,protectedResource:o,authorization:t}));return{ok:!1,refusal:{status:i.status,headers:Object.fromEntries(i.headers),body:yield*ip(()=>i.text())}}});return{resource:i,issuer:r.issuer,protectedResource:o,verifier:l,admit:d,watch:(e,t)=>cm(I(function*(){let n=yield*u(e,t),r=yield*Ff,i=Math.max(0,(n.expiresAt??1/0)-r);return n.actor.kind===`key`?yield*Pp(Math.min(i,yo(O9))):(yield*Pp(i),yield*I9(new x9))}))}});const R9=V(`Administration.providerSession`)(function*(e,t){let{context:n}=e,r=new Date((yield*Ff)+6e4),i=yield*Yp(zQ(()=>n.internalAdapter.createSession(t,!0,{expiresAt:r},!0)),e=>ip(()=>n.internalAdapter.deleteSession(e.token))),a=yield*zQ(async()=>(await Promise.all([ZN(n.authCookies.sessionToken.name,i.token,n.secret),ZN(n.authCookies.dontRememberToken.name,`true`,n.secret)])).map(e=>e.split(`;`)[0]).join(`; `));return new Headers({origin:e.settings.baseURL,cookie:a})}),FSe=e=>oQ(e,z(e3,e=>()=>I(function*(){let t=yield*sM,n=new Headers(t.headers),r=yield*zQ(()=>e.auth.api.getSession({headers:n}));return r?{providerHeaders:N(n),userId:r.user.id,email:r.user.email,writable:!0}:yield*new gq({message:`Owner session required`})}))),ISe=HQ(U({id:H,email:H})),LSe=e=>oQ(_Q,z(e3,t=>{let n=()=>new gq({message:`Owner authorization required`});return r=>I(function*(){let i=yield*L9(e.verifier,r).pipe(Cp(`ProviderUnavailable`,()=>L(new fQ({error:`Request could not be completed`}))));if(i.actor.kind!==`client`)return yield*n();let a=i.scopes.includes(YQ.write);if(!a&&!i.scopes.includes(YQ.read))return yield*new yq({message:`Insufficient scope`,scopes:[YQ.read]});let o=yield*t.sql`SELECT u.id, u.email FROM user u
|
|
538
538
|
JOIN oauthClient c ON c.clientId = ${i.actor.clientId}
|
|
539
|
-
WHERE u.id = ${i.subject} AND c.disabled IS NOT 1`;if(!o[0])return yield*n();let s=yield*ISe(o[0]);return{userId:s.id,email:s.email,writable:a,providerHeaders:R9(t,s.id)}})}),{protectedResource:e.protectedResource}),RSe=e=>e.readOnly?F:R(hQ,({writable:e})=>e?F:L(new yq({message:`This action requires the ${YQ.write} scope`,scopes:[YQ.write]})));function zSe(e){return Of(I(function*(){let t=yield*e3,n=yield*n3,r=yield*P9,i=mJ(PQ,{listClients:n.list,createClient:n.create,updateClient:n.update,deleteClient:n.delete,revokeClient:n.revoke,blockClient:n.block,rotateClientSecret:n.rotate,setClientAccess:n.access,createResource:n.createResource,updateResource:n.updateResource,deleteResource:n.deleteResource,listApiKeys:r.list,createApiKey:r.create,updateApiKey:r.update,deleteApiKey:r.delete},{authorize:RSe}),a=mJ(NQ,{setupStatus:()=>t.owner().pipe(z(e=>({required:!e})),Dp(()=>new dQ({error:`Request could not be completed`}))),setupOwner:n.setup,keyList:({resource:e})=>r.keyList(e)}),o=yield*jSe(),s=gQ(t.context.authCookies.sessionToken.name),c=FQ(s),l=Af(MZ(c,i).pipe(Mf(FSe(s))),wM(`GET`,`/openapi.json`,pA(lX(c.api))),MZ(c,a).pipe(Mf(Kfe.layer))),u=Af(bSe(i,{name:`clankerauth-admin`,version:xSe,allowedOrigins:e,allowSubscriptions:!1,instructions:`Owner administration. Listing needs ${YQ.read} or ${YQ.write}; every other action changes authorization policy and needs ${YQ.write}. Create and rotate actions return secrets once.`,authentication:_Q}),MZ(Efe,i)).pipe(Mf(LSe(o)));return Af(l,u)}))}const z9=(e,t)=>e===t||e.endsWith(`.${t}`),BSe=e=>{try{return new URL(`https://${e}`).hostname===e&&e.includes(`.`)&&!dt(e)}catch{return!1}},B9=(e,t)=>e.protocol===`https:`||e.protocol===`http:`&&([`localhost`,`127.0.0.1`,`[::1]`].includes(e.hostname)||t),V9=`HTTPS origins (HTTP allowed on loopback, or anywhere with CLANKERAUTH_ALLOW_INSECURE_HTTP=true)`,H9=(e,t)=>URL.canParse(e)&&new URL(e).origin===e&&B9(new URL(e),t),U9=B(function*(e){let{allowInsecureHttp:t,baseURL:n,cookieDomain:r}=e;return H9(n,t)?bg(e.secret).length<32?yield*L(/* @__PURE__ */ Error(`CLANKERAUTH_BETTER_AUTH_SECRET must have at least 32 characters`)):e.mcpAllowedOrigins.every(e=>H9(e,t))?r!==void 0&&(!BSe(r)||!z9(new URL(n).hostname,r))?yield*L(/* @__PURE__ */ Error(`CLANKERAUTH_COOKIE_DOMAIN must be a bare parent domain of the CLANKERAUTH_BASE_URL host, such as home.example`)):e:yield*L(/* @__PURE__ */ Error(`CLANKERAUTH_MCP_ALLOWED_ORIGINS must contain exact ${V9}`)):yield*L(/* @__PURE__ */ Error(`CLANKERAUTH_BASE_URL must be one of: ${V9}`))});I(function*(){let e={baseURL:yield*_E(`CLANKERAUTH_BASE_URL`),secret:yield*Hse(`CLANKERAUTH_BETTER_AUTH_SECRET`),database:yield*_E(`CLANKERAUTH_DATABASE`).pipe(lE(`data/clankerauth.sqlite`)),host:yield*_E(`CLANKERAUTH_HOST`).pipe(lE(`127.0.0.1`)),port:yield*Vse(`CLANKERAUTH_PORT`).pipe(lE(3e3)),mcpAllowedOrigins:yield*Bse(toe,`CLANKERAUTH_MCP_ALLOWED_ORIGINS`).pipe(lE([])),trustProxy:yield*vE(`CLANKERAUTH_TRUST_PROXY`).pipe(lE(!1)),allowInsecureHttp:yield*vE(`CLANKERAUTH_ALLOW_INSECURE_HTTP`).pipe(lE(!1)),cookieDomain:yield*_E(`CLANKERAUTH_COOKIE_DOMAIN`).pipe(lE(void 0))};return yield*U9(e)});const W9=`clankerauth_forward`,G9=(e,t)=>pA({error:t},{status:e}),VSe=e=>Of(z(e3,t=>{let{settings:n}=t,r=t=>{if(!URL.canParse(t))return;let r=new URL(t);return!r.username&&!r.password&&B9(r,n.allowInsecureHttp)&&z9(r.hostname,e)?r:void 0},i=bg(n.secret),a=XQ(n.baseURL),o=new URL(`/login`,n.baseURL),s={domain:e,path:`/`,httpOnly:!0,secure:n.baseURL.startsWith(`https:`),sameSite:`lax`},c=t.context.authCookies.sessionToken.name,l=(e,t)=>{let r=new URL(e,n.baseURL);return r.searchParams.set(`rd`,t.href),r},u=e=>zQ(()=>t.auth.api.getSession({headers:new Headers({cookie:e})})),d=I(function*(){let e=yield*sM,{headers:o}=e,s=o[`x-forwarded-proto`],d=o[`x-forwarded-host`],f=s&&d?r(`${s}://${d}${o[`x-forwarded-uri`]??`/`}`):void 0;if(!f)return G9(400,`invalid_forwarded_request`);let p=new URL(e.url,n.baseURL).searchParams.get(`resource`),m=p&&p!==a&&(yield*t.resources.get(p));if(!m)return G9(403,`unknown_resource`);let h=e.cookies[W9],g=h?yield*Tre(ap(()=>JH({key:i,data:h}))):Ti(),_=Oi(g)?yield*u(`${c}=${g.value}`):null;if(!_)return o[`sec-fetch-mode`]===`navigate`?cA(l(`/forward-auth/continue`,f)):G9(401,`unauthenticated`);let v=Math.floor((yield*Ff)/1e3),{token:y}=yield*zQ(()=>t.auth.api.signDocument({body:{typ:`at+jwt`,payload:{sub:_.user.id,aud:m.identifier,client_id:`forward-auth`,scope:m.scopes.join(` `),iat:v,exp:v+900}}}));return sA({status:204,headers:{authorization:`Bearer ${y}`}})}),f=I(function*(){let e=yield*sM,t=new URL(e.url,n.baseURL).searchParams.get(`rd`),a=t?r(t):void 0;if(!a)return G9(400,`invalid_return_url`);let o=e.cookies[c];if(!(o&&(yield*u(e.headers.cookie??``)))||!o)return cA(l(`/login`,l(`/forward-auth/continue`,a)));let d=yield*ap(()=>qH({key:i,data:o}));return yield*cA(a).pipe(bA(W9,d,s))}),p=I(function*(){let e=yield*sM,i=new URL(e.url,n.baseURL).searchParams.get(`rd`),a=i&&r(i)||o,{headers:c}=yield*zQ(()=>t.auth.api.signOut({headers:new Headers({cookie:e.headers.cookie??``}),returnHeaders:!0}));return yield*xA(cA(a),Yh(c.getSetCookie())).pipe(bA(W9,``,{...s,maxAge:0}))});return Af(wM(`GET`,`/forward-auth`,Sp(d,BQ)),wM(`GET`,`/forward-auth/continue`,Sp(f,BQ)),wM(`GET`,`/forward-auth/logout`,Sp(p,BQ)))})),HSe=e=>ut({requestTimeout:15e3,headersTimeout:1e4},e),USe=bh(65536),WSe=/^\/forward-auth(?:\?|$)/,GSe=(e,t,n)=>{let r=(e[`x-forwarded-for`]?.split(`,`).map(e=>e.trim()).filter(Boolean))?.at(-1);return n&&r?r:Ai(t,()=>`unknown`)},KSe=({baseURL:e,trustProxy:t})=>n=>I(function*(){let r=yield*sM,i=r.source,a=i instanceof lt?i.url:r.url;if(!a?.startsWith(`/`)||a.startsWith(`//`))return sA({status:400});let o=Ot(r.headers,WSe.test(a)?Mg(`forwarded`):Ng([`forwarded`,`x-forwarded-host`,`x-forwarded-proto`]),kg(`host`,new URL(e).host),kg(`x-clankerauth-peer`,GSe(r.headers,r.remoteAddress,t)),Mg(`x-forwarded-for`)),s=yield*n.pipe(Kp(sM,r.modify({headers:o})),Kp(UO,USe));return i instanceof lt?NE(s.body).pipe(FE(`Stream`,e=>SA(s,aO(e.stream.pipe(ise(()=>P(()=>i.socket.destroy()))),e.contentType,e.contentLength))),RE(()=>s)):s}).pipe(im),qSe=/* @__PURE__ */ new Set([`/sign-in/email`,`/sign-out`,`/get-session`,`/change-password`,`/jwks`,`/oauth2/register`,`/oauth2/authorize`,`/oauth2/token`,`/oauth2/consent`,`/oauth2/continue`,`/oauth2/public-client`,`/oauth2/introspect`,`/oauth2/revoke`,`/.well-known/oauth-authorization-server`]),JSe=/* @__PURE__ */ new Set([`/.well-known/oauth-protected-resource`,`/jwks`,`/oauth2/register`,`/oauth2/token`,`/oauth2/revoke`,`/oauth2/introspect`,`/.well-known/oauth-authorization-server`,`/.well-known/oauth-authorization-server/api/auth`]),YSe=/* @__PURE__ */ new Set([`/jwks`,`/.well-known/oauth-protected-resource`,`/.well-known/oauth-authorization-server`,`/.well-known/oauth-authorization-server/api/auth`]),XSe=/* @__PURE__ */ new Set([`/`,`/login`,`/consent`,`/setup`]),ZSe=/^\/assets\/[a-zA-Z0-9_.-]+\.(js|css)$/,K9=(e,t=200)=>pA(e,{status:t}),q9=K9({error:`Not found`},404),J9=[`Authorization`,`Content-Type`,`Accept`,`Mcp-Protocol-Version`,`Mcp-Method`,`Mcp-Name`],QSe=new Set(J9.map(e=>e.toLowerCase())),$Se=(e=nt(new URL(`dist/`,import.meta.resolve(`@clankerauth/web/package.json`))))=>Of(z(e3,t=>{let{auth:n,settings:r}=t,i=[.../* @__PURE__ */ new Set([r.baseURL,...r.mcpAllowedOrigins])],a=I(function*(){let e=yield*sM,i=new URL(e.url,r.baseURL),a=i.pathname.replace(/^\/api\/auth/,``);if(!qSe.has(a)&&a!==`/.well-known/oauth-authorization-server/api/auth`)return q9;if(a===`/oauth2/authorize`){let n=e.method===`GET`?i.searchParams.getAll(`resource`):new URLSearchParams(yield*e.text).getAll(`resource`);if(n.length!==1||!(yield*t.resources.get(n[0]??``)))return K9({error:`invalid_target`,error_description:`Exactly one configured resource is required`},400)}let o=e.method===`GET`||e.method===`HEAD`?void 0:yield*e.arrayBuffer,s=yield*zQ(()=>n.handler(new Request(i,{method:e.method,headers:e.headers,body:o})));return AA(s)}).pipe(Sp(BQ)),o=CM(t=>I(function*(){let n=yield*LA;yield*t.add(`*`,`/*`,I(function*(){let t=yield*sM;if(t.method!==`GET`&&t.method!==`HEAD`)return q9;let i=new URL(t.url,r.baseURL).pathname,a=XSe.has(i)?`index.html`:ZSe.test(i)?i.slice(1):void 0;return a?yield*n.fileResponse(et(e,a),{contentType:a.endsWith(`.js`)?`text/javascript`:a.endsWith(`.css`)?`text/css`:`text/html; charset=utf-8`}).pipe(Sp(()=>N(q9))):q9}))})),s=AM(e=>KSe({baseURL:r.baseURL,trustProxy:r.trustProxy})(I(function*(){let t=yield*sM,n=new URL(t.url,r.baseURL).pathname,a=n.replace(/^\/api\/auth/,``),o=n===`/mcp`,s=t.headers.origin,c=s!==void 0&&i.includes(s),l=JSe.has(a),u;if(o&&s!==void 0&&!c)u=K9({error:`Invalid origin`},403);else if(o&&t.method===`OPTIONS`){let e=t.headers[`access-control-request-method`],n=(t.headers[`access-control-request-headers`]??``).split(`,`).map(e=>e.trim().toLowerCase()).filter(Boolean);u=c&&e===`POST`&&n.every(e=>QSe.has(e))?sA({status:204}):K9({error:`MCP preflight rejected`},403)}else u=l&&t.method===`OPTIONS`?sA({status:204}):yield*e;l&&(u=u.pipe(yA({"access-control-allow-origin":`*`,"access-control-allow-methods":`GET, POST, OPTIONS`,"access-control-allow-headers":`Authorization, Content-Type, DPoP`,"access-control-expose-headers":`WWW-Authenticate, DPoP-Nonce`}),vA(`access-control-allow-credentials`))),o&&(u=u.pipe(_A(`vary`,u.headers.vary?`${u.headers.vary}, Origin`:`Origin`),vA(`access-control-allow-credentials`)),c&&s!==void 0&&(u=u.pipe(yA({"access-control-allow-origin":s,"access-control-expose-headers":`WWW-Authenticate, Mcp-Protocol-Version`})),t.method===`OPTIONS`&&u.status>=200&&u.status<300&&(u=u.pipe(yA({"access-control-allow-methods":`POST`,"access-control-allow-headers":J9.join(`, `)})))));let d=t.method!==`GET`||u.status!==200?`no-store`:n.startsWith(`/assets/`)?`public, max-age=31536000, immutable`:YSe.has(a)?`public, max-age=300`:`no-store`;return u=u.pipe(yA({"cache-control":d,"referrer-policy":`no-referrer`,"x-content-type-options":`nosniff`,"x-frame-options":`DENY`,"content-security-policy":`default-src 'self'; script-src 'self'; style-src 'self'; img-src 'self'; connect-src 'self'; frame-ancestors 'none'; base-uri 'none'; form-action 'self'`})),r.baseURL.startsWith(`https:`)&&(u=u.pipe(_A(`strict-transport-security`,`max-age=31536000`))),u})),{global:!0}),c=AM(e=>om(e));return Af(zSe(i),r.cookieDomain===void 0?Sf:VSe(r.cookieDomain),wM(`GET`,`/healthz`,t.sql`SELECT 1`.pipe(bp(K9({status:`ok`})),Sp(BQ))),wM(`*`,`/api/auth/*`,a),wM(`*`,`/.well-known/*`,a),o).pipe(Mf(c.layer),Mf(s),Mf(eue))})),eCe=V(`Http.nodeHandler`)(function*(e){let t=yield*kce($Se(e));return yield*Qle(t,{scope:yield*qp})}),Y9=`credentials.json`,X9=U({email:H,password:H,secret:H,clientId:Bx(H),clientSecret:Bx(H)}),tCe=Ax(LS(X9)),nCe=Ix(X9),Z9=(e,t)=>R(tE,n=>n.writeFileString($e(e,Y9),`${JSON.stringify(nCe(t),null,2)}\n`,{mode:384})),rCe=V(`Dev.identity`)(function*(e,t){let n={email:`owner@example.internal`,password:Xe(24).toString(`base64url`),secret:Xe(32).toString(`hex`)};if(!t)return n;let r=yield*tE,i=$e(e,Y9);return(yield*r.exists(i))?yield*tCe(yield*r.readFileString(i)):(yield*Z9(e,n),n)}),Q9=e=>Error(`Disposable issuer provisioning failed`,{cause:e}),$9=V(`Dev.ownerSession`)(function*(e,t,n,r){if(t===void 0)return yield*L(/* @__PURE__ */ Error(`A forward-auth session needs a cookieDomain; the issuer serves none`));let i=yield*sk,a=yield*i.execute(OO(`${e}/api/auth/sign-in/email`,{headers:{origin:e}}).pipe(zO(n)));if(yield*a.text,a.status!==200)return yield*L(/* @__PURE__ */ Error(`Owner sign-in failed with HTTP ${a.status}`));let o=new URL(`/`,r).href,s=yield*i.get(`${e}/forward-auth/continue?rd=${encodeURIComponent(o)}`,{headers:{cookie:lg(a.cookies)}});yield*s.text;let c=og(a.cookies,s.cookies);return{cookie:lg(c),cookies:Object.entries(ug(c)).map(([e,t])=>({name:e,value:t}))}}),iCe=Af(DN,jN,bf(AN,{redirect:`manual`})),aCe=B(function*(e){let t=yield*tE,n=nt(new URL(`./web/`,import.meta.url));if(!(yield*t.exists($e(n,`index.html`))))return yield*L(/* @__PURE__ */ Error(`The @gjermundgaraba/clankerauth-dev installation is missing its bundled dashboard assets`));let r=e.dataDir,i=r===void 0?yield*t.makeTempDirectoryScoped({prefix:`clankerauth-disposable-`}):yield*bp(t.makeDirectory(et(r),{recursive:!0,mode:448}),et(r)),a=(e,t)=>{t.writeHead(503).end()},o=HSe((t,n)=>{try{e.onRequest?.({method:t.method??`GET`,url:new URL(t.url??`/`,`http://127.0.0.1:${t.socket.localPort}`)}),a(t,n)}catch{n.headersSent?n.destroy():n.writeHead(500).end(`Request failed`)}}),s=cp(e=>{o.close(()=>e(F)),o.closeAllConnections()});yield*Yp(cp(t=>{let n=e=>t(L(e));o.once(`error`,n),o.listen(e.port??0,`127.0.0.1`,()=>{o.off(`error`,n),t(F)})}),()=>s);let c=o.address();if(!(c instanceof Object))return yield*L(/* @__PURE__ */ Error(`Disposable issuer failed to bind a TCP port`));let{port:l}=c,u=e.cookieDomain===void 0?`http://127.0.0.1:${l}`:`http://clankerauth.${e.cookieDomain}:${l}`,d=yield*rCe(i,r!==void 0),f=yield*U9({baseURL:u,secret:vg(d.secret),database:$e(i,`issuer.sqlite`),host:`127.0.0.1`,port:l,mcpAllowedOrigins:[],trustProxy:!1,allowInsecureHttp:e.cookieDomain!==void 0,cookieDomain:e.cookieDomain}),p=yield*vf(e3.layer(f,{cimdTransport:e.cimdTransport})),m=sa(p,e3),h=yield*ef(yield*qp);a=yield*eCe(n).pipe(Vp(p),Kp(Jd,h)),yield*Xp(()=>s);let g={email:d.email,password:d.password},_=yield*Vp(n3,p),v=yield*Vp(P9,p),y=e=>om(Jp(I(function*(){let t=yield*m.owner();if(t===void 0)return yield*fp(/* @__PURE__ */ Error(`Owner setup failed`));let n=yield*R9(m,t);return yield*e(t).pipe(Kp(hQ,{userId:t,email:g.email,writable:!0,providerHeaders:N(n)}))}))).pipe(Dp(Q9));(yield*m.owner())||(yield*t3(m,g).pipe(Dp(Q9))),yield*y(()=>np(e.resources,e=>R(m.resources.get(e.identifier),t=>t?F:xp(_.createResource(e)))));let b=yield*y(()=>I(function*(){if(d.clientId!==void 0&&d.clientSecret!==void 0){let{clients:e}=yield*_.list();if(e.some(e=>e.client_id===d.clientId))return{client_id:d.clientId,client_secret:d.clientSecret}}return yield*_.create({client_name:e.client.name,redirect_uris:[e.client.redirect],resources:e.client.resources,token_endpoint_auth_method:`client_secret_basic`,application_type:`native`})})),x=b.client_secret;if(x===void 0)return yield*L(/* @__PURE__ */ Error(`Disposable issuer did not return client credentials`));r!==void 0&&(yield*Z9(i,{...d,clientId:b.client_id,clientSecret:x}));let S=e.cookieDomain===void 0?void 0:u;return{details:{issuer:`${u}/api/auth`,clientId:b.client_id,clientSecret:x,owner:g,url:u,port:l,directory:i},apiKey:e=>y(()=>z(v.create({name:e.name??`development`,permissions:e.permissions,expiresAt:null}),e=>e.key)),ownerSession:e=>$9(u,S,g,e),ownerToken:V(`Dev.ownerToken`)(function*(e){let{cookie:t}=yield*$9(u,S,g,e.appOrigin),n=yield*sk,r=new URL(e.appOrigin),i=new URL(`/forward-auth`,u);i.searchParams.set(`resource`,e.resource);let a=yield*n.get(i,{headers:{cookie:t,"x-forwarded-proto":r.protocol.slice(0,-1),"x-forwarded-host":r.host,"x-forwarded-uri":`/`}});yield*a.text;let o=a.headers.authorization;return a.status!==204||o===void 0?yield*L(/* @__PURE__ */ Error(`Forward auth issued no token (HTTP ${a.status})`)):o.replace(/^Bearer /iu,``)})}});async function oCe(e){let t=Xd(),n=e=>ym(e.pipe(Kp(Jd,t),Vp(iCe)),{onFiberStart:hC(t)}),r=xm(tm(nf(t,Ed)));try{let t=await n(aCe(e));return{...t.details,apiKey:e=>n(t.apiKey(e)),ownerSession:e=>n(t.ownerSession(e)),ownerToken:e=>n(t.ownerToken(e)),close:()=>ym(r)}}catch(e){throw await ym(r),e}}export{oCe as startDisposableIssuer,Pfe as t};
|
|
539
|
+
WHERE u.id = ${i.subject} AND c.disabled IS NOT 1`;if(!o[0])return yield*n();let s=yield*ISe(o[0]);return{userId:s.id,email:s.email,writable:a,providerHeaders:R9(t,s.id)}})}),{protectedResource:e.protectedResource}),RSe=e=>e.readOnly?F:R(hQ,({writable:e})=>e?F:L(new yq({message:`This action requires the ${YQ.write} scope`,scopes:[YQ.write]})));function zSe(e){return Of(I(function*(){let t=yield*e3,n=yield*n3,r=yield*P9,i=mJ(PQ,{listClients:n.list,createClient:n.create,updateClient:n.update,deleteClient:n.delete,revokeClient:n.revoke,blockClient:n.block,rotateClientSecret:n.rotate,setClientAccess:n.access,createResource:n.createResource,updateResource:n.updateResource,deleteResource:n.deleteResource,listApiKeys:r.list,createApiKey:r.create,updateApiKey:r.update,deleteApiKey:r.delete},{authorize:RSe}),a=mJ(NQ,{setupStatus:()=>t.owner().pipe(z(e=>({required:!e})),Dp(()=>new dQ({error:`Request could not be completed`}))),setupOwner:n.setup,keyList:({resource:e})=>r.keyList(e)}),o=yield*jSe(),s=gQ(t.context.authCookies.sessionToken.name),c=FQ(s),l=Af(MZ(c,i).pipe(Mf(FSe(s))),wM(`GET`,`/openapi.json`,pA(lX(c.api))),MZ(c,a).pipe(Mf(Kfe.layer))),u=Af(bSe(i,{name:`clankerauth-admin`,version:xSe,allowedOrigins:e,instructions:`Owner administration. Listing needs ${YQ.read} or ${YQ.write}; every other action changes authorization policy and needs ${YQ.write}. Create and rotate actions return secrets once.`,authentication:_Q}),MZ(Efe,i)).pipe(Mf(LSe(o)));return Af(l,u)}))}const z9=(e,t)=>e===t||e.endsWith(`.${t}`),BSe=e=>{try{return new URL(`https://${e}`).hostname===e&&e.includes(`.`)&&!dt(e)}catch{return!1}},B9=(e,t)=>e.protocol===`https:`||e.protocol===`http:`&&([`localhost`,`127.0.0.1`,`[::1]`].includes(e.hostname)||t),V9=`HTTPS origins (HTTP allowed on loopback, or anywhere with CLANKERAUTH_ALLOW_INSECURE_HTTP=true)`,H9=(e,t)=>URL.canParse(e)&&new URL(e).origin===e&&B9(new URL(e),t),U9=B(function*(e){let{allowInsecureHttp:t,baseURL:n,cookieDomain:r}=e;return H9(n,t)?bg(e.secret).length<32?yield*L(/* @__PURE__ */ Error(`CLANKERAUTH_BETTER_AUTH_SECRET must have at least 32 characters`)):e.mcpAllowedOrigins.every(e=>H9(e,t))?r!==void 0&&(!BSe(r)||!z9(new URL(n).hostname,r))?yield*L(/* @__PURE__ */ Error(`CLANKERAUTH_COOKIE_DOMAIN must be a bare parent domain of the CLANKERAUTH_BASE_URL host, such as home.example`)):e:yield*L(/* @__PURE__ */ Error(`CLANKERAUTH_MCP_ALLOWED_ORIGINS must contain exact ${V9}`)):yield*L(/* @__PURE__ */ Error(`CLANKERAUTH_BASE_URL must be one of: ${V9}`))});I(function*(){let e={baseURL:yield*_E(`CLANKERAUTH_BASE_URL`),secret:yield*Hse(`CLANKERAUTH_BETTER_AUTH_SECRET`),database:yield*_E(`CLANKERAUTH_DATABASE`).pipe(lE(`data/clankerauth.sqlite`)),host:yield*_E(`CLANKERAUTH_HOST`).pipe(lE(`127.0.0.1`)),port:yield*Vse(`CLANKERAUTH_PORT`).pipe(lE(3e3)),mcpAllowedOrigins:yield*Bse(toe,`CLANKERAUTH_MCP_ALLOWED_ORIGINS`).pipe(lE([])),trustProxy:yield*vE(`CLANKERAUTH_TRUST_PROXY`).pipe(lE(!1)),allowInsecureHttp:yield*vE(`CLANKERAUTH_ALLOW_INSECURE_HTTP`).pipe(lE(!1)),cookieDomain:yield*_E(`CLANKERAUTH_COOKIE_DOMAIN`).pipe(lE(void 0))};return yield*U9(e)});const W9=`clankerauth_forward`,G9=(e,t)=>pA({error:t},{status:e}),VSe=e=>Of(z(e3,t=>{let{settings:n}=t,r=t=>{if(!URL.canParse(t))return;let r=new URL(t);return!r.username&&!r.password&&B9(r,n.allowInsecureHttp)&&z9(r.hostname,e)?r:void 0},i=bg(n.secret),a=XQ(n.baseURL),o=new URL(`/login`,n.baseURL),s={domain:e,path:`/`,httpOnly:!0,secure:n.baseURL.startsWith(`https:`),sameSite:`lax`},c=t.context.authCookies.sessionToken.name,l=(e,t)=>{let r=new URL(e,n.baseURL);return r.searchParams.set(`rd`,t.href),r},u=e=>zQ(()=>t.auth.api.getSession({headers:new Headers({cookie:e})})),d=I(function*(){let e=yield*sM,{headers:o}=e,s=o[`x-forwarded-proto`],d=o[`x-forwarded-host`],f=s&&d?r(`${s}://${d}${o[`x-forwarded-uri`]??`/`}`):void 0;if(!f)return G9(400,`invalid_forwarded_request`);let p=new URL(e.url,n.baseURL).searchParams.get(`resource`),m=p&&p!==a&&(yield*t.resources.get(p));if(!m)return G9(403,`unknown_resource`);let h=e.cookies[W9],g=h?yield*Tre(ap(()=>JH({key:i,data:h}))):Ti(),_=Oi(g)?yield*u(`${c}=${g.value}`):null;if(!_)return o[`sec-fetch-mode`]===`navigate`?cA(l(`/forward-auth/continue`,f)):G9(401,`unauthenticated`);let v=Math.floor((yield*Ff)/1e3),{token:y}=yield*zQ(()=>t.auth.api.signDocument({body:{typ:`at+jwt`,payload:{sub:_.user.id,aud:m.identifier,client_id:`forward-auth`,scope:m.scopes.join(` `),iat:v,exp:v+900}}}));return sA({status:204,headers:{authorization:`Bearer ${y}`}})}),f=I(function*(){let e=yield*sM,t=new URL(e.url,n.baseURL).searchParams.get(`rd`),a=t?r(t):void 0;if(!a)return G9(400,`invalid_return_url`);let o=e.cookies[c];if(!(o&&(yield*u(e.headers.cookie??``)))||!o)return cA(l(`/login`,l(`/forward-auth/continue`,a)));let d=yield*ap(()=>qH({key:i,data:o}));return yield*cA(a).pipe(bA(W9,d,s))}),p=I(function*(){let e=yield*sM,i=new URL(e.url,n.baseURL).searchParams.get(`rd`),a=i&&r(i)||o,{headers:c}=yield*zQ(()=>t.auth.api.signOut({headers:new Headers({cookie:e.headers.cookie??``}),returnHeaders:!0}));return yield*xA(cA(a),Yh(c.getSetCookie())).pipe(bA(W9,``,{...s,maxAge:0}))});return Af(wM(`GET`,`/forward-auth`,Sp(d,BQ)),wM(`GET`,`/forward-auth/continue`,Sp(f,BQ)),wM(`GET`,`/forward-auth/logout`,Sp(p,BQ)))})),HSe=e=>ut({requestTimeout:15e3,headersTimeout:1e4},e),USe=bh(65536),WSe=/^\/forward-auth(?:\?|$)/,GSe=(e,t,n)=>{let r=(e[`x-forwarded-for`]?.split(`,`).map(e=>e.trim()).filter(Boolean))?.at(-1);return n&&r?r:Ai(t,()=>`unknown`)},KSe=({baseURL:e,trustProxy:t})=>n=>I(function*(){let r=yield*sM,i=r.source,a=i instanceof lt?i.url:r.url;if(!a?.startsWith(`/`)||a.startsWith(`//`))return sA({status:400});let o=Ot(r.headers,WSe.test(a)?Mg(`forwarded`):Ng([`forwarded`,`x-forwarded-host`,`x-forwarded-proto`]),kg(`host`,new URL(e).host),kg(`x-clankerauth-peer`,GSe(r.headers,r.remoteAddress,t)),Mg(`x-forwarded-for`)),s=yield*n.pipe(Kp(sM,r.modify({headers:o})),Kp(UO,USe));return i instanceof lt?NE(s.body).pipe(FE(`Stream`,e=>SA(s,aO(e.stream.pipe(ise(()=>P(()=>i.socket.destroy()))),e.contentType,e.contentLength))),RE(()=>s)):s}).pipe(im),qSe=/* @__PURE__ */ new Set([`/sign-in/email`,`/sign-out`,`/get-session`,`/change-password`,`/jwks`,`/oauth2/register`,`/oauth2/authorize`,`/oauth2/token`,`/oauth2/consent`,`/oauth2/continue`,`/oauth2/public-client`,`/oauth2/introspect`,`/oauth2/revoke`,`/.well-known/oauth-authorization-server`]),JSe=/* @__PURE__ */ new Set([`/.well-known/oauth-protected-resource`,`/jwks`,`/oauth2/register`,`/oauth2/token`,`/oauth2/revoke`,`/oauth2/introspect`,`/.well-known/oauth-authorization-server`,`/.well-known/oauth-authorization-server/api/auth`]),YSe=/* @__PURE__ */ new Set([`/jwks`,`/.well-known/oauth-protected-resource`,`/.well-known/oauth-authorization-server`,`/.well-known/oauth-authorization-server/api/auth`]),XSe=/* @__PURE__ */ new Set([`/`,`/resources`,`/keys`,`/login`,`/consent`,`/setup`]),ZSe=/^\/assets\/[a-zA-Z0-9_.-]+\.(js|css|woff2)$/,K9=(e,t=200)=>pA(e,{status:t}),q9=K9({error:`Not found`},404),J9=[`Authorization`,`Content-Type`,`Accept`,`Mcp-Protocol-Version`,`Mcp-Method`,`Mcp-Name`],QSe=new Set(J9.map(e=>e.toLowerCase())),$Se=(e=nt(new URL(`dist/`,import.meta.resolve(`@clankerauth/web/package.json`))))=>Of(z(e3,t=>{let{auth:n,settings:r}=t,i=[.../* @__PURE__ */ new Set([r.baseURL,...r.mcpAllowedOrigins])],a=I(function*(){let e=yield*sM,i=new URL(e.url,r.baseURL),a=i.pathname.replace(/^\/api\/auth/,``);if(!qSe.has(a)&&a!==`/.well-known/oauth-authorization-server/api/auth`)return q9;if(a===`/oauth2/authorize`){let n=e.method===`GET`?i.searchParams.getAll(`resource`):new URLSearchParams(yield*e.text).getAll(`resource`);if(n.length!==1||!(yield*t.resources.get(n[0]??``)))return K9({error:`invalid_target`,error_description:`Exactly one configured resource is required`},400)}let o=e.method===`GET`||e.method===`HEAD`?void 0:yield*e.arrayBuffer,s=yield*zQ(()=>n.handler(new Request(i,{method:e.method,headers:e.headers,body:o})));return AA(s)}).pipe(Sp(BQ)),o=CM(t=>I(function*(){let n=yield*LA;yield*t.add(`*`,`/*`,I(function*(){let t=yield*sM;if(t.method!==`GET`&&t.method!==`HEAD`)return q9;let i=new URL(t.url,r.baseURL).pathname,a=XSe.has(i)?`index.html`:ZSe.test(i)?i.slice(1):void 0;return a?yield*n.fileResponse(et(e,a),{contentType:a.endsWith(`.js`)?`text/javascript`:a.endsWith(`.css`)?`text/css`:a.endsWith(`.woff2`)?`font/woff2`:`text/html; charset=utf-8`}).pipe(Sp(()=>N(q9))):q9}))})),s=AM(e=>KSe({baseURL:r.baseURL,trustProxy:r.trustProxy})(I(function*(){let t=yield*sM,n=new URL(t.url,r.baseURL).pathname,a=n.replace(/^\/api\/auth/,``),o=n===`/mcp`,s=t.headers.origin,c=s!==void 0&&i.includes(s),l=JSe.has(a),u;if(o&&s!==void 0&&!c)u=K9({error:`Invalid origin`},403);else if(o&&t.method===`OPTIONS`){let e=t.headers[`access-control-request-method`],n=(t.headers[`access-control-request-headers`]??``).split(`,`).map(e=>e.trim().toLowerCase()).filter(Boolean);u=c&&e===`POST`&&n.every(e=>QSe.has(e))?sA({status:204}):K9({error:`MCP preflight rejected`},403)}else u=l&&t.method===`OPTIONS`?sA({status:204}):yield*e;l&&(u=u.pipe(yA({"access-control-allow-origin":`*`,"access-control-allow-methods":`GET, POST, OPTIONS`,"access-control-allow-headers":`Authorization, Content-Type, DPoP`,"access-control-expose-headers":`WWW-Authenticate, DPoP-Nonce`}),vA(`access-control-allow-credentials`))),o&&(u=u.pipe(_A(`vary`,u.headers.vary?`${u.headers.vary}, Origin`:`Origin`),vA(`access-control-allow-credentials`)),c&&s!==void 0&&(u=u.pipe(yA({"access-control-allow-origin":s,"access-control-expose-headers":`WWW-Authenticate, Mcp-Protocol-Version`})),t.method===`OPTIONS`&&u.status>=200&&u.status<300&&(u=u.pipe(yA({"access-control-allow-methods":`POST`,"access-control-allow-headers":J9.join(`, `)})))));let d=t.method!==`GET`||u.status!==200?`no-store`:n.startsWith(`/assets/`)?`public, max-age=31536000, immutable`:YSe.has(a)?`public, max-age=300`:`no-store`;return u=u.pipe(yA({"cache-control":d,"referrer-policy":`no-referrer`,"x-content-type-options":`nosniff`,"x-frame-options":`DENY`,"content-security-policy":`default-src 'self'; script-src 'self'; style-src 'self'; img-src 'self' data:; connect-src 'self'; frame-ancestors 'none'; base-uri 'none'; form-action 'self'`})),r.baseURL.startsWith(`https:`)&&(u=u.pipe(_A(`strict-transport-security`,`max-age=31536000`))),u})),{global:!0}),c=AM(e=>om(e));return Af(zSe(i),r.cookieDomain===void 0?Sf:VSe(r.cookieDomain),wM(`GET`,`/healthz`,t.sql`SELECT 1`.pipe(bp(K9({status:`ok`})),Sp(BQ))),wM(`*`,`/api/auth/*`,a),wM(`*`,`/.well-known/*`,a),o).pipe(Mf(c.layer),Mf(s),Mf(eue))})),eCe=V(`Http.nodeHandler`)(function*(e){let t=yield*kce($Se(e));return yield*Qle(t,{scope:yield*qp})}),Y9=`credentials.json`,X9=U({email:H,password:H,secret:H,clientId:Bx(H),clientSecret:Bx(H)}),tCe=Ax(LS(X9)),nCe=Ix(X9),Z9=(e,t)=>R(tE,n=>n.writeFileString($e(e,Y9),`${JSON.stringify(nCe(t),null,2)}\n`,{mode:384})),rCe=V(`Dev.identity`)(function*(e,t){let n={email:`owner@example.internal`,password:Xe(24).toString(`base64url`),secret:Xe(32).toString(`hex`)};if(!t)return n;let r=yield*tE,i=$e(e,Y9);return(yield*r.exists(i))?yield*tCe(yield*r.readFileString(i)):(yield*Z9(e,n),n)}),Q9=e=>Error(`Disposable issuer provisioning failed`,{cause:e}),$9=V(`Dev.ownerSession`)(function*(e,t,n,r){if(t===void 0)return yield*L(/* @__PURE__ */ Error(`A forward-auth session needs a cookieDomain; the issuer serves none`));let i=yield*sk,a=yield*i.execute(OO(`${e}/api/auth/sign-in/email`,{headers:{origin:e}}).pipe(zO(n)));if(yield*a.text,a.status!==200)return yield*L(/* @__PURE__ */ Error(`Owner sign-in failed with HTTP ${a.status}`));let o=new URL(`/`,r).href,s=yield*i.get(`${e}/forward-auth/continue?rd=${encodeURIComponent(o)}`,{headers:{cookie:lg(a.cookies)}});yield*s.text;let c=og(a.cookies,s.cookies);return{cookie:lg(c),cookies:Object.entries(ug(c)).map(([e,t])=>({name:e,value:t}))}}),iCe=Af(DN,jN,bf(AN,{redirect:`manual`})),aCe=B(function*(e){let t=yield*tE,n=nt(new URL(`./web/`,import.meta.url));if(!(yield*t.exists($e(n,`index.html`))))return yield*L(/* @__PURE__ */ Error(`The @gjermundgaraba/clankerauth-dev installation is missing its bundled dashboard assets`));let r=e.dataDir,i=r===void 0?yield*t.makeTempDirectoryScoped({prefix:`clankerauth-disposable-`}):yield*bp(t.makeDirectory(et(r),{recursive:!0,mode:448}),et(r)),a=(e,t)=>{t.writeHead(503).end()},o=HSe((t,n)=>{try{e.onRequest?.({method:t.method??`GET`,url:new URL(t.url??`/`,`http://127.0.0.1:${t.socket.localPort}`)}),a(t,n)}catch{n.headersSent?n.destroy():n.writeHead(500).end(`Request failed`)}}),s=cp(e=>{o.close(()=>e(F)),o.closeAllConnections()});yield*Yp(cp(t=>{let n=e=>t(L(e));o.once(`error`,n),o.listen(e.port??0,`127.0.0.1`,()=>{o.off(`error`,n),t(F)})}),()=>s);let c=o.address();if(!(c instanceof Object))return yield*L(/* @__PURE__ */ Error(`Disposable issuer failed to bind a TCP port`));let{port:l}=c,u=e.cookieDomain===void 0?`http://127.0.0.1:${l}`:`http://clankerauth.${e.cookieDomain}:${l}`,d=yield*rCe(i,r!==void 0),f=yield*U9({baseURL:u,secret:vg(d.secret),database:$e(i,`issuer.sqlite`),host:`127.0.0.1`,port:l,mcpAllowedOrigins:[],trustProxy:!1,allowInsecureHttp:e.cookieDomain!==void 0,cookieDomain:e.cookieDomain}),p=yield*vf(e3.layer(f,{cimdTransport:e.cimdTransport})),m=sa(p,e3),h=yield*ef(yield*qp);a=yield*eCe(n).pipe(Vp(p),Kp(Jd,h)),yield*Xp(()=>s);let g={email:d.email,password:d.password},_=yield*Vp(n3,p),v=yield*Vp(P9,p),y=e=>om(Jp(I(function*(){let t=yield*m.owner();if(t===void 0)return yield*fp(/* @__PURE__ */ Error(`Owner setup failed`));let n=yield*R9(m,t);return yield*e(t).pipe(Kp(hQ,{userId:t,email:g.email,writable:!0,providerHeaders:N(n)}))}))).pipe(Dp(Q9));(yield*m.owner())||(yield*t3(m,g).pipe(Dp(Q9))),yield*y(()=>np(e.resources,e=>R(m.resources.get(e.identifier),t=>t?F:xp(_.createResource(e)))));let b=yield*y(()=>I(function*(){if(d.clientId!==void 0&&d.clientSecret!==void 0){let{clients:e}=yield*_.list();if(e.some(e=>e.client_id===d.clientId))return{client_id:d.clientId,client_secret:d.clientSecret}}return yield*_.create({client_name:e.client.name,redirect_uris:[e.client.redirect],resources:e.client.resources,token_endpoint_auth_method:`client_secret_basic`,application_type:`native`})})),x=b.client_secret;if(x===void 0)return yield*L(/* @__PURE__ */ Error(`Disposable issuer did not return client credentials`));r!==void 0&&(yield*Z9(i,{...d,clientId:b.client_id,clientSecret:x}));let S=e.cookieDomain===void 0?void 0:u;return{details:{issuer:`${u}/api/auth`,clientId:b.client_id,clientSecret:x,owner:g,url:u,port:l,directory:i},apiKey:e=>y(()=>z(v.create({name:e.name??`development`,permissions:e.permissions,expiresAt:null}),e=>e.key)),ownerSession:e=>$9(u,S,g,e),ownerToken:V(`Dev.ownerToken`)(function*(e){let{cookie:t}=yield*$9(u,S,g,e.appOrigin),n=yield*sk,r=new URL(e.appOrigin),i=new URL(`/forward-auth`,u);i.searchParams.set(`resource`,e.resource);let a=yield*n.get(i,{headers:{cookie:t,"x-forwarded-proto":r.protocol.slice(0,-1),"x-forwarded-host":r.host,"x-forwarded-uri":`/`}});yield*a.text;let o=a.headers.authorization;return a.status!==204||o===void 0?yield*L(/* @__PURE__ */ Error(`Forward auth issued no token (HTTP ${a.status})`)):o.replace(/^Bearer /iu,``)})}});async function oCe(e){let t=Xd(),n=e=>ym(e.pipe(Kp(Jd,t),Vp(iCe)),{onFiberStart:hC(t)}),r=xm(tm(nf(t,Ed)));try{let t=await n(aCe(e));return{...t.details,apiKey:e=>n(t.apiKey(e)),ownerSession:e=>n(t.ownerSession(e)),ownerToken:e=>n(t.ownerToken(e)),close:()=>ym(r)}}catch(e){throw await ym(r),e}}export{oCe as startDisposableIssuer,Pfe as t};
|
|
Binary file
|