@gjermundgaraba/clankerauth-dev 0.23.0 → 0.23.1

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/index.mjs CHANGED
@@ -534,6 +534,6 @@ Most of the features of Better Auth will not work correctly.`);let l=t.secrets??
534
534
  `,a=(yield*vye(n)).map(e=>({client_id:e.clientId,onboarding:e.clientDiscoveryId===null?s3(e)?`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})),o=yield*Tf({resources:i.list(),clientAccess:i.access(),connections:c()});return{clients:a,resources:o.resources,clientAccess:o.clientAccess,connections:o.connections,email:t,issuer:`${r}/api/auth`}}),create:Wp(`Clients.create`)(function*(e){let{providerHeaders:t}=yield*LB,r=yield*i.scopesFor(e.resources),o=yield*t,s=yield*H4(()=>n.api.adminCreateOAuthClient({headers:o,body:{client_name:e.client_name,redirect_uris:[...e.redirect_uris],token_endpoint_auth_method:e.token_endpoint_auth_method,application_type:e.application_type,grant_types:[`authorization_code`,`refresh_token`],scope:r.join(` `),skip_consent:!0}}),{refused:B4});return yield*a.link(s.client_id,e.resources).pipe($f(()=>H4(()=>n.api.deleteOAuthClient({headers:o,body:{client_id:s.client_id}})))),s}),update:Wp(`Clients.update`)(function*(t){yield*c3(t.client_id,e);let{providerHeaders:r}=yield*LB,i=yield*r;return yield*H4(()=>n.api.updateOAuthClient({headers:i,body:{client_id:t.client_id,update:{client_name:t.client_name,redirect_uris:[...t.redirect_uris],application_type:t.application_type}}}),{refused:B4,missing:()=>kB.of(t.client_id)})}),rotate:Wp(`Clients.rotate`)(function*(t){yield*c3(t.client_id,e);let{providerHeaders:r}=yield*LB,i=yield*r;return yield*H4(()=>n.api.rotateClientSecret({headers:i,body:t}),{refused:B4,missing:()=>kB.of(t.client_id)})}),revoke:({client_id:e,resource:n})=>t(t=>s(e,n,t)),delete:({client_id:e})=>t(t=>z(function*(){return yield*o(e,t),yield*R4(t,e,null),yield*t`DELETE FROM oauthClient WHERE clientId = ${e}`,{deleted:!0}})),block:({client_id:e,blocked:n})=>t(t=>z(function*(){return n?yield*s(e,void 0,t):yield*o(e,t),yield*t`UPDATE oauthClient SET disabled = ${+!!n}, updatedAt = ${yield*af} WHERE clientId = ${e}`,{blocked:n}}))}}))};const yye=[`/`,`/resources`,`/keys`,`/login`,`/setup`,`/consent`],bye=({readOnly:e,mcp:t})=>({readOnlyHint:e,destructiveHint:t.destructiveHint??!e,idempotentHint:t.idempotentHint??!1,openWorldHint:t.openWorldHint??!0}),p3=`~effect/ai/AiError/Reason`;var xye=class extends (/*#__PURE__*/ kS(`effect/ai/AiError/ToolParameterValidationError`)({_tag:/*#__PURE__*/ Bx(`ToolParameterValidationError`),toolName:W,description:W})){[p3]=p3;get isRetryable(){return!0}get message(){return`Invalid parameters for tool '${this.toolName}': ${this.description}`}};const m3=`~effect/rpc/RpcMiddleware`,Sye=()=>(e,t)=>{let n=Pn(),r;n!==0&&(Fn(2),r=new globalThis.Error,Fn(n));function i(){}let a=i;return Object.setPrototypeOf(i,Object.getPrototypeOf(F(e))),i.key=e,Object.defineProperty(i,"stack",{get(){return r?.stack}}),a[m3]=m3,a.error=t?.error??Sx,a.requiredForClient=t?.requiredForClient??!1,i},h3=(e,t)=>{let n=L(t);return _x(e).pipe(goe({decode:w_(n),encode:y_()}),zx(n))},Z=e=>_x(e).pipe(Rx(yx(vx(e)),{decode:y_(),encode:S_(xi(_i))})),Cye=/*#__PURE__*/ q([W,qx]),g3=/*#__PURE__*/ q([W,qx]);var _3=class extends (/*#__PURE__*/ Hx()(/*#__PURE__*/ G({_meta:/*#__PURE__*/ Z(/*#__PURE__*/ jx(/*#__PURE__*/ G({progressToken:/*#__PURE__*/ Z(g3)}),[FS]))}))){},v3=class extends (/*#__PURE__*/ Hx()(/*#__PURE__*/ G({_meta:/*#__PURE__*/ Z(FS)}))){},y3=class extends (/*#__PURE__*/ Hx()(/*#__PURE__*/ G({_meta:/*#__PURE__*/ Z(FS)}))){};const wye=W;({..._3.fields});var b3=class extends (/*#__PURE__*/ Hx()(/*#__PURE__*/ G({...v3.fields,nextCursor:/*#__PURE__*/ Z(wye)}))){};const x3=/*#__PURE__*/ Fx([`user`,`assistant`]);var S3=class extends (/*#__PURE__*/ Hx()(/*#__PURE__*/ G({audience:/*#__PURE__*/ Z(/*#__PURE__*/ K(x3)),priority:/*#__PURE__*/ Z(/*#__PURE__*/ qx.check(/*#__PURE__*/ Yx({minimum:0,maximum:1}))),lastModified:/*#__PURE__*/ Z(W)}))){},C3=class extends (/*#__PURE__*/ OS(`@effect/ai/McpSchema/Icon`)({src:W,mimeType:/*#__PURE__*/ Z(W),sizes:/*#__PURE__*/ Z(/*#__PURE__*/ K(W)),theme:/*#__PURE__*/ Z(/*#__PURE__*/ Fx([`light`,`dark`]))})){},w3=class extends (/*#__PURE__*/ Hx()(/*#__PURE__*/ G({name:W,title:/*#__PURE__*/ Z(W),version:W,icons:/*#__PURE__*/ Z(/*#__PURE__*/ K(C3)),description:/*#__PURE__*/ Z(W),websiteUrl:/*#__PURE__*/ Z(W)}))){},T3=class extends (/*#__PURE__*/ OS(`@effect/ai/McpSchema/ClientCapabilities`)({experimental:/*#__PURE__*/ Z(/*#__PURE__*/ Ax(W,/*#__PURE__*/ G({}))),extensions:/*#__PURE__*/ Z(/*#__PURE__*/ Ax(/*#__PURE__*/ xx([W,`/`,W]),PS)),roots:/*#__PURE__*/ Z(/*#__PURE__*/ G({listChanged:/*#__PURE__*/ Z(Ex)})),sampling:/*#__PURE__*/ Z(/*#__PURE__*/ G({context:/*#__PURE__*/ Z(/*#__PURE__*/ G({})),tools:/*#__PURE__*/ Z(/*#__PURE__*/ G({}))})),elicitation:/*#__PURE__*/ Z(/*#__PURE__*/ G({form:/*#__PURE__*/ Z(/*#__PURE__*/ G({})),url:/*#__PURE__*/ Z(/*#__PURE__*/ G({}))}))})){},Tye=class extends (/*#__PURE__*/ Hx()(/*#__PURE__*/ G({experimental:/*#__PURE__*/ Z(/*#__PURE__*/ Ax(W,/*#__PURE__*/ G({}))),extensions:/*#__PURE__*/ Z(/*#__PURE__*/ Ax(/*#__PURE__*/ xx([W,`/`,W]),PS)),logging:/*#__PURE__*/ Z(/*#__PURE__*/ G({})),completions:/*#__PURE__*/ Z(/*#__PURE__*/ G({})),prompts:/*#__PURE__*/ Z(/*#__PURE__*/ G({listChanged:/*#__PURE__*/ Z(Ex)})),resources:/*#__PURE__*/ Z(/*#__PURE__*/ G({subscribe:/*#__PURE__*/ Z(Ex),listChanged:/*#__PURE__*/ Z(Ex)})),tools:/*#__PURE__*/ Z(/*#__PURE__*/ G({listChanged:/*#__PURE__*/ Z(Ex)}))}))){},E3=class extends (/*#__PURE__*/ OS(`@effect/ai/McpSchema/McpErrorBase`)({code:Xx,message:W,data:/*#__PURE__*/ Z(Cx)})){};const D3=-32601,O3=-32602,k3=-32603,A3=-32020;var j3=class extends (/*#__PURE__*/ kS(`effect/ai/McpSchema/ParseError`)({...E3.fields,_tag:/*#__PURE__*/ Bx(`ParseError`),code:/*#__PURE__*/ Bx(-32700)})){},M3=class extends (/*#__PURE__*/ kS(`effect/ai/McpSchema/InvalidRequest`)({...E3.fields,_tag:/*#__PURE__*/ Bx(`InvalidRequest`),code:/*#__PURE__*/ Bx(-32600)})){},N3=class extends (/*#__PURE__*/ kS(`effect/ai/McpSchema/MethodNotFound`)({...E3.fields,_tag:/*#__PURE__*/ Bx(`MethodNotFound`),code:/*#__PURE__*/ Bx(D3)})){},P3=class extends (/*#__PURE__*/ kS(`effect/ai/McpSchema/InvalidParams`)({...E3.fields,_tag:/*#__PURE__*/ Bx(`InvalidParams`),code:/*#__PURE__*/ Bx(O3)})){},F3=class e extends (/*#__PURE__*/ kS(`effect/ai/McpSchema/InternalError`)({...E3.fields,_tag:/*#__PURE__*/ Bx(`InternalError`),code:/*#__PURE__*/ Bx(k3)})){static notImplemented=/*#__PURE__*/ new e({message:`Not implemented`})};const I3=/*#__PURE__*/ q([j3,M3,N3,P3,F3,E3]);var Eye=class extends (/*#__PURE__*/ J(`ping`,{success:/*#__PURE__*/ G({}),error:I3,payload:/*#__PURE__*/ Lx(_3)})){},Dye=class extends (/*#__PURE__*/ Hx()(/*#__PURE__*/ G({...v3.fields,protocolVersion:W,capabilities:Tye,serverInfo:w3,instructions:/*#__PURE__*/ Z(W)}))){},Oye=class extends (/*#__PURE__*/ J(`initialize`,{success:Dye,error:I3,payload:{..._3.fields,protocolVersion:W,capabilities:T3,clientInfo:w3}})){},L3=class extends (/*#__PURE__*/ J(`notifications/cancelled`,{payload:{...y3.fields,requestId:Cye,reason:/*#__PURE__*/ Z(W)}})){},R3=class extends (/*#__PURE__*/ J(`notifications/progress`,{payload:{...y3.fields,progressToken:g3,progress:qx,total:/*#__PURE__*/ Z(qx),message:/*#__PURE__*/ Z(W)}})){},kye=class extends (/*#__PURE__*/ OS(`@effect/ai/McpSchema/Resource`)({uri:W,name:W,title:/*#__PURE__*/ Z(W),description:/*#__PURE__*/ Z(W),mimeType:/*#__PURE__*/ Z(W),annotations:/*#__PURE__*/ Z(S3),icons:/*#__PURE__*/ Z(/*#__PURE__*/ K(C3)),size:/*#__PURE__*/ Z(Xx),_meta:/*#__PURE__*/ Z(FS)})){},z3=class extends (/*#__PURE__*/ Hx()(/*#__PURE__*/ G({uri:W,mimeType:/*#__PURE__*/ Z(W),_meta:/*#__PURE__*/ Z(FS)}))){},Aye=class extends (/*#__PURE__*/ Hx()(/*#__PURE__*/ G({...z3.fields,text:W}))){},jye=class extends (/*#__PURE__*/ Hx()(/*#__PURE__*/ G({...z3.fields,blob:pS}))){};({...b3.fields}),{...b3.fields},{...v3.fields},{..._3.fields};var B3=class extends (/*#__PURE__*/ J(`notifications/resources/list_changed`,{payload:/*#__PURE__*/ Lx(y3)})){};({..._3.fields}),{..._3.fields};var V3=class extends (/*#__PURE__*/ J(`notifications/resources/updated`,{payload:{...y3.fields,uri:W}})){},Mye=class extends (/*#__PURE__*/ Hx()(/*#__PURE__*/ G({name:W,title:/*#__PURE__*/ Z(W),description:/*#__PURE__*/ Z(W),required:/*#__PURE__*/ Z(Ex)}))){},Nye=class extends (/*#__PURE__*/ OS(`@effect/ai/McpSchema/Prompt`)({name:W,title:/*#__PURE__*/ Z(W),description:/*#__PURE__*/ Z(W),arguments:/*#__PURE__*/ Z(/*#__PURE__*/ K(Mye)),icons:/*#__PURE__*/ Z(/*#__PURE__*/ K(C3)),_meta:/*#__PURE__*/ Z(FS)})){},H3=class extends (/*#__PURE__*/ Hx()(/*#__PURE__*/ G({type:/*#__PURE__*/ Bx(`text`),text:W,annotations:/*#__PURE__*/ Z(S3),_meta:/*#__PURE__*/ Z(FS)}))){},U3=class extends (/*#__PURE__*/ Hx()(/*#__PURE__*/ G({type:/*#__PURE__*/ Bx(`image`),data:pS,mimeType:W,annotations:/*#__PURE__*/ Z(S3),_meta:/*#__PURE__*/ Z(FS)}))){},W3=class extends (/*#__PURE__*/ Hx()(/*#__PURE__*/ G({type:/*#__PURE__*/ Bx(`audio`),data:pS,mimeType:W,annotations:/*#__PURE__*/ Z(S3),_meta:/*#__PURE__*/ Z(FS)}))){};const G3=/*#__PURE__*/ q([H3,U3,W3,class extends (/*#__PURE__*/ Hx()(/*#__PURE__*/ G({type:/*#__PURE__*/ Bx(`resource`),resource:/*#__PURE__*/ q([Aye,jye]),annotations:/*#__PURE__*/ Z(S3),_meta:/*#__PURE__*/ Z(FS)}))){},class extends (/*#__PURE__*/ Hx()(/*#__PURE__*/ G({...kye.fields,type:/*#__PURE__*/ Bx(`resource_link`)}))){}]);({...b3.fields}),{...v3.fields},{..._3.fields};var K3=class extends (/*#__PURE__*/ J(`notifications/prompts/list_changed`,{payload:/*#__PURE__*/ Lx(y3)})){},Pye=class extends (/*#__PURE__*/ Hx()(/*#__PURE__*/ G({title:/*#__PURE__*/ Z(W),readOnlyHint:/*#__PURE__*/ h3(Ex,mt),destructiveHint:/*#__PURE__*/ h3(Ex,pt),idempotentHint:/*#__PURE__*/ h3(Ex,mt),openWorldHint:/*#__PURE__*/ h3(Ex,pt)}))){};const q3=/*#__PURE__*/ jx(/*#__PURE__*/ G({type:/*#__PURE__*/ bx(`object`),properties:/*#__PURE__*/ Z(/*#__PURE__*/ Ax(W,FS)),required:/*#__PURE__*/ Z(/*#__PURE__*/ K(W))}),[FS]),J3=FS;var Y3=class extends (/*#__PURE__*/ OS(`@effect/ai/McpSchema/Tool`)({name:W,title:/*#__PURE__*/ Z(W),description:/*#__PURE__*/ Z(W),inputSchema:q3,outputSchema:/*#__PURE__*/ Z(J3),annotations:/*#__PURE__*/ Z(Pye),icons:/*#__PURE__*/ Z(/*#__PURE__*/ K(C3)),_meta:/*#__PURE__*/ Z(FS)})){};({...b3.fields});var X3=class extends (/*#__PURE__*/ OS(`@effect/ai/McpSchema/CallToolResult`)({...v3.fields,content:/*#__PURE__*/ K(G3),structuredContent:/*#__PURE__*/ Z(PS),isError:/*#__PURE__*/ Z(Ex)})){};({..._3.fields});var Z3=class extends (/*#__PURE__*/ J(`notifications/tools/list_changed`,{payload:/*#__PURE__*/ Lx(y3)})){};const Q3=/*#__PURE__*/ Fx([`debug`,`info`,`notice`,`warning`,`error`,`critical`,`alert`,`emergency`]);({..._3.fields});var $3=class extends (/*#__PURE__*/ J(`notifications/message`,{payload:/*#__PURE__*/ G({...y3.fields,level:Q3,logger:/*#__PURE__*/ Z(W),data:Cx})})){};const e6=/*#__PURE__*/ q([H3,U3,W3,class extends (/*#__PURE__*/ OS(`@effect/ai/McpSchema/ToolUseContent`)({type:/*#__PURE__*/ Bx(`tool_use`),id:W,name:W,input:/*#__PURE__*/ Ax(W,wx),_meta:/*#__PURE__*/ Z(FS)})){},class extends (/*#__PURE__*/ OS(`@effect/ai/McpSchema/ToolResultContent`)({type:/*#__PURE__*/ Bx(`tool_result`),toolUseId:W,content:/*#__PURE__*/ K(G3),structuredContent:/*#__PURE__*/ Z(PS),isError:/*#__PURE__*/ Z(Ex),_meta:/*#__PURE__*/ Z(FS)})){}]);var Fye=class extends (/*#__PURE__*/ Hx()(/*#__PURE__*/ G({role:x3,content:/*#__PURE__*/ q([e6,/*#__PURE__*/ K(e6)]),_meta:/*#__PURE__*/ Z(FS)}))){},Iye=class extends (/*#__PURE__*/ OS(`@effect/ai/McpSchema/ToolChoice`)({mode:/*#__PURE__*/ Z(/*#__PURE__*/ Fx([`auto`,`required`,`none`]))})){},Lye=class extends (/*#__PURE__*/ Hx()(/*#__PURE__*/ G({name:/*#__PURE__*/ Z(W)}))){},Rye=class extends (/*#__PURE__*/ OS(`@effect/ai/McpSchema/ModelPreferences`)({hints:/*#__PURE__*/ Z(/*#__PURE__*/ K(Lye)),costPriority:/*#__PURE__*/ Z(/*#__PURE__*/ qx.check(/*#__PURE__*/ Yx({minimum:0,maximum:1}))),speedPriority:/*#__PURE__*/ Z(/*#__PURE__*/ qx.check(/*#__PURE__*/ Yx({minimum:0,maximum:1}))),intelligencePriority:/*#__PURE__*/ Z(/*#__PURE__*/ qx.check(/*#__PURE__*/ Yx({minimum:0,maximum:1})))})){},zye=class extends (/*#__PURE__*/ OS(`@effect/ai/McpSchema/CreateMessageResult`)({role:x3,content:/*#__PURE__*/ q([e6,/*#__PURE__*/ K(e6)]),_meta:/*#__PURE__*/ Z(FS),model:W,stopReason:/*#__PURE__*/ Z(W)})){},t6=class extends (/*#__PURE__*/ J(`sampling/createMessage`,{success:zye,error:I3,payload:{messages:/*#__PURE__*/ K(Fye),modelPreferences:/*#__PURE__*/ Z(/*#__PURE__*/ G(Rye.fields)),systemPrompt:/*#__PURE__*/ Z(W),includeContext:/*#__PURE__*/ Z(/*#__PURE__*/ Fx([`none`,`thisServer`,`allServers`])),temperature:/*#__PURE__*/ Z(qx),maxTokens:Xx,stopSequences:/*#__PURE__*/ Z(/*#__PURE__*/ K(W)),metadata:/*#__PURE__*/ Z(/*#__PURE__*/ Ax(W,wx)),tools:/*#__PURE__*/ Z(/*#__PURE__*/ K(/*#__PURE__*/ G(Y3.fields))),toolChoice:/*#__PURE__*/ Z(/*#__PURE__*/ G(Iye.fields))}})){};({...v3.fields});var Bye=class extends (/*#__PURE__*/ OS(`@effect/ai/McpSchema/Root`)({uri:W,name:/*#__PURE__*/ Z(W),_meta:/*#__PURE__*/ Z(FS)})){},n6=class extends (/*#__PURE__*/ OS(`@effect/ai/McpSchema/ListRootsResult`)({roots:/*#__PURE__*/ K(Bye)})){},r6=class extends (/*#__PURE__*/ J(`roots/list`,{success:n6,error:I3,payload:/*#__PURE__*/ Lx(_3)})){};const Vye=/*#__PURE__*/ G({$schema:/*#__PURE__*/ Z(W),type:/*#__PURE__*/ Bx(`object`),properties:/*#__PURE__*/ Ax(W,/* @__PURE__ */ q([/* @__PURE__ */ q([class extends (/*#__PURE__*/ OS(`@effect/ai/McpSchema/LegacyTitledEnum`)({type:/*#__PURE__*/ Bx(`string`),title:/*#__PURE__*/ Z(W),description:/*#__PURE__*/ Z(W),enum:/*#__PURE__*/ K(W),enumNames:/*#__PURE__*/ Z(/*#__PURE__*/ K(W)),default:/*#__PURE__*/ Z(W)})){},/* @__PURE__ */ q([class extends (/*#__PURE__*/ OS(`@effect/ai/McpSchema/UntitledSingleSelectEnum`)({type:/*#__PURE__*/ Bx(`string`),title:/*#__PURE__*/ Z(W),description:/*#__PURE__*/ Z(W),enum:/*#__PURE__*/ K(W),default:/*#__PURE__*/ Z(W)})){},class extends (/*#__PURE__*/ OS(`@effect/ai/McpSchema/TitledSingleSelectEnum`)({type:/*#__PURE__*/ Bx(`string`),title:/*#__PURE__*/ Z(W),description:/*#__PURE__*/ Z(W),oneOf:/*#__PURE__*/ K(/*#__PURE__*/ G({const:W,title:W})),default:/*#__PURE__*/ Z(W)})){}]),/* @__PURE__ */ q([class extends (/*#__PURE__*/ OS(`@effect/ai/McpSchema/UntitledMultiSelectEnum`)({type:/*#__PURE__*/ Bx(`array`),title:/*#__PURE__*/ Z(W),description:/*#__PURE__*/ Z(W),minItems:/*#__PURE__*/ Z(Xx),maxItems:/*#__PURE__*/ Z(Xx),items:/*#__PURE__*/ G({type:/*#__PURE__*/ Bx(`string`),enum:/*#__PURE__*/ K(W)}),default:/*#__PURE__*/ Z(/*#__PURE__*/ K(W))})){},class extends (/*#__PURE__*/ OS(`@effect/ai/McpSchema/TitledMultiSelectEnum`)({type:/*#__PURE__*/ Bx(`array`),title:/*#__PURE__*/ Z(W),description:/*#__PURE__*/ Z(W),minItems:/*#__PURE__*/ Z(Xx),maxItems:/*#__PURE__*/ Z(Xx),items:/*#__PURE__*/ G({anyOf:/*#__PURE__*/ K(/*#__PURE__*/ G({const:W,title:W}))}),default:/*#__PURE__*/ Z(/*#__PURE__*/ K(W))})){}])]),class extends (/*#__PURE__*/ OS(`@effect/ai/McpSchema/ElicitationString`)({type:/*#__PURE__*/ Bx(`string`),title:/*#__PURE__*/ Z(W),description:/*#__PURE__*/ Z(W),minLength:/*#__PURE__*/ Z(Xx),maxLength:/*#__PURE__*/ Z(Xx),format:/*#__PURE__*/ Z(/*#__PURE__*/ Fx([`email`,`uri`,`date`,`date-time`])),default:/*#__PURE__*/ Z(W)})){},class extends (/*#__PURE__*/ OS(`@effect/ai/McpSchema/ElicitationNumber`)({type:/*#__PURE__*/ Fx([`number`,`integer`]),title:/*#__PURE__*/ Z(W),description:/*#__PURE__*/ Z(W),minimum:/*#__PURE__*/ Z(qx),maximum:/*#__PURE__*/ Z(qx),default:/*#__PURE__*/ Z(qx)})){},class extends (/*#__PURE__*/ OS(`@effect/ai/McpSchema/ElicitationBoolean`)({type:/*#__PURE__*/ Bx(`boolean`),title:/*#__PURE__*/ Z(W),description:/*#__PURE__*/ Z(W),default:/*#__PURE__*/ Z(Ex)})){}])),required:/*#__PURE__*/ Z(/*#__PURE__*/ K(W))}),Hye=/*#__PURE__*/ q([class extends (/*#__PURE__*/ OS(`@effect/ai/McpSchema/ElicitRequestFormParams`)({..._3.fields,mode:/*#__PURE__*/ Z(/*#__PURE__*/ bx(`form`)),message:W,requestedSchema:Vye})){},class extends (/*#__PURE__*/ OS(`@effect/ai/McpSchema/ElicitRequestURLParams`)({..._3.fields,mode:/*#__PURE__*/ bx(`url`),message:W,elicitationId:W,url:W})){}]),Uye=/*#__PURE__*/ q([class extends (/*#__PURE__*/ OS(`@effect/ai/McpSchema/ElicitAcceptResult`)({...v3.fields,action:/*#__PURE__*/ bx(`accept`),content:/*#__PURE__*/ Z(/*#__PURE__*/ Ax(W,/*#__PURE__*/ q([W,qx,Ex,/*#__PURE__*/ K(W)])))})){},class extends (/*#__PURE__*/ OS(`@effect/ai/McpSchema/ElicitDeclineResult`)({...v3.fields,action:/*#__PURE__*/ Fx([`cancel`,`decline`])})){}]);var i6=class extends (/*#__PURE__*/ J(`elicitation/create`,{success:Uye,error:I3,payload:Hye})){},Wye=class extends (/*#__PURE__*/ J(`notifications/elicitation/complete`,{payload:{elicitationId:W}})){};i6.payloadSchema;var a6=class extends (/*#__PURE__*/ go(`McpReverseOperationUnsupported`)){},Gye=class extends (/*#__PURE__*/ go(`McpReverseOperationError`)){},o6=class extends (/*#__PURE__*/ F()(`effect/ai/McpSchema/McpRequestContext`)){},s6=class extends (/*#__PURE__*/ F()(`effect/ai/McpSchema/McpServerClient`)){},c6=class extends (/*#__PURE__*/ Sye()(`effect/ai/McpSchema/McpServerClientMiddleware`)){},Kye=class extends (/*#__PURE__*/ aN(L3,R3,$3,V3,B3,Z3,K3,Wye)){},l6=class extends (/*#__PURE__*/ F()(`effect/ai/McpSchema/EnabledWhen`)){};const u6={Complete:e=>({_tag:`Complete`,value:e}),InputRequired:e=>({_tag:`InputRequired`,...e})};var qye=class extends (/*#__PURE__*/ go(`ResourceNotFound`)){},Jye=class extends (/*#__PURE__*/ go(`ToolNotFound`)){},Yye=class extends (/*#__PURE__*/ go(`InvalidToolInput`)){},Xye=class extends (/*#__PURE__*/ go(`InvalidToolContinuation`)){},Zye=class extends (/*#__PURE__*/ go(`ToolExecutionError`)){},d6=class extends (/*#__PURE__*/ go(`UnsupportedByProtocol`)){},Qye=class extends (/*#__PURE__*/ go(`PromptNotFound`)){};const f6=/*#__PURE__*/ mo(),p6=/*#__PURE__*/ mo(),$ye=/*#__PURE__*/ L(()=>{let e=/* @__PURE__ */ new Map,t=[],n=[],r=/* @__PURE__ */ new Map,i=/* @__PURE__ */ new Map;return{tools:{register:t=>L(()=>{e.set(t.descriptor.name,t)}),list:t=>L(()=>{let n=[];for(let r of e.values())r.isVisible(t)&&n.push(r.descriptor);return n}),call:(t,n)=>jf(()=>{let r=e.get(t.name);return r===void 0||!r.isVisible(n.protocol)?new Jye({name:t.name}):r.handle(t,n)})},resources:{register:e=>L(()=>{let n=t.findIndex(t=>t.descriptor.uri===e.descriptor.uri);n===-1?t.push(e):t[n]=e}),registerTemplate:e=>L(()=>{let t=n.findIndex(t=>t.descriptor.uriTemplate===e.descriptor.uriTemplate);t===-1?n.push(e):n[t]=e}),list:e=>L(()=>t.filter(t=>t.isVisible(e)).map(e=>e.descriptor)),listTemplates:e=>L(()=>n.filter(t=>t.isVisible(e)).map(e=>e.descriptor)),read:U(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 qye({uri:e})})},prompts:{register:e=>L(()=>{r.set(e.descriptor.name,e)}),list:e=>L(()=>Array.from(r.values()).filter(t=>t.isVisible(e)).map(e=>e.descriptor)),get:U(function*(e,t,n){let i=r.get(e);return i===void 0||!i.isVisible(n.protocol)?yield*new Qye({name:e}):yield*i.get(t,n)})},completions:{register:(e,t)=>L(()=>{i.set(e,t)}),complete:U(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 P3({message:`Unknown completion reference or argument`});let a=yield*r(e,t),o=Da(a.values,100);return{...a,values:o,hasMore:a.hasMore===!0||o.length<a.values.length}})},registrationPresence:L(()=>({tools:e.size>0,resources:t.length>0||n.length>0,prompts:r.size>0}))}}),ebe=/*#__PURE__*/ new TextDecoder(`utf-8`,{fatal:!0,ignoreBOM:!0}),m6={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}},h6=e=>{let t=e.startsWith(`=?base64?`),n=e.endsWith(`?=`);if(!t||!n)return/^[\t\x20-\x7e]*$/.test(e)?e:void 0;let r=Xm(e.slice(9,-2));if(!na(r))try{return ebe.decode(r.success)}catch{return}},g6=e=>({protocolVersion:e.protocolVersion,clientCapabilities:e.clientCapabilities,clientInfo:e.clientInfo,requestMetadata:e.initializePayload._meta}),_6=e=>({clientId:e.clientId,protocol:g6(e),requestContext:o6.of({clientId:e.clientId,protocolVersion:e.protocolVersion,clientCapabilities:e.clientCapabilities,clientInfo:e.clientInfo,requestMetadata:e.requestMetadata}),serverClient:e}),v6=e=>({clientId:e.clientId,protocol:{protocolVersion:e.protocolVersion,clientCapabilities:e.clientCapabilities,clientInfo:e.clientInfo,requestMetadata:e.requestMetadata},requestContext:e}),y6=(e,t)=>t._tag===`Complete`?I(t.value):B(new d6({protocolVersion:e,feature:`Client input`})),b6=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},x6=e=>zt(e)&&(e.type===`tool_use`||e.type===`tool_result`),S6=e=>zt(e)?e.tools!==void 0||e.toolChoice!==void 0?!0:Array.isArray(e.messages)?e.messages.some(e=>{if(!zt(e))return!1;let t=e.content;return Array.isArray(t)?t.some(x6):x6(t)}):!1:!1;var C6=class e extends (/*#__PURE__*/ go(`ProtocolError`)){static fromTool(t){let n=EE(t).pipe(OE(`ToolNotFound`,e=>`Tool '${e.name}' not found`),OE(`UnsupportedByProtocol`,e=>`${e.feature} is not supported by MCP ${e.protocolVersion}`),kE({InvalidToolInput:e=>e.message,InvalidToolContinuation:e=>e.message,ToolExecutionError:e=>e.message}),ME);return new e({code:t._tag===`ToolExecutionError`?k3:O3,message:n})}static fromFeature(t){if(P(t,`_tag`)){if(t._tag===`PromptNotFound`&&P(t,`name`)&&Tt(t.name))return new e({code:O3,message:`Prompt '${t.name}' not found`});if(t._tag===`ResourceNotFound`&&P(t,`uri`)&&Tt(t.uri))return new e({code:-32002,message:`Resource '${t.uri}' not found`})}let n=tbe(t);return ra(n)?new e(n.success):new e({code:k3,message:`MCP feature handler failed`})}};const tbe=/*#__PURE__*/ aoe(/* @__PURE__ */ G({code:qx,message:W,data:/*#__PURE__*/ _x(wx)})),nbe=e=>Vt(e,`McpReverseOperationUnsupported`),w6=e=>t=>nbe(t)?t:new Gye({operation:e,cause:t}),T6=(e,t,n)=>fx(e)(n).pipe(V(cx(t))),rbe=(e,t,n)=>fx(e)(n).pipe(V(cx(t,{onExcessProperty:`error`}))),E6=/*#__PURE__*/ Wp(function*(e,t){return p6.$match(t,{Cancelled:e=>({tag:L3._tag,payload:L3.payloadSchema.make({_meta:e.metadata,requestId:e.requestId,reason:e.reason})}),Progress:t=>({tag:R3._tag,payload:R3.payloadSchema.make({_meta:t.metadata,progressToken:t.progressToken,progress:t.progress,total:t.total,message:e.supportsProgressMessage?t.message:void 0})}),LoggingMessage:e=>({tag:$3._tag,payload:$3.payloadSchema.make({_meta:e.metadata,level:e.level,logger:e.logger,data:e.data})}),ResourceUpdated:e=>({tag:V3._tag,payload:V3.payloadSchema.make({_meta:e.metadata,uri:e.uri})}),ResourcesChanged:e=>({tag:B3._tag,payload:B3.payloadSchema.make({_meta:e.metadata})}),ToolsChanged:e=>({tag:Z3._tag,payload:Z3.payloadSchema.make({_meta:e.metadata})}),PromptsChanged:e=>({tag:K3._tag,payload:K3.payloadSchema.make({_meta:e.metadata})}),ElicitationComplete:()=>void 0})}),D6=e=>{switch(e._tag){case`ToolsChanged`:case`PromptsChanged`:case`ResourcesChanged`:case`ResourceUpdated`:return!0;default:return!1}},O6=e=>{let t=/* @__PURE__ */ new WeakMap,n=e=>{let n=t.get(e);if(n===void 0){let r=jS(e.payloadSchema);n={decode:cx(r),encode:dx(r)},t.set(e,n)}return n},r=(t,n,r)=>e.handlerRpcs===void 0||e.makeHandlers===void 0?R:n===void 0&&e.runtime._tag===`Stateful`?If(`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=>rle(e.serverRequestRpcs,{spanPrefix:`McpServer/Client`}).pipe(H(n=>e.toReverseClient(t,n)));return{...e,payloadCodecs:n,installHandlers:r,makeReverseClient:i}},k6=e=>`@effect/mcp/${encodeURIComponent(e.protocolVersion)}/`,ibe=/*#__PURE__*/ U(function*(e){if(e.length===0)return yield*new Lu(`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 Lu(`Duplicate MCP protocol version: ${e.protocolVersion}`);n.set(e.protocolVersion,e)}let r=t[0].clientRpcs.prefix(k6(t[0]));for(let e=1;e<t.length;e++)r=r.merge(t[e].clientRpcs.prefix(k6(t[e])));return{protocols:t,clientRpcs:r,select:e=>n.get(e)??t[0],protocolForInternalTag:e=>t.find(t=>e.startsWith(k6(t)))??t[0],routeClientRequest:(e,t)=>({...t,tag:`${k6(e)}${t.tag}`}),handlerTarget:(e,t)=>({context:t,install:U(function*(t,n,i){let a=yield*n.toHandlers(i);for(let i of n.requests.values()){let n=r.requests.get(`${k6(t)}${i._tag}`),o=a.mapUnsafe.get(i.key);if(n===void 0||o===void 0)return yield*If(`MCP handler registration invariant failed for ${t.protocolVersion}/${i._tag}`);e.set(n.key,o)}})})}}),A6=e=>({initializePayload:e.initializePayload,negotiatedProfile:e.negotiatedProfile,protocol:e.protocol,resourceSubscriptions:e.supportsResourceSubscriptions?/* @__PURE__ */ new Set:void 0,logLevel:{_tag:`Effect`,level:e.logLevel}}),abe=()=>{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=A6(n);return e.set(t,r),r},registerConnection:(e,n)=>{let r=A6(n);return t.set(e,r),r},resolve:r,resolveSessionId:t=>e.get(t),terminateSession:t=>e.delete(t),setLogLevel:(e,t,n)=>L(()=>{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?B(new C6({code:D3,message:`Resource subscriptions are not supported`})):L(()=>i.add(e)).pipe(Gf)},unsubscribe:(e,t,n)=>{let i=r(t,n)?.resourceSubscriptions;return i===void 0?B(new C6({code:D3,message:`Resource subscriptions are not supported`})):L(()=>i.delete(e)).pipe(Gf)},effectLogLevel:(e,t,n)=>{let i=r(e,t);return i?.logLevel._tag===`Mcp`?m6[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`?m6[n.level].order>=m6[e.level].order:Lse(m6[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)}}},j6=`mcp-session-id`,M6=`mcp-protocol-version`,N6=`io.modelcontextprotocol/protocolVersion`,P6=`io.modelcontextprotocol/clientCapabilities`,F6=-32022,I6=e=>typeof e==`object`&&e?e:void 0,L6=e=>{let t=I6(e);return t!==void 0&&N6 in t?{present:!0,value:t[N6]}:{present:!1,value:void 0}},obe=e=>L6(I6(I6(e)?.params)?._meta).present,sbe=e=>{switch(e){case`tools/call`:case`prompts/get`:return`name`;case`resources/read`:return`uri`;default:return}},R6=e=>({_tag:`Rejected`,status:400,error:{code:A3,message:e}}),z6=/*#__PURE__*/ aN(Eye),B6=e=>({_tag:`Stateful`,transport:e});var V6=class extends (/*#__PURE__*/ F()(`effect/ai/McpRuntime/ServerRuntime`)){};const H6=(e,t)=>e.find(e=>e.runtime._tag===`Stateful`&&e.protocolVersion===t)??e.find(e=>e.runtime._tag===`Stateful`),cbe=/*#__PURE__*/ U(function*(e){let t=e.find(e=>e.runtime._tag===`Stateful`)===void 0?void 0:abe(),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 Lu(`MCP runtime supports at most one stateless protocol`);r=t.runtime,i=t}let a=yield*ibe(e),o=/* @__PURE__ */ new Set,s=e=>({code:F6,message:`Unsupported protocol version '${e}'`,data:{supported:n,requested:e}}),c=(e,r)=>{let i=e[M6],a=e[j6],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 R6(`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[M6],a=I6(n),o=I6(I6(a?.params)?._meta),l=L6(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 R6(`MCP-Protocol-Version header is required`);if(!f&&(o===void 0||typeof l.value!=`string`))return{_tag:`Rejected`,status:400,error:{code:O3,message:`Required request metadata is missing`}};if((!f||l.present)&&l.value!==r)return R6(`MCP-Protocol-Version header does not match request metadata`);if(!f&&I6(o?.[P6])===void 0)return{_tag:`Rejected`,status:400,error:{code:O3,message:`${P6} 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 R6(`Mcp-Method header does not match request method`);let n=sbe(t);if(n!==void 0){let t=I6(a?.params)?.[n],r=e[`mcp-name`];if(typeof t!=`string`||r===void 0||h6(r)!==t)return R6(`Mcp-Name header does not match request parameters`)}return{_tag:`Accepted`,binding:void 0,protocol:i}}return c(e,d)};return V6.of({protocols:a.protocols,clientRpcs:a.clientRpcs,selectProtocol:a.select,protocolForInternalTag:a.protocolForInternalTag,routeClientRequest:a.routeClientRequest,prepareRequest:U(function*(e,n,o){let c=I6(o.payload)?._meta,l=L6(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=H6(a.protocols,e);if(t===void 0)return yield*new C6({code:F6,message:`initialize is not supported by the configured MCP protocols (requested '${e}')`});f=t}else f=o.tag===`ping`?H6(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*If(`MCP stateless runtime invariant failed`);if(u!==void 0&&u!==f.protocolVersion)return yield*new C6(s(u));let p=yield*r.profileFromRequestMetadata(c),m={protocolVersion:p.protocolVersion,clientCapabilities:p.clientCapabilities,clientInfo:p.clientInfo,requestMetadata:p.requestMetadata},h=o6.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?Ik({status:e}):Hk({jsonrpc:`2.0`,id:n,error:t},{status:e})});if(na(r)){let t=e[M6];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 j3({message:`Parse error`}))}let a=r.success;if(Array.isArray(a)){if(a.length===0)return i(400,new M3({message:`Invalid Request`}));let t=l(e,a);return t._tag===`Rejected`||a.some(obe)||a.some(e=>P(e,`method`)&&e.method===`initialize`)||t.binding?.protocol.runtime.transport.jsonRpc.acceptsBatches!==!0?i(400):{_tag:`Accepted`,acknowledge:!a.some(e=>P(e,`method`)&&P(e,`id`)),isSubscription:!1}}let o=P(a,`id`),c=o&&(typeof a.id==`string`||typeof a.id==`number`)?a.id:null,u=P(a,`jsonrpc`)&&a.jsonrpc===`2.0`,d=!o||typeof a.id==`string`||typeof a.id==`number`,f=u&&d&&P(a,`method`)&&typeof a.method==`string`,p=o&&(typeof a.id==`string`||typeof a.id==`number`||a.id===null),m=P(a,`result`),h=P(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 M3({message:`Invalid Request`}),c);let v=P(a,`method`)&&a.method===`initialize`,y=e[j6]!==void 0;return v&&y?i(400,new M3({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 M3({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 N3({message:`Method not found: ${a.method}`}),c):{_tag:`Accepted`,acknowledge:!f||!o,isSubscription:P(a,`method`)&&a.method===`subscriptions/listen`}},effectLogLevel:(e,n,r)=>t?.effectLogLevel(e,n,r)??r,disconnect:e=>t?.disconnect(e),terminateHttpSession:e=>jf(()=>{let n=e[j6];if(n===void 0)return I(Ik({status:400}));let r=c(e,!1);if(r._tag===`Rejected`)return I(Ik({status:r.status}));let i=r.binding;return t.terminateSession(n),Wf(Ef(o,e=>e(i),{discard:!0}),Ik({status:204}))}),onSessionTerminated:e=>yp(L(()=>{o.add(e)}),()=>L(()=>{o.delete(e)})),deliveryClientIds:()=>t?.initializedClientIds()??[],canDeliver:(e,n,r,i)=>t?.canDeliver(e,n,r,i)??!0,installHandlers:U(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*If(`MCP sessionful runtime invariant failed`);yield*o.install(n,z6,z6.of({ping:()=>I({})}));let r={initialize:U(function*(r,i,a){let o=yield*e.core.registrationPresence;return yield*Rf(s=>{let c=Bi(s.context,Ij),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:Oye.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),rM(c,(t,r)=>I(Jk(r,{[j6]:e,[M6]:n.protocolVersion})))}else t.registerConnection(a,u);return I({capabilities:l,instructions:e.serverInfo.instructions,serverInfo:w3.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:U(function*(e,n){e._tag===`Initialized`&&t.markInitialized(n)})};yield*n.installHandlers(e.core,r,o)}return Mi(r)})})}),U6=e=>Ud(V6)(cbe(e)),W6=e=>_x(e).pipe(Rx(yx(vx(e)),{decode:y_(),encode:S_(xi(_i))})),G6=FS,lbe=/*#__PURE__*/ q([W,qx]),K6=/*#__PURE__*/ q([W,qx]),q6=/*#__PURE__*/ Fx([`user`,`assistant`]),J6=/*#__PURE__*/ Fx([`debug`,`info`,`notice`,`warning`,`error`,`critical`,`alert`,`emergency`]),Y6=/*#__PURE__*/ G({_meta:/*#__PURE__*/ W6(/*#__PURE__*/ jx(/*#__PURE__*/ G({progressToken:/*#__PURE__*/ W6(K6)}),[FS]))}),X6=/*#__PURE__*/ G({_meta:/*#__PURE__*/ W6(G6)}),Z6=/*#__PURE__*/ G({_meta:/*#__PURE__*/ W6(G6)}),Q6=/*#__PURE__*/ G({...Y6.fields,cursor:/*#__PURE__*/ W6(W)}),$6=/*#__PURE__*/ G({...Z6.fields,nextCursor:/*#__PURE__*/ W6(W)}),ube=/*#__PURE__*/ G({extensions:/*#__PURE__*/ W6(/*#__PURE__*/ Ax(/*#__PURE__*/ xx([W,`/`,W]),PS)),experimental:/*#__PURE__*/ W6(/*#__PURE__*/ Ax(W,G6)),roots:/*#__PURE__*/ W6(/*#__PURE__*/ G({listChanged:/*#__PURE__*/ W6(Ex)})),sampling:/*#__PURE__*/ W6(G6)}),dbe=/*#__PURE__*/ G({extensions:/*#__PURE__*/ W6(/*#__PURE__*/ Ax(/*#__PURE__*/ xx([W,`/`,W]),PS)),experimental:/*#__PURE__*/ W6(/*#__PURE__*/ Ax(W,G6)),logging:/*#__PURE__*/ W6(G6),prompts:/*#__PURE__*/ W6(/*#__PURE__*/ G({listChanged:/*#__PURE__*/ W6(Ex)})),resources:/*#__PURE__*/ W6(/*#__PURE__*/ G({subscribe:/*#__PURE__*/ W6(Ex),listChanged:/*#__PURE__*/ W6(Ex)})),tools:/*#__PURE__*/ W6(/*#__PURE__*/ G({listChanged:/*#__PURE__*/ W6(Ex)}))}),e8=/*#__PURE__*/ G({code:Xx,message:W,data:/*#__PURE__*/ W6(Cx)}),t8=/*#__PURE__*/ G({audience:/*#__PURE__*/ W6(/*#__PURE__*/ K(q6)),priority:/*#__PURE__*/ W6(/*#__PURE__*/ qx.check(/*#__PURE__*/ Yx({minimum:0,maximum:1})))}),fbe=/*#__PURE__*/ G({uri:W,mimeType:/*#__PURE__*/ W6(W),text:W}),pbe=/*#__PURE__*/ G({uri:W,mimeType:/*#__PURE__*/ W6(W),blob:W}),mbe=/*#__PURE__*/ G({type:/*#__PURE__*/ bx(`text`),text:W,annotations:/*#__PURE__*/ W6(t8)}),hbe=/*#__PURE__*/ G({type:/*#__PURE__*/ bx(`image`),data:W,mimeType:W,annotations:/*#__PURE__*/ W6(t8)}),gbe=/*#__PURE__*/ G({uri:W,name:W,description:/*#__PURE__*/ W6(W),mimeType:/*#__PURE__*/ W6(W),size:/*#__PURE__*/ W6(qx),annotations:/*#__PURE__*/ W6(t8)}),_be=/*#__PURE__*/ G({uriTemplate:W,name:W,description:/*#__PURE__*/ W6(W),mimeType:/*#__PURE__*/ W6(W),annotations:/*#__PURE__*/ W6(t8)}),n8=/*#__PURE__*/ G({name:W,description:/*#__PURE__*/ W6(W),required:/*#__PURE__*/ W6(Ex)}),vbe=/*#__PURE__*/ G({name:W,description:/*#__PURE__*/ W6(W),arguments:/*#__PURE__*/ W6(/*#__PURE__*/ K(n8))}),ybe=/*#__PURE__*/ G({name:W,description:/*#__PURE__*/ W6(W),inputSchema:/* @__PURE__ */ G({type:/*#__PURE__*/ bx(`object`),properties:/*#__PURE__*/ W6(/*#__PURE__*/ Ax(W,G6)),required:/*#__PURE__*/ W6(/*#__PURE__*/ K(W))})}),r8=/*#__PURE__*/ G({hints:/*#__PURE__*/ W6(/*#__PURE__*/ K(/* @__PURE__ */ G({name:/*#__PURE__*/ W6(W)}))),costPriority:/*#__PURE__*/ W6(/*#__PURE__*/ qx.check(/*#__PURE__*/ Yx({minimum:0,maximum:1}))),speedPriority:/*#__PURE__*/ W6(/*#__PURE__*/ qx.check(/*#__PURE__*/ Yx({minimum:0,maximum:1}))),intelligencePriority:/*#__PURE__*/ W6(/*#__PURE__*/ qx.check(/*#__PURE__*/ Yx({minimum:0,maximum:1})))}),bbe=/*#__PURE__*/ G({type:/*#__PURE__*/ bx(`ref/prompt`),name:W}),i8=/*#__PURE__*/ G({uri:W,name:/*#__PURE__*/ W6(W)});({...Z6.fields}),{...$6.fields},{...$6.fields},{...Z6.fields},{...$6.fields},{...Z6.fields},{...$6.fields},{...Z6.fields},{...Z6.fields};const xbe=/*#__PURE__*/ G({...Z6.fields,completion:/*#__PURE__*/ G({values:/*#__PURE__*/ K(W),total:/*#__PURE__*/ W6(qx),hasMore:/*#__PURE__*/ W6(Ex)})}),Sbe=/*#__PURE__*/ G({...Z6.fields,roots:/*#__PURE__*/ K(i8)});var a8=class extends (/*#__PURE__*/ J(`ping`,{success:Z6,error:e8,payload:/*#__PURE__*/ Lx(Y6)})){};({...Y6.fields}),{...Y6.fields};var o8=class extends (/*#__PURE__*/ J(`logging/setLevel`,{success:Z6,error:e8,payload:{...Y6.fields,level:J6}})){};({...Y6.fields}),{...Y6.fields};var s8=class extends (/*#__PURE__*/ J(`resources/subscribe`,{success:Z6,error:e8,payload:{...Y6.fields,uri:W}})){},c8=class extends (/*#__PURE__*/ J(`resources/unsubscribe`,{success:Z6,error:e8,payload:{...Y6.fields,uri:W}})){};({...Y6.fields}),{...Y6.fields};var l8=class extends (/*#__PURE__*/ J(`roots/list`,{success:Sbe,error:e8,payload:/*#__PURE__*/ Lx(Y6)})){},u8=class extends (/*#__PURE__*/ J(`notifications/cancelled`,{payload:{...X6.fields,requestId:lbe,reason:/*#__PURE__*/ W6(W)}})){};({...X6.fields});var d8=class extends (/*#__PURE__*/ J(`notifications/initialized`,{payload:/*#__PURE__*/ Lx(X6)})){},f8=class extends (/*#__PURE__*/ J(`notifications/roots/list_changed`,{payload:/*#__PURE__*/ Lx(X6)})){},p8=class extends (/*#__PURE__*/ J(`notifications/message`,{payload:{...X6.fields,level:J6,logger:/*#__PURE__*/ W6(W),data:Cx}})){},m8=class extends (/*#__PURE__*/ J(`notifications/resources/updated`,{payload:{...X6.fields,uri:W}})){},h8=class extends (/*#__PURE__*/ J(`notifications/resources/list_changed`,{payload:/*#__PURE__*/ Lx(X6)})){},g8=class extends (/*#__PURE__*/ J(`notifications/tools/list_changed`,{payload:/*#__PURE__*/ Lx(X6)})){},_8=class extends (/*#__PURE__*/ J(`notifications/prompts/list_changed`,{payload:/*#__PURE__*/ Lx(X6)})){};const v8=W6,Cbe=/*#__PURE__*/ G({...dbe.fields,completions:/*#__PURE__*/ v8(/*#__PURE__*/ G({}))}),wbe=/*#__PURE__*/ G({type:/*#__PURE__*/ bx(`audio`),data:W,mimeType:W,annotations:/*#__PURE__*/ v8(t8)}),y8=/*#__PURE__*/ G({title:/*#__PURE__*/ v8(W),readOnlyHint:/*#__PURE__*/ v8(Ex),destructiveHint:/*#__PURE__*/ v8(Ex),idempotentHint:/*#__PURE__*/ v8(Ex),openWorldHint:/*#__PURE__*/ v8(Ex)});({...ybe.fields}),{...Z6.fields},{...Z6.fields},{...$6.fields},{...Z6.fields},{...Z6.fields},{...Y6.fields},{...Y6.fields},{...Y6.fields},{...Y6.fields};var b8=class extends (/*#__PURE__*/ J(`notifications/progress`,{payload:{...X6.fields,progressToken:K6,progress:qx,total:/*#__PURE__*/ v8(qx),message:/*#__PURE__*/ v8(W)}})){};const x8=`2025-06-18`,S8=W6,C8=FS,w8=/*#__PURE__*/ S8(C8),T8=/*#__PURE__*/ G({name:W,title:/*#__PURE__*/ S8(W),version:W}),E8=/*#__PURE__*/ G({...ube.fields,elicitation:/*#__PURE__*/ S8(/*#__PURE__*/ G({}))}),D8=/*#__PURE__*/ G({audience:/*#__PURE__*/ S8(/*#__PURE__*/ K(q6)),priority:/*#__PURE__*/ S8(/*#__PURE__*/ qx.check(/*#__PURE__*/ Yx({minimum:0,maximum:1})))}),O8=/*#__PURE__*/ G({...gbe.fields,title:/*#__PURE__*/ S8(W),annotations:/*#__PURE__*/ S8(D8),_meta:w8}),k8=/*#__PURE__*/ G({..._be.fields,title:/*#__PURE__*/ S8(W),annotations:/*#__PURE__*/ S8(D8),_meta:w8}),A8=/*#__PURE__*/ q([/* @__PURE__ */ G({...fbe.fields,_meta:w8}),/* @__PURE__ */ G({...pbe.fields,_meta:w8})]),Tbe=/*#__PURE__*/ G({...n8.fields,title:/*#__PURE__*/ S8(W)}),j8=/*#__PURE__*/ G({...vbe.fields,title:/*#__PURE__*/ S8(W),arguments:/*#__PURE__*/ S8(/*#__PURE__*/ K(Tbe)),_meta:w8}),M8=/*#__PURE__*/ G({type:/*#__PURE__*/ bx(`resource`),resource:A8,annotations:/*#__PURE__*/ S8(D8),_meta:w8}),Ebe=/*#__PURE__*/ G({...O8.fields,type:/*#__PURE__*/ bx(`resource_link`)}),N8=/*#__PURE__*/ G({...mbe.fields,annotations:/*#__PURE__*/ S8(D8),_meta:w8}),P8=/*#__PURE__*/ G({...hbe.fields,annotations:/*#__PURE__*/ S8(D8),_meta:w8}),F8=/*#__PURE__*/ G({...wbe.fields,annotations:/*#__PURE__*/ S8(D8),_meta:w8}),I8=/*#__PURE__*/ q([N8,P8,F8,M8,Ebe]),L8=/*#__PURE__*/ q([N8,P8,F8]),Dbe=/*#__PURE__*/ G({role:q6,content:I8}),Obe=/*#__PURE__*/ G({role:q6,content:L8}),kbe=/*#__PURE__*/ G({...Cbe.fields}),R8=/*#__PURE__*/ G({...Z6.fields,protocolVersion:W,capabilities:kbe,serverInfo:T8,instructions:/*#__PURE__*/ S8(W)});var z8=class extends (/*#__PURE__*/ J(`initialize`,{success:R8,error:e8,payload:{...Y6.fields,protocolVersion:W,capabilities:E8,clientInfo:T8}})){};const B8=/*#__PURE__*/ jx(/*#__PURE__*/ G({type:/*#__PURE__*/ bx(`object`),properties:/*#__PURE__*/ S8(/*#__PURE__*/ Ax(W,C8)),required:/*#__PURE__*/ S8(/*#__PURE__*/ K(W))}),[FS]),V8=/*#__PURE__*/ G({name:W,title:/*#__PURE__*/ S8(W),description:/*#__PURE__*/ S8(W),inputSchema:B8,outputSchema:/*#__PURE__*/ S8(B8),annotations:/*#__PURE__*/ S8(y8),_meta:w8}),H8=/*#__PURE__*/ G({...Z6.fields,content:/*#__PURE__*/ K(I8),structuredContent:/*#__PURE__*/ S8(C8),isError:/*#__PURE__*/ S8(Ex)}),Abe=/*#__PURE__*/ G({...Z6.fields,role:q6,content:L8,model:W,stopReason:/*#__PURE__*/ S8(W)});var U8=class extends (/*#__PURE__*/ J(`sampling/createMessage`,{success:Abe,error:e8,payload:{...Y6.fields,messages:/*#__PURE__*/ K(Obe),modelPreferences:/*#__PURE__*/ S8(r8),systemPrompt:/*#__PURE__*/ S8(W),includeContext:/*#__PURE__*/ S8(/*#__PURE__*/ Fx([`none`,`thisServer`,`allServers`])),temperature:/*#__PURE__*/ S8(qx),maxTokens:qx,stopSequences:/*#__PURE__*/ S8(/*#__PURE__*/ K(W)),metadata:/*#__PURE__*/ S8(C8)}})){};const W8=/*#__PURE__*/ G({...bbe.fields,title:/*#__PURE__*/ S8(W)}),G8=/*#__PURE__*/ G({type:/*#__PURE__*/ bx(`ref/resource`),uri:W}),K8=xbe;var q8=class extends (/*#__PURE__*/ J(`completion/complete`,{success:K8,error:e8,payload:{...Y6.fields,ref:/*#__PURE__*/ q([W8,G8]),argument:/*#__PURE__*/ G({name:W,value:W}),context:/*#__PURE__*/ S8(/*#__PURE__*/ G({arguments:/*#__PURE__*/ S8(/*#__PURE__*/ Ax(W,W))}))}})){};const J8=/*#__PURE__*/ G({...$6.fields,resources:/*#__PURE__*/ K(O8)}),Y8=/*#__PURE__*/ G({...$6.fields,resourceTemplates:/*#__PURE__*/ K(k8)}),X8=/*#__PURE__*/ G({...Z6.fields,contents:/*#__PURE__*/ K(A8)}),Z8=/*#__PURE__*/ G({...$6.fields,prompts:/*#__PURE__*/ K(j8)}),Q8=/*#__PURE__*/ G({...Z6.fields,description:/*#__PURE__*/ S8(W),messages:/*#__PURE__*/ K(Dbe)}),$8=/*#__PURE__*/ G({...$6.fields,tools:/*#__PURE__*/ K(V8)});var jbe=class extends (/*#__PURE__*/ J(`resources/list`,{success:J8,error:e8,payload:/*#__PURE__*/ Lx(Q6)})){},Mbe=class extends (/*#__PURE__*/ J(`resources/templates/list`,{success:Y8,error:e8,payload:/*#__PURE__*/ Lx(Q6)})){},e5=class extends (/*#__PURE__*/ J(`resources/read`,{success:X8,error:e8,payload:{...Y6.fields,uri:W}})){},Nbe=class extends (/*#__PURE__*/ J(`prompts/list`,{success:Z8,error:e8,payload:/*#__PURE__*/ Lx(Q6)})){},Pbe=class extends (/*#__PURE__*/ J(`prompts/get`,{success:Q8,error:e8,payload:{...Y6.fields,name:W,arguments:/*#__PURE__*/ S8(/*#__PURE__*/ Ax(W,W))}})){},Fbe=class extends (/*#__PURE__*/ J(`tools/list`,{success:$8,error:e8,payload:/*#__PURE__*/ Lx(Q6)})){},t5=class extends (/*#__PURE__*/ J(`tools/call`,{success:H8,error:e8,payload:{...Y6.fields,name:W,arguments:/*#__PURE__*/ S8(C8)}})){};const Ibe=/*#__PURE__*/ G({...Z6.fields,action:/*#__PURE__*/ Fx([`accept`,`decline`,`cancel`]),content:/*#__PURE__*/ S8(/*#__PURE__*/ Ax(W,/*#__PURE__*/ q([W,qx,Ex])))}),Lbe=/*#__PURE__*/ G({type:/*#__PURE__*/ bx(`object`),properties:/*#__PURE__*/ Ax(W,/*#__PURE__*/ q([/* @__PURE__ */ G({type:/*#__PURE__*/ bx(`string`),title:/*#__PURE__*/ S8(W),description:/*#__PURE__*/ S8(W),minLength:/*#__PURE__*/ S8(Xx),maxLength:/*#__PURE__*/ S8(Xx),format:/*#__PURE__*/ S8(/*#__PURE__*/ Fx([`email`,`uri`,`date`,`date-time`]))}),/* @__PURE__ */ G({type:/*#__PURE__*/ Fx([`number`,`integer`]),title:/*#__PURE__*/ S8(W),description:/*#__PURE__*/ S8(W),minimum:/*#__PURE__*/ S8(qx),maximum:/*#__PURE__*/ S8(qx)}),/* @__PURE__ */ G({type:/*#__PURE__*/ bx(`boolean`),title:/*#__PURE__*/ S8(W),description:/*#__PURE__*/ S8(W),default:/*#__PURE__*/ S8(Ex)}),/* @__PURE__ */ G({type:/*#__PURE__*/ bx(`string`),title:/*#__PURE__*/ S8(W),description:/*#__PURE__*/ S8(W),enum:/*#__PURE__*/ K(W),enumNames:/*#__PURE__*/ S8(/*#__PURE__*/ K(W))})])),required:/*#__PURE__*/ S8(/*#__PURE__*/ K(W))});var n5=class extends (/*#__PURE__*/ J(`elicitation/create`,{success:Ibe,error:e8,payload:{...Y6.fields,message:W,requestedSchema:Lbe}})){},Rbe=class extends (/*#__PURE__*/ aN(a8,z8,q8,o8,Pbe,Nbe,jbe,Mbe,e5,s8,c8,t5,Fbe)){},r5=class extends (/*#__PURE__*/ aN(u8,b8,d8,f8)){},zbe=class extends (/*#__PURE__*/ aN(a8,U8,l8,n5)){},Bbe=class extends (/*#__PURE__*/ aN(u8,b8,p8,m8,h8,g8,_8)){};const i5=/*#__PURE__*/ (/* @__PURE__ */ Rbe.omit(`ping`).middleware(c6).add(a8)).merge(r5),a5=/*#__PURE__*/ i5.omit(`ping`),Vbe=e=>{if(e?.type!==`object`)return!1;let t=e.properties===void 0||zt(e.properties)&&Object.values(e.properties).every(zt),n=e.required===void 0||Array.isArray(e.required)&&e.required.every(Tt);return t&&n},Hbe=e=>({protocolVersion:x8,clientCapabilities:T3.make(e.capabilities),clientInfo:w3.make(e.clientInfo),requestMetadata:e._meta}),o5=(e,t)=>new a6({operation:e,protocolVersion:x8,reason:t}),s5=(e,t,n)=>Object.hasOwn(e.clientCapabilities,n)&&e.clientCapabilities[n]!==void 0?R:B(o5(t,`Client did not advertise the ${n} capability`)),c5=/*#__PURE__*/ U(function*(e){return EE(e).pipe(DE({type:AE(`text`,`resource_link`)},e=>e),DE({type:AE(`image`,`audio`)},e=>({type:e.type,mimeType:e.mimeType,data:Ym(e.data),annotations:e.annotations,_meta:e._meta})),DE({type:`resource`},e=>{let t=e.resource;return`text`in t?M8.make({type:`resource`,resource:{uri:t.uri,mimeType:t.mimeType,_meta:t._meta,text:t.text},annotations:e.annotations,_meta:e._meta}):M8.make({type:`resource`,resource:{uri:t.uri,mimeType:t.mimeType,_meta:t._meta,blob:Ym(t.blob)},annotations:e.annotations,_meta:e._meta})}),ME)}),Ube=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:Ym(e.blob)},Wbe=e=>e===void 0||Gbe(e)?e:void 0,Gbe=e=>zt(e),Kbe=/*#__PURE__*/ O6({protocolVersion:x8,runtime:/*#__PURE__*/ B6({jsonRpc:{acceptsBatches:!1},http:{requiresVersionHeader:!0}}),clientRpcs:i5,clientNotificationRpcs:r5,serverRequestRpcs:zbe,serverNotificationRpcs:Bbe,handlerRpcs:a5,makeHandlers:(e,t)=>a5.of({initialize:(e,{client:n})=>t.initialize(x8,Hbe(e),n.id).pipe(H(e=>R8.make({protocolVersion:x8,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(Wf({})),"notifications/cancelled":()=>R,"notifications/initialized":(e,{client:n,headers:r})=>t.clientNotification(f6.Initialized(),n.id,r),"notifications/progress":(e,{client:n,headers:r})=>t.clientNotification(f6.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(f6.RootsChanged(),n.id,r),"resources/list":t=>s6.use(t=>e.resources.list(g6(t))).pipe(H(e=>J8.make({resources:e}))),"resources/templates/list":t=>s6.use(t=>e.resources.listTemplates(g6(t))).pipe(H(e=>Y8.make({resourceTemplates:e}))),"resources/read":U(function*({uri:t}){let n=yield*s6,r=yield*e.resources.read(t,_6(n)).pipe(Zf(C6.fromFeature));return X8.make({contents:r.contents.map(Ube),_meta:r._meta})}),"resources/subscribe":({uri:e},{client:n,headers:r})=>t.subscribe(e,n.id,r).pipe(Wf({})),"resources/unsubscribe":({uri:e},{client:n,headers:r})=>t.unsubscribe(e,n.id,r).pipe(Wf({})),"prompts/list":t=>s6.use(t=>e.prompts.list(g6(t))).pipe(H(e=>Z8.make({prompts:e}))),"prompts/get":U(function*({arguments:t,name:n}){let r=yield*s6,i=yield*e.prompts.get(n,t??{},_6(r)).pipe(Zf(C6.fromFeature));if(i._tag===`InputRequired`)return yield*C6.fromFeature(new d6({protocolVersion:x8,feature:`prompt input requirements`}));let a=i.value,o=yield*Ef(a.messages,e=>c5(e.content).pipe(H(t=>({role:e.role,content:t})),Zf(C6.fromTool)));return Q8.make({description:a.description,messages:o,_meta:a._meta})}),"completion/complete":U(function*(t){let n=yield*s6,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},_6(n)).pipe(Zf(C6.fromFeature));return K8.make({completion:{values:Array.from(r.values),total:r.total,hasMore:r.hasMore},_meta:r.metadata})}),"tools/list":U(function*(){let t=yield*s6,n=yield*e.tools.list(g6(t));return $8.make({tools:n.map(e=>V8.make({name:e.name,title:e.title,description:e.description,inputSchema:e.inputSchema,outputSchema:Vbe(e.outputSchema)?e.outputSchema:void 0,annotations:e.annotations===void 0?void 0:y8.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":U(function*(t){let n=yield*s6,r=yield*e.tools.call({...t,arguments:t.arguments??{}},_6(n)).pipe(V(e=>y6(x8,e)),Zf(C6.fromTool)),i=yield*Ef(b6(r),c5).pipe(Zf(C6.fromTool)),a=Wbe(r.structuredContent);return H8.make({content:i,structuredContent:a,isError:r.isError,_meta:r._meta})})}),toReverseClient:(e,t)=>({listRoots:U(function*(n){yield*s5(e,`roots/list`,`roots`);let r=yield*T6(r6.payloadSchema,l8.payloadSchema,n).pipe(Zf(()=>o5(`roots/list`,`Request is not representable by this protocol`))),{roots:i}=yield*t[`roots/list`](r).pipe(Zf(w6(`roots/list`)));return new n6({roots:i})}),createMessage:U(function*(n){yield*s5(e,`sampling/createMessage`,`sampling`);let r=yield*rbe(t6.payloadSchema,U8.payloadSchema,n).pipe(Zf(()=>o5(`sampling/createMessage`,`Request is not representable by this protocol`))),i=yield*t[`sampling/createMessage`](r).pipe(Zf(w6(`sampling/createMessage`)));return yield*T6(U8.successSchema,t6.successSchema,i).pipe(Zf(()=>o5(`sampling/createMessage`,`Response is not representable by the canonical model`)))}),elicit:U(function*(n){yield*s5(e,`elicitation/create`,`elicitation`);let r=n.mode===`form`?Xae(n,[`mode`]):n,i=yield*cx(n5.payloadSchema,{onExcessProperty:`error`})(r).pipe(Zf(()=>o5(`elicitation/create`,`Request is not representable by this protocol`))),a=yield*t[`elicitation/create`](i).pipe(Zf(w6(`elicitation/create`)));return yield*T6(n5.successSchema,i6.successSchema,a).pipe(Zf(()=>o5(`elicitation/create`,`Response is not representable by the canonical model`)))})}),projectNotification:e=>E6({supportsProgressMessage:!0},e),normalizeCancellation:e=>cx(u8.payloadSchema)(e).pipe(H(e=>({requestId:e.requestId,reason:e.reason,metadata:e._meta})))}),l5=`2025-11-25`,Q=W6,u5=FS,d5=/*#__PURE__*/ Q(u5),f5=/*#__PURE__*/ G({src:W,mimeType:/*#__PURE__*/ Q(W),sizes:/*#__PURE__*/ Q(/*#__PURE__*/ K(W)),theme:/*#__PURE__*/ Q(/*#__PURE__*/ Fx([`light`,`dark`]))}),p5=/*#__PURE__*/ G({...T8.fields,description:/*#__PURE__*/ Q(W),websiteUrl:/*#__PURE__*/ Q(W),icons:/*#__PURE__*/ Q(/*#__PURE__*/ K(f5))}),qbe=/*#__PURE__*/ G({...E8.fields,sampling:/*#__PURE__*/ Q(/*#__PURE__*/ G({context:/*#__PURE__*/ Q(u5),tools:/*#__PURE__*/ Q(u5)})),elicitation:/*#__PURE__*/ Q(/*#__PURE__*/ G({form:/*#__PURE__*/ Q(u5),url:/*#__PURE__*/ Q(u5)}))}),m5=/*#__PURE__*/ G({...D8.fields,lastModified:/*#__PURE__*/ Q(W)}),h5=/*#__PURE__*/ G({...O8.fields,annotations:/*#__PURE__*/ Q(m5),icons:/*#__PURE__*/ Q(/*#__PURE__*/ K(f5))}),g5=/*#__PURE__*/ G({...k8.fields,annotations:/*#__PURE__*/ Q(m5),icons:/*#__PURE__*/ Q(/*#__PURE__*/ K(f5))}),_5=/*#__PURE__*/ G({...j8.fields,icons:/*#__PURE__*/ Q(/*#__PURE__*/ K(f5))}),v5=/*#__PURE__*/ G({...N8.fields,annotations:/*#__PURE__*/ Q(m5)}),y5=/*#__PURE__*/ G({...P8.fields,annotations:/*#__PURE__*/ Q(m5)}),b5=/*#__PURE__*/ G({...F8.fields,annotations:/*#__PURE__*/ Q(m5)}),x5=/*#__PURE__*/ G({...M8.fields,annotations:/*#__PURE__*/ Q(m5)}),S5=/*#__PURE__*/ q([v5,y5,b5,/* @__PURE__ */ G({...h5.fields,type:/*#__PURE__*/ bx(`resource_link`)}),x5]),Jbe=/*#__PURE__*/ G({role:q6,content:S5}),C5=/*#__PURE__*/ G({...V8.fields,icons:/*#__PURE__*/ Q(/*#__PURE__*/ K(f5))}),w5=/*#__PURE__*/ G({...H8.fields,content:/*#__PURE__*/ K(S5)});var Ybe=class extends (/*#__PURE__*/ J(`tools/call`,{success:w5,error:e8,payload:t5.payloadSchema})){};const T5=/*#__PURE__*/ G({type:/*#__PURE__*/ bx(`tool_use`),id:W,name:W,input:u5,_meta:d5}),E5=/*#__PURE__*/ q([v5,y5,b5,T5,/* @__PURE__ */ G({type:/*#__PURE__*/ bx(`tool_result`),toolUseId:W,content:/*#__PURE__*/ K(S5),structuredContent:/*#__PURE__*/ Q(u5),isError:/*#__PURE__*/ Q(Ex),_meta:d5})]),D5=/*#__PURE__*/ G({role:q6,content:/*#__PURE__*/ q([E5,/*#__PURE__*/ K(E5)]),_meta:d5}),O5=/*#__PURE__*/ G({mode:/*#__PURE__*/ Q(/*#__PURE__*/ Fx([`auto`,`required`,`none`]))}),Xbe=/*#__PURE__*/ G({...Z6.fields,...D5.fields,model:W,stopReason:/*#__PURE__*/ Q(W)});var k5=class extends (/*#__PURE__*/ J(`sampling/createMessage`,{success:Xbe,error:e8,payload:{...U8.payloadSchema.fields,messages:/*#__PURE__*/ K(D5),maxTokens:Xx,tools:/*#__PURE__*/ Q(/*#__PURE__*/ K(C5)),toolChoice:/*#__PURE__*/ Q(O5)}})){};const A5=/*#__PURE__*/ G({...i8.fields,_meta:d5}),Zbe=/*#__PURE__*/ G({...Z6.fields,roots:/*#__PURE__*/ K(A5)});var j5=class extends (/*#__PURE__*/ J(`roots/list`,{success:Zbe,error:e8,payload:/*#__PURE__*/ Lx(Y6)})){};const M5=/*#__PURE__*/ G({type:/*#__PURE__*/ bx(`string`),title:/*#__PURE__*/ Q(W),description:/*#__PURE__*/ Q(W),minLength:/*#__PURE__*/ Q(Xx),maxLength:/*#__PURE__*/ Q(Xx),format:/*#__PURE__*/ Q(/*#__PURE__*/ Fx([`email`,`uri`,`date`,`date-time`])),default:/*#__PURE__*/ Q(W)}),N5=/*#__PURE__*/ G({type:/*#__PURE__*/ Fx([`number`,`integer`]),title:/*#__PURE__*/ Q(W),description:/*#__PURE__*/ Q(W),minimum:/*#__PURE__*/ Q(qx),maximum:/*#__PURE__*/ Q(qx),default:/*#__PURE__*/ Q(qx)}),P5=/*#__PURE__*/ G({type:/*#__PURE__*/ bx(`boolean`),title:/*#__PURE__*/ Q(W),description:/*#__PURE__*/ Q(W),default:/*#__PURE__*/ Q(Ex)}),F5=/*#__PURE__*/ G({const:W,title:W}),I5=/*#__PURE__*/ q([/* @__PURE__ */ G({type:/*#__PURE__*/ bx(`string`),title:/*#__PURE__*/ Q(W),description:/*#__PURE__*/ Q(W),enum:/*#__PURE__*/ K(W),default:/*#__PURE__*/ Q(W)}),/* @__PURE__ */ G({type:/*#__PURE__*/ bx(`string`),title:/*#__PURE__*/ Q(W),description:/*#__PURE__*/ Q(W),oneOf:/*#__PURE__*/ K(F5),default:/*#__PURE__*/ Q(W)})]),L5=/*#__PURE__*/ q([/* @__PURE__ */ G({type:/*#__PURE__*/ bx(`array`),title:/*#__PURE__*/ Q(W),description:/*#__PURE__*/ Q(W),minItems:/*#__PURE__*/ Q(Xx),maxItems:/*#__PURE__*/ Q(Xx),items:/*#__PURE__*/ G({type:/*#__PURE__*/ bx(`string`),enum:/*#__PURE__*/ K(W)}),default:/*#__PURE__*/ Q(/*#__PURE__*/ K(W))}),/* @__PURE__ */ G({type:/*#__PURE__*/ bx(`array`),title:/*#__PURE__*/ Q(W),description:/*#__PURE__*/ Q(W),minItems:/*#__PURE__*/ Q(Xx),maxItems:/*#__PURE__*/ Q(Xx),items:/*#__PURE__*/ G({anyOf:/*#__PURE__*/ K(F5)}),default:/*#__PURE__*/ Q(/*#__PURE__*/ K(W))})]),R5=/*#__PURE__*/ G({type:/*#__PURE__*/ bx(`string`),title:/*#__PURE__*/ Q(W),description:/*#__PURE__*/ Q(W),enum:/*#__PURE__*/ K(W),enumNames:/*#__PURE__*/ Q(/*#__PURE__*/ K(W)),default:/*#__PURE__*/ Q(W)}),Qbe=/*#__PURE__*/ G({$schema:/*#__PURE__*/ Q(W),type:/*#__PURE__*/ bx(`object`),properties:/*#__PURE__*/ Ax(W,/* @__PURE__ */ q([/* @__PURE__ */ q([R5,I5,L5]),M5,N5,P5])),required:/*#__PURE__*/ Q(/*#__PURE__*/ K(W))}),$be=/*#__PURE__*/ q([/* @__PURE__ */ G({...Y6.fields,mode:/*#__PURE__*/ Q(/*#__PURE__*/ bx(`form`)),message:W,requestedSchema:Qbe}),/* @__PURE__ */ G({...Y6.fields,mode:/*#__PURE__*/ bx(`url`),message:W,elicitationId:W,url:W})]),exe=/*#__PURE__*/ G({...Z6.fields,action:/*#__PURE__*/ Fx([`accept`,`decline`,`cancel`]),content:/*#__PURE__*/ Q(/*#__PURE__*/ Ax(W,/*#__PURE__*/ q([W,qx,Ex,/*#__PURE__*/ K(W)])))});var z5=class extends (/*#__PURE__*/ J(`elicitation/create`,{success:exe,error:e8,payload:$be})){},txe=class extends (/*#__PURE__*/ J(`notifications/elicitation/complete`,{payload:{elicitationId:W}})){};const B5=/*#__PURE__*/ G({...R8.fields,serverInfo:p5});var nxe=class extends (/*#__PURE__*/ J(`initialize`,{success:B5,error:e8,payload:{...z8.payloadSchema.fields,capabilities:qbe,clientInfo:p5}})){};const V5=/*#__PURE__*/ G({...$6.fields,resources:/*#__PURE__*/ K(h5)}),H5=/*#__PURE__*/ G({...$6.fields,resourceTemplates:/*#__PURE__*/ K(g5)}),U5=/*#__PURE__*/ G({...$6.fields,prompts:/*#__PURE__*/ K(_5)}),W5=/*#__PURE__*/ G({...Q8.fields,messages:/*#__PURE__*/ K(Jbe)}),G5=/*#__PURE__*/ G({...$6.fields,tools:/*#__PURE__*/ K(C5)});var rxe=class extends (/*#__PURE__*/ J(`resources/list`,{success:V5,error:e8,payload:/*#__PURE__*/ Lx(Q6)})){},ixe=class extends (/*#__PURE__*/ J(`resources/templates/list`,{success:H5,error:e8,payload:/*#__PURE__*/ Lx(Q6)})){},axe=class extends (/*#__PURE__*/ J(`prompts/list`,{success:U5,error:e8,payload:/*#__PURE__*/ Lx(Q6)})){},oxe=class extends (/*#__PURE__*/ J(`prompts/get`,{success:W5,error:e8,payload:{...Y6.fields,name:W,arguments:/*#__PURE__*/ Q(/*#__PURE__*/ Ax(W,W))}})){},sxe=class extends (/*#__PURE__*/ J(`tools/list`,{success:G5,error:e8,payload:/*#__PURE__*/ Lx(Q6)})){},cxe=class extends (/*#__PURE__*/ aN(a8,nxe,q8,o8,oxe,axe,rxe,ixe,e5,s8,c8,Ybe,sxe)){},K5=class extends (/*#__PURE__*/ aN(u8,b8,d8,f8)){},lxe=class extends (/*#__PURE__*/ aN(a8,k5,j5,z5)){},uxe=class extends (/*#__PURE__*/ aN(u8,b8,p8,m8,h8,g8,_8,txe)){};const q5=/*#__PURE__*/ (/* @__PURE__ */ cxe.omit(`ping`).middleware(c6).add(a8)).merge(K5),J5=/*#__PURE__*/ q5.omit(`ping`),dxe=e=>{if(e?.type!==`object`)return!1;let t=e.properties===void 0||zt(e.properties)&&Object.values(e.properties).every(zt),n=e.required===void 0||Array.isArray(e.required)&&e.required.every(Tt);return t&&n},Y5=(e,t)=>new a6({operation:e,protocolVersion:l5,reason:t}),X5=(e,t,n)=>Object.hasOwn(e.clientCapabilities,n)&&e.clientCapabilities[n]!==void 0?R:B(Y5(t,`Client did not advertise the ${n} capability`)),fxe=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`)),pxe=(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},Z5=/*#__PURE__*/ U(function*(e){return EE(e).pipe(DE({type:AE(`text`,`resource_link`)},e=>e),DE({type:AE(`image`,`audio`)},e=>({type:e.type,mimeType:e.mimeType,data:Ym(e.data),annotations:e.annotations,_meta:e._meta})),DE({type:`resource`},e=>{let t=e.resource;return`text`in t?x5.make({type:`resource`,resource:{uri:t.uri,mimeType:t.mimeType,_meta:t._meta,text:t.text},annotations:e.annotations,_meta:e._meta}):x5.make({type:`resource`,resource:{uri:t.uri,mimeType:t.mimeType,_meta:t._meta,blob:Ym(t.blob)},annotations:e.annotations,_meta:e._meta})}),ME)}),mxe=e=>e===void 0||hxe(e)?e:void 0,hxe=e=>zt(e),gxe=/*#__PURE__*/ O6({protocolVersion:l5,runtime:/*#__PURE__*/ B6({jsonRpc:{acceptsBatches:!1},http:{requiresVersionHeader:!0}}),clientRpcs:q5,clientNotificationRpcs:K5,serverRequestRpcs:lxe,serverNotificationRpcs:uxe,handlerRpcs:J5,makeHandlers:(e,t)=>J5.of({initialize:(e,{client:n})=>t.initialize(l5,{protocolVersion:l5,clientCapabilities:T3.make(e.capabilities),clientInfo:w3.make(e.clientInfo),requestMetadata:e._meta},n.id).pipe(H(e=>B5.make({protocolVersion:l5,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(Wf({})),"notifications/cancelled":()=>R,"notifications/initialized":(e,{client:n,headers:r})=>t.clientNotification(f6.Initialized(),n.id,r),"notifications/progress":(e,{client:n,headers:r})=>t.clientNotification(f6.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(f6.RootsChanged(),n.id,r),"resources/list":()=>s6.use(t=>e.resources.list(g6(t))).pipe(H(e=>V5.make({resources:e.map(e=>h5.make(e))}))),"resources/templates/list":()=>s6.use(t=>e.resources.listTemplates(g6(t))).pipe(H(e=>H5.make({resourceTemplates:e.map(e=>g5.make(e))}))),"resources/read":U(function*({uri:t}){let n=yield*s6,r=yield*e.resources.read(t,_6(n)).pipe(Zf(C6.fromFeature));return X8.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:Ym(e.blob)}),_meta:r._meta})}),"resources/subscribe":({uri:e},{client:n,headers:r})=>t.subscribe(e,n.id,r).pipe(Wf({})),"resources/unsubscribe":({uri:e},{client:n,headers:r})=>t.unsubscribe(e,n.id,r).pipe(Wf({})),"prompts/list":()=>s6.use(t=>e.prompts.list(g6(t))).pipe(H(e=>U5.make({prompts:e.map(e=>_5.make(e))}))),"prompts/get":U(function*({arguments:t,name:n}){let r=yield*s6,i=yield*e.prompts.get(n,t??{},_6(r)).pipe(Zf(C6.fromFeature));if(i._tag===`InputRequired`)return yield*C6.fromFeature(new d6({protocolVersion:l5,feature:`prompt input requirements`}));let a=i.value,o=yield*Ef(a.messages,e=>Z5(e.content).pipe(H(t=>({role:e.role,content:t})),Zf(C6.fromTool)));return W5.make({description:a.description,messages:o,_meta:a._meta})}),"completion/complete":U(function*(t){let n=yield*s6,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},_6(n)).pipe(Zf(C6.fromFeature));return K8.make({completion:{values:Array.from(r.values),total:r.total,hasMore:r.hasMore},_meta:r.metadata})}),"tools/list":U(function*(){let t=yield*s6,n=yield*e.tools.list(g6(t));return G5.make({tools:n.map(e=>C5.make({name:e.name,title:e.title,description:e.description,inputSchema:e.inputSchema,outputSchema:dxe(e.outputSchema)?e.outputSchema:void 0,icons:e.icons,annotations:e.annotations===void 0?void 0:y8.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":U(function*(t){let n=yield*s6,r=yield*e.tools.call({...t,arguments:t.arguments??{}},_6(n)).pipe(V(e=>y6(l5,e)),qf([`InvalidToolInput`,`ToolExecutionError`],e=>I(X3.make({content:[H3.make({type:`text`,text:e.message})],isError:!0}))),Zf(C6.fromTool)),i=yield*Ef(b6(r),Z5).pipe(Zf(C6.fromTool)),a=mxe(r.structuredContent);return w5.make({content:i,structuredContent:a,isError:r.isError,_meta:r._meta})})}),toReverseClient:(e,t)=>({listRoots:U(function*(n){yield*X5(e,`roots/list`,`roots`);let r=yield*T6(r6.payloadSchema,j5.payloadSchema,n).pipe(Zf(()=>Y5(`roots/list`,`Request is not representable by this protocol`))),{roots:i}=yield*t[`roots/list`](r).pipe(Zf(w6(`roots/list`)));return new n6({roots:i})}),createMessage:U(function*(n){if(yield*X5(e,`sampling/createMessage`,`sampling`),S6(n)&&e.clientCapabilities.sampling?.tools==null)return yield*Y5(`sampling/createMessage`,`Client did not advertise the sampling.tools capability`);if((n.includeContext===`thisServer`||n.includeContext===`allServers`)&&e.clientCapabilities.sampling?.context==null)return yield*Y5(`sampling/createMessage`,`Client did not advertise the sampling.context capability`);let r=yield*T6(t6.payloadSchema,k5.payloadSchema,n).pipe(Zf(()=>Y5(`sampling/createMessage`,`Request is not representable by this protocol`))),i=yield*t[`sampling/createMessage`](r).pipe(Zf(w6(`sampling/createMessage`)));return fxe(i)&&e.clientCapabilities.sampling?.tools==null?yield*Y5(`sampling/createMessage`,`Client did not advertise the sampling.tools capability`):yield*T6(k5.successSchema,t6.successSchema,i).pipe(Zf(()=>Y5(`sampling/createMessage`,`Response is not representable by the canonical model`)))}),elicit:U(function*(n){yield*X5(e,`elicitation/create`,`elicitation`);let r=n.mode===`url`?`url`:`form`;if(!pxe(e,r))return yield*Y5(`elicitation/create`,`Client did not advertise the elicitation.${r} capability`);let i=yield*T6(i6.payloadSchema,z5.payloadSchema,n).pipe(Zf(()=>Y5(`elicitation/create`,`Request is not representable by this protocol`))),a=yield*t[`elicitation/create`](i).pipe(Zf(w6(`elicitation/create`)));return yield*T6(z5.successSchema,i6.successSchema,a).pipe(Zf(()=>Y5(`elicitation/create`,`Response is not representable by the canonical model`)))})}),projectNotification:e=>e._tag===`ElicitationComplete`?I({tag:`notifications/elicitation/complete`,payload:{elicitationId:e.elicitationId}}):E6({supportsProgressMessage:!0},e),normalizeCancellation:e=>cx(u8.payloadSchema)(e).pipe(H(e=>({requestId:e.requestId,reason:e.reason,metadata:e._meta})))}),Q5=`2026-07-28`,$=W6,$5=/*#__PURE__*/ $(FS),e7=/*#__PURE__*/ q([W,Xx]),t7=e7,n7=q6,r7=J6,i7=p5,_xe=/*#__PURE__*/ jx(/*#__PURE__*/ G({experimental:/*#__PURE__*/ $(/*#__PURE__*/ Ax(W,FS)),roots:/*#__PURE__*/ $(/*#__PURE__*/ G({})),sampling:/*#__PURE__*/ $(/*#__PURE__*/ G({context:/*#__PURE__*/ $(FS),tools:/*#__PURE__*/ $(FS)})),elicitation:/*#__PURE__*/ $(/*#__PURE__*/ G({form:/*#__PURE__*/ $(FS),url:/*#__PURE__*/ $(FS)})),extensions:/*#__PURE__*/ $(/*#__PURE__*/ Ax(W,FS))}),[FS]),vxe=/*#__PURE__*/ jx(/*#__PURE__*/ G({experimental:/*#__PURE__*/ $(/*#__PURE__*/ Ax(W,FS)),logging:/*#__PURE__*/ $(FS),completions:/*#__PURE__*/ $(FS),prompts:/*#__PURE__*/ $(/*#__PURE__*/ G({listChanged:/*#__PURE__*/ $(Ex)})),resources:/*#__PURE__*/ $(/*#__PURE__*/ G({subscribe:/*#__PURE__*/ $(Ex),listChanged:/*#__PURE__*/ $(Ex)})),tools:/*#__PURE__*/ $(/*#__PURE__*/ G({listChanged:/*#__PURE__*/ $(Ex)})),extensions:/*#__PURE__*/ $(/*#__PURE__*/ Ax(W,FS))}),[FS]),a7=/*#__PURE__*/ jx(/*#__PURE__*/ G({progressToken:/*#__PURE__*/ $(t7),"io.modelcontextprotocol/protocolVersion":W,"io.modelcontextprotocol/clientInfo":/*#__PURE__*/ $(i7),"io.modelcontextprotocol/clientCapabilities":_xe,"io.modelcontextprotocol/logLevel":/*#__PURE__*/ $(r7)}),[FS]),o7=/*#__PURE__*/ G({_meta:a7}),s7=/*#__PURE__*/ G({_meta:/*#__PURE__*/ $(/* @__PURE__ */ jx(/*#__PURE__*/ G({"io.modelcontextprotocol/subscriptionId":/*#__PURE__*/ $(e7)}),[FS]))}),c7=/*#__PURE__*/ jx(/*#__PURE__*/ G({"io.modelcontextprotocol/serverInfo":i7}),[FS]),l7={_meta:c7,resultType:/*#__PURE__*/ bx(`complete`)},u7=/*#__PURE__*/ G({code:Xx,message:W,data:/*#__PURE__*/ $(PS)}),yxe=m5,d7=/*#__PURE__*/ G({...h5.fields,size:/*#__PURE__*/ $(Xx),annotations:/*#__PURE__*/ $(yxe)}),f7=g5,bxe=A8,p7=v5,m7=y5,h7=b5,g7=/*#__PURE__*/ q([p7,m7,h7,/* @__PURE__ */ G({...d7.fields,type:/*#__PURE__*/ bx(`resource_link`)}),x5]),_7=_5,xxe=/*#__PURE__*/ G({role:n7,content:g7}),Sxe=/*#__PURE__*/ jx(/*#__PURE__*/ G({$schema:/*#__PURE__*/ $(W),type:/*#__PURE__*/ bx(`object`)}),[FS]),Cxe=/*#__PURE__*/ jx(/*#__PURE__*/ G({$schema:/*#__PURE__*/ $(W)}),[FS]),wxe=y8,v7=/*#__PURE__*/ G({...C5.fields,inputSchema:Sxe,outputSchema:/*#__PURE__*/ $(Cxe),annotations:/*#__PURE__*/ $(wxe)}),y7=/*#__PURE__*/ q([p7,m7,h7,T5,/* @__PURE__ */ G({type:/*#__PURE__*/ bx(`tool_result`),toolUseId:W,content:/*#__PURE__*/ K(g7),structuredContent:/*#__PURE__*/ $(PS),isError:/*#__PURE__*/ $(Ex),_meta:$5})]),b7=/*#__PURE__*/ G({role:n7,content:/*#__PURE__*/ q([y7,/*#__PURE__*/ K(y7)]),_meta:$5}),Txe=/*#__PURE__*/ jx(/*#__PURE__*/ G({name:/*#__PURE__*/ $(W)}),[FS]),x7=/*#__PURE__*/ qx.check(/*#__PURE__*/ Yx({minimum:0,maximum:1})),Exe=/*#__PURE__*/ G({...r8.fields,hints:/*#__PURE__*/ $(/*#__PURE__*/ K(Txe)),costPriority:/*#__PURE__*/ $(x7),speedPriority:/*#__PURE__*/ $(x7),intelligencePriority:/*#__PURE__*/ $(x7)}),Dxe=/*#__PURE__*/ G({method:/*#__PURE__*/ bx(`sampling/createMessage`),params:/*#__PURE__*/ G({messages:/*#__PURE__*/ K(b7),modelPreferences:/*#__PURE__*/ $(Exe),systemPrompt:/*#__PURE__*/ $(W),includeContext:/*#__PURE__*/ $(/*#__PURE__*/ Fx([`none`,`thisServer`,`allServers`])),temperature:/*#__PURE__*/ $(qx),maxTokens:Xx,stopSequences:/*#__PURE__*/ $(/*#__PURE__*/ K(W)),metadata:/*#__PURE__*/ $(FS),tools:/*#__PURE__*/ $(/*#__PURE__*/ K(v7)),toolChoice:/*#__PURE__*/ $(O5)})}),Oxe=/*#__PURE__*/ G({...b7.fields,model:W,stopReason:/*#__PURE__*/ $(W)}),kxe=A5,Axe=/*#__PURE__*/ G({method:/*#__PURE__*/ bx(`roots/list`),params:/*#__PURE__*/ $(/*#__PURE__*/ G({_meta:$5}))}),jxe=/*#__PURE__*/ G({roots:/*#__PURE__*/ K(kxe)}),Mxe=/*#__PURE__*/ G({method:/*#__PURE__*/ bx(`elicitation/create`),params:/* @__PURE__ */ q([/* @__PURE__ */ G({mode:/*#__PURE__*/ $(/*#__PURE__*/ bx(`form`)),message:W,requestedSchema:/* @__PURE__ */ G({$schema:/*#__PURE__*/ $(W),type:/*#__PURE__*/ bx(`object`),properties:/*#__PURE__*/ Ax(W,/* @__PURE__ */ q([/* @__PURE__ */ q([R5,I5,L5]),M5,N5,P5])),required:/*#__PURE__*/ $(/*#__PURE__*/ K(W))})}),/* @__PURE__ */ G({mode:/*#__PURE__*/ bx(`url`),message:W,url:W})])}),Nxe=/*#__PURE__*/ G({action:/*#__PURE__*/ Fx([`accept`,`decline`,`cancel`]),content:/*#__PURE__*/ $(/*#__PURE__*/ Ax(W,/*#__PURE__*/ q([W,qx,Ex,/*#__PURE__*/ K(W)])))}),Pxe=/*#__PURE__*/ q([Dxe,Axe,Mxe]),Fxe=/*#__PURE__*/ q([Oxe,jxe,Nxe]),S7=/*#__PURE__*/ Ax(W,Pxe),Ixe=/*#__PURE__*/ Ax(W,Fxe),C7={_meta:c7,resultType:/*#__PURE__*/ bx(`input_required`)},w7=/*#__PURE__*/ q([/*#__PURE__*/ jx(/*#__PURE__*/ G({...C7,inputRequests:S7,requestState:/*#__PURE__*/ $(W)}),[FS]),/*#__PURE__*/ jx(/*#__PURE__*/ G({...C7,inputRequests:/*#__PURE__*/ $(S7),requestState:W}),[FS])]),T7={...o7.fields,inputResponses:/*#__PURE__*/ $(Ixe),requestState:/*#__PURE__*/ $(W)},E7={...l7,ttlMs:/*#__PURE__*/ Xx.check(/*#__PURE__*/ xoe(0)),cacheScope:/*#__PURE__*/ Fx([`public`,`private`])},D7={...o7.fields,cursor:/*#__PURE__*/ $(W)},O7={...l7,nextCursor:/*#__PURE__*/ $(W)},k7=/*#__PURE__*/ jx(/*#__PURE__*/ G({...E7,supportedVersions:/*#__PURE__*/ K(W),capabilities:vxe,instructions:/*#__PURE__*/ $(W)}),[FS]);var Lxe=class extends (/*#__PURE__*/ J(`server/discover`,{success:k7,error:u7,payload:o7})){};const A7=/*#__PURE__*/ jx(/*#__PURE__*/ G({...O7,...E7,resources:/*#__PURE__*/ K(d7)}),[FS]);var Rxe=class extends (/*#__PURE__*/ J(`resources/list`,{success:A7,error:u7,payload:D7})){};const j7=/*#__PURE__*/ jx(/*#__PURE__*/ G({...O7,...E7,resourceTemplates:/*#__PURE__*/ K(f7)}),[FS]);var zxe=class extends (/*#__PURE__*/ J(`resources/templates/list`,{success:j7,error:u7,payload:D7})){};const M7=/*#__PURE__*/ jx(/*#__PURE__*/ G({...E7,contents:/*#__PURE__*/ K(bxe)}),[FS]);var Bxe=class extends (/*#__PURE__*/ J(`resources/read`,{success:/*#__PURE__*/ q([M7,w7]),error:u7,payload:{...T7,uri:W}})){};const N7=/*#__PURE__*/ jx(/*#__PURE__*/ G({...O7,...E7,prompts:/*#__PURE__*/ K(_7)}),[FS]);var Vxe=class extends (/*#__PURE__*/ J(`prompts/list`,{success:N7,error:u7,payload:D7})){};const P7=/*#__PURE__*/ jx(/*#__PURE__*/ G({...l7,description:/*#__PURE__*/ $(W),messages:/*#__PURE__*/ K(xxe)}),[FS]);var Hxe=class extends (/*#__PURE__*/ J(`prompts/get`,{success:/*#__PURE__*/ q([P7,w7]),error:u7,payload:{...T7,name:W,arguments:/*#__PURE__*/ $(/*#__PURE__*/ Ax(W,W))}})){};const F7=/*#__PURE__*/ jx(/*#__PURE__*/ G({...O7,...E7,tools:/*#__PURE__*/ K(v7)}),[FS]);var Uxe=class extends (/*#__PURE__*/ J(`tools/list`,{success:F7,error:u7,payload:D7})){};const I7=/*#__PURE__*/ jx(/*#__PURE__*/ G({...l7,content:/*#__PURE__*/ K(g7),structuredContent:/*#__PURE__*/ $(PS),isError:/*#__PURE__*/ $(Ex)}),[FS]);var Wxe=class extends (/*#__PURE__*/ J(`tools/call`,{success:/*#__PURE__*/ q([I7,w7]),error:u7,payload:{...T7,name:W,arguments:/*#__PURE__*/ $(FS)}})){};const Gxe=W8,Kxe=G8,L7=/*#__PURE__*/ jx(/*#__PURE__*/ G({...l7,completion:/*#__PURE__*/ G({values:/*#__PURE__*/ K(W).check(/*#__PURE__*/ $x(100)),total:/*#__PURE__*/ $(Xx),hasMore:/*#__PURE__*/ $(Ex)})}),[FS]);var qxe=class extends (/*#__PURE__*/ J(`completion/complete`,{success:L7,error:u7,payload:{...o7.fields,ref:/*#__PURE__*/ q([Gxe,Kxe]),argument:/*#__PURE__*/ G({name:W,value:W}),context:/*#__PURE__*/ $(/*#__PURE__*/ G({arguments:/*#__PURE__*/ $(/*#__PURE__*/ Ax(W,W))}))}})){};const R7=/*#__PURE__*/ G({toolsListChanged:/*#__PURE__*/ $(Ex),promptsListChanged:/*#__PURE__*/ $(Ex),resourcesListChanged:/*#__PURE__*/ $(Ex),resourceSubscriptions:/*#__PURE__*/ $(/*#__PURE__*/ K(W))}),z7=/*#__PURE__*/ jx(/*#__PURE__*/ G({_meta:/* @__PURE__ */ jx(/*#__PURE__*/ G({"io.modelcontextprotocol/serverInfo":i7,"io.modelcontextprotocol/subscriptionId":e7}),[FS]),resultType:/*#__PURE__*/ bx(`complete`)}),[FS]);var Jxe=class extends (/*#__PURE__*/ J(`subscriptions/listen`,{success:z7,error:u7,payload:{...o7.fields,notifications:R7}})){},B7=class extends (/*#__PURE__*/ J(`notifications/cancelled`,{payload:{...s7.fields,requestId:e7,reason:/*#__PURE__*/ $(W)}})){},Yxe=class extends (/*#__PURE__*/ J(`notifications/progress`,{payload:{...s7.fields,progressToken:t7,progress:qx,total:/*#__PURE__*/ $(qx),message:/*#__PURE__*/ $(W)}})){},Xxe=class extends (/*#__PURE__*/ J(`notifications/message`,{payload:{...s7.fields,level:r7,logger:/*#__PURE__*/ $(W),data:PS}})){},V7=class extends (/*#__PURE__*/ J(`notifications/resources/updated`,{payload:{...s7.fields,uri:W}})){},H7=class extends (/*#__PURE__*/ J(`notifications/resources/list_changed`,{payload:/*#__PURE__*/ Lx(s7)})){},U7=class extends (/*#__PURE__*/ J(`notifications/tools/list_changed`,{payload:/*#__PURE__*/ Lx(s7)})){},W7=class extends (/*#__PURE__*/ J(`notifications/prompts/list_changed`,{payload:/*#__PURE__*/ Lx(s7)})){},G7=class extends (/*#__PURE__*/ J(`notifications/subscriptions/acknowledged`,{payload:{...s7.fields,notifications:R7}})){},K7=class extends (/*#__PURE__*/ aN(Lxe,qxe,Hxe,Vxe,Rxe,zxe,Bxe,Jxe,Wxe,Uxe)){},q7=class extends (/*#__PURE__*/ aN(B7)){},Zxe=class extends (/*#__PURE__*/ K7.merge(q7)){},Qxe=class extends (/*#__PURE__*/ aN()){},$xe=class extends (/*#__PURE__*/ aN(B7,Yxe,Xxe,V7,H7,U7,W7,G7)){};const eSe=/*#__PURE__*/ Ax(W,FS),tSe=/*#__PURE__*/ cx(a7),nSe=/*#__PURE__*/ cx(B7.payloadSchema),rSe=/*#__PURE__*/ sx(PS),J7=/*#__PURE__*/ fx(i7),Y7=e=>{let t={};for(let n in e)e[n]!==void 0&&(t[n]=e[n]);return t},iSe=(e,t)=>{if(Pt(t))return e===void 0;if(e===void 0)return!1;let n=h6(e);return n!==void 0&&EE(t).pipe(DE(hce,e=>n===e),DE(_ce,e=>n===String(e)),DE(gce,e=>Number.isSafeInteger(e)&&n.trim().length>0&&Number(n)===e),jE(()=>!1))},aSe=/*#__PURE__*/ U(function*(e){let t=yield*tSe(e);return{protocolVersion:Q5,clientCapabilities:t[`io.modelcontextprotocol/clientCapabilities`],clientInfo:t[`io.modelcontextprotocol/clientInfo`],requestMetadata:t}}),X7=(e,t)=>{let n=e._meta;return{...zt(n)?n:{},"io.modelcontextprotocol/serverInfo":t}},Z7=(e,t)=>Y7({_meta:{"io.modelcontextprotocol/serverInfo":t},resultType:`input_required`,inputRequests:e.inputRequests,requestState:e.requestState}),Q7=/*#__PURE__*/ cx(/*#__PURE__*/ q([I7,w7])),$7=/*#__PURE__*/ U(function*(e,t){let n=yield*J7(t);return e._tag===`Complete`?yield*Q7({...Y7(e.value),_meta:X7(e.value,n),resultType:`complete`}):yield*Q7(Z7(e,n))}),oSe=(e,t)=>{let n={};for(let r of Object.values(e??{}))EE(r).pipe(DE({method:`roots/list`},()=>{t.roots===void 0&&(n.roots={})}),DE({method:`sampling/createMessage`},e=>{let r=n.sampling??{};S6(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)}),DE({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]={})}),ME);return n},e9=e=>Y7({uri:e.uri,mimeType:e.mimeType,_meta:e._meta,...`text`in e?{text:e.text}:{blob:Ym(e.blob)}}),t9=/*#__PURE__*/ TE().pipe(/*#__PURE__*/ DE({type:/*#__PURE__*/ AE(`text`,`resource_link`)},e=>e),/*#__PURE__*/ DE({type:/*#__PURE__*/ AE(`image`,`audio`)},e=>Y7({type:e.type,mimeType:e.mimeType,data:Ym(e.data),annotations:e.annotations,_meta:e._meta})),/*#__PURE__*/ DE({type:`resource`},e=>Y7({type:`resource`,resource:e9(e.resource),annotations:e.annotations,_meta:e._meta})),ME),sSe=e=>d7.make(e),cSe=e=>f7.make(e),lSe=e=>T6(Nye,_7,e),uSe=e=>T6(Y3,v7,e),n9={ttlMs:0,cacheScope:`private`},r9=/*#__PURE__*/ U(function*(e,t){let n=yield*J7(t);return{...Y7(e),_meta:X7(e,n),resultType:`complete`}}),dSe=/*#__PURE__*/ TE().pipe(/*#__PURE__*/ OE(`ResourceNotFound`,e=>new C6({code:-32602,message:`Resource '${e.uri}' not found`,data:{uri:e.uri}})),/*#__PURE__*/ OE(`ToolNotFound`,`InvalidToolInput`,`InvalidToolContinuation`,`ToolExecutionError`,`UnsupportedByProtocol`,C6.fromTool),/*#__PURE__*/ jE(C6.fromFeature)),i9=e=>{let t=dSe(e);return u7.make({code:t.code,message:t.message,...rSe(t.data)?{data:t.data}:{}})},a9=/*#__PURE__*/ U(function*(e,t){let n=yield*mp(Ij);return pi(n)&&rM(n.value,(t,n)=>I(Qk(n,e))),yield*t}),fSe=e=>nSe(e).pipe(H(e=>({requestId:e.requestId,reason:e.reason,metadata:e._meta}))),o9=e=>new a6({operation:e,protocolVersion:Q5,reason:`MCP 2026-07-28 carries server input requests in multi round-trip results`}),s9=/* @__PURE__ */ O6({protocolVersion:Q5,runtime:{_tag:`Stateless`,transport:{jsonRpc:{acceptsBatches:!1},http:{}},profileFromRequestMetadata:aSe},clientRpcs:Zxe,clientNotificationRpcs:q7,serverRequestRpcs:Qxe,serverNotificationRpcs:$xe,handlerRpcs:/* @__PURE__ */ K7.merge(q7),makeHandlers:(e,t,n)=>{let r=cx(eSe),i=cx(k7),a=cx(A7),o=cx(j7),s=cx(M7),c=cx(N7),l=cx(P7),u=cx(q([P7,w7])),d=cx(L7),f=cx(F7),p=n.sendNotification,m=p!==void 0,h=n.serverInfo.extensions===void 0?void 0:ma(n.serverInfo.extensions,e=>zt(e)),g=H(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}}),_=o6.useSync(v6),v=U(function*(e){let t=yield*o6,n=e.inputResponses===void 0?void 0:yield*r(e.inputResponses).pipe(Qf);return v6(o6.of({...t,inputResponses:n,requestState:e.requestState}))}),y=U(function*(e,t){let n=oSe(e.inputRequests,t);if(Object.keys(n).length!==0)return yield*a9(400,new C6({code:-32021,message:`The request requires client capabilities that were not declared`,data:{requiredCapabilities:n}}))});return{"subscriptions/listen":U(function*(e,{client:t,requestId:r}){if(p===void 0)return yield*new C6({code:-32601,message:`Method not found: subscriptions/listen`});let i=yield*n.registrationPresence,a=yield*xd(yield*_p),o=n.getListChangeRevision?.()??0,s=yield*vd(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*Woe(64),f=yield*rd();yield*z(function*(){for(;;){let e=yield*pC(s);if(e.listChangeRevision!==void 0&&e.listChangeRevision<=o||e.targetClientId!==void 0&&e.targetClientId!==t.id)continue;let n=e.notification,r=EE(n).pipe(kE({ToolsChanged:()=>c.toolsListChanged===!0?U7:void 0,PromptsChanged:()=>c.promptsListChanged===!0?W7:void 0,ResourcesChanged:()=>c.resourcesListChanged===!0?H7:void 0,ResourceUpdated:e=>u.has(e.uri)?V7:void 0}),ME);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*yC(d,i)))break}}).pipe(Td(a),Bf(jf(()=>n.markSubscriptionCancelled?.(t.id,r)??R)),Bf(ud(f,void 0)),Rp),yield*p(Q5,t.id,{tag:G7._tag,payload:G7.payloadSchema.make({_meta:l,notifications:c})});let m=Mp(kC(d).pipe(V(e=>p(Q5,t.id,e))));yield*rie(m,id(f)),yield*n.terminateSubscription?.(`2026-07-28`,t.id,r,`Pending notification limit exceeded`)??R;let h=yield*J7(n.serverInfo);return z7.make({_meta:{...l,"io.modelcontextprotocol/serverInfo":h},resultType:`complete`})},Zf(i9)),"server/discover":U(function*(e){let t=yield*g,r=yield*r9({...n9,supportedVersions:Array.from(t.supportedVersions),capabilities:t.capabilities,instructions:n.serverInfo.instructions},n.serverInfo);return yield*i(r)},Zf(i9)),"resources/list":U(function*(t){let r=yield*_,i=yield*e.resources.list(r.protocol),o=yield*r9({...n9,resources:i.map(sSe)},n.serverInfo);return yield*a(o)},Zf(i9)),"resources/templates/list":U(function*(t){let r=yield*_,i=yield*e.resources.listTemplates(r.protocol),a=yield*r9({...n9,resourceTemplates:i.map(cSe)},n.serverInfo);return yield*o(a)},Zf(i9)),"resources/read":U(function*(t){let r=yield*v(t),i=yield*e.resources.read(t.uri,r),a=i.contents.map(e9),o=yield*r9({...n9,contents:a,_meta:i._meta},n.serverInfo);return yield*s(o)},Zf(i9)),"prompts/list":U(function*(t){if(!(yield*n.registrationPresence).prompts)return yield*a9(404,new C6({code:D3,message:`Method not found`}));let r=yield*_,i=yield*e.prompts.list(r.protocol),a=yield*Ef(i,lSe),o=yield*r9({...n9,prompts:a},n.serverInfo);return yield*c(o)},Zf(i9)),"prompts/get":U(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*J7(n.serverInfo);return yield*u(Z7(i,e))}let a=i.value,o=a.messages.map(e=>({role:e.role,content:t9(e.content)})),s=yield*r9({description:a.description,messages:o,_meta:a._meta},n.serverInfo);return yield*l(s)},Zf(i9)),"completion/complete":U(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*r9({completion:Y7({values:Array.from(i.values),total:i.total,hasMore:i.hasMore}),_meta:i.metadata},n.serverInfo);return yield*d(a)},Zf(i9)),"tools/list":U(function*(t){let r=yield*_,i=yield*e.tools.list(r.protocol),a=yield*Ef(i,uSe),o=yield*r9({...n9,tools:a},n.serverInfo);return yield*f(o)},Zf(i9)),"tools/call":U(function*(t){let r=yield*v(t),i=(yield*e.tools.list(r.protocol)).find(e=>e.name===t.name),a=yield*mp(Ij);if(i!==void 0&&pi(a)){let e=[{schema:i.inputSchema,argument:t.arguments,path:``}];for(;e.length>0;){let{schema:t,argument:n,path:r}=e.pop();if(!zt(t))continue;let i=t[`x-mcp-header`];if(typeof i==`string`){let e=`mcp-param-${i.toLowerCase()}`;if(!iSe(a.value.headers[e],n))return yield*a9(400,new C6({code:A3,message:`${e} does not match argument '${r}'`}))}if(zt(t.properties))for(let[i,a]of Object.entries(t.properties))e.push({schema:a,argument:zt(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(qf([`ToolExecutionError`,`InvalidToolInput`],e=>I(u6.Complete(X3.make({content:[H3.make({type:`text`,text:e.message})],isError:!0})))));if(o._tag===`InputRequired`)return yield*y(o,r.protocol.clientCapabilities),yield*$7(o,n.serverInfo);let s=o.value,c=s.content.map(t9);return yield*$7(u6.Complete({content:c,structuredContent:s.structuredContent,isError:s.isError,_meta:s._meta}),n.serverInfo)},Zf(i9)),"notifications/cancelled":U(function*(e){return yield*R})}},toReverseClient:()=>({listRoots:()=>B(o9(`roots/list`)),createMessage:()=>B(o9(`sampling/createMessage`)),elicit:()=>B(o9(`elicitation/create`))}),projectNotification:e=>D6(e)?I(void 0):E6({supportsProgressMessage:!0},e),normalizeCancellation:fSe}),pSe=gxe,mSe=Kbe,c9=/*#__PURE__*/ new WeakMap,l9=/*#__PURE__*/ Yi(`effect/ai/McpServer/RequestNotificationQueue`,{defaultValue:()=>void 0}),u9=e=>e._tag===`Progress`||e._tag===`LoggingMessage`,hSe=/*#__PURE__*/ Kye.omit(`notifications/elicitation/complete`),d9=/*#__PURE__*/ sx(Q3),gSe=e=>{switch(e.tag){case`notifications/cancelled`:return p6.Cancelled({requestId:e.payload.requestId,reason:e.payload.reason,metadata:e.payload._meta});case`notifications/progress`:return p6.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 p6.LoggingMessage({level:e.payload.level,logger:e.payload.logger,data:e.payload.data,metadata:e.payload._meta});case`notifications/resources/updated`:return p6.ResourceUpdated({uri:e.payload.uri,metadata:e.payload._meta});case`notifications/resources/list_changed`:return p6.ResourcesChanged({metadata:e.payload?._meta});case`notifications/tools/list_changed`:return p6.ToolsChanged({metadata:e.payload?._meta});case`notifications/prompts/list_changed`:return p6.PromptsChanged({metadata:e.payload?._meta});default:return}},f9=(e,t)=>{let n=gp(e,o6,t.requestContext),r=t.requestContext.requestMetadata,i=P(r,`io.modelcontextprotocol/logLevel`)?r[`io.modelcontextprotocol/logLevel`]:void 0;return d9(i)&&(n=gp(n,pd,m6[i].effect)),t.serverClient===void 0?n:gp(n,s6,t.serverClient)};var p9=class e extends (/*#__PURE__*/ F()(`effect/ai/McpServer`)){static make=/*#__PURE__*/ z(function*(){let t=yield*$ye,n=Aa(),r=[],i=[],a=[],o=yield*_C(),s={consumers:0,listChangeRevision:0,requestEndpoints:0},c=()=>s.consumers===0&&s.requestEndpoints>0,l=/* @__PURE__ */ new Map,u=(yield*co).makeDispatcher(),d=yield*qM(hSe,{spanPrefix:`McpServer/Notifications`,onFromClient:e=>rd().pipe(V(t=>Rf(n=>{let r=e.message;if(r._tag!==`Request`)return R;let i=gSe(r);if(i===void 0)return R;let a={notification:i,delivered:t,requestContext:Bi(n.context,o6),requestHeaders:Bi(n.context,Ij)?.headers},f=jf(()=>d.write({clientId:0,requestId:r.id,_tag:`Exit`,exit:qu})),p=Ui(n.context,l9);if(p!==void 0&&a.requestContext!==void 0&&u9(i))return bC(p,a),Bf(id(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),bC(o,a)},0)):t.listChangeRevision=e}else m=!0,bC(o,a);return m&&a.requestContext!==void 0&&s.consumers>0?Bf(id(t),f):f})))}),f=e.of({notifications:d.client,notifyElicitationComplete:({clientId:e,elicitationId:t})=>c()?R:rd().pipe(V(n=>yC(o,{notification:p6.ElicitationComplete({elicitationId:t}),targetClientId:e,delivered:n}).pipe(Bf(jf(()=>s.consumers>0?id(n):R))))),get tools(){return n},addTool:e=>z(function*(){let r=n.findIndex(({tool:t})=>t.name===e.tool.name);r===-1?n.push(e):n[r]=e;let i=Bi(e.annotations,l6);yield*t.tools.register({descriptor:new Y3({...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)=>f9(e.handle(t.arguments),n).pipe(Qre({InternalError:t=>B(new Zye({name:e.tool.name,message:t.message})),InvalidParams:t=>B(new(n.requestContext.requestState===void 0&&n.requestContext.inputResponses===void 0?Yye:Xye)({name:e.tool.name,message:t.message}))}),H(e=>Vt(e,`InputRequired`)?u6.InputRequired(e):u6.Complete(e)))}),yield*d.client[`notifications/tools/list_changed`]({})}),callTool:e=>z(function*(){let n=yield*s6,r=yield*t.tools.call(e,_6(n)).pipe(Zf(e=>new P3({message:e._tag===`ToolNotFound`?`Tool '${e.name}' not found`:e.message})));return r._tag===`InputRequired`?yield*new P3({message:`Client input is not supported by this MCP protocol`}):r.value}),get resources(){return r},get resourceTemplates(){return i},addResource:e=>z(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=Bi(e.annotations,l6);return n===void 0||n({protocolVersion:t.protocolVersion,capabilities:t.clientCapabilities,clientInfo:t.clientInfo})},read:t=>f9(e.handle,t)}),yield*d.client[`notifications/resources/list_changed`]({})}),addResourceTemplate:({annotations:e,completions:n,handle:r,routerPath:a,template:o})=>z(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=wSe();c.add(a,!0),yield*t.resources.registerTemplate({descriptor:o,isVisible:t=>{let n=Bi(e,l6);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)=>f9(r(e,Array.from(t)),n)});for(let[e,r]of Object.entries(n))yield*t.completions.register(`resource/${o.uriTemplate}/${e}`,(e,t)=>f9(r(e.argument.value,e.context),t).pipe(H(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=>z(function*(){let n=yield*s6;return yield*t.resources.read(e,_6(n)).pipe(qf(`ResourceNotFound`,e=>B(new P3({message:`Resource '${e.uri}' not found`}))))}),get prompts(){return a},addPrompt:e=>z(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=Bi(e.annotations,l6);return n===void 0||n({protocolVersion:t.protocolVersion,capabilities:t.clientCapabilities,clientInfo:t.clientInfo})},get:(t,n)=>f9(e.handle(t),n).pipe(H(e=>Vt(e,`InputRequired`)?u6.InputRequired(e):u6.Complete(e)))});for(let[n,r]of Object.entries(e.completions))yield*t.completions.register(`prompt/${e.prompt.name}/${n}`,(e,t)=>f9(r(e.argument.value,e.context),t).pipe(H(e=>({values:e.completion.values,total:e.completion.total,hasMore:e.completion.hasMore,metadata:e._meta}))));yield*d.client[`notifications/prompts/list_changed`]({})}),getPromptResult:U(function*({arguments:e,name:n}){let r=yield*s6,i=yield*t.prompts.get(n,e??{},_6(r)).pipe(qf(`PromptNotFound`,()=>new P3({message:`Prompt '${n}' not found`})));return i._tag===`Complete`?i.value:yield*new P3({message:`Client input is not supported by this MCP protocol`})}),completion:U(function*(e){let n=yield*s6,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},_6(n));return{_meta:i.metadata,completion:{values:i.values,total:i.total,hasMore:i.hasMore}}})});return c9.set(f,{core:t,notifications:o,notificationDelivery:s}),f});static layer=/*#__PURE__*/ Ud(e)(e.make)};const m9=`mcp-session-id`,h9=/*#__PURE__*/ new WeakMap,g9=/*#__PURE__*/ new WeakMap,_9=e=>`${typeof e}:${e}`;var v9=class extends po{};const y9=/*#__PURE__*/ U(function*(e,t,n,r){let i=yield*nN,a=yield*p9,o=yield*pd,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*cC(),h=(e,n,r)=>jf(()=>{let a=t.selectProtocol(e),o=a.serverNotificationRpcs.requests.get(r.tag);return o===void 0?If(`MCP protocol ${e} does not define server notification ${r.tag}`):a.payloadCodecs(o).encode(r.payload).pipe(Qf,V(e=>i.send(n,{_tag:`Request`,id:``,tag:r.tag,payload:e,headers:[],isNotification:!0})))}),g=(e,t)=>{let n=l.get(e),r=_9(t),i=n?.get(r);return i!==void 0&&(n.set(r,{...i,cancelled:!0}),!0)},_=(e,t,n,r)=>jf(()=>g(t,n)?s?i.end(t):h(e,t,{tag:`notifications/cancelled`,payload:{requestId:n,reason:r}}):R),v,{core:y,notificationDelivery:b,notifications:x}=c9.get(a),S=r?.handlers??(yield*t.installHandlers({core:y,subscribeServerNotifications:dC(m),getListChangeRevision:()=>b.listChangeRevision,...!i.supportsNotifications||e.allowSubscriptions===!1?{}:{sendNotification:h,markSubscriptionCancelled:(e,t)=>L(()=>{g(e,t)}),terminateSubscription:_},defaultLogLevel:o,serverInfo:e})),ee=yield*pT({lookup:U(function*(e){let n=t.selectProtocol(e.profile.protocolVersion),r,a=yield*YM.make(U(function*(t){let n=0;return r=e=>t(n,e),{send(t,r,a){if(n=t,r._tag===`Request`){let t=_9(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(Sp(()=>L(()=>p(t,e))))}return r._tag===`Interrupt`?(p(_9(r.requestId),e),h(e.profile.protocolVersion,e.clientId,{tag:`notifications/cancelled`,payload:{requestId:r.requestId}})):R},supportsAck:!0,supportsTransferables:!1,supportsStructuredClone:!1,codecFor:i.codecFor}}));return{client:yield*n.makeReverseClient(e.profile).pipe(gp(YM,a)),write:r}}),idleTimeToLive:1e4}),te=c6.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=zS(),t=Bi(e.context,Ij);return t&&rM(t,()=>I(Ik({status:r[m9]===void 0?400:404}))),If(/* @__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 If(`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=o6.of({clientId:n.id,protocolVersion:f.protocolVersion,clientCapabilities:f.clientCapabilities,clientInfo:f.clientInfo,requestMetadata:l._meta});return gp(gp(gp(e,s6,s6.of({clientId:n.id,protocolVersion:f.protocolVersion,clientCapabilities:f.clientCapabilities,clientInfo:f.clientInfo,initializePayload:l,requestMetadata:zt(i)&&zt(i._meta)?i._meta:void 0,getClient:mT(ee,new v9({clientId:n.id,profile:f})).pipe(H(({client:e})=>e))})),o6,p),pd,t.effectLogLevel(n.id,r,o))}),C=nN.of({...i,send:(e,t)=>{if(t._tag===`Exit`){let r=l.get(e),a=_9(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`?R:(o.httpPost!==void 0&&o.httpPost.expected--,h9.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 F3({message:`Internal error`})}]}})}return i.send(e,t)},run:e=>(v=e,i.run((n,r)=>{let i=zS(),a=r,o=s?Bi(i.context,Ij):void 0;switch(o!==void 0&&a._tag!==`Eof`&&rM(o,(e,t)=>I(t.status===200&&t.body._tag===`Uint8Array`&&t.body.contentLength===0?Ik({headers:Zh(t.headers,`content-type`),status:202}):t)),a._tag){case`Request`:{if(o!==void 0&&a.isNotification!==!0){let e=g9.get(o)??{expected:0};e.expected++,g9.set(o,e)}let r=s?Hi(zS().context,Ij).headers:Kh(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(_9(a.payload.requestId)):void 0,p=u===void 0?t.prepareRequest(n,r,a):I(u.prepared);return z(function*(){let u=yield*p,m=c.get(n);s&&m===void 0&&(yield*bd(Hi(i.context,hd),L(()=>d(n))));let h=u.binding,_=u.protocol;if(c.set(n,{protocol:_,profile:u.profile??m?.profile,sessionHeaders:s&&r[m9]!==void 0?Kh({[m9]:r[m9]}):m?.sessionHeaders}),a.tag===`invalid/json-rpc-batch`)return yield*f(n,a.id,new M3({message:`JSON-RPC batches are not supported`}));o!==void 0&&h!==void 0&&rM(o,(e,i)=>I(t.resolveRequest(n,r)===void 0?Ik({status:404}):Kk(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&&rM(o,()=>I(Ik({status:r[m9]===void 0?400:404})));return}let t=_.payloadCodecs(y).decode(a.payload);return yield*z(function*(){let i=yield*t;if(a.tag===`notifications/cancelled`){let t=yield*_.normalizeCancellation(i),r=_9(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:RM(a.id),client:new NM(n),headers:r}):R;return yield*u.requestContext===void 0?c:gp(c,o6,u.requestContext)}).pipe(np)}if(!y||b)return a.isNotification?void 0:yield*f(n,a.id,new N3({message:`Method not found: ${a.tag}`}));let x=yield*Hf(_.payloadCodecs(y).decode(a.payload));if(na(x))return yield*a.isNotification?R:f(n,a.id,new P3({message:`Invalid method parameters`}));if(a.isNotification!==!0){let e=l.get(n)??/* @__PURE__ */ new Map;e.set(_9(a.id),{requestId:RM(a.id),prepared:u,cancelled:!1,httpPost:o===void 0?void 0:g9.get(o)}),l.set(n,e)}let ee=e(n,v);return yield*u.requestContext===void 0?ee:gp(ee,o6,u.requestContext)}).pipe(Kf(e=>a.isNotification?R:f(n,a.id,Vt(e,`ProtocolError`)?C6.fromFeature(e):new P3({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`?_9(a.requestId):void 0,r=s?t.resolveRequest(n,Hi(zS().context,Ij).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 R;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 mT(ee,new v9({clientId:o,profile:f})).pipe(V(({write:e})=>e(a)),vp)}}}))});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 Tf(t,{discard:!0})})),r===void 0&&(yield*yp(L(()=>{b.consumers++}),()=>L(()=>{b.consumers--})));let ne=/* @__PURE__ */ new Map;return yield*kC(r?.notifications??x).pipe(V(U(function*(e){let{delivered:n,listChangeRevision:r,notification:i,targetClientId:a,requestContext:l,requestHeaders:u}=e;D6(i)&&(yield*uC(m,{notification:i,targetClientId:a,listChangeRevision:r}));let d=yield*C.clientIds;for(let e of c.keys())d.has(e)||(c.delete(e),t.disconnect(e));let f=u9(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(!C.supportsNotifications)continue;let r=f&&l!==void 0?t.selectProtocol(l.protocolVersion):c.get(e)?.protocol;if(!r)continue;let s=ne.get(e),p=e===(a??l?.clientId);g||=p;let m=p?n:nd();ne.set(e,m);let _=z(function*(){s!==void 0&&(yield*id(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=P(t,`io.modelcontextprotocol/logLevel`)?t[`io.modelcontextprotocol/logLevel`]:void 0;if(l?.clientId!==e||!d9(n)||Q3.literals.indexOf(i.level)<Q3.literals.indexOf(n))return}else if(!t.canDeliver(e,(l?.clientId===e?u:void 0)??c.get(e)?.sessionHeaders??Gh,i,o))return;let a=r.serverNotificationRpcs.requests.get(n.tag);if(!a)return;let d=yield*r.payloadCodecs(a).encode(n.payload);yield*C.send(e,{_tag:`Request`,id:``,tag:n.tag,payload:d,headers:[],isNotification:!0})}).pipe(np,xp(L(()=>{dd(m,qu),ne.get(e)===m&&ne.delete(e)})));h.push(_)}g||(yield*ud(n,void 0)),yield*Tf(h,{concurrency:`unbounded`,discard:!0}).pipe(Rp({startImmediately:!0}))})),np,Mp,Rp),yield*lle(t.clientRpcs,{spanPrefix:`McpServer`,disableFatalDefects:!0}).pipe(gp(nN,C),gp(c6,te),dp(S))},vp),_Se=(e,t)=>Kd(z(function*(){let n=yield*V6;yield*Rp(y9(e,n,t))})).pipe(ef(p9.layer)),vSe=e=>{let t=U6(e.protocols);return _Se(e,`http`).pipe($d(bSe(e)),$d(t),$d(Qce()))},ySe=e=>Kd(z(function*(){let t=yield*V6,n=t.protocols.find(e=>e.runtime._tag===`Stateful`);if(n!==void 0)return yield*new Lu(`McpServer.layerHttpRequestScoped does not support the sessionful MCP protocol ${n.protocolVersion}`);let r=yield*p9,{core:i,notificationDelivery:a}=c9.get(r),o=yield*t.installHandlers({core:i,subscribeServerNotifications:If(`Subscriptions are disabled for request-scoped MCP servers`),getListChangeRevision:()=>a.listChangeRevision,defaultLogLevel:yield*pd,serverInfo:e});yield*yp(L(()=>{a.requestEndpoints++}),()=>L(()=>{a.requestEndpoints--})),yield*b9(e,z(function*(){let{httpEffect:n,protocol:i}=yield*rN().pipe(gp(HM,x9)),a=yield*_C();return yield*y9(e,t,`http`,{notifications:a,handlers:o}).pipe(gp(nN,i),gp(p9,r),Rp({startImmediately:!0})),yield*gp(n,l9,a)}))})).pipe(ef(p9.layer),$d(U6(e.protocols))),bSe=e=>Ud(nN)(z(function*(){let{httpEffect:t,protocol:n}=yield*rN().pipe(gp(HM,x9));return yield*b9(e,t),n})),b9=/*#__PURE__*/ U(function*(e,t){let n=yield*V6,r=yield*oM,i=e.allowSessionTermination===!0&&n.protocols.some(e=>e.runtime._tag===`Stateful`),a=I(Ik({status:403})),o=t=>n=>C9(n,e.allowedOrigins)?t(n):a,s=I(Ik({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(!C9(r,e.allowedOrigins))return I(Ik({status:403}));if(w9(r.headers[`content-type`])[0]!==`application/json`)return I(Ik({status:415}));let i=w9(r.headers.accept);return!i.includes(`application/json`)||!i.includes(`text/event-stream`)?I(Ik({status:406})):z(function*(){let e=yield*Hf(V(r.text,lx(cS))),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?CSe(e,i.isSubscription):e};return i.acknowledge?yield*Jf(H(t,a),()=>I(Ik({status:202}))):yield*V(t,e=>e.body._tag!==`Uint8Array`||e.body.body.length>0?I(a(e)):g9.get(r)?.expected===0?I(Gk(PT,{contentType:`text/event-stream`})):If(/* @__PURE__ */ Error(`MCP request ended without writing its response`)))})})}),x9=/*#__PURE__*/ (()=>{let e=/*#__PURE__*/ SSe();return HM.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}}}})})(),xSe=/*#__PURE__*/ sx(/*#__PURE__*/ Vx(`Cause`,{data:/*#__PURE__*/ doe([/*#__PURE__*/ Vx(`Fail`,{error:/*#__PURE__*/ soe(I3)})])})),S9=e=>Array.isArray(e)?e.map(S9):!zt(e)||!P(e,`error`)?e:xSe(e.error)?{...e,error:e.error.data[0].error}:e;function SSe(e){let t=UM(e);return HM.of({...t,makeUnsafe:()=>{let e=t.makeUnsafe(),n=/* @__PURE__ */ new Set;return{decode:e.decode,encode:t=>{if(zt(t)){let e=h9.get(t);e!==void 0&&(h9.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=>!(zt(e)&&!P(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(S9(i))}}}})}const CSe=(e,t)=>{let n=new TextEncoder,r=new TextDecoder,i=e=>n.encode(r.decode(e).trimEnd().split(`
535
535
  `).map(e=>`data: ${e}\n\n`).join(``)),a={status:e.status,statusText:e.statusText,headers:Zh(e.headers,`content-type`),cookies:e.cookies,contentType:`text/event-stream`};if(e.body._tag===`Stream`){let r=e.body.stream.pipe(zT(i));if(!t)return Gk(r,a);let o=tse(`15 seconds`).pipe(dse(1),zT(()=>n.encode(`: keepalive
536
536
 
537
- `)));return Gk(VT(r,o,{haltStrategy:`left`}),a)}return e.body._tag===`Uint8Array`?Rk(i(e.body.body),a):Kk(e,`content-type`,`text/event-stream`)},C9=(e,t)=>{let n=e.headers.origin;return n===void 0||(t??[]).includes(n)},w9=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()]}),wSe=()=>{let e=Tk({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`,T9=s9,ESe=[s9,pSe,mSe],DSe=sx(PI),OSe=sx(K(PI)),E9=e=>II(yI(e)),D9=e=>{let t=yI(e),n=II(t);if(n!==void 0)return{kind:n,many:!1};if(!cv(t)||t.encoding!==void 0)return;let[r,...i]=new Set([...t.elements,...t.rest].map(E9));return r===void 0||i.length>0?void 0:{kind:r,many:!0}},kSe=e=>{let t=e.context?.isOptional===!0,n=yI(e);if(t&&uv(n)&&n.types.length===2){let[e,...t]=n.types.filter(e=>!nv(e)),r=e===void 0||t.length>0?void 0:E9(e);return r===void 0?void 0:{kind:r,many:!1}}let r=D9(n);return r===void 0||t&&r.many?void 0:r},O9=e=>{let t=yI(e.ast),n=D9(t);if(n!==void 0)return{fields:[{name:void 0,...n}],rest:void 0};if(!lv(t)||t.encoding!==void 0)return{fields:[],rest:e};let r=t.propertySignatures.flatMap(({name:e,type:t})=>{let n=kSe(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:hx(new Rv(a,t.indexSignatures,s))}},ASe=e=>[...ev(e)?e.typeParameters:[],...cv(e)?[...e.elements,...e.rest]:[],...lv(e)?[...e.propertySignatures,...e.indexSignatures].map(({type:e})=>e):[],...uv(e)?e.types:[],...dv(e)?[e.thunk()]:[],...(e.encoding??[]).map(({to:e})=>e)],jSe=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),FI(e))return!0;n.push(...ASe(e))}return!1},MSe=(e,{rest:t})=>[e.input,...e.error,...t===void 0?[]:[t]].some(({ast:e})=>jSe(e)),NSe=(e,t)=>e.fields.flatMap(({name:e,kind:n,many:r})=>{let i=e===void 0?t:P(t,e)?t[e]:void 0;return(r?OSe(i)?i:[]:DSe(i)?[i]:[]).map(t=>({kind:n,field:e,value:t}))}),PSe=sx(q3),k9=(e,t)=>{let n=Ooe(e,{onExcessProperty:t?`error`:`ignore`}),[r,i]=Tt(n.schema.$ref)?Cb(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}},FSe=e=>{let t=e.map(([e])=>e).filter(e=>!PSe(k9(jS(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])=>MSe(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(`, `)}`)},ISe=e=>new X3({isError:!0,content:[{type:`text`,text:e}]}),A9=e=>e===void 0?[]:[{type:`text`,text:JSON.stringify(e)}],LSe=({kind:e,field:t,value:n})=>({type:e,data:n.data,mimeType:n.mimeType,...t===void 0?{}:{_meta:{"effect-actions/field":t}}}),RSe=(e,t)=>H(cx(q3)(k9(jS(e.input),!0)),n=>new Y3({name:e.name,description:e.description,inputSchema:n,outputSchema:t,annotations:{...e.mcp.title===void 0?{}:{title:e.mcp.title},...bye(e)},_meta:e.mcp._meta===void 0?void 0:{...e.mcp._meta}})),zSe=U(function*(e,t){let n=yield*p9,r=yield*jI(e),i=yield*lp(),a=e=>qp(e).pipe(Bf(nce(e)),Wf(ISe(`Tool execution failed due to an internal server error.`))),o=e=>Mu(e)?a(e):Pf(e);for(let[e,a]of r){let r=O9(e.success),s=r.fields.length===0?void 0:r,c=s===void 0?jS(e.success):s.rest===void 0?void 0:jS(s.rest),l=c===void 0?void 0:yield*cx(J3)(k9(c,!1)).pipe(Qf),u=yield*RSe(e,l).pipe(Qf),d=cx(jS(e.input),MI),f=e=>{let t=dx(jS(e));return e=>Qf(t(e))},p=f(e.success),m=f(q(SI(e))),h=t===void 0||e.caller===cI?a:e=>sB(Ide(t,a(e))),g=new Set(s?.fields.map(({name:e})=>e)),_=(e,t)=>{if(s===void 0)return new X3({isError:!1,structuredContent:e,content:A9(e)});let n=NSe(s,t).map(LSe);if(c===void 0)return new X3({isError:!1,content:n});let r=Rt(e)?Object.fromEntries(Object.entries(e).filter(([e])=>!g.has(e))):e;return new X3({isError:!1,structuredContent:r,content:[...A9(r),...n]})};yield*n.addTool({tool:u,annotations:Fi(),handle:t=>cie({tool:e.name,parameters:t??{}}).pipe(Bf(()=>d(t??{})),Zf(({message:t})=>new P3({message:new xye({toolName:e.name,description:t}).message})),V(e=>h(e).pipe(cp({onFailure:e=>H(m(e),e=>new X3({isError:!0,content:A9(e)})),onSuccess:e=>H(p(e),t=>_(t,e))}))),Jf(o),hp(e=>qi(i,e)))})}}),BSe=(e,t,n=Hd,r)=>{vI(`MCP tool`,e.flatMap(e=>e.actions));let i=e.flatMap(e=>e.actions.map(e=>[e,O9(e.success)]));FSe(i);let a=new Set(i.map(([{name:e}])=>e)),o=z(function*(){let t=(yield*p9).tools.flatMap(({tool:e})=>a.has(e.name)?[e.name]:[]);if(t.length>0)return yield*If(/* @__PURE__ */ Error(`Duplicate MCP tool: ${t.join(`, `)}, claimed by an action and a native feature`));yield*zSe(e,r)});return Kd(o).pipe($d(n),$d(t),nf,AI(e))},VSe=/* @__PURE__ */ new Set([`server/discover`,`tools/list`,`notifications/cancelled`]),HSe=e=>{let t=new Set(e.filter(({caller:e})=>e===cI).flatMap(({name:e})=>[e,`=?base64?${Ym(e)}?=`]));return e=>{if(t.size===0||e[`mcp-protocol-version`]!==T9.protocolVersion)return!0;let n=e[`mcp-method`];if(n===void 0)return!0;if(VSe.has(n))return!1;if(n!==`tools/call`)return!0;let r=e[`mcp-name`];return r===void 0||!t.has(r)}},USe=e=>op(e.json,{onFailure:()=>!0,onSuccess:t=>!P(t,`method`)||t.method===e.headers[`mcp-method`]});function WSe(e,{actions:t,features:n,path:r=`/mcp`,authentication:i,requestScoped:a,allowSubscriptions:o=n!==void 0,...s}){let c=kI(DI(e),t),l=c.flatMap(e=>e.actions);lI(l,i);let u=BSe(c,a===!0?ySe({...s,path:r,protocols:[T9]}):vSe({...s,path:r,protocols:ESe,allowSessionTermination:!0,allowSubscriptions:o}),n,i);if(i===void 0)return u;let d=HSe(l),f=bM(H(VI(i),e=>t=>V(Ij,n=>n.method!==`POST`||d(n.headers)?e.http(t,!1):V(USe(n),n=>e.http(t,n)))));return u.pipe($d(f.layer))}var GSe=`0.23.0`;const KSe=(e,t)=>kf(()=>LW({key:e,data:t})),qSe=(e,t)=>kf(()=>RW({key:e,data:t})),JSe=async(e,t)=>(await Promise.all([WG(e.authCookies.sessionToken.name,t,e.secret),WG(e.authCookies.dontRememberToken.name,`true`,e.secret)])).map(e=>e.split(`;`)[0]).join(`; `),YSe=(e,t)=>Wp(`OwnerAccount.providerSession`)(function*(n){let r=new Date((yield*af)+6e4),i=yield*yp(H4(()=>e.internalAdapter.createSession(n,!0,{expiresAt:r},!0)),t=>Of(()=>e.internalAdapter.deleteSession(t.token))),a=yield*H4(()=>JSe(e,i.token));return new Headers({origin:t,cookie:a})}),XSe=MV(G({id:W}));var j9=class e extends F()(`clankerauth/OwnerAccount`){static layer=Ud(e,z(function*(){let{sql:e}=yield*IV,{auth:t,context:n}=yield*i3,{baseURL:r}=yield*X4,i=yield*KC(1),a=YSe(n,r),o=Wp(`OwnerAccount.find`)(function*(){let t=yield*e`SELECT id FROM user LIMIT 1`;if(t.length)return(yield*XSe(t[0])).id});return{find:o,create:Wp(`OwnerAccount.create`)(function*(e){if(yield*o())return yield*B(NB.of());let{headers:n}=yield*H4(()=>t.api.signUpEmail({body:{name:`Owner`,email:e.email.trim(),password:e.password},returnHeaders:!0}),{refused:B4,conflict:NB.of});return n.getSetCookie()},e=>i.withPermit(e)),caller:(e,t,n)=>({userId:e,email:t,writable:n,providerHeaders:a(e)})}}))},M9=class extends F()(`clankerauth/ResponseCookies`){};const ZSe=H(j9,e=>({setupStatus:()=>e.find().pipe(H(e=>({required:!e}))),setupOwner:Wp(`Administration.setup`)(function*(t){let n=yield*e.create(t);return yield*(yield*M9).add(n),{created:!0}})}));var N9=class extends go(`Unauthorized`){constructor(e={}){super({message:e.message??`Authentication required`}),Object.defineProperty(this,"cause",{value:e.cause})}},P9=class extends AS()(`ProviderUnavailable`,{operation:W},{httpApiStatus:503}){constructor(e){super({operation:e.operation}),Object.defineProperty(this,"cause",{value:e.cause})}},F9=class extends go(`InsufficientScope`){},QSe=class extends AS()(`ConfigurationError`,{message:W}){};const I9=ro(1),L9=(e,t)=>up(n=>UO(e).execute(t).pipe(gp(bN,{...Bi(n,bN),redirect:`error`}),Zf(e=>new P9({operation:`http.request`,cause:e})))),$Se=G({keys:K(G({kty:W,crv:_x(W),x:_x(W),kid:_x(W),alg:_x(W),use:_x(W),key_ops:_x(K(W))}))}),eCe=G({sub:rS,client_id:rS,scope:W,iat:qx,exp:qx}),tCe=G({list:W}),nCe=fde.pipe(kx({exp:qx})),R9=e=>new N9({cause:e}),z9=no(5),B9=Wp(`Verifier.make`)(function*(e){let t=yield*IO,n=yield*Lf({try:()=>({jwks:new URL(`${e.issuer}/jwks`).href,keyList:new URL(`/api/keyList`,e.issuer).href}),catch:()=>new QSe({message:`Invalid issuer URL`})}),r=Wp(`Verifier.jwks`)(function*(){let e=yield*L9(t,nO(n.jwks));return e.status===200?ZF({keys:(yield*_O($Se)(e).pipe(Zf(e=>new P9({operation:`jwks.decode`,cause:e})))).keys.map(({key_ops:e,...t})=>e?{...t,key_ops:[...e]}:t)}):yield*new P9({operation:`jwks.fetch`,cause:{status:e.status}})},vp),i=yield*Ep(r(),e=>Ju(e)?`1 minute`:z9),a=Wp(`Verifier.signingKey`)(function*(e){let t=yield*i;return yield*kf({try:()=>t({alg:`EdDSA`,kid:e}),catch:R9})}),o=Wp(`Verifier.signed`)(function*(t,n){let r=yield*Lf({try:()=>nI(t),catch:R9});if(r.alg!==`EdDSA`||r.kid===void 0)return yield*R9();let i=yield*a(r.kid),o=yield*af,{payload:s}=yield*kf({try:()=>HF(t,i,{issuer:e.issuer,audience:e.resource,algorithms:[`EdDSA`],typ:n,currentDate:new Date(o)}),catch:R9});return s}),s=Wp(`Verifier.jwt`)(function*(e){let t=yield*o(e,`at+jwt`);if(t.cnf!==void 0)return yield*R9();let n=yield*cx(eCe)(t).pipe(Zf(R9));return{subject:n.sub,scopes:n.scope.split(` `).filter(Boolean),actor:{kind:`client`,clientId:n.client_id},expiresAt:n.exp*1e3}}),c=Wp(`Verifier.keyList`)(function*(){let r=rO(n.keyList).pipe(mO({resource:e.resource})),i=yield*L9(t,r);if(i.status!==200)return yield*new P9({operation:`key-list.fetch`,cause:{status:i.status}});let{list:a}=yield*_O(tCe)(i).pipe(Zf(e=>new P9({operation:`key-list.decode`,cause:e}))),s=e=>new P9({operation:`key-list.verify`,cause:e}),c=yield*o(a,iI).pipe(qf(`Unauthorized`,e=>B(s(e)))),l=yield*cx(nCe)(c).pipe(Zf(s));return{readAt:yield*af,expiresAt:l.exp*1e3,entries:new Map(l.keys.map(e=>[e.id,e.sealed]))}},vp),l=yield*NE(!1),u=yield*Ep(c().pipe(rp({duration:`3 seconds`,orElse:()=>B(new P9({operation:`key-list.timeout`}))}),$f(({operation:e})=>V(IE(l,!0),t=>t?R:Kp(`clankerauth key list reads are failing; a held list decides until it expires`,{operation:e}))),Vf(()=>V(IE(l,!1),e=>e?fie(`clankerauth key list reads have recovered`):R))),z9),d=yield*NE(void 0),f=z(function*(){let e=yield*Hf(u);ra(e)&&(yield*FE(d,e.success));let t=yield*PE(d);return t!==void 0&&t.expiresAt>(yield*af)?t:yield*na(e)?e.failure:new P9({operation:`key-list.expired`})}),p=Wp(`Verifier.apiKey`)(function*(t){let n=n=>kf({try:()=>hde(t,e.resource,n.entries),catch:R9}),r=yield*af,i=yield*PE(d),a=i!==void 0&&r-i.readAt<io(I9)&&i.expiresAt>r?i:yield*f,o=(yield*n(a))??(yield*V(f,e=>e===a?I(void 0):n(e)));return o===void 0||o.expiresAt!==null&&o.expiresAt<=(yield*af)?yield*R9():{subject:o.ownerId,scopes:o.scopes,actor:{kind:`key`,keyId:o.keyId},expiresAt:o.expiresAt??void 0}});return{verifyToken:Wp(`Verifier.verifyToken`)(function*(t){let n=yield*t.startsWith(`clankerauth_`)?e.apiKeys===!1?B(R9()):p(t):s(t),r=e.requiredScopes?.find(e=>!n.scopes.includes(e));return r===void 0?n:yield*new F9({scope:r,actor:n.actor})})}}),rCe=Wp(`AdministrationResource.make`)(function*(){let{auth:e}=yield*i3,{baseURL:t}=yield*X4,n=`${t}/api/auth`,r=VB(t);return{protectedResource:{resource:r,authorizationServers:[n],scopesSupported:[HB.read,HB.write,...Q4],scopesRequired:[HB.read,HB.write]},verifier:yield*B9({issuer:n,resource:r,apiKeys:!1}).pipe(dp(xN.pipe($d(Bd(yN,(t,n)=>{let r=new Request(t,n);return r.headers.set(F4,`127.0.0.1`),e.handler(r)})))))}});RI(`whoami`,{description:`The verified subject, issuer and scopes behind this request's credential.`,readOnly:!0,caller:class extends F()(`@clankerauth/CurrentPrincipal`){},success:G({subject:rS,issuer:rS,scopes:K(W)})});const V9=(e,t)=>{let n=`Requires ${e}.`;return t.kind===`client`?new mI({message:n,scopes:[e]}):new mI({message:n})},iCe=(e,t)=>t===void 0||e.scopes.includes(t)?void 0:V9(t,e.actor),H9=e=>e instanceof N9?new fI({message:e.message}):e instanceof F9?V9(e.scope,e.actor):e,U9=(e,t)=>Zf(e.verifyToken(zh(t)),H9);Wp(`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*B9({issuer:r.issuer,resource:i,requiredScopes:[n],apiKeys:r.apiKeys}),c=e=>rp(e,{duration:`5 seconds`,orElse:()=>B(new P9({operation:`verify.timeout`}))}),l={verifyToken:e=>c(s.verifyToken(e))},u=Wp(`Resource.principal`)(function*(e,t){let n=uB(e);if(fi(n))return yield*new fI({message:`A bearer token is required.`});let r=yield*U9(l,n.value),i=iCe(r,t);return i===void 0?r:yield*i}),d=Wp(`Resource.admit`)(function*(t,n){let r=yield*Hf(u(t,n));if(ra(r))return{ok:!0,principal:r.success};let i=tA(_B(r.failure,{authentication:e,protectedResource:o,authorization:t}));return{ok:!1,refusal:{status:i.status,headers:Object.fromEntries(i.headers),body:yield*Of(()=>i.text())}}});return{resource:i,issuer:r.issuer,protectedResource:o,verifier:l,admit:d,watch:(e,t)=>Mp(z(function*(){let n=yield*u(e,t),r=yield*af,i=Math.max(0,(n.expiresAt??1/0)-r);return n.actor.kind===`key`?yield*ip(Math.min(i,io(I9))):(yield*ip(i),yield*H9(new N9))}))}});const aCe=e=>EB(e,H(i3,e=>()=>z(function*(){let t=yield*Ij,n=new Headers(t.headers),r=yield*H4(()=>e.auth.api.getSession({headers:n}),{unavailable:V4});return r?{providerHeaders:I(n),userId:r.user.id,email:r.user.email,writable:!0}:yield*new fI({message:`Owner session required`})}))),oCe=MV(G({id:W,email:W})),sCe=e=>EB(BB,z(function*(){let{sql:t}=yield*IV,n=yield*j9,r=()=>new fI({message:`Owner authorization required`});return i=>z(function*(){let a=yield*U9(e.verifier,i).pipe(qf(`ProviderUnavailable`,()=>B(new OB({message:`Request could not be completed`}))));if(a.actor.kind!==`client`)return yield*r();let o=a.scopes.includes(HB.write);if(!o&&!a.scopes.includes(HB.read))return yield*new mI({message:`Insufficient scope`,scopes:[HB.read]});let s=yield*t`SELECT u.id, u.email FROM user u
537
+ `)));return Gk(VT(r,o,{haltStrategy:`left`}),a)}return e.body._tag===`Uint8Array`?Rk(i(e.body.body),a):Kk(e,`content-type`,`text/event-stream`)},C9=(e,t)=>{let n=e.headers.origin;return n===void 0||(t??[]).includes(n)},w9=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()]}),wSe=()=>{let e=Tk({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`,T9=s9,ESe=[s9,pSe,mSe],DSe=sx(PI),OSe=sx(K(PI)),E9=e=>II(yI(e)),D9=e=>{let t=yI(e),n=II(t);if(n!==void 0)return{kind:n,many:!1};if(!cv(t)||t.encoding!==void 0)return;let[r,...i]=new Set([...t.elements,...t.rest].map(E9));return r===void 0||i.length>0?void 0:{kind:r,many:!0}},kSe=e=>{let t=e.context?.isOptional===!0,n=yI(e);if(t&&uv(n)&&n.types.length===2){let[e,...t]=n.types.filter(e=>!nv(e)),r=e===void 0||t.length>0?void 0:E9(e);return r===void 0?void 0:{kind:r,many:!1}}let r=D9(n);return r===void 0||t&&r.many?void 0:r},O9=e=>{let t=yI(e.ast),n=D9(t);if(n!==void 0)return{fields:[{name:void 0,...n}],rest:void 0};if(!lv(t)||t.encoding!==void 0)return{fields:[],rest:e};let r=t.propertySignatures.flatMap(({name:e,type:t})=>{let n=kSe(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:hx(new Rv(a,t.indexSignatures,s))}},ASe=e=>[...ev(e)?e.typeParameters:[],...cv(e)?[...e.elements,...e.rest]:[],...lv(e)?[...e.propertySignatures,...e.indexSignatures].map(({type:e})=>e):[],...uv(e)?e.types:[],...dv(e)?[e.thunk()]:[],...(e.encoding??[]).map(({to:e})=>e)],jSe=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),FI(e))return!0;n.push(...ASe(e))}return!1},MSe=(e,{rest:t})=>[e.input,...e.error,...t===void 0?[]:[t]].some(({ast:e})=>jSe(e)),NSe=(e,t)=>e.fields.flatMap(({name:e,kind:n,many:r})=>{let i=e===void 0?t:P(t,e)?t[e]:void 0;return(r?OSe(i)?i:[]:DSe(i)?[i]:[]).map(t=>({kind:n,field:e,value:t}))}),PSe=sx(q3),k9=(e,t)=>{let n=Ooe(e,{onExcessProperty:t?`error`:`ignore`}),[r,i]=Tt(n.schema.$ref)?Cb(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}},FSe=e=>{let t=e.map(([e])=>e).filter(e=>!PSe(k9(jS(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])=>MSe(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(`, `)}`)},ISe=e=>new X3({isError:!0,content:[{type:`text`,text:e}]}),A9=e=>e===void 0?[]:[{type:`text`,text:JSON.stringify(e)}],LSe=({kind:e,field:t,value:n})=>({type:e,data:n.data,mimeType:n.mimeType,...t===void 0?{}:{_meta:{"effect-actions/field":t}}}),RSe=(e,t)=>H(cx(q3)(k9(jS(e.input),!0)),n=>new Y3({name:e.name,description:e.description,inputSchema:n,outputSchema:t,annotations:{...e.mcp.title===void 0?{}:{title:e.mcp.title},...bye(e)},_meta:e.mcp._meta===void 0?void 0:{...e.mcp._meta}})),zSe=U(function*(e,t){let n=yield*p9,r=yield*jI(e),i=yield*lp(),a=e=>qp(e).pipe(Bf(nce(e)),Wf(ISe(`Tool execution failed due to an internal server error.`))),o=e=>Mu(e)?a(e):Pf(e);for(let[e,a]of r){let r=O9(e.success),s=r.fields.length===0?void 0:r,c=s===void 0?jS(e.success):s.rest===void 0?void 0:jS(s.rest),l=c===void 0?void 0:yield*cx(J3)(k9(c,!1)).pipe(Qf),u=yield*RSe(e,l).pipe(Qf),d=cx(jS(e.input),MI),f=e=>{let t=dx(jS(e));return e=>Qf(t(e))},p=f(e.success),m=f(q(SI(e))),h=t===void 0||e.caller===cI?a:e=>sB(Ide(t,a(e))),g=new Set(s?.fields.map(({name:e})=>e)),_=(e,t)=>{if(s===void 0)return new X3({isError:!1,structuredContent:e,content:A9(e)});let n=NSe(s,t).map(LSe);if(c===void 0)return new X3({isError:!1,content:n});let r=Rt(e)?Object.fromEntries(Object.entries(e).filter(([e])=>!g.has(e))):e;return new X3({isError:!1,structuredContent:r,content:[...A9(r),...n]})};yield*n.addTool({tool:u,annotations:Fi(),handle:t=>cie({tool:e.name,parameters:t??{}}).pipe(Bf(()=>d(t??{})),Zf(({message:t})=>new P3({message:new xye({toolName:e.name,description:t}).message})),V(e=>h(e).pipe(cp({onFailure:e=>H(m(e),e=>new X3({isError:!0,content:A9(e)})),onSuccess:e=>H(p(e),t=>_(t,e))}))),Jf(o),hp(e=>qi(i,e)))})}}),BSe=(e,t,n=Hd,r)=>{vI(`MCP tool`,e.flatMap(e=>e.actions));let i=e.flatMap(e=>e.actions.map(e=>[e,O9(e.success)]));FSe(i);let a=new Set(i.map(([{name:e}])=>e)),o=z(function*(){let t=(yield*p9).tools.flatMap(({tool:e})=>a.has(e.name)?[e.name]:[]);if(t.length>0)return yield*If(/* @__PURE__ */ Error(`Duplicate MCP tool: ${t.join(`, `)}, claimed by an action and a native feature`));yield*zSe(e,r)});return Kd(o).pipe($d(n),$d(t),nf,AI(e))},VSe=/* @__PURE__ */ new Set([`server/discover`,`tools/list`,`notifications/cancelled`]),HSe=e=>{let t=new Set(e.filter(({caller:e})=>e===cI).flatMap(({name:e})=>[e,`=?base64?${Ym(e)}?=`]));return e=>{if(t.size===0||e[`mcp-protocol-version`]!==T9.protocolVersion)return!0;let n=e[`mcp-method`];if(n===void 0)return!0;if(VSe.has(n))return!1;if(n!==`tools/call`)return!0;let r=e[`mcp-name`];return r===void 0||!t.has(r)}},USe=e=>op(e.json,{onFailure:()=>!0,onSuccess:t=>!P(t,`method`)||t.method===e.headers[`mcp-method`]});function WSe(e,{actions:t,features:n,path:r=`/mcp`,authentication:i,requestScoped:a,allowSubscriptions:o=n!==void 0,...s}){let c=kI(DI(e),t),l=c.flatMap(e=>e.actions);lI(l,i);let u=BSe(c,a===!0?ySe({...s,path:r,protocols:[T9]}):vSe({...s,path:r,protocols:ESe,allowSessionTermination:!0,allowSubscriptions:o}),n,i);if(i===void 0)return u;let d=HSe(l),f=bM(H(VI(i),e=>t=>V(Ij,n=>n.method!==`POST`||d(n.headers)?e.http(t,!1):V(USe(n),n=>e.http(t,n)))));return u.pipe($d(f.layer))}var GSe=`0.23.1`;const KSe=(e,t)=>kf(()=>LW({key:e,data:t})),qSe=(e,t)=>kf(()=>RW({key:e,data:t})),JSe=async(e,t)=>(await Promise.all([WG(e.authCookies.sessionToken.name,t,e.secret),WG(e.authCookies.dontRememberToken.name,`true`,e.secret)])).map(e=>e.split(`;`)[0]).join(`; `),YSe=(e,t)=>Wp(`OwnerAccount.providerSession`)(function*(n){let r=new Date((yield*af)+6e4),i=yield*yp(H4(()=>e.internalAdapter.createSession(n,!0,{expiresAt:r},!0)),t=>Of(()=>e.internalAdapter.deleteSession(t.token))),a=yield*H4(()=>JSe(e,i.token));return new Headers({origin:t,cookie:a})}),XSe=MV(G({id:W}));var j9=class e extends F()(`clankerauth/OwnerAccount`){static layer=Ud(e,z(function*(){let{sql:e}=yield*IV,{auth:t,context:n}=yield*i3,{baseURL:r}=yield*X4,i=yield*KC(1),a=YSe(n,r),o=Wp(`OwnerAccount.find`)(function*(){let t=yield*e`SELECT id FROM user LIMIT 1`;if(t.length)return(yield*XSe(t[0])).id});return{find:o,create:Wp(`OwnerAccount.create`)(function*(e){if(yield*o())return yield*B(NB.of());let{headers:n}=yield*H4(()=>t.api.signUpEmail({body:{name:`Owner`,email:e.email.trim(),password:e.password},returnHeaders:!0}),{refused:B4,conflict:NB.of});return n.getSetCookie()},e=>i.withPermit(e)),caller:(e,t,n)=>({userId:e,email:t,writable:n,providerHeaders:a(e)})}}))},M9=class extends F()(`clankerauth/ResponseCookies`){};const ZSe=H(j9,e=>({setupStatus:()=>e.find().pipe(H(e=>({required:!e}))),setupOwner:Wp(`Administration.setup`)(function*(t){let n=yield*e.create(t);return yield*(yield*M9).add(n),{created:!0}})}));var N9=class extends go(`Unauthorized`){constructor(e={}){super({message:e.message??`Authentication required`}),Object.defineProperty(this,"cause",{value:e.cause})}},P9=class extends AS()(`ProviderUnavailable`,{operation:W},{httpApiStatus:503}){constructor(e){super({operation:e.operation}),Object.defineProperty(this,"cause",{value:e.cause})}},F9=class extends go(`InsufficientScope`){},QSe=class extends AS()(`ConfigurationError`,{message:W}){};const I9=ro(1),L9=(e,t)=>up(n=>UO(e).execute(t).pipe(gp(bN,{...Bi(n,bN),redirect:`error`}),Zf(e=>new P9({operation:`http.request`,cause:e})))),$Se=G({keys:K(G({kty:W,crv:_x(W),x:_x(W),kid:_x(W),alg:_x(W),use:_x(W),key_ops:_x(K(W))}))}),eCe=G({sub:rS,client_id:rS,scope:W,iat:qx,exp:qx}),tCe=G({list:W}),nCe=fde.pipe(kx({exp:qx})),R9=e=>new N9({cause:e}),z9=no(5),B9=Wp(`Verifier.make`)(function*(e){let t=yield*IO,n=yield*Lf({try:()=>({jwks:new URL(`${e.issuer}/jwks`).href,keyList:new URL(`/api/keyList`,e.issuer).href}),catch:()=>new QSe({message:`Invalid issuer URL`})}),r=Wp(`Verifier.jwks`)(function*(){let e=yield*L9(t,nO(n.jwks));return e.status===200?ZF({keys:(yield*_O($Se)(e).pipe(Zf(e=>new P9({operation:`jwks.decode`,cause:e})))).keys.map(({key_ops:e,...t})=>e?{...t,key_ops:[...e]}:t)}):yield*new P9({operation:`jwks.fetch`,cause:{status:e.status}})},vp),i=yield*Ep(r(),e=>Ju(e)?`1 minute`:z9),a=Wp(`Verifier.signingKey`)(function*(e){let t=yield*i;return yield*kf({try:()=>t({alg:`EdDSA`,kid:e}),catch:R9})}),o=Wp(`Verifier.signed`)(function*(t,n){let r=yield*Lf({try:()=>nI(t),catch:R9});if(r.alg!==`EdDSA`||r.kid===void 0)return yield*R9();let i=yield*a(r.kid),o=yield*af,{payload:s}=yield*kf({try:()=>HF(t,i,{issuer:e.issuer,audience:e.resource,algorithms:[`EdDSA`],typ:n,currentDate:new Date(o)}),catch:R9});return s}),s=Wp(`Verifier.jwt`)(function*(e){let t=yield*o(e,`at+jwt`);if(t.cnf!==void 0)return yield*R9();let n=yield*cx(eCe)(t).pipe(Zf(R9));return{subject:n.sub,scopes:n.scope.split(` `).filter(Boolean),actor:{kind:`client`,clientId:n.client_id},expiresAt:n.exp*1e3}}),c=Wp(`Verifier.keyList`)(function*(){let r=rO(n.keyList).pipe(mO({resource:e.resource})),i=yield*L9(t,r);if(i.status!==200)return yield*new P9({operation:`key-list.fetch`,cause:{status:i.status}});let{list:a}=yield*_O(tCe)(i).pipe(Zf(e=>new P9({operation:`key-list.decode`,cause:e}))),s=e=>new P9({operation:`key-list.verify`,cause:e}),c=yield*o(a,iI).pipe(qf(`Unauthorized`,e=>B(s(e)))),l=yield*cx(nCe)(c).pipe(Zf(s));return{readAt:yield*af,expiresAt:l.exp*1e3,entries:new Map(l.keys.map(e=>[e.id,e.sealed]))}},vp),l=yield*NE(!1),u=yield*Ep(c().pipe(rp({duration:`3 seconds`,orElse:()=>B(new P9({operation:`key-list.timeout`}))}),$f(({operation:e})=>V(IE(l,!0),t=>t?R:Kp(`clankerauth key list reads are failing; a held list decides until it expires`,{operation:e}))),Vf(()=>V(IE(l,!1),e=>e?fie(`clankerauth key list reads have recovered`):R))),z9),d=yield*NE(void 0),f=z(function*(){let e=yield*Hf(u);ra(e)&&(yield*FE(d,e.success));let t=yield*PE(d);return t!==void 0&&t.expiresAt>(yield*af)?t:yield*na(e)?e.failure:new P9({operation:`key-list.expired`})}),p=Wp(`Verifier.apiKey`)(function*(t){let n=n=>kf({try:()=>hde(t,e.resource,n.entries),catch:R9}),r=yield*af,i=yield*PE(d),a=i!==void 0&&r-i.readAt<io(I9)&&i.expiresAt>r?i:yield*f,o=(yield*n(a))??(yield*V(f,e=>e===a?I(void 0):n(e)));return o===void 0||o.expiresAt!==null&&o.expiresAt<=(yield*af)?yield*R9():{subject:o.ownerId,scopes:o.scopes,actor:{kind:`key`,keyId:o.keyId},expiresAt:o.expiresAt??void 0}});return{verifyToken:Wp(`Verifier.verifyToken`)(function*(t){let n=yield*t.startsWith(`clankerauth_`)?e.apiKeys===!1?B(R9()):p(t):s(t),r=e.requiredScopes?.find(e=>!n.scopes.includes(e));return r===void 0?n:yield*new F9({scope:r,actor:n.actor})})}}),rCe=Wp(`AdministrationResource.make`)(function*(){let{auth:e}=yield*i3,{baseURL:t}=yield*X4,n=`${t}/api/auth`,r=VB(t);return{protectedResource:{resource:r,authorizationServers:[n],scopesSupported:[HB.read,HB.write,...Q4],scopesRequired:[HB.read,HB.write]},verifier:yield*B9({issuer:n,resource:r,apiKeys:!1}).pipe(dp(xN.pipe($d(Bd(yN,(t,n)=>{let r=new Request(t,n);return r.headers.set(F4,`127.0.0.1`),e.handler(r)})))))}});RI(`whoami`,{description:`The verified subject, issuer and scopes behind this request's credential.`,readOnly:!0,caller:class extends F()(`@clankerauth/CurrentPrincipal`){},success:G({subject:rS,issuer:rS,scopes:K(W)})});const V9=(e,t)=>{let n=`Requires ${e}.`;return t.kind===`client`?new mI({message:n,scopes:[e]}):new mI({message:n})},iCe=(e,t)=>t===void 0||e.scopes.includes(t)?void 0:V9(t,e.actor),H9=e=>e instanceof N9?new fI({message:e.message}):e instanceof F9?V9(e.scope,e.actor):e,U9=(e,t)=>Zf(e.verifyToken(zh(t)),H9);Wp(`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*B9({issuer:r.issuer,resource:i,requiredScopes:[n],apiKeys:r.apiKeys}),c=e=>rp(e,{duration:`5 seconds`,orElse:()=>B(new P9({operation:`verify.timeout`}))}),l={verifyToken:e=>c(s.verifyToken(e))},u=Wp(`Resource.principal`)(function*(e,t){let n=uB(e);if(fi(n))return yield*new fI({message:`A bearer token is required.`});let r=yield*U9(l,n.value),i=iCe(r,t);return i===void 0?r:yield*i}),d=Wp(`Resource.admit`)(function*(t,n){let r=yield*Hf(u(t,n));if(ra(r))return{ok:!0,principal:r.success};let i=tA(_B(r.failure,{authentication:e,protectedResource:o,authorization:t}));return{ok:!1,refusal:{status:i.status,headers:Object.fromEntries(i.headers),body:yield*Of(()=>i.text())}}});return{resource:i,issuer:r.issuer,protectedResource:o,verifier:l,admit:d,watch:(e,t)=>Mp(z(function*(){let n=yield*u(e,t),r=yield*af,i=Math.max(0,(n.expiresAt??1/0)-r);return n.actor.kind===`key`?yield*ip(Math.min(i,io(I9))):(yield*ip(i),yield*H9(new N9))}))}});const aCe=e=>EB(e,H(i3,e=>()=>z(function*(){let t=yield*Ij,n=new Headers(t.headers),r=yield*H4(()=>e.auth.api.getSession({headers:n}),{unavailable:V4});return r?{providerHeaders:I(n),userId:r.user.id,email:r.user.email,writable:!0}:yield*new fI({message:`Owner session required`})}))),oCe=MV(G({id:W,email:W})),sCe=e=>EB(BB,z(function*(){let{sql:t}=yield*IV,n=yield*j9,r=()=>new fI({message:`Owner authorization required`});return i=>z(function*(){let a=yield*U9(e.verifier,i).pipe(qf(`ProviderUnavailable`,()=>B(new OB({message:`Request could not be completed`}))));if(a.actor.kind!==`client`)return yield*r();let o=a.scopes.includes(HB.write);if(!o&&!a.scopes.includes(HB.read))return yield*new mI({message:`Insufficient scope`,scopes:[HB.read]});let s=yield*t`SELECT u.id, u.email FROM user u
538
538
  JOIN oauthClient c ON c.clientId = ${a.actor.clientId}
539
539
  WHERE u.id = ${a.subject} AND c.disabled IS NOT 1`;if(!s[0])return yield*r();let c=yield*oCe(s[0]);return n.caller(c.id,c.email,o)})}),{protectedResource:e.protectedResource}),cCe=e=>e.readOnly?R:V(LB,({writable:e})=>e?R:B(new mI({message:`This action requires the ${HB.write} scope`,scopes:[HB.write]}))),lCe=bM()(e=>z(function*(){let t=[],n=yield*gp(e,M9,{add:e=>L(()=>t.push(...e))});return t.length?Xk(n,mh(t)):n}));function uCe(e){return Jd(z(function*(){let{context:t}=yield*i3,n=yield*f3,r=yield*d3,i=yield*ZSe,a=yield*o3,o=BI(xV,{listClients:n.list,createClient:n.create,updateClient:n.update,deleteClient:n.delete,revokeClient:n.revoke,blockClient:n.block,rotateClientSecret:n.rotate,setClientAccess:r.setAccess,createResource:r.create,updateResource:r.update,deleteResource:r.delete,listApiKeys:a.list,createApiKey:a.create,updateApiKey:a.update,deleteApiKey:a.delete},{authorize:cCe}),s=BI(yV,{setupStatus:i.setupStatus,setupOwner:i.setupOwner,keyList:({resource:e})=>a.keyList(e)}),c=yield*rCe(),l=RB(t.authCookies.sessionToken.name),u=CV(l),d=Xd(Jz(u,o).pipe($d(aCe(l))),fM(`GET`,`/openapi.json`,Hk(TR(u.api))),Jz(u,s).pipe($d(lCe.layer))),f=Xd(WSe(o,{name:`clankerauth-admin`,version:GSe,allowedOrigins:e,instructions:`Owner administration. Listing needs ${HB.read} or ${HB.write}; every other action changes authorization policy and needs ${HB.write}. Create and rotate actions return secrets once.`,authentication:BB}),Jz(wV,o)).pipe($d(sCe(c)));return Xd(d,f)}))}const W9=`clankerauth_forward`,G9=(e,t)=>Hk({error:t},{status:e}),dCe=e=>Jd(z(function*(){let t=yield*X4,{auth:n,context:r}=yield*i3,i=yield*r3,a=n=>{if(!URL.canParse(n))return;let r=new URL(n);return!r.username&&!r.password&&K4(r,t.allowInsecureHttp)&&G4(r.hostname,e)?r:void 0},o=zh(t.secret),s=new URL(`/login`,t.baseURL),c={domain:e,path:`/`,httpOnly:!0,secure:t.baseURL.startsWith(`https:`),sameSite:`lax`},l=r.authCookies.sessionToken.name,u=(e,n)=>{let r=new URL(e,t.baseURL);return r.searchParams.set(`rd`,n.href),r},d=e=>H4(()=>n.api.getSession({headers:new Headers({cookie:e})}),{unavailable:V4}),f=z(function*(){let e=yield*Ij,{headers:r}=e,s=r[`x-forwarded-proto`],c=r[`x-forwarded-host`],f=s&&c?a(`${s}://${c}${r[`x-forwarded-uri`]??`/`}`):void 0;if(!f)return G9(400,`invalid_forwarded_request`);let p=new URL(e.url,t.baseURL).searchParams.get(`resource`),m=p&&(yield*i.application(p));if(!m)return G9(403,`unknown_resource`);let h=e.cookies[W9],g=h?yield*Zre(qSe(o,h)):ui(),_=pi(g)?yield*d(`${l}=${g.value}`):null;if(!_)return r[`sec-fetch-mode`]===`navigate`?Lk(u(`/forward-auth/continue`,f)):G9(401,`unauthenticated`);let v=Math.floor((yield*af)/1e3),{token:y}=yield*H4(()=>n.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 Ik({status:204,headers:{authorization:`Bearer ${y}`}})}),p=z(function*(){let e=yield*Ij,n=new URL(e.url,t.baseURL).searchParams.get(`rd`),r=n?a(n):void 0;if(!r)return G9(400,`invalid_return_url`);let i=e.cookies[l];if(!(i&&(yield*d(e.headers.cookie??``)))||!i)return Lk(u(`/login`,u(`/forward-auth/continue`,r)));let s=yield*KSe(o,i);return yield*Lk(r).pipe(Yk(W9,s,c))}),m=z(function*(){let e=yield*Ij,r=new URL(e.url,t.baseURL).searchParams.get(`rd`),i=r&&a(r)||s,{headers:o}=yield*H4(()=>n.api.signOut({headers:new Headers({cookie:e.headers.cookie??``}),returnHeaders:!0}),{refused:B4,unavailable:V4});return yield*Xk(Lk(i),mh(o.getSetCookie())).pipe(Yk(W9,``,{...c,maxAge:0}))});return Xd(fM(`GET`,`/forward-auth`,Kf(f,W4)),fM(`GET`,`/forward-auth/continue`,Kf(p,W4)),fM(`GET`,`/forward-auth/logout`,Kf(m,W4)))})),fCe=/* @__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`]),pCe=/* @__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`]),mCe=/* @__PURE__ */ new Set([`/jwks`,`/.well-known/oauth-protected-resource`,`/.well-known/oauth-authorization-server`,`/.well-known/oauth-authorization-server/api/auth`]),hCe=new Set(yye),gCe=/^\/assets\/[a-zA-Z0-9_.-]+\.(js|css|woff2)$/,K9=(e,t=200)=>Hk(e,{status:t}),q9=K9({error:`Not found`},404),J9=[`Authorization`,`Content-Type`,`Accept`,`Mcp-Protocol-Version`,`Mcp-Method`,`Mcp-Name`],_Ce=new Set(J9.map(e=>e.toLowerCase())),vCe=(e=qe(new URL(`dist/`,import.meta.resolve(`@clankerauth/web/package.json`))))=>Jd(z(function*(){let t=yield*X4,{auth:n}=yield*i3,{sql:r}=yield*IV,i=yield*r3,a=[.../* @__PURE__ */ new Set([t.baseURL,...t.mcpAllowedOrigins])],o=z(function*(){let e=yield*Ij,r=new URL(e.url,t.baseURL),a=r.pathname.replace(/^\/api\/auth/,``);if(!fCe.has(a)&&a!==`/.well-known/oauth-authorization-server/api/auth`)return q9;if(a===`/oauth2/authorize`){let t=e.method===`GET`?r.searchParams.getAll(`resource`):new URLSearchParams(yield*e.text).getAll(`resource`);if(t.length!==1||!(yield*i.get(t[0]??``)))return K9({error:`invalid_target`,error_description:Z4},400)}let o=e.method===`GET`||e.method===`HEAD`?void 0:yield*e.arrayBuffer,s=yield*H4(()=>n.handler(new Request(r,{method:e.method,headers:e.headers,body:o})));return aA(s)}).pipe(Kf(W4)),s=dM(n=>z(function*(){let r=yield*fA;yield*n.add(`*`,`/*`,z(function*(){let n=yield*Ij;if(n.method!==`GET`&&n.method!==`HEAD`)return q9;let i=new URL(n.url,t.baseURL).pathname,a=hCe.has(i)?`index.html`:gCe.test(i)?i.slice(1):void 0;return a?yield*r.fileResponse(Ge(e,a),{contentType:a.endsWith(`.js`)?`text/javascript`:a.endsWith(`.css`)?`text/css`:a.endsWith(`.woff2`)?`font/woff2`:`text/html; charset=utf-8`}).pipe(Kf(()=>I(q9))):q9}))})),c=bM(e=>Xve({baseURL:t.baseURL,trustProxy:t.trustProxy})(z(function*(){let n=yield*Ij,r=new URL(n.url,t.baseURL).pathname,i=r.replace(/^\/api\/auth/,``),o=r===`/mcp`,s=n.headers.origin,c=s!==void 0&&a.includes(s),l=pCe.has(i),u;if(o&&s!==void 0&&!c)u=K9({error:`Invalid origin`},403);else if(o&&n.method===`OPTIONS`){let e=n.headers[`access-control-request-method`],t=(n.headers[`access-control-request-headers`]??``).split(`,`).map(e=>e.trim().toLowerCase()).filter(Boolean);u=c&&e===`POST`&&t.every(e=>_Ce.has(e))?Ik({status:204}):K9({error:`MCP preflight rejected`},403)}else u=l&&n.method===`OPTIONS`?Ik({status:204}):yield*e;l&&(u=u.pipe(Jk({"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`}),qk(`access-control-allow-credentials`))),o&&(u=u.pipe(Kk(`vary`,u.headers.vary?`${u.headers.vary}, Origin`:`Origin`),qk(`access-control-allow-credentials`)),c&&s!==void 0&&(u=u.pipe(Jk({"access-control-allow-origin":s,"access-control-expose-headers":`WWW-Authenticate, Mcp-Protocol-Version`})),n.method===`OPTIONS`&&u.status>=200&&u.status<300&&(u=u.pipe(Jk({"access-control-allow-methods":`POST`,"access-control-allow-headers":J9.join(`, `)})))));let d=n.method!==`GET`||u.status!==200?`no-store`:r.startsWith(`/assets/`)?`public, max-age=31536000, immutable`:mCe.has(i)?`public, max-age=300`:`no-store`;return u=u.pipe(Jk({"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'`})),t.baseURL.startsWith(`https:`)&&(u=u.pipe(Kk(`strict-transport-security`,`max-age=31536000`))),u})),{global:!0}),l=bM(e=>Ap(e));return Xd(uCe(a),t.cookieDomain===void 0?Hd:dCe(t.cookieDomain),fM(`GET`,`/healthz`,r`SELECT 1`.pipe(Wf(K9({status:`ok`})),Kf(W4))),fM(`*`,`/api/auth/*`,o),fM(`*`,`/.well-known/*`,o),s).pipe($d(l.layer),$d(c),$d(cue))})),yCe=Wp(`Http.nodeHandler`)(function*(e){let t=yield*mM(vCe(e));return yield*oue(t,{scope:yield*_p})}),bCe=(e,t)=>{let n=Jd(H(X4,({database:e})=>IV.layer(e)));return Xd(j9.layer,f3.layer,o3.layer).pipe(ef(d3.layer),ef(i3.layer),ef(r3.layer),ef(n),ef(Zd(e,t)))},Y9=`credentials.json`,X9=G({email:W,password:W,secret:W,clientId:vx(W),clientSecret:vx(W)}),xCe=cx(sS(X9)),SCe=mx(X9),Z9=(e,t)=>V(JT,n=>n.writeFileString(We(e,Y9),`${JSON.stringify(SCe(t),null,2)}\n`,{mode:384})),CCe=Wp(`Dev.identity`)(function*(e,t){let n={email:`owner@example.internal`,password:Ve(24).toString(`base64url`),secret:Ve(32).toString(`hex`)};if(!t)return n;let r=yield*JT,i=We(e,Y9);return(yield*r.exists(i))?yield*xCe(yield*r.readFileString(i)):(yield*Z9(e,n),n)}),Q9=e=>Error(`Disposable issuer provisioning failed`,{cause:e}),$9=Wp(`Dev.ownerSession`)(function*(e,t,n,r){if(t===void 0)return yield*B(/* @__PURE__ */ Error(`A forward-auth session needs a cookieDomain; the issuer serves none`));let i=yield*IO,a=yield*i.execute(rO(`${e}/api/auth/sign-in/email`,{headers:{origin:e}}).pipe(mO(n)));if(yield*a.text,a.status!==200)return yield*B(/* @__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:Oh(a.cookies)}});yield*s.text;let c=Th(a.cookies,s.cookies);return{cookie:Oh(c),cookies:Object.entries(kh(c)).map(([e,t])=>({name:e,value:t}))}}),wCe=Xd(_N,xN,Bd(bN,{redirect:`manual`})),TCe=U(function*(e){let t=yield*JT,n=qe(new URL(`./web/`,import.meta.url));if(!(yield*t.exists(We(n,`index.html`))))return yield*B(/* @__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*Wf(t.makeDirectory(Ge(r),{recursive:!0,mode:448}),Ge(r)),a=yield*Kve(e.port??0,`127.0.0.1`),{port:o}=a,s=e.cookieDomain===void 0?`http://127.0.0.1:${o}`:`http://clankerauth.${e.cookieDomain}:${o}`,c=yield*CCe(i,r!==void 0),l=yield*Y4({baseURL:s,secret:Lh(c.secret),database:We(i,`issuer.sqlite`),host:`127.0.0.1`,port:o,mcpAllowedOrigins:[],trustProxy:!1,allowInsecureHttp:e.cookieDomain!==void 0,cookieDomain:e.cookieDomain}),u=yield*Rd(bCe(Bd(X4,l),P4.layerWith(e.cimdTransport))),d=Ui(u,j9),f=Ui(u,r3),p=yield*xd(yield*_p),m=yield*yCe(n).pipe(dp(u),gp(hd,p));yield*a.serve((t,n)=>{try{e.onRequest?.({method:t.method??`GET`,url:new URL(t.url??`/`,`http://127.0.0.1:${t.socket.localPort}`)}),m(t,n)}catch{n.headersSent?n.destroy():n.writeHead(500).end(`Request failed`)}});let h={email:c.email,password:c.password},g=Ui(u,f3),_=Ui(u,d3),v=Ui(u,o3),y=e=>Ap(vp(z(function*(){let t=yield*d.find();return t===void 0?yield*If(/* @__PURE__ */ Error(`Owner setup failed`)):yield*e(t).pipe(gp(LB,d.caller(t,h.email,!0)))}))).pipe(Zf(Q9));(yield*d.find())||(yield*d.create(h).pipe(Zf(Q9))),yield*y(()=>Ef(e.resources,e=>V(f.get(e.identifier),t=>t?R:Gf(_.create(e)))));let b=yield*y(()=>z(function*(){if(c.clientId!==void 0&&c.clientSecret!==void 0){let{clients:e}=yield*g.list();if(e.some(e=>e.client_id===c.clientId))return{client_id:c.clientId,client_secret:c.clientSecret}}return yield*g.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*B(/* @__PURE__ */ Error(`Disposable issuer did not return client credentials`));r!==void 0&&(yield*Z9(i,{...c,clientId:b.client_id,clientSecret:x}));let S=e.cookieDomain===void 0?void 0:s;return{details:{issuer:`${s}/api/auth`,clientId:b.client_id,clientSecret:x,owner:h,url:s,port:o,directory:i},apiKey:e=>y(()=>H(v.create({name:e.name??`development`,permissions:e.permissions,expiresAt:null}),e=>e.key)),ownerSession:e=>$9(s,S,h,e),ownerToken:Wp(`Dev.ownerToken`)(function*(e){let{cookie:t}=yield*$9(s,S,h,e.appOrigin),n=yield*IO,r=new URL(e.appOrigin),i=new URL(`/forward-auth`,s);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*B(/* @__PURE__ */ Error(`Forward auth issued no token (HTTP ${a.status})`)):o.replace(/^Bearer /iu,``)})}});async function ECe(e){let t=_d(),n=e=>Vp(e.pipe(gp(hd,t),dp(wCe)),{onFiberStart:BS(t)}),r=Hp(Tp(Cd(t,qu)));try{let t=await n(TCe(e));return{...t.details,apiKey:e=>n(t.apiKey(e)),ownerSession:e=>n(t.ownerSession(e)),ownerToken:e=>n(t.ownerToken(e)),close:()=>Vp(r)}}catch(e){throw await Vp(r),e}}export{ECe as startDisposableIssuer,TV as t};
@@ -0,0 +1 @@
1
+ @font-face{font-family:Departure Mono;src:url(/assets/DepartureMono-Regular-2BZob_Zz.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;--ink:var(--lightningcss-light,#16150f)var(--lightningcss-dark,#efecf3);--paper:var(--lightningcss-light,#fdfdfa)var(--lightningcss-dark,#3b3640);--ground:var(--lightningcss-light,#dcdcd4)var(--lightningcss-dark,#2d2931);--rule:var(--lightningcss-light,#d8d8d0)var(--lightningcss-dark,#534c5a);--head:var(--lightningcss-light,#efefe8)var(--lightningcss-dark,#453f4b);--muted:var(--lightningcss-light,#5d5c52)var(--lightningcss-dark,#aea7b8);--amber:#f5a623;--green:#2fbf71;--red:var(--lightningcss-light,#b3251e)var(--lightningcss-dark,#ff8074);--on-status:#16150f;--on-red:var(--lightningcss-light,#fdfdfa)var(--lightningcss-dark,#16150f);--on-head:var(--lightningcss-light,#5d5c52)var(--lightningcss-dark,#b6afc1);--term-black:#16150f;--term-red:var(--lightningcss-light,#a3271f)var(--lightningcss-dark,#ff9589);--term-green:var(--lightningcss-light,#2b6a2e)var(--lightningcss-dark,#8fd49a);--term-yellow:var(--lightningcss-light,#735600)var(--lightningcss-dark,#e6c86e);--term-blue:var(--lightningcss-light,#274b8c)var(--lightningcss-dark,#a9c1fb);--term-magenta:var(--lightningcss-light,#7a2a5c)var(--lightningcss-dark,#f2a7d4);--term-cyan:var(--lightningcss-light,#23605c)var(--lightningcss-dark,#8fd3cb);--term-white:var(--lightningcss-light,#5d5c52)var(--lightningcss-dark,#d9d4e0);--term-bright-black:var(--lightningcss-light,#45443c)var(--lightningcss-dark,#b6afc1);--term-bright-red:var(--lightningcss-light,#b8321f)var(--lightningcss-dark,#ffa89d);--term-bright-green:var(--lightningcss-light,#347a36)var(--lightningcss-dark,#a8e3b1);--term-bright-yellow:var(--lightningcss-light,#7d6200)var(--lightningcss-dark,#f0d98f);--term-bright-blue:var(--lightningcss-light,#3059a3)var(--lightningcss-dark,#c0d2fd);--term-bright-magenta:var(--lightningcss-light,#8f3570)var(--lightningcss-dark,#f7c1e2);--term-bright-cyan:var(--lightningcss-light,#2a6f6a)var(--lightningcss-dark,#aee3dc);--term-bright-white:var(--lightningcss-light,#16150f)var(--lightningcss-dark,#efecf3);--code-keyword:var(--term-magenta);--code-string:var(--term-cyan);--code-number:var(--term-yellow);--code-function:var(--term-blue);--code-type:var(--term-green);--code-comment:var(--on-head);--shadow-color:var(--lightningcss-light,#16150fd9)var(--lightningcss-dark,#000c);--shadow-danger-color:var(--lightningcss-light,#b3251e99)var(--lightningcss-dark,#000c);--veil:#16150f66;--veil-grain:url("data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"4\" height=\"4\"><rect x=\"0\" y=\"0\" width=\"1\" height=\"1\" fill=\"%2316150f\" fill-opacity=\"0.5\"/><rect x=\"2\" y=\"2\" width=\"1\" height=\"1\" fill=\"%2316150f\" fill-opacity=\"0.5\"/></svg>");--dither-paper:url("data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"4\" height=\"4\"><rect width=\"4\" height=\"4\" fill=\"%23e0e0d8\"/><rect x=\"0\" y=\"0\" width=\"1\" height=\"1\" fill=\"%23bcbcb2\"/><rect x=\"2\" y=\"2\" width=\"1\" height=\"1\" fill=\"%23bcbcb2\"/></svg>");--dither-plum:url("data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"4\" height=\"4\"><rect width=\"4\" height=\"4\" fill=\"%232f2b33\"/><rect x=\"0\" y=\"0\" width=\"1\" height=\"1\" fill=\"%23423d4a\"/><rect x=\"2\" y=\"2\" width=\"1\" height=\"1\" fill=\"%23423d4a\"/></svg>");--dither:var(--dither-paper);--font-px:"Departure Mono", ui-monospace, Menlo, Monaco, monospace;--font-body:system-ui, "Helvetica Neue", Helvetica, Arial, sans-serif;--font-code:ui-monospace, Menlo, Monaco, monospace;--type-label:10px;--type-state:11px;--type-control:12px;--type-body:13px;--type-name:14px;--type-title:16px;--type-page:22px;--type-page-narrow:18px;--type-wordmark:18px;--type-wordmark-wall:22px;--tracking-caps:.04em;--tracking-state:.05em;--tracking-head:.06em;--tracking-title:.08em;--tracking-label:.1em;--read-body:15px;--read-h3:15px;--read-h2:20px;--read-title:30px;--read-weight:650;--read-measure:68ch;--line:2px;--hair:1px;--row:34px;--pad:16px;--gap:24px;--deck:1160px;--rail:272px;--space-s:8px;--space-m:14px;--space-l:var(--gap);--type-figure:30px;--type-figure-narrow:22px;--shadow-card:8px 8px 0 var(--shadow-color);--shadow-panel:5px 5px 0 var(--shadow-color);--shadow-button:3px 3px 0 var(--shadow-color);--shadow-button-small:2px 2px 0 var(--shadow-color);--shadow-pressed:1px 1px 0 var(--shadow-color);--shadow-danger:3px 3px 0 var(--shadow-danger-color);--chart-plot:160px;--motion-flash:.7s;--motion-blink:1.2s;--motion-card:.14s;--motion-veil:.12s;--toast-hold:5s}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}}:root[data-scheme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root[data-scheme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--dither:var(--dither-plum)}@media (prefers-color-scheme:dark){:root:not([data-scheme=light]){--dither:var(--dither-plum)}}*{box-sizing:border-box;margin:0;padding:0}html{height:100%;scroll-padding-top:calc(var(--topbar-h,48px) + 16px);scroll-padding-bottom:var(--statusbar-h,0px)}:root:has(footer.statusbar){--statusbar-h:25px}body{min-height:100%;padding-bottom:var(--statusbar-h,0px);font-family:var(--font-body);font-size:var(--type-body);color:var(--ink);caret-color:var(--ink);background-color:var(--ground);background-image:var(--dither);line-height:1.45}fieldset{border:0;min-width:0}legend{padding:0}::selection{background:var(--ink);color:var(--paper)}::placeholder{color:var(--muted);opacity:1}:focus-visible{outline:var(--line) solid var(--ink);outline-offset:2px}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:var(--ground)}::-webkit-scrollbar-thumb{background:var(--ink);border:2px solid var(--ground)}a{color:var(--ink)}code,kbd{font-family:var(--font-code);font-size:var(--type-control)}.px-icon{vertical-align:-1px;shape-rendering:crispedges;flex:none;display:inline-block}.sr-only{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skip{z-index:300;background:var(--ink);color:var(--paper);font-family:var(--font-px);font-size:var(--type-control);text-transform:uppercase;padding:6px 14px;text-decoration:none;position:fixed;top:-100px;left:12px}.skip:focus{top:8px}[hidden]{display:none!important}:is(.nav.tabs button,.switch>:is(a,button),:is(button,a,label).fchip,button.glyph,button.mark,button.tag:has(>span),.textbtn,.crumbs a,.error-summary a){position:relative}:is(.nav.tabs button,.switch>:is(a,button),:is(button,a,label).fchip,button.glyph,button.mark,button.tag:has(>span),.textbtn,.crumbs a,.error-summary a):after{content:"";width:max(100%,24px);height:max(100%,24px);position:absolute;top:50%;left:50%;translate:-50% -50%}.iconbtn{flex:none}.board-card .meta-row .tag{flex-shrink:1;min-width:0}button.tag:has(>span){overflow:visible}button.tag>span{text-overflow:ellipsis;display:block;overflow:hidden}.label{font-family:var(--font-px);font-size:var(--type-label);text-transform:uppercase;letter-spacing:var(--tracking-label);color:var(--muted)}.meta{font-family:var(--font-px);font-size:var(--type-label);color:var(--muted)}.age{font-family:var(--font-px);font-size:var(--type-state);color:var(--muted);flex:none}.age.stale{color:var(--red)}.tnum{font-variant-numeric:tabular-nums}.done-title{color:var(--muted);text-decoration:line-through}.note-line{font:var(--type-control)/1.45 var(--font-body);color:var(--muted);max-width:46ch}.stack{align-content:start;gap:var(--space-m);min-width:0;display:grid}.group{align-items:center;gap:var(--space-s);min-width:0;display:flex}.wrap{align-items:center;gap:var(--space-s);flex-wrap:wrap;min-width:0;display:flex}.stack>*,.group>*{min-width:0}:is(.stack,.group,.wrap).gap-s{gap:var(--space-s)}:is(.stack,.group,.wrap).gap-m{gap:var(--space-m)}:is(.stack,.group,.wrap).gap-l{gap:var(--space-l)}.page-head{justify-content:space-between;align-items:flex-end;gap:var(--space-m) var(--gap);flex-wrap:wrap;display:flex}.page-name{flex-wrap:wrap;align-items:baseline;gap:4px 12px;min-width:0;display:flex}.page-title{font-family:var(--font-body);font-size:var(--type-page);letter-spacing:-.01em;text-wrap:balance;overflow-wrap:anywhere;font-weight:600;line-height:1.2}.page-head .meta{font-size:var(--type-state);color:var(--ink)}.page-acts{align-items:center;gap:var(--space-s);flex-wrap:wrap;display:flex}@media (width<=600px){.page-title{font-size:var(--type-page-narrow)}}.topbar{anchor-name:--topbar;z-index:40;background:var(--paper);border-bottom:var(--line) solid var(--ink);-webkit-user-select:none;user-select:none;flex-wrap:wrap;align-items:center;gap:10px 16px;padding:8px 20px;display:flex;position:sticky;top:0}.wordmark{font-family:var(--font-px);font-size:var(--type-wordmark);letter-spacing:-.02em;color:inherit;white-space:nowrap;margin:0;font-weight:400;text-decoration:none}.cursor{vertical-align:-1px;width:6px;height:11px;animation:blink var(--motion-blink) steps(1) infinite;background:currentColor;display:inline-block}@keyframes blink{50%{opacity:0}}.wordmark .cursor{vertical-align:-2px;background:var(--ink);width:8px;height:15px;margin-left:3px;animation-iteration-count:4}.topbar .spacer,.strip .spacer{flex:1}.topbar-tools{align-items:center;gap:16px;margin-left:auto;display:flex}@media (width<=600px){.topbar-tools{gap:12px}.topbar-tools .btn{padding:5px 10px}}.link-state{font-family:var(--font-px);font-size:var(--type-state);letter-spacing:var(--tracking-head);text-transform:uppercase}.link-state.offline{color:var(--on-red);background:var(--red);padding:2px 6px}.link-state.connecting{color:var(--muted)}.link-state.reconnecting{color:var(--on-status);background:var(--amber);padding:2px 6px}.textbtn{font-family:var(--font-px);font-size:var(--type-control);text-transform:uppercase;letter-spacing:var(--tracking-caps);color:var(--ink);cursor:pointer;background:0 0;border:0;border-bottom:1px dotted #0000;padding:2px 0}a.textbtn{text-decoration:none}.textbtn:hover{border-bottom-color:var(--ink)}.nav{border:var(--line) solid var(--ink);gap:0;width:fit-content;max-width:100%;display:flex}.panel>.nav.tabs,.panel>.tabbed>.nav.tabs{margin:var(--pad) var(--pad) 0}.nav a,.nav button{font-family:var(--font-px);font-size:var(--type-control);text-transform:uppercase;letter-spacing:var(--tracking-caps);background:var(--paper);color:var(--ink);cursor:pointer;white-space:nowrap;border:none;padding:5px 14px;text-decoration:none}.nav>:is(a,button)+:is(a,button){border-left:var(--line) solid var(--ink)}.nav [aria-current=page],.nav [aria-selected=true],.nav [aria-pressed=true]{background:var(--ink);color:var(--paper)}.nav .navnum{font-size:var(--type-state);background:var(--head);color:var(--on-head);margin-left:8px;padding:0 5px;display:inline-block}.nav.tabs a,.nav.tabs button{font-size:var(--type-state);padding:4px 12px}@media (width<=600px){.nav a,.nav button{font-size:var(--type-state);padding:5px 8px}.nav .navnum{margin-left:5px}.topbar{gap:8px 12px;padding:8px 12px}.topbar>.nav{flex-basis:100%;order:1;width:auto}.topbar>.nav>*{text-align:center;flex:1}.topbar .topbar-tools .textbtn,.topbar .link-state:not(.offline,.reconnecting){display:none}.deck{padding:20px 12px 64px}}.places ul{list-style:none}.places li{border-bottom:var(--hair) solid var(--rule);align-items:center;display:flex}.places li:last-child{border-bottom:0}.places li:not(:has(>[aria-current])):hover{background-color:var(--head)}.places li>:is(a,button){min-width:0;min-height:var(--row);align-items:baseline;gap:var(--space-s);font:inherit;color:inherit;text-align:left;cursor:pointer;background:0 0;border:0;flex:1;padding:8px 12px;text-decoration:none;display:flex}.places li>:is(a,button):focus-visible{outline-offset:-4px}.place-name{overflow-wrap:anywhere;flex:1;min-width:0}.place-count{font-family:var(--font-px);font-size:var(--type-state);color:var(--muted);flex:none}.place-tools{flex:none;padding-right:4px}.places li:has(>[aria-current]){background-color:var(--ink);color:var(--paper)}.places li:has(>[aria-current]) :is(.place-count,.iconbtn.quiet){color:inherit;opacity:.75}.places li:has(>[aria-current]) :focus-visible{outline-color:var(--paper)}.btn{font-family:var(--font-px);font-size:var(--type-control);text-transform:uppercase;letter-spacing:var(--tracking-caps);background:var(--paper);color:var(--ink);border:var(--line) solid var(--ink);cursor:pointer;box-shadow:var(--shadow-button);white-space:nowrap;align-items:center;gap:6px;padding:5px 14px;text-decoration:none;display:inline-flex}.btn:not([aria-disabled=true]):active{box-shadow:var(--shadow-pressed);transform:translate(2px,2px)}.btn:disabled,.btn[aria-disabled=true]{color:var(--muted);border-color:var(--muted);box-shadow:none;cursor:default}.btn:disabled:active{transform:none}.btn.primary{background:var(--ink);color:var(--paper)}.btn.primary:disabled,.btn.primary[aria-disabled=true]{background:var(--paper);color:var(--muted)}.btn.default-ring{box-shadow:0 0 0 2px var(--paper), 0 0 0 4px var(--ink);margin:4px}.btn.default-ring:not([aria-disabled=true]):active{background:var(--ink);color:var(--paper);transform:none}.card-actions:focus-within .btn.default-ring:not(:focus){box-shadow:var(--shadow-button)}.btn.default-ring[aria-disabled=true]:not(:focus),.card-actions:focus-within .btn.default-ring[aria-disabled=true]:not(:focus){box-shadow:none}.btn.small{font-size:var(--type-state);box-shadow:var(--shadow-button-small);padding:3px 10px}.btn.small:disabled,.btn.small[aria-disabled=true]{box-shadow:none}.btn.danger{color:var(--red);border-color:var(--red);box-shadow:var(--shadow-danger)}.btn.danger:focus-visible{outline-color:var(--red)}.iconbtn{width:24px;height:24px;color:inherit;cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.iconbtn.quiet{color:var(--muted)}.iconbtn.quiet:hover{color:var(--ink)}.btn .key-hint{margin-left:var(--space-s);font-family:var(--font-px);font-size:var(--type-label);text-transform:none;letter-spacing:0;opacity:.65}.btn{position:relative}.btn>.cursor{position:absolute;top:50%;right:4px;translate:0 -50%}.btn.small>.cursor{width:5px;height:9px;right:3px}.btn.done[aria-disabled=true]{color:var(--paper);background:var(--ink);border-color:var(--ink);box-shadow:none}.btn-words{display:inline-grid}.btn-words>*{grid-area:1/1}.btn-words>[aria-hidden=true]{visibility:hidden}.menu{z-index:200;min-width:148px;max-width:calc(100vw - 24px);color:var(--ink);background:var(--paper);border:var(--line) solid var(--ink);box-shadow:var(--shadow-card);margin:0;padding:0;position:absolute}.menu-wrap{display:inline-flex;position:relative}.menu.at-point{position:fixed}.menu [role^=menuitem]{width:100%;font-family:var(--font-px);font-size:var(--type-control);text-transform:uppercase;letter-spacing:var(--tracking-caps);text-align:left;background:var(--paper);color:var(--ink);border:0;border-bottom:var(--hair) solid var(--rule);cursor:pointer;white-space:nowrap;align-items:center;gap:10px;padding:7px 12px;text-decoration:none;display:flex}.menu>[role^=menuitem]:last-child,.menu>[role=group]:last-child>[role^=menuitem]:last-child{border-bottom:0}.menu [role^=menuitem]:not([aria-disabled=true]):hover{background:var(--head)}.menu [role^=menuitem][aria-disabled=true]{color:var(--muted);cursor:default}.menu [role=menuitem][aria-current=page],.menu [role=menuitemradio][aria-checked=true]{background:var(--ink);color:var(--paper)}.menu .menu-label{text-overflow:ellipsis;flex:1;overflow:hidden}.menu .key-hint{font-family:inherit;font-size:var(--type-state);text-transform:none;color:var(--muted)}.menu :is([aria-current=page],[role=menuitemradio][aria-checked=true]) .key-hint{color:inherit;opacity:.75}.menu .menu-check{border:var(--line) solid var(--ink);flex:none;place-content:center;width:14px;height:14px;display:inline-grid}.menu .menu-check:before{content:"";width:6px;height:6px}.menu [aria-checked=true] .menu-check:before{background:var(--ink)}.menu .menu-note{font:var(--type-control)/1.45 var(--font-body);text-transform:none;letter-spacing:normal;white-space:nowrap;color:var(--muted);border-bottom:var(--hair) solid var(--rule);padding:7px 12px;display:block}.deck{max-width:var(--deck);padding:var(--gap) 20px 80px;gap:var(--gap);margin:0 auto;display:grid}.deck>*{min-width:0}.panel,.sheet{background:var(--paper);border:var(--line) solid var(--ink);box-shadow:var(--shadow-panel);min-width:0}.panel-tb{background:var(--ink);color:var(--paper);font-family:var(--font-px);align-items:baseline;gap:10px;padding:6px 12px;display:flex}.panel-tb h2{font-size:var(--type-body);text-transform:uppercase;letter-spacing:var(--tracking-title);font-weight:400}.panel-tb .meta{font-size:var(--type-state);color:inherit;opacity:.75;margin-left:auto}.panel-body{padding:var(--pad);gap:var(--space-m);display:grid}.panel-body>*{min-width:0}.panel-foot{border-top:var(--hair) solid var(--rule);flex-wrap:wrap;align-items:center;gap:12px;padding:10px 12px;display:flex}.panel-foot .push{margin-left:auto}.panel-foot>.notice{flex:100%}.panel-tb:has(>.panel-acts){padding-block:3px;align-items:center;min-height:31px;padding-right:3px}.panel-tb:has(>.panel-acts) h2{overflow-wrap:anywhere;flex:1;min-width:0}.panel-acts{flex:none;align-items:center;gap:6px;display:inline-flex}.panel-tb:has(>.panel-acts)>.meta{margin-left:0}.panel-acts .btn{color:var(--paper);background:var(--ink);border-color:var(--paper);box-shadow:none}.panel-acts .btn.primary{color:var(--ink);background:var(--paper)}.panel-acts .btn:not([aria-disabled=true]):active{box-shadow:none;transform:translate(1px,1px)}.panel-acts .btn:is(:disabled,[aria-disabled=true]){color:var(--paper);background:var(--ink);border-color:var(--paper);opacity:.6}.panel-acts .iconbtn.quiet{color:inherit}.panel-acts .btn:focus-visible{outline-offset:-4px;outline-color:currentColor}.strip{font-family:var(--font-px);font-size:var(--type-state);text-transform:uppercase;background:var(--paper);border:var(--line) solid var(--ink);box-shadow:var(--shadow-button);flex-wrap:wrap;align-items:center;gap:8px;padding:8px 12px;display:flex}.switch{border:var(--line) solid var(--ink);flex:none;display:inline-flex}.switch a,.switch button{background:var(--paper);width:26px;height:22px;color:var(--ink);cursor:pointer;border:0;place-items:center;padding:0;display:inline-grid}.switch>:is(a,button)+:is(a,button){border-left:var(--line) solid var(--ink)}.switch [aria-pressed=true],.switch [aria-current=page]{background:var(--ink);color:var(--paper)}.switch button:active{transform:translate(1px,1px)}.fchip{min-height:22px;font-family:var(--font-px);font-size:var(--type-state);text-transform:uppercase;letter-spacing:var(--tracking-state);border:var(--line) solid var(--ink);background:var(--paper);color:var(--ink);cursor:default;flex:none;align-items:center;gap:6px;padding:2px 7px;display:inline-flex}button.fchip{cursor:pointer}button.fchip:not([aria-pressed=true]):hover{background:var(--head)}button.fchip:active{transform:translate(1px,1px)}.fchip .fchip-name{color:var(--muted)}.fchip.pinned,.fchip[aria-pressed=true]{background:var(--ink);color:var(--paper)}.fchip.pinned .fchip-name,.fchip[aria-pressed=true] .fchip-name{color:inherit}a.fchip{cursor:pointer;text-decoration:none}.fchip.query{cursor:text;isolation:isolate}.fchip.query.live{background:var(--head)}.fchip.query input{z-index:1;font:var(--type-control) var(--font-body);color:var(--ink);field-sizing:content;background:0 0;border:0;width:12ch;min-width:8ch;max-width:32ch;padding:0;position:relative}.fchip.query input::-webkit-search-cancel-button{display:none}.fchip.query input:focus-visible{outline:none}.fchip.query:focus-within{outline:var(--line) solid var(--ink);outline-offset:2px}.fchip.reset{color:var(--muted);border-color:var(--muted)}.fchip.reset:hover{color:var(--ink);border-color:var(--ink)}.chip{font-family:var(--font-px);font-size:var(--type-state);text-transform:uppercase;letter-spacing:var(--tracking-state);border:var(--line) solid var(--ink);background:var(--paper);color:var(--ink);white-space:nowrap;flex:none;padding:1px 6px}.chip.go{background:var(--green);color:var(--on-status)}.chip.warn{background:var(--amber);color:var(--on-status)}.chip.blocked{color:var(--red);border-color:var(--red)}.chip.done{background:var(--head);color:var(--on-head);border-color:var(--muted)}.mark{background:var(--amber);color:var(--on-status);border:0;flex:none;justify-content:center;align-items:center;padding:2px;display:inline-flex}button.mark{cursor:pointer}.mark.plain{color:var(--muted);background:0 0}.tag{font-family:var(--font-px);font-size:var(--type-state);color:var(--muted);border:var(--hair) solid var(--rule);text-overflow:ellipsis;white-space:nowrap;text-transform:none;letter-spacing:normal;background:0 0;flex:none;max-width:18ch;padding:0 5px;overflow:hidden}button.tag{cursor:pointer}button.tag:hover{color:var(--ink);border-color:var(--muted)}.rows{list-style:none}.tree{padding:8px 0 14px}.tree ul.rows{padding-left:26px;position:relative}.tree ul.rows:before{content:"";background:var(--rule);width:1px;position:absolute;top:0;bottom:4px;left:20px}.row{min-height:var(--row);align-items:center;gap:8px;padding:5px 12px;display:flex;position:relative}.row:hover,.row:focus-within{background-color:var(--head)}.row .glyph{width:18px;height:18px;color:var(--muted);background:0 0;border:none;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}button.glyph{cursor:pointer}.row:hover button.glyph{color:var(--ink)}.row .grow{white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;margin:-4px;padding:4px;overflow:hidden}.row .grow input.inline-input:focus-visible{outline:none}.row .title{font:inherit;color:inherit;cursor:pointer;text-align:left;text-overflow:ellipsis;white-space:nowrap;background:0 0;border:none;max-width:100%;padding:0;overflow:hidden}.row .title:hover{text-underline-offset:3px;text-decoration:underline}.board-card .title[aria-disabled=true]{cursor:default}.row .tools{opacity:.55;align-items:center;gap:6px;display:inline-flex}.row:hover .tools,.row:focus-within .tools{opacity:1}.row>.cell{flex:none;align-items:center;gap:8px;display:inline-flex}.row>.grow-cell{flex:1;min-width:0}.row .slot{flex:none;justify-content:flex-end;align-items:center;gap:6px;min-width:58px;display:inline-flex}.row[aria-current=true]{outline:1px solid var(--muted);outline-offset:-4px;background-color:#0000}.row:focus-visible{outline:var(--line) solid var(--muted);outline-offset:-4px}.row[aria-current=true] .tools{opacity:1}.board-card[aria-current=true]{background-color:var(--ink);color:var(--paper)}.board-card[aria-current=true] :is(.glyph,.age,.due,.tag,.done-title,.iconbtn.quiet){color:inherit;opacity:.75}.board-card[aria-current=true] .tag{border-color:currentColor}.board-card[aria-current=true] :is(.due.late,.age.stale){opacity:1;background:var(--red);color:var(--on-red);box-shadow:0 0 0 3px var(--red)}.board-card[aria-current=true] :focus-visible{outline-color:var(--paper)}@media (width<=600px){.row .tools{display:none}.row .grow,.row .title{white-space:normal;overflow-wrap:anywhere}.row .title{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box}.row .slot{min-width:0}}.row-check{flex:none;align-self:stretch;align-items:center;margin:-5px 0 -5px -12px;padding:0 10px;display:flex;position:relative}.row-check>[role=checkbox]{appearance:none;border:var(--line) solid var(--ink);background:var(--paper);cursor:pointer;border-radius:0;flex:none;place-content:center;width:14px;height:14px;padding:0;display:inline-grid}.row-check>[role=checkbox]:before{content:"";width:6px;height:6px}.row-check>[role=checkbox]:after{content:"";position:absolute;inset:0}.row label.grow{cursor:pointer}.row-check:has(>[aria-checked=true]){background:var(--ink)}.row-check>[aria-checked=true]{border-color:var(--paper);background:var(--ink)}.row-check>[aria-checked=true]:before{background:var(--paper)}.row-check>[aria-checked=true]:focus-visible{outline-color:var(--paper)}.row-check>[aria-disabled=true]{border-color:var(--muted);cursor:default}.row-check>[aria-checked=mixed]:before{background:var(--ink);height:2px}.row.bulk{border-bottom:var(--hair) solid var(--rule)}.bulk-count{font-family:var(--font-px);font-size:var(--type-state);text-transform:uppercase;letter-spacing:var(--tracking-state);font-variant-numeric:tabular-nums;color:var(--muted)}.row.bulk:has(>.row-check>:is([aria-checked=true],[aria-checked=mixed])) .bulk-count{color:var(--ink)}.bulk-acts{flex:none;align-items:center;gap:8px;display:inline-flex}input.inline-input{font:inherit;color:inherit;background:var(--paper);border:none;border-bottom:1px solid var(--ink);width:100%;height:calc(1lh + 1px);padding:0}input.inline-input[aria-busy=true]{color:var(--muted);cursor:progress}input.inline-input[aria-invalid=true]{border-bottom-color:var(--red)}.row .grow input.inline-input:focus-visible{box-shadow:inset 0 -1px 0 var(--ink)}.row .grow input.inline-input[aria-invalid=true]:focus-visible{box-shadow:inset 0 -1px 0 var(--red)}.flash-word{font-family:var(--font-px);font-size:var(--type-state);text-transform:uppercase;letter-spacing:var(--tracking-title);color:var(--ink);min-width:6ch}.flash-word:empty{display:none}select{appearance:base-select}select::picker(select){appearance:base-select}select{width:100%;min-height:30px;color:var(--ink);background-color:var(--paper);background-image:linear-gradient(45deg, transparent 50%, var(--ink) 50%), linear-gradient(135deg, var(--ink) 50%, transparent 50%);border:var(--line) solid var(--ink);cursor:pointer;font-family:var(--font-px);font-size:var(--type-state);text-transform:none;background-position:calc(100% - 9px),calc(100% - 5px);background-repeat:no-repeat;background-size:4px 4px;border-radius:0;padding:5px 28px 3px 8px}select::picker-icon{display:none}select::picker(select){color:var(--ink);background:var(--paper);border:var(--line) solid var(--ink);box-shadow:var(--shadow-panel);padding:0}select option{font-family:var(--font-px);font-size:var(--type-state);cursor:pointer;padding:5px 8px 7px}.field :is(input,textarea):disabled,.field.boxed :is(input,textarea):disabled,select:disabled{color:var(--muted);border-color:var(--muted);cursor:default}.field:not(.boxed) :is(input,textarea):disabled{border-bottom-color:#0000}select:disabled{background-image:linear-gradient(45deg, transparent 50%, var(--muted) 50%), linear-gradient(135deg, var(--muted) 50%, transparent 50%)}.choice{cursor:pointer;align-items:flex-start;gap:10px;padding:6px 0;display:flex}button.choice{appearance:none;font:inherit;color:inherit;text-align:left;background:0 0;border:0}.choice .choice-name{font-family:var(--font-px);font-size:var(--type-state);text-transform:uppercase;letter-spacing:var(--tracking-state)}.choice .choice-note{color:var(--muted);font:var(--type-control)/1.45 var(--font-body);display:block}.choices{gap:2px;display:grid}.choices.inline{flex-wrap:wrap;gap:2px 24px;display:flex}.choice-box{appearance:none;border:var(--line) solid var(--ink);background:var(--paper);cursor:pointer;border-radius:0;flex:none;place-content:center;width:14px;height:14px;margin-top:2px;padding:0;display:inline-grid}.choice-box:before{content:"";width:6px;height:6px}.choice[role=radio]>.choice-box:before{clip-path:polygon(50% 0,100% 50%,50% 100%,0 50%);width:8px;height:8px}.choice-box[aria-checked=true]:before,.choice[role=radio][aria-checked=true]>.choice-box:before{background:var(--ink)}.choices[aria-invalid=true]>.choice[role=radio]>.choice-box{border-color:var(--red)}.choices[aria-invalid=true]>.choice[role=radio] .choice-name{color:var(--red)}.choice-box[aria-disabled=true],.choice[role=radio][aria-disabled=true]>.choice-box{border-color:var(--muted);cursor:default}.choice[role=radio][aria-disabled=true]{color:var(--muted);cursor:default}.choice:has(>.choice-box[aria-disabled=true]){color:var(--muted);cursor:default}.field>label:not(.choice),.field-label{font-family:var(--font-px);font-size:var(--type-label);text-transform:uppercase;letter-spacing:var(--tracking-label);color:var(--muted);margin-bottom:4px;display:block}.field input,.field textarea{width:100%;font:inherit;color:var(--ink);background:var(--paper);border:none;border-bottom:1px dotted var(--muted);border-radius:0;padding:2px 0}.field textarea{resize:vertical;field-sizing:content;min-height:96px;font:var(--type-body)/1.5 var(--font-body)}textarea::-webkit-resizer{background:linear-gradient(135deg, transparent 0 50%, var(--ink) 50% 100%)}.field input:focus-visible,.field textarea:focus-visible{border-bottom:var(--line) solid var(--ink);outline:none;padding-bottom:1px}.field input[aria-invalid=true],.field textarea[aria-invalid=true]{border-bottom:2px solid var(--red);padding-bottom:1px}.field:has([aria-invalid=true])>label{color:var(--red)}.field .field-help,.field .field-error{font:var(--type-control)/1.45 var(--font-body);color:var(--muted);margin-top:4px}.field .field-error{color:var(--red)}.field-grid{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px 16px;display:grid}.field.boxed input,.field.boxed textarea{border:var(--line) solid var(--ink);padding:5px 8px}.field.boxed input:focus-visible,.field.boxed textarea:focus-visible{outline:var(--line) solid var(--ink);outline-offset:2px;border-bottom:var(--line) solid var(--ink);padding-bottom:5px}.field.boxed :is(input,textarea)[aria-invalid=true]{border-color:var(--red);padding-bottom:5px}.password{display:grid}.password>*{grid-area:1/1}.password>.iconbtn{place-self:center end;margin-right:4px}.field.boxed .password>input{padding-right:32px}.field .strength{align-items:center;gap:10px;margin-top:6px;display:flex}.field.boxed input[type=date]{min-height:30px;font-family:var(--font-px);font-size:var(--type-state);padding:3px 8px}.field.mono input,.field.mono textarea{font-family:var(--font-code);font-size:var(--type-control)}.title-edit,input.inline-input.title-edit{font-size:var(--type-title);width:100%;font-weight:600}.title-display{font-size:var(--type-title);color:inherit;cursor:text;text-align:left;background:0 0;border:0;border-bottom:1px dotted #0000;width:100%;padding:0;font-weight:600}.title-display:hover{border-bottom-color:var(--muted)}.notice{white-space:normal;overflow-wrap:anywhere;border:var(--line) solid var(--ink);background:var(--paper);font:var(--type-control)/1.45 var(--font-body);align-items:flex-start;gap:10px;padding:8px 10px;display:flex}.notice>div{flex:1;min-width:0}.notice.error{border-color:var(--red)}.notice.quiet{border-color:var(--rule);color:var(--muted)}.notice strong{font-family:var(--font-px);font-size:var(--type-state);text-transform:uppercase;letter-spacing:var(--tracking-head);font-weight:400;display:block}:is(.notice,.outcome,.banner)>.glyph{border:var(--line) solid var(--ink);background:var(--amber);width:20px;height:20px;color:var(--on-status);flex:none;place-items:center;display:grid}:is(.notice,.outcome,.banner)>.glyph.error{background:var(--red);color:var(--on-red);border-color:var(--red)}:is(.notice,.outcome,.banner)>.glyph.ok{background:var(--ink);color:var(--paper)}:is(.notice,.outcome,.banner)>.glyph.quiet{background:var(--head);color:var(--on-head);border-color:var(--rule)}select[aria-invalid=true]{border-color:var(--red)}.field:has([aria-invalid=true])>legend{color:var(--red)}.error-summary ul{gap:7px;margin-top:4px;list-style:none;display:grid}.error-summary a{color:var(--ink);text-underline-offset:3px;text-decoration:underline;text-decoration-thickness:1px}.error-summary a:hover{text-decoration-thickness:2px}.table-wrap{overflow-x:auto}.table{border-collapse:collapse;width:100%;font-size:var(--type-body)}.table th{font-family:var(--font-px);font-size:var(--type-label);text-transform:uppercase;letter-spacing:var(--tracking-label);color:var(--on-head);background:var(--head);text-align:left;border-bottom:var(--hair) solid var(--rule);white-space:nowrap;padding:6px 12px;font-weight:400}.table td{border-bottom:var(--hair) solid var(--rule);vertical-align:middle;padding:8px 12px}.table tbody tr:last-child td{border-bottom:0}.table tbody tr:hover{background:var(--head)}.table td.num,.table th.num{text-align:right;font-family:var(--font-px);font-size:var(--type-state);font-variant-numeric:tabular-nums;white-space:nowrap}.table td.acts{text-align:right;white-space:nowrap}:is(.table td.acts,.table:has(td.acts) th:last-child){background:var(--paper);position:sticky;right:0}.table:has(td.acts) th:last-child{background:var(--head)}.table tbody tr:hover td.acts{background:var(--head)}@media (width<=600px){:is(.table td.acts,.table:has(td.acts) th:last-child){box-shadow:inset 2px 0 0 var(--ink);padding-left:10px}}.table td.acts .btn+.btn{margin-left:8px}.table .chips{flex-wrap:wrap;gap:6px;display:inline-flex}@media (width<=600px){.table thead{display:none}.table,.table tbody,.table tr,.table td{width:100%;display:block}.table tr{border-bottom:var(--hair) solid var(--rule);padding:10px 12px}.table tbody tr:last-child{border-bottom:0}.table td,.table td.num,.table td.acts{box-shadow:none;text-align:left;white-space:normal;overflow-wrap:anywhere;background:0 0;border:0;padding:2px 0;position:static}.table td[data-label]:before{content:attr(data-label);font-family:var(--font-px);font-size:var(--type-label);text-transform:uppercase;letter-spacing:var(--tracking-label);color:var(--muted);display:block}.table td.acts{padding-top:8px}}.table tr.off td:not(.acts){color:var(--muted)}.table tr.off td .name{text-decoration:line-through}.props{grid-template-columns:max-content minmax(0,max-content) minmax(max-content,1fr);align-items:stretch;display:grid}.props>div{display:contents}.props dt,.props dd{border-bottom:var(--hair) solid var(--rule);min-height:var(--row);align-items:center;padding:7px 0;display:flex}.props dt{padding-right:16px}.props dd.acts{padding-left:16px}.props>div:last-child dt,.props>div:last-child dd{border-bottom:0}.props dt{font-family:var(--font-px);font-size:var(--type-label);text-transform:uppercase;letter-spacing:var(--tracking-label);color:var(--muted)}.props dd{min-width:0;overflow:hidden}@media (width<=600px){.props{grid-template-columns:minmax(0,1fr) auto}.props dt{border-bottom:0;grid-column:1/-1;min-height:0;padding:8px 0 0}}.props dd code{text-overflow:ellipsis;white-space:nowrap;background:var(--head);padding:1px 6px;overflow:hidden}.code-surface{width:100%;font:var(--type-control)/1.6 var(--font-code);color:var(--ink);background:var(--head);border:var(--line) solid var(--ink);resize:vertical;tab-size:2;white-space:pre;min-height:220px;padding:10px 12px;display:block;overflow:auto}textarea.code-surface{field-sizing:content;max-height:60vh}@media (width<=600px){textarea.code-surface{white-space:pre-wrap;overflow-wrap:anywhere}}pre.code-surface{resize:none;white-space:pre-wrap;overflow-wrap:anywhere;min-height:0;margin:0}.tok-keyword{color:var(--code-keyword)}.tok-string,.tok-string2,.tok-url{color:var(--code-string)}.tok-number,.tok-bool,.tok-atom,.tok-literal{color:var(--code-number)}.tok-definition,.tok-variableName2,.tok-macroName,.tok-link{color:var(--code-function)}.tok-typeName,.tok-className,.tok-namespace{color:var(--code-type)}.tok-comment,.tok-meta,.tok-punctuation{color:var(--code-comment)}.tok-heading,.tok-strong{font-weight:700}.tok-emphasis{font-style:italic}.tok-link{text-underline-offset:3px;text-decoration:underline}.tok-inserted{color:var(--term-green)}.tok-deleted,.tok-invalid{color:var(--term-red)}.tok-invalid{-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.secret{border:var(--line) solid var(--ink);background:var(--head);align-items:center;gap:10px;padding:6px 6px 6px 12px;display:flex}.secret code{white-space:nowrap;min-width:0;font-size:var(--type-control);letter-spacing:.02em;flex:1;overflow-x:auto}@media (width<=600px){.secret code{white-space:normal;overflow-wrap:anywhere}}.history-list{border-top:var(--hair) solid var(--rule);list-style:none}.history-list li{border-bottom:var(--hair) solid var(--rule);align-items:center;gap:12px;padding:8px 0;display:flex}.history-list li:last-child{border-bottom:0}.history-list .v{font-family:var(--font-px);font-size:var(--type-state);flex:none;width:calc(4ch + 8px);padding:0 4px}.history-list .who{font-family:var(--font-px);font-size:var(--type-label);color:var(--muted);text-overflow:ellipsis;white-space:nowrap;flex:none;width:10ch;max-width:16ch;overflow:hidden}.history-list .what{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.history-list li.current .v{background:var(--ink);color:var(--paper)}.history-list li.current .v .age{color:inherit}.save-row{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.save-row .push{align-items:center;gap:12px;margin-left:auto;display:inline-flex}.diff-wrap{border:var(--line) solid var(--ink);background:var(--paper);padding:4px 0;overflow-x:auto}.diff{border-collapse:collapse;width:100%;font:var(--type-control)/1.6 var(--font-code)}.diff td{vertical-align:top;white-space:nowrap;padding:0 8px}.diff td.line{white-space:pre}.diff td.ln{text-align:right;width:1%;font-family:var(--font-px);font-size:var(--type-label);color:var(--muted);border-right:var(--hair) solid var(--rule);-webkit-user-select:none;user-select:none;line-height:19px}.diff td.sign{width:1%;font-family:var(--font-px);-webkit-user-select:none;user-select:none;padding:0 4px 0 8px}.diff tr.add{background:var(--head)}.diff tr.add td.sign{color:var(--ink)}.diff tr.add td.ln{color:var(--on-head)}.diff tr.del td.line{color:var(--muted)}.diff tr.del td.sign{color:var(--red)}.diff tr.fold td{font-family:var(--font-px);font-size:var(--type-label);text-transform:uppercase;letter-spacing:var(--tracking-title);color:var(--on-head);background:var(--head);border-top:var(--hair) solid var(--rule);border-bottom:var(--hair) solid var(--rule);padding:2px 12px}@media (width<=600px){.diff td.line{white-space:pre-wrap;overflow-wrap:anywhere}}dialog.veil{color:inherit;margin:0;overflow-y:auto}dialog.veil[open]{display:block}dialog.veil:focus{outline:none}.veil-pad{pointer-events:none;place-items:center;min-height:100%;padding:24px;display:grid;position:relative}.veil-pad>*{pointer-events:auto}.veil-pad.top{align-items:start;padding-top:18vh}.veil-backdrop{background-color:var(--veil);background-image:var(--veil-grain);animation:veilIn var(--motion-veil) steps(3, end);position:fixed;inset:0}@keyframes veilIn{0%{opacity:0}}.card{background:var(--paper);border:var(--line) solid var(--ink);box-shadow:var(--shadow-card);width:min(680px,100%);animation:cardIn var(--motion-card) steps(3, end);flex-direction:column;max-height:calc(100vh - 48px);display:flex}.card.narrow{width:min(440px,100%)}@keyframes cardIn{0%{opacity:0;transform:scale(.97)}}.card-tb{background:var(--ink);color:var(--paper);font-family:var(--font-px);flex:none;align-items:center;gap:10px;padding:6px 8px 6px 12px;display:flex}.card-tb h2{font-size:var(--type-body);text-transform:uppercase;letter-spacing:var(--tracking-head);text-overflow:ellipsis;white-space:nowrap;flex:1;font-weight:400;overflow:hidden}.card-tb .meta{font-size:var(--type-state);color:inherit;opacity:.75}.card-tb .iconbtn[aria-disabled=true]{opacity:.6;cursor:default}:is(.panel-tb,.card-tb) :focus-visible{outline-color:var(--paper);outline-offset:-2px}.card-body{overflow-wrap:break-word;padding:var(--pad);gap:var(--space-m);display:grid;overflow-y:auto}.card-body>*{min-width:0}.card-actions{border-top:var(--line) solid var(--ink);flex-wrap:wrap;flex:none;align-items:center;gap:12px;padding:12px 16px;display:flex}.card-acts{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:12px;margin-left:auto;display:flex}.outcome{align-items:flex-start;gap:14px;display:flex}.outcome>.glyph{width:34px;height:34px}.outcome-body{grid-template-columns:minmax(0,1fr);gap:4px;min-width:0;display:grid}.outcome-body>strong{overflow-wrap:anywhere;font-family:var(--font-px);font-size:var(--type-control);text-transform:uppercase;letter-spacing:var(--tracking-head);font-weight:400}.outcome-body>p{overflow-wrap:anywhere;max-width:52ch}.outcome-body>p+*{margin-top:8px}.keymap{gap:14px;display:grid}.keymap h3{font-family:var(--font-px);font-size:var(--type-label);text-transform:uppercase;letter-spacing:var(--tracking-label);color:var(--muted);margin:0 0 4px;font-weight:400}.keymap-row{border-bottom:var(--hair) solid var(--rule);align-items:baseline;gap:16px;padding:4px 0;display:flex}.keymap-row:last-child{border-bottom:0}.keymap-row kbd{font-family:var(--font-px);font-size:var(--type-state);flex:none;width:12ch}.keymap-row span{font-family:var(--font-px);font-size:var(--type-state);color:var(--muted)}.palette-q{flex-wrap:wrap;flex:none;align-items:center;gap:8px;padding:12px 16px 8px;display:flex}.palette-q input{flex:14ch;width:auto;min-width:0}.palette-scope{font-family:var(--font-px);font-size:var(--type-label);color:var(--muted);border:var(--hair) solid var(--rule);overflow-wrap:anywhere;flex:0 auto;min-width:0;padding:1px 5px}.palette-title{font-family:var(--font-px);font-size:var(--type-label);text-transform:uppercase;letter-spacing:var(--tracking-label);flex:none}.palette-list{max-height:min(50vh,420px);padding:4px 0 8px;overflow-y:auto}.palette-group{font-family:var(--font-px);font-size:var(--type-label);text-transform:uppercase;letter-spacing:var(--tracking-label);color:var(--muted);padding:8px 16px 2px}.palette-row{width:100%;font-family:var(--font-px);font-size:var(--type-control);text-transform:uppercase;letter-spacing:var(--tracking-caps);cursor:pointer;color:inherit;text-align:left;background:0 0;border:0;align-items:center;gap:10px;padding:8px 16px;display:flex}.palette-row[aria-disabled=true]{color:var(--muted);cursor:default}.palette-row[aria-selected=true]{background:var(--ink);color:var(--paper)}.palette-row:hover:not([aria-selected=true]){background-color:var(--head)}.palette-row .hint{font-size:var(--type-state);text-transform:none;color:var(--muted);white-space:normal;overflow-wrap:anywhere;flex:0 auto;min-width:0;max-width:50%;margin-left:auto}.palette-label{white-space:normal;overflow-wrap:anywhere;flex:1;min-width:0}.palette-row[aria-selected=true] .hint,.palette-row[aria-selected=true] .tag{color:inherit;opacity:.75}.palette-row[aria-selected=true] .tag{border-color:currentColor}.palette-row.authored{font-family:var(--font-body);font-size:var(--type-body);text-transform:none;letter-spacing:normal}.palette-row.authored .glyph{color:var(--muted);display:inline-flex}.palette-row[aria-selected=true] .glyph{color:inherit}.palette-row .glyph.opens{color:var(--muted);display:inline-flex}.palette-row:has(.hint) .glyph.opens{margin-left:-4px}.palette-row:not(:has(.hint)) .glyph.opens{margin-left:auto}.palette-detail{gap:8px;padding:4px 16px;display:grid}.palette-more{border-top:var(--hair) solid var(--rule);font-family:var(--font-px);font-size:var(--type-state);color:var(--muted);flex:none;padding:4px 16px 8px}.empty{text-align:center;justify-items:center;gap:6px;padding:26px 16px;display:grid}.empty-title{font-family:var(--font-px);font-size:var(--type-control);text-transform:uppercase;letter-spacing:var(--tracking-title);margin:0;font-weight:400}.empty p{color:var(--muted);max-width:46ch}.empty .btn{margin-top:6px}.banner{bottom:calc(var(--statusbar-h,0px) + 16px);z-index:150;background:var(--paper);border:var(--line) solid var(--ink);box-shadow:var(--shadow-button);align-items:center;gap:14px;max-width:min(680px,100vw - 32px);padding:8px 14px;display:flex;position:fixed;left:50%;transform:translate(-50%)}.banner>.glyph{width:26px;height:26px}.wall{place-items:center;min-height:100vh;padding:24px;display:grid}.wall .card{animation:none}.wall-mark{align-items:center;gap:12px;display:flex}.wall-mark .wordmark{font-size:var(--type-wordmark-wall)}.wall-mark .glyph{border:var(--line) solid var(--ink);background:var(--paper);width:30px;height:30px;color:var(--ink);place-items:center;display:grid}.wall-corner{z-index:1;background:var(--paper);border:var(--line) solid var(--ink);max-width:calc(100% - 24px);box-shadow:var(--shadow-button);flex-wrap:wrap;align-items:center;gap:10px;padding:6px 8px;display:flex;position:absolute;top:12px;left:12px}.wall-corner~.wall{padding-top:72px}@media (width<=600px){.wall-corner{width:fit-content;margin:12px 12px 0;position:static}.wall-corner~.wall{padding-top:24px}}.card-body>.rows{margin-inline:calc(-1 * var(--pad));border-block:var(--hair) solid var(--rule)}.row .grow>.identity{white-space:normal}.group-name{font-family:var(--font-px);font-size:var(--type-name);text-transform:uppercase;letter-spacing:var(--tracking-caps)}.row.context .title,.row.context .group-name,.row.context:hover button.glyph{color:var(--muted)}@media (width<=600px){.tree .row{flex-wrap:wrap;justify-content:flex-end;row-gap:4px}.tree .row .grow{flex:calc(100% - 30px)}.tree .row .title{-webkit-line-clamp:3}.tree .row:has(.group-name){flex-wrap:nowrap}.tree .row:has(.group-name) .grow{flex:1}}.due{font-family:var(--font-px);font-size:var(--type-state);color:var(--muted);white-space:nowrap}.due.late{color:var(--red)}.board{grid-template-columns:repeat(var(--cols,3), minmax(0, 1fr));gap:var(--gap);align-items:start;display:grid}.board-col{min-width:0}@media (width>=901px){.board{align-items:stretch}.board-col .panel{flex-direction:column;height:100%;max-height:calc(100vh - 150px);display:flex}.board-col .board-cards{overflow-y:auto}}@media (width<=900px){.board{grid-template-columns:1fr}}.board-col.drop-target .panel{outline:var(--line) dashed var(--ink);outline-offset:4px}.board-col.drop-target .board-cards,.board-col.drop-target .empty{background:var(--head)}.board-cards{grid-template-columns:minmax(0,1fr);gap:12px;padding:12px;list-style:none;display:grid}.board-card{border:var(--line) solid var(--ink);background:var(--paper);box-shadow:var(--shadow-button);grid-template-columns:minmax(0,1fr);gap:7px;padding:9px 11px;display:grid;position:relative}.board-card.movable{cursor:grab}.board-card [data-board-grip]{cursor:grab;touch-action:none;margin-right:-6px}.board-card.lifted{cursor:grabbing;background:var(--head);box-shadow:var(--shadow-card)}.board-lift{width:var(--lift-width,240px);translate:var(--lift-x,0) var(--lift-y,0)}.board-lift-slot{list-style:none}.board-card:hover{background:var(--head)}.board-card.drag-dim{opacity:.4}.board-card:focus-within{outline:var(--line) solid var(--ink);outline-offset:2px;background:var(--head)}.board-card .title:focus-visible{outline:none}.board-card[aria-current=true]:is(:hover,:focus-within){background-color:var(--ink)}.board-card .title{font:inherit;color:inherit;cursor:pointer;text-align:left;-webkit-line-clamp:2;overflow-wrap:anywhere;background:0 0;border:none;-webkit-box-orient:vertical;padding:0;display:-webkit-box;overflow:hidden}.board-card input.inline-input{color:var(--ink)}.board-card input.inline-input:focus-visible{outline:none}.board-card .meta-row{align-items:center;gap:8px;min-height:14px;display:flex}.board-card .meta-row .gap{flex:1}.cells{border:var(--line) solid var(--ink);background:var(--paper);flex:none;gap:2px;padding:2px;display:inline-flex}.cells .cell{background:var(--head);width:10px;height:14px}.cells .cell.on{background:var(--ink)}.cells.short .cell{width:24px;height:8px}@media (width<=600px){.cells:not(.short) .cell{width:8px}}.meters{list-style:none}.meter-row{gap:6px var(--gap);padding:14px var(--pad);border-bottom:var(--hair) solid var(--rule);grid-template-columns:minmax(180px,240px) minmax(0,1fr);display:grid}.meter-row:last-child{border-bottom:0}.meter-head{flex-direction:column;grid-row:span 2;align-items:flex-start;gap:2px;display:flex}.meter-row .notice{grid-column:1/-1;align-items:center}@media (width<=700px){.meter-row{grid-template-columns:minmax(0,1fr)}.meter-head{flex-direction:row;grid-row:auto;align-items:baseline;gap:12px}}.meter-name{font-family:var(--font-px);font-size:var(--type-name);text-transform:uppercase;letter-spacing:var(--tracking-caps)}.meter-detail{font-family:var(--font-px);font-size:var(--type-label);color:var(--muted)}.meter-line{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.meter-row.stale .cells .cell.on{background:var(--muted)}.meter-line .pct{font-family:var(--font-px);font-size:var(--type-control);min-width:4ch}.mark.reading{font-family:var(--font-px);font-size:var(--type-state);padding:1px 6px}.meter-num{font-family:var(--font-px);font-size:var(--type-state);color:var(--muted)}.meter-foot{font-family:var(--font-px);font-size:var(--type-state);color:var(--muted);flex-wrap:wrap;gap:16px;display:flex}.meter-foot .late{color:var(--red)}@media (width<=600px){.meter-num{width:100%}}.history-list.checks{border-top:0}.history-list.checks .who{width:20ch;max-width:none}.history-list .what.failed{color:var(--red)}@media (width<=600px){.history-list.checks .who{width:12ch}}.history-list.wrapped{border-top:0}.history-list.wrapped li{flex-wrap:wrap;row-gap:2px;padding:6px 0}.history-list.wrapped li:first-child{padding-top:0}.history-list.wrapped li:last-child{padding-bottom:0}.history-list.wrapped .v{width:auto;color:var(--muted);padding:0}.history-list.wrapped li.current .v{padding:0 4px}.history-list.wrapped .who{white-space:normal;overflow-wrap:anywhere;flex:1;width:auto;max-width:none}.history-list.wrapped li>:not(.v,.who,.what){margin-left:auto}.history-list.wrapped .what{font-size:var(--type-control);white-space:normal;overflow-wrap:anywhere;flex-basis:100%;order:1;line-height:1.45}.chart{min-width:0}.chart .cell{background:var(--head)}.chart .cell.on{background:var(--ink)}.bar-scale,.bar-label,.line-scale,.line-labels,.chart-key{font-family:var(--font-px);font-size:var(--type-label);text-transform:uppercase;letter-spacing:var(--tracking-label);color:var(--muted);font-variant-numeric:tabular-nums;line-height:10px}.bar-num{font-family:var(--font-px);font-size:var(--type-state);color:var(--muted)}.bar-value{font-variant-numeric:tabular-nums}.bar-cols .bar-num.none{white-space:normal;text-align:center}.bar-cols{grid-template-columns:max-content repeat(var(--n), minmax(6px, 40px));grid-template-rows:auto auto auto;gap:8px 2px;padding:0 4px 2px 0;display:grid;overflow-x:auto}.bar-cols.each{grid-template-columns:max-content repeat(var(--n), minmax(min-content, 48px))}.bar-cols:before,.bar-rows:before{content:"";border:var(--line) solid var(--ink);background:var(--paper);margin:-4px}.bar-cols:before{grid-area:2/2/auto/-1}.bar-scale{flex-direction:column;grid-area:2/1;justify-content:space-between;align-items:flex-end;margin-right:10px;display:flex}.bar-cols .bar-value{white-space:nowrap;grid-row:1;place-self:end center;padding-inline:2px;display:flex}.bar-cols .bar-cells{grid-row:2;grid-template-rows:repeat(var(--cells), 10px);gap:2px;display:grid}.bar-cols .bar-label{white-space:nowrap;text-overflow:ellipsis;grid-row:3;width:0;min-width:100%;overflow:hidden}.bar-cols.each .bar-label{text-align:center;justify-self:center;width:auto;min-width:0;max-width:10ch}.bar-rows{grid-template-columns:minmax(0,max-content) minmax(120px,1fr) max-content;grid-template-rows:repeat(var(--n), 14px);gap:2px 14px;padding-block:4px;display:grid}.bar-rows:before{grid-area:1/2/-1}.bar-rows .bar-label{white-space:nowrap;text-overflow:ellipsis;grid-column:1;max-width:24ch;line-height:14px;overflow:hidden}.bar-rows .bar-cells{grid-column:2;grid-template-columns:repeat(var(--cells), minmax(0, 1fr));gap:2px;display:grid}.bar-rows .bar-value{grid-column:3;align-items:center;display:flex}.bar-rows .chip{padding-block:0;line-height:10px}.bar-rows .mark.reading{padding-block:0;line-height:14px}@media (width<=600px){.bar-rows .bar-label{max-width:12ch}}.line-chart{grid-template-columns:max-content minmax(0,1fr);grid-template-areas:".key""scale plot"".labels";gap:8px 10px;display:grid}.chart-key{flex-wrap:wrap;grid-area:key;gap:6px 16px;list-style:none;display:flex}.chart-key li{align-items:center;gap:6px;display:flex}.key-cell{background:var(--ink);width:6px;height:6px}.chart-key .second .key-cell{background:var(--muted);width:4px;height:4px;margin:1px}.line-scale{flex-direction:column;grid-area:scale;justify-content:space-between;align-items:flex-end;padding-top:6px;display:flex}.line-scale>:first-child{translate:0 -50%}.line-scale>:last-child{translate:0 50%}.line-plot{height:var(--chart-plot);border-left:var(--hair) solid var(--rule);border-bottom:var(--hair) solid var(--rule);grid-area:plot;padding:6px 8px 0}.line-plot svg{width:100%;height:100%;display:block;overflow:visible}.line-plot path{fill:none;stroke:var(--ink);vector-effect:non-scaling-stroke;stroke-linecap:square;shape-rendering:crispedges}.line-path{stroke-width:var(--line)}.line-cells{stroke-width:6px}.line-plot .second path{stroke:var(--muted)}.line-plot .second .line-cells{stroke-width:4px}.line-labels{grid-area:labels;height:10px;margin:0 8px 0 9px;position:relative}.line-labels>span{white-space:nowrap;text-overflow:ellipsis;max-width:12ch;position:absolute;top:0;overflow:hidden;translate:-50%}.line-labels>.first{translate:0}.line-labels>.last{translate:-100%}@media (width<=600px){.line-labels>span:nth-child(2n){display:none}}.crumbs ol{font-family:var(--font-px);font-size:var(--type-state);letter-spacing:var(--tracking-caps);flex-wrap:wrap;align-items:center;gap:2px 0;list-style:none;display:flex}.crumbs li+li:before{content:"/";color:var(--muted);margin:0 8px}.crumbs a{color:var(--muted);border-bottom:var(--hair) dotted transparent;text-decoration:none}.crumbs a:hover{color:var(--ink);border-bottom-color:var(--ink)}.crumbs [aria-current=page]{color:var(--ink)}.file-tree{border:var(--line) solid var(--ink);padding:6px 0}.panel>.file-tree{border:0}.file-tree ul{list-style:none}.file-tree ul ul{padding-left:16px;position:relative}.file-tree ul ul:before{content:"";background:var(--rule);width:1px;position:absolute;top:0;bottom:6px;left:15px}.file{width:100%;font-family:var(--font-code);font-size:var(--type-control);color:var(--ink);text-align:left;cursor:pointer;background:0 0;border:0;align-items:center;gap:8px;padding:5px 10px;text-decoration:none;display:flex}.file:hover{background:var(--head)}.file[aria-current=true]{background:var(--ink);color:var(--paper)}.file .glyph{color:var(--muted);flex:none;display:inline-flex}.file[aria-current=true] .glyph,.file[aria-current=true] .tag{color:inherit;border-color:currentColor}.file .name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.drop-zone{padding:28px var(--pad);text-align:center;border:var(--line) dashed var(--ink);justify-items:center;gap:10px;display:grid}.drop-zone[data-drag-over]{background:var(--head);border-style:solid}.drop-zone-glyph{border:var(--line) solid var(--ink);background:var(--paper);place-items:center;width:34px;height:34px;display:grid}.drop-zone p{color:var(--muted);max-width:44ch}.drop-zone p strong{font-family:var(--font-px);font-size:var(--type-control);text-transform:uppercase;letter-spacing:var(--tracking-title);color:var(--ink);margin-bottom:2px;font-weight:400;display:block}.drop-zone .btn:focus-within{outline:var(--line) solid var(--ink);outline-offset:2px}.sheet{padding:28px 32px 36px}.sheet-head{flex-wrap:wrap;align-items:flex-start;gap:16px;display:flex}.sheet-title{font:var(--read-weight) var(--read-title) / 1.15 var(--font-body);letter-spacing:-.01em;text-wrap:balance;max-width:var(--read-measure);flex:20ch}.sheet-title:focus{outline:none}.sheet-acts{gap:10px;padding-top:4px;display:flex}.byline{margin:10px 0 var(--gap);border-bottom:var(--hair) solid var(--rule);font-family:var(--font-px);font-size:var(--type-label);letter-spacing:var(--tracking-caps);color:var(--muted);padding-bottom:14px}.sheet>.notice{max-width:var(--read-measure);margin-bottom:20px}@media (width<=600px){.sheet{padding:20px var(--pad) 28px}.sheet-title{font-size:25px}.sheet-acts{padding-top:0}}.prose{font:var(--read-body) / 1.65 var(--font-body);color:var(--ink)}.prose>p,.prose>ul,.prose>ol,.prose>:is(h1,h2,h3,h4,h5,h6),.prose>blockquote,.prose>.notice{max-width:var(--read-measure)}.prose>*+*{margin-top:1em}.prose :is(h1,h2){font:var(--read-weight) var(--read-h2) / 1.3 var(--font-body);letter-spacing:-.005em;text-wrap:balance;margin-top:2em}.prose h3{font:var(--read-weight) var(--read-h3) / 1.4 var(--font-body);margin-top:1.6em}.prose :is(h4,h5,h6){margin-top:calc(1.6 * var(--read-body))}.prose h4{font:var(--type-control) / 1.4 var(--font-px);text-transform:uppercase;letter-spacing:var(--tracking-label)}.prose h5{font:var(--read-weight) var(--type-body) / 1.45 var(--font-body)}.prose h6{font:var(--type-label) / 1.4 var(--font-px);text-transform:uppercase;letter-spacing:var(--tracking-label);color:var(--muted)}.prose :is(h1,h2,h3,h4,h5,h6)+*{margin-top:.5em}.prose>:first-child{margin-top:0}.prose :is(h1,h2,h3,h4,h5,h6):focus{outline:none}.prose ul,.prose ol{padding-left:1.4em}.prose li+li{margin-top:.35em}.prose ul{list-style:square}.prose li::marker{color:var(--muted)}.prose ol li::marker{font-family:var(--font-px);font-size:var(--type-control)}.prose strong{font-weight:var(--read-weight)}.prose :not(pre)>code{background:var(--head);padding:1px 5px;font-size:.85em}.prose pre.code-surface{font-size:12.5px}.prose .table-wrap{border:var(--line) solid var(--ink)}.prose .table{font-size:var(--type-name)}.prose .table td{vertical-align:top}.prose blockquote{border-left:var(--hair) solid var(--ink);color:var(--muted);padding-left:16px}.prose hr{border:0;border-top:var(--hair) solid var(--rule);margin:2em 0}.prose .notice{font:var(--type-name) / 1.55 var(--font-body)}.prose a{color:var(--ink);text-underline-offset:3px;text-decoration:underline;text-decoration-thickness:1px}.prose a:hover{text-decoration-thickness:2px}.prose a.missing{color:var(--red);text-decoration-style:dotted;-webkit-text-decoration-color:var(--red);text-decoration-color:var(--red)}.toc{padding:6px 0;list-style:none}.toc a{font:var(--type-body) / 1.35 var(--font-body);color:var(--ink);align-items:baseline;gap:8px;padding:5px 12px;text-decoration:none;display:flex}.toc .l3 a{font-size:var(--type-control);color:var(--muted);padding-left:28px}.toc-entry{gap:2px;display:grid}.toc a:before{content:"";flex:none;width:6px;height:6px;transform:translateY(-1px)}.toc a[aria-current=true]:before{background:var(--ink)}.toc a[aria-current=true]{color:var(--ink)}.toc a:hover{background:var(--head)}.chip .cursor,.link-state .cursor{width:5px;height:9px;margin-left:4px}.loading .cursor{margin-left:6px}.loading{text-align:center;font-family:var(--font-px);font-size:var(--type-control);text-transform:uppercase;letter-spacing:var(--tracking-title);color:var(--muted);padding:26px 16px}.loading-idle{position:absolute}.monogram{border:var(--line) solid var(--ink);background:var(--paper);width:22px;height:22px;color:var(--ink);font-family:var(--font-px);font-size:var(--type-state);text-transform:uppercase;-webkit-user-select:none;user-select:none;flex:none;place-items:center;line-height:1;display:inline-grid}.monogram.large{width:34px;height:34px;font-size:var(--type-name)}.monogram.current{background:var(--ink);color:var(--paper)}.identity{align-items:center;gap:10px;min-width:0;display:flex}.identity-text{gap:2px;min-width:0;display:grid}.identity-text strong{overflow-wrap:anywhere;font-weight:600}.identity-text .meta{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.identity.large{gap:12px}.identity.large strong{font-size:var(--type-title)}.stats{grid-template-columns:repeat(var(--cols,4), minmax(0, 1fr));display:grid;overflow:clip}.stat{min-width:0;padding:14px var(--pad);margin:0 calc(-1 * var(--hair)) calc(-1 * var(--hair)) 0;border-right:var(--hair) solid var(--rule);border-bottom:var(--hair) solid var(--rule);align-content:start;justify-items:start;gap:6px;display:grid}.stat>*{overflow-wrap:anywhere;max-width:100%}.stat-value{font-family:var(--font-px);font-size:var(--type-figure);font-variant-numeric:tabular-nums;color:var(--ink);line-height:1.1}.stat-value.unknown{color:var(--muted)}.stat-value .cursor{vertical-align:-2px;width:12px;height:24px}.stat-unit{font-size:var(--type-control);text-transform:uppercase;letter-spacing:var(--tracking-caps);color:var(--muted);margin-left:6px}.stat-delta{font-family:var(--font-px);font-size:var(--type-state);letter-spacing:var(--tracking-state);font-variant-numeric:tabular-nums;color:var(--ink);align-items:center;gap:4px;display:inline-flex}.stat-delta.warn,.stat-delta.error{border:var(--line) solid var(--ink);padding:1px 6px}.stat-delta.warn{background:var(--amber);color:var(--on-status)}.stat-delta.error{background:var(--paper);color:var(--red);border-color:var(--red)}.stat-note{max-width:46ch;font:var(--type-control) / 1.45 var(--font-body);color:var(--muted)}.stat:last-child{border-right:0}@media (width<=900px){.stat-value{font-size:var(--type-figure-narrow)}.stat-value .cursor{width:9px;height:18px}}@media (width<=600px){.stats{grid-template-columns:repeat(2,minmax(0,1fr))}.stat{padding:12px}}.tip[popover]{position-anchor:auto;position-area:top;position-try-fallbacks:top span-left, top span-right, flip-block, bottom span-left, bottom span-right;outline:var(--line) solid var(--paper);background:var(--ink);max-width:min(36ch,100vw - 24px);color:var(--paper);font-family:var(--font-px);font-size:var(--type-state);text-transform:uppercase;letter-spacing:var(--tracking-state);border:0;margin:0 0 6px;padding:3px 7px;line-height:1.35;inset:auto;overflow:visible}.toolbar{gap:var(--line);border:var(--line) solid var(--ink);background:var(--ink);width:fit-content;max-width:100%;display:inline-flex}.toolbar.floating{box-shadow:var(--shadow-button)}.toolbar[aria-orientation=vertical]{flex-direction:column}.toolbar>:is(button,a){min-width:30px;height:28px;font-family:var(--font-px);font-size:var(--type-state);text-transform:uppercase;letter-spacing:var(--tracking-state);background:var(--paper);color:var(--ink);box-shadow:none;cursor:pointer;white-space:nowrap;border:0;justify-content:center;align-items:center;gap:6px;padding:0 10px;text-decoration:none;display:inline-flex}.toolbar>.iconbtn{width:30px;padding:0}.toolbar>:is(button,a):hover{background:var(--head)}.toolbar>:focus-visible{outline-offset:-4px;outline-color:currentColor}.toolbar>[aria-pressed=true],.toolbar>[aria-pressed=true]:hover{background:var(--ink);color:var(--paper)}.toolbar>:is(button,a):not(:disabled,[aria-disabled=true]):active{box-shadow:none;transform:translate(1px,1px)}.toolbar>button:disabled{background:var(--paper);color:var(--muted);cursor:default}.tip[popover][data-side=right]{position-area:right;position-try-fallbacks:flip-inline;margin:0 0 0 6px}.disclosure>:is(summary,.disclosure-summary){width:100%;color:inherit;text-align:left;cursor:pointer;-webkit-user-select:none;user-select:none;font-family:var(--font-px);font-size:var(--type-control);text-transform:uppercase;letter-spacing:var(--tracking-caps);background:0 0;border:0;align-items:center;gap:8px;padding:3px 0;list-style:none;display:flex}.disclosure>summary::-webkit-details-marker{display:none}.disclosure[open]>summary .px-icon,.disclosure>.disclosure-summary[aria-expanded=true] .px-icon{transform:rotate(90deg)}.disclosure-label{border-bottom:1px dotted #0000}.disclosure>:is(summary,.disclosure-summary):hover .disclosure-label{border-bottom-color:var(--ink)}.disclosure>.disclosure-summary[aria-disabled=true]{color:var(--muted);cursor:default}.disclosure>.disclosure-summary[aria-disabled=true]:hover .disclosure-label{border-bottom-color:#0000}.disclosure>:is(summary,.disclosure-summary) .meta{margin-left:auto}.disclosure-body{gap:var(--space-m);border-left:var(--hair) solid var(--rule);margin:6px 0 2px 5px;padding:4px 0 4px 14px;display:grid}.disclosure-body>*{min-width:0}.statusbar{z-index:40;background:var(--paper);border-top:var(--hair) solid var(--rule);font-family:var(--font-px);font-size:var(--type-state);color:var(--muted);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:4px 16px;padding:4px 20px;display:flex;position:fixed;bottom:0;left:0;right:0}.statusbar-state{flex-wrap:wrap;align-items:center;gap:4px 12px;min-width:0;display:flex}.statusbar-keys{flex-wrap:wrap;gap:4px 12px;margin:0;display:flex}.statusbar-keys .key-hint{font:inherit;color:var(--ink)}.railed{padding-left:var(--rail)}.rail[popover]{inset:auto;top:anchor(--topbar bottom, 0px);bottom:var(--statusbar-h,0px);align-content:start;gap:var(--gap);width:var(--rail);height:auto;padding:var(--gap) 10px var(--gap) 20px;color:inherit;background:0 0;border:0;margin:0;display:grid;position:fixed;left:0;overflow-y:auto}.rail>*{min-width:0}.rail-head,.rail-open{display:none}@media (width<=900px){.railed{padding-left:0}.rail[popover]:not(:popover-open){display:none}.rail[popover]:popover-open{width:min(calc(var(--rail) + 48px), calc(100vw - 40px));height:100dvh;max-height:none;padding:12px 16px var(--gap) 12px;background-color:var(--ground);background-image:var(--dither);border-right:var(--line) solid var(--ink);box-shadow:var(--shadow-card);animation:railIn var(--motion-card) steps(3, end);inset:0 auto 0 0}.rail[popover]::backdrop{background-color:var(--veil);background-image:var(--veil-grain)}.rail-head{justify-content:space-between;align-items:center;gap:12px;display:flex}.rail-open{justify-self:start;display:inline-flex}}@keyframes railIn{0%{translate:-100%}}.stage{top:anchor(--topbar bottom, 0px);right:0;bottom:var(--statusbar-h,0px);position:fixed;left:0;overflow:hidden}.stage-work,.stage-canvas{position:absolute;inset:0}.stage-tools{z-index:10;position:absolute;top:50%;left:16px;translate:0 -50%}.stage-bar{z-index:10;flex-wrap:wrap;justify-content:center;align-items:center;gap:8px;width:max-content;max-width:calc(100% - 32px);display:flex;position:absolute;top:16px;left:50%;translate:-50%}.stage-paused{z-index:20;background-color:var(--veil);background-image:var(--veil-grain);place-items:center;padding:24px;display:grid;position:absolute;inset:0}.stage-paused>.notice{width:min(460px,100%);box-shadow:var(--shadow-button)}@media (width<=600px){.stage-tools{top:auto;bottom:16px;left:50%;translate:-50%}.stage-tools .toolbar{flex-direction:row}}.window{flex-direction:column;height:100%;min-height:0;display:flex}.window>.panel-tb{-webkit-user-select:none;user-select:none;align-items:center;gap:8px;min-height:30px;padding:3px 3px 3px 10px}.window>.panel-tb h2{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.window>.panel-tb .chip{border-color:var(--paper)}.window>.panel-tb .iconbtn,.window>.panel-tb .iconbtn.quiet{color:inherit}.window-body{align-content:start;gap:var(--space-m);min-height:0;padding:var(--pad);flex:1;display:grid;overflow:auto}.window.flush .window-body{padding:0;display:block}.window.flush .window-body>:is(.code-surface,.file-tree,.diff-wrap){border:0;min-height:100%}.window-body>*{min-width:0}.image,.video{gap:6px;min-width:0;max-width:100%;display:grid}.image-frame,.media-screen{box-sizing:content-box;aspect-ratio:var(--ratio);background:var(--head);position:relative;overflow:hidden}.image-frame,.media-box,.audio{border:var(--line) solid var(--ink)}.image-frame>img,.media-screen>video{object-fit:cover;width:100%;height:100%;display:block;position:absolute;inset:0}.media-screen>video{object-fit:contain}.media-screen>video::cue{font-family:var(--font-body);background:var(--ink);color:var(--paper)}.image-wait{background:var(--head);color:var(--on-head);place-items:center;display:grid;position:absolute;inset:0}.image.waiting img{visibility:hidden}.media-wait{pointer-events:none;place-items:center;display:grid;position:absolute;inset:0}.media-wait>.loading{border:var(--line) solid var(--ink);background:var(--paper);color:var(--ink);padding:4px 10px}.image.broken>.image-frame,.video.broken>.media-box,.audio.broken{border-color:var(--red)}.image.broken img{visibility:hidden}.media-broken{background:var(--paper);place-items:center;padding:12px;display:grid;position:absolute;inset:0;overflow:hidden}:is(.media-broken,.audio)>.notice{background:0 0;border:0;max-width:52ch}.media-caption{font:var(--type-control) / 1.45 var(--font-body);color:var(--muted);flex-wrap:wrap;align-items:baseline;gap:2px 12px;display:flex}.media-caption>.meta{margin-left:auto}.media-bar{background:var(--paper);flex-wrap:wrap;align-items:center;gap:4px 8px;padding:3px 6px;display:flex}.video .media-bar{border-top:var(--line) solid var(--ink);flex-wrap:nowrap}.media-bar .iconbtn:hover{background:var(--head)}.media-bar .iconbtn[aria-pressed=true]{background:var(--ink);color:var(--paper)}.media-bar .iconbtn:is(:disabled,[aria-disabled=true]){color:var(--muted);cursor:default;background:0 0}.media-title{text-overflow:ellipsis;white-space:nowrap;flex:12ch;min-width:0;overflow:hidden}.media-seek{flex:120px;min-width:48px;display:flex;position:relative}.media-seek>.cells{flex:1}.media-seek>.cells>.cell{flex:1;width:auto;min-width:2px}.media-seek>input{opacity:0;appearance:none;cursor:pointer;width:100%;height:100%;margin:0;position:absolute;inset:0}.media-seek>input::-webkit-slider-thumb{appearance:none;width:2px;height:22px}.media-seek>input::-moz-range-thumb{border:0;width:2px}.media-seek>input:is(:disabled,[aria-disabled=true]){cursor:default}.media-seek:has(>input:is(:disabled,[aria-disabled=true]))>.cells{border-color:var(--muted)}.media-seek:has(>input:focus-visible)>.cells{outline:var(--line) solid var(--ink);outline-offset:2px}.media-time{min-width:11ch;font-family:var(--font-px);font-size:var(--type-state);font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap;flex:none}.media-time.waiting{text-transform:uppercase;letter-spacing:var(--tracking-title);color:var(--muted)}.media-time .cursor{margin-left:4px}.toasts .toast-stack{width:min(392px,100vw);bottom:calc(anchor(--banner top, calc(var(--statusbar-h,0px) + 4px)) - 4px)!important;gap:10px!important}.banner{anchor-name:--banner}.toast{box-shadow:var(--shadow-button)}.toast.quiet{border-color:var(--ink);color:var(--ink)}.toast>div{overflow-wrap:anywhere}.toast>.iconbtn{flex:none;margin:-2px -4px -2px 0}.toasts .toast{animation:toastIn var(--motion-card) steps(3, end)}@keyframes toastIn{0%{opacity:0;transform:translateY(8px)}}@media (width<=600px){.toasts .toast-stack{width:auto;left:0!important}}@media (prefers-reduced-motion:reduce){.toasts .toast,.cursor,.veil-backdrop,.card{animation:none}.rail[popover]:popover-open{animation:none}}