@lynq/lynq 0.8.0 → 0.8.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.
Files changed (2) hide show
  1. package/dist/index.mjs +1 -1
  2. package/package.json +1 -1
package/dist/index.mjs CHANGED
@@ -1 +1 @@
1
- import {b as b$1,c,d,a as a$1,k,f,e}from'./chunk-3BJEUP3F.mjs';import {a,c as c$2}from'./chunk-ICQVA5UM.mjs';export{a as memoryStore}from'./chunk-ICQVA5UM.mjs';import {c as c$1,d as d$1,b as b$2,a as a$2}from'./chunk-VAAZWX4U.mjs';export{c as error,d as image,b as json,a as text}from'./chunk-VAAZWX4U.mjs';import {Server}from'@modelcontextprotocol/sdk/server/index.js';import {InMemoryTaskStore}from'@modelcontextprotocol/sdk/experimental/tasks';import {ListToolsRequestSchema,CallToolRequestSchema,ListResourcesRequestSchema,ListResourceTemplatesRequestSchema,ReadResourceRequestSchema}from'@modelcontextprotocol/sdk/types.js';function z(){let t=new Map;function e(){let r=Date.now();for(let[a,l]of t)r-l.createdAt>36e5&&t.delete(a);}function o(r,a,l){return e(),new Promise(p=>{let n;try{n=l.createElicitationCompletionNotifier(r);}catch{}t.set(r,{resolver:p,completionNotifier:n,createdAt:Date.now()});})}function s(r){e();let a=t.get(r);a&&(t.delete(r),a.completionNotifier&&a.completionNotifier().catch(()=>{}),a.resolver());}function i(r){let a=t.get(r);a&&(t.delete(r),a.resolver());}return {register:o,complete:s,cancel:i}}function K(t,e,o){return {async form(s,i){let r=a$1(i),a=await t.elicitInput({message:s,requestedSchema:r});return {action:a.action,content:a.content??{}}},async url(s,i,r){let a=r?.elicitationId??crypto.randomUUID(),l;r?.waitForCompletion&&e&&(l=e(a,t));let p=await t.elicitInput({mode:"url",message:s,url:i,elicitationId:a});if(p.action==="accept"&&l){let n=r?.timeout??3e5,g,v=new Promise((T,d)=>{g=setTimeout(()=>d(new Error("Elicitation timed out")),n);});try{await Promise.race([l,v]);}catch(T){throw o&&o(a),T}finally{clearTimeout(g);}}else l&&o&&o(a);return {action:p.action}}}}function L(t){return async()=>{try{return (await t.listRoots()).roots.map(o=>{let s={uri:o.uri};return o.name!==void 0&&(s.name=o.name),s})}catch{return []}}}function Q(t){async function e(s,i){let r={messages:[{role:"user",content:{type:"text",text:s}}],maxTokens:i?.maxTokens??1024};i?.model!==void 0&&(r.modelPreferences={hints:[{name:i.model}]}),i?.system!==void 0&&(r.systemPrompt=i.system),i?.temperature!==void 0&&(r.temperature=i.temperature),i?.stopSequences!==void 0&&(r.stopSequences=i.stopSequences);let l=(await t.createMessage(r)).content;return l.type==="text"?l.text:""}async function o(s){return t.createMessage(s)}return Object.assign(e,{raw:o})}function O(t,e,o,s,i,r,a,l,p){return {toolName:s,args:i,session:o,signal:r,sessionId:e,elicit:K(t,l,p),roots:L(t),sample:Q(t),text:a$2,json:b$2,error:c$1,image:d$1,store:a,userStore:c$2(o,a)}}function b(t,e){let o=t.sessions.get(e);if(!o&&(o={data:new Map,grants:new Set,toolOverrides:new Map,resourceOverrides:new Map},t.sessions.set(e,o),t.onSessionCreate))try{Promise.resolve(t.onSessionCreate(e)).catch(()=>{});}catch{}return o}function P(t,e$1,o){let s=b(t,o);return e(e$1.hiddenByMiddlewares,e$1.name,s.toolOverrides,s.grants)}function C(t,e$1,o){let s=b(t,o);return e(e$1.hiddenByMiddlewares,e$1.uri,s.resourceOverrides,s.grants)}function x(t,e$1,o){let s=b(t,o);return e(e$1.hiddenByMiddlewares,e$1.name,s.toolOverrides,s.grants)}function _(t,e,o){(o&&t.serverBySession.get(o)||e).sendToolListChanged().catch(()=>{});}function A(t,e,o){(o&&t.serverBySession.get(o)||e).sendResourceListChanged().catch(()=>{});}function w(t,e,o){let s=b(t,o);return {get(i){return s.data.get(i)},set(i,r){s.data.set(i,r);},authorize(i){s.grants.add(i),_(t,e,o),A(t,e,o);},revoke(i){s.grants.delete(i),_(t,e,o),A(t,e,o);},enableTools(...i){for(let r of i)s.toolOverrides.set(r,"enabled");_(t,e,o);},disableTools(...i){for(let r of i)s.toolOverrides.set(r,"disabled");_(t,e,o);},enableResources(...i){for(let r of i)s.resourceOverrides.set(r,"enabled");A(t,e,o);},disableResources(...i){for(let r of i)s.resourceOverrides.set(r,"disabled");A(t,e,o);}}}function F(){let t=new Set,e=new InMemoryTaskStore;return {taskStore:new Proxy(e,{get(s,i,r){return i==="updateTaskStatus"?async(a,l,...p)=>(l==="cancelled"&&t.add(a),s.updateTaskStatus.call(s,a,l,...p)):Reflect.get(s,i,r)}}),cancelledTaskIds:t}}function N(t,e,o,s,i){t.setRequestHandler(ListToolsRequestSchema,(r,a)=>{let l=a.sessionId??"default",p=[];for(let n of e.tools.values())P(e,n,l)&&p.push({name:n.name,description:n.description,inputSchema:a$1(n.input)});for(let n of e.tasks.values())x(e,n,l)&&p.push({name:n.name,description:n.description,inputSchema:a$1(n.input),execution:{taskSupport:"required"}});return {tools:p}}),t.setRequestHandler(CallToolRequestSchema,async(r,a)=>{let{name:l,arguments:p}=r.params,n=a.sessionId??"default",g=e.tools.get(l);if(g){if(!P(e,g,n))return c$1(`Tool not available: ${l}`);let T=p??{},d=O(t,n,w(e,o,n),l,T,a.signal,e.store,(m,f)=>s.register(m,n,f),s.cancel),u=()=>Promise.resolve(g.handler(T,d));return k(g.middlewares,d,u)()}let v=e.tasks.get(l);if(v){if(!x(e,v,n))return c$1(`Tool not available: ${l}`);let T=a.taskStore;if(!T)return c$1("Task store not available");let d=await T.createTask({pollInterval:1e3}),u=d.taskId,c={progress(S,k){if(i.has(u))return;let W=k?`${S}% ${k}`:`${S}%`;T.updateTaskStatus(u,"working",W).catch(()=>{});},get cancelled(){return i.has(u)}},m=p??{},f={...O(t,n,w(e,o,n),l,m,a.signal,e.store,(S,k)=>s.register(S,n,k),s.cancel),task:c},y=async()=>((async()=>{try{let S=await v.handler(m,f);i.has(u)||await T.storeTaskResult(u,"completed",S);}catch(S){if(!i.has(u)){let k=S instanceof Error?S.message:String(S);await T.storeTaskResult(u,"failed",c$1(k)).catch(()=>{});}}})(),{task:d});return k(v.middlewares,f,y)()}return c$1(`Unknown tool: ${l}`)}),t.setRequestHandler(ListResourcesRequestSchema,(r,a)=>{let l=a.sessionId??"default",p=[];for(let n of e.resources.values())!n.isTemplate&&C(e,n,l)&&p.push({uri:n.uri,name:n.name,description:n.description,mimeType:n.mimeType});return {resources:p}}),t.setRequestHandler(ListResourceTemplatesRequestSchema,(r,a)=>{let l=a.sessionId??"default",p=[];for(let n of e.resources.values())n.isTemplate&&C(e,n,l)&&p.push({uriTemplate:n.uri,name:n.name,description:n.description,mimeType:n.mimeType});return {resourceTemplates:p}}),t.setRequestHandler(ReadResourceRequestSchema,async(r,a)=>{let{uri:l}=r.params,p=f(e.resources,l);if(!p)throw new Error(`Unknown resource: ${l}`);let n=a.sessionId??"default";if(!C(e,p,n))throw new Error(`Resource not available: ${l}`);let g=w(e,o,n),v={uri:l,session:g,sessionId:n,roots:L(t),store:e.store,userStore:c$2(g,e.store)},T=O(t,n,g,p.uri,{},a.signal,e.store,(c,m)=>s.register(c,n,m),s.cancel),d=async()=>{let c=await p.handler(l,v);return {contents:[{uri:l,mimeType:c.mimeType??p.mimeType,...c.text!=null?{text:c.text}:{},...c.blob!=null?{blob:c.blob}:{}}]}};return k(p.middlewares,T,d)()});}function G(t,e,o,s,i,r,a){let l={tools:{listChanged:true},resources:{listChanged:true},tasks:{list:{},cancel:{},requests:{tools:{call:{}}}}};function p(){let n=new Server(t,{capabilities:l,taskStore:o});return a(n,e,s,i,r),n}return function(g){let v=null;async function T(){return v||(v=(await import('@modelcontextprotocol/sdk/server/webStandardStreamableHttp.js')).WebStandardStreamableHTTPServerTransport),v}if(g?.sessionless)return async c=>{let m=await T(),f=p(),y=new m({sessionIdGenerator:void 0,enableJsonResponse:g?.enableJsonResponse});return await f.connect(y),y.handleRequest(c)};let d=new Map,u=false;return async c=>{!u&&e.onServerStart&&(u=true,Promise.resolve(e.onServerStart()).catch(()=>{}));let m=await T(),f=c.headers.get("mcp-session-id");if(f){let S=d.get(f);return S?(g?.onRequest&&await g.onRequest(c,f,w(e,s,f)),S.transport.handleRequest(c)):new Response(JSON.stringify({jsonrpc:"2.0",error:{code:-32e3,message:"Session not found"}}),{status:404,headers:{"Content-Type":"application/json"}})}let y=p(),h=new m({sessionIdGenerator:g?.sessionIdGenerator??(()=>crypto.randomUUID()),enableJsonResponse:g?.enableJsonResponse,onsessioninitialized:S=>{d.set(S,{server:y,transport:h}),e.serverBySession.set(S,y),g?.onRequest&&g.onRequest(c,S,w(e,s,S));},onsessionclosed:S=>{d.delete(S),e.serverBySession.delete(S),e.sessions.delete(S),e.onSessionDestroy&&Promise.resolve(e.onSessionDestroy(S)).catch(()=>{});}});return await y.connect(h),h.handleRequest(c)}}}function ne(t){let e={store:t.store??a(),globalMiddlewares:[],tools:new Map,resources:new Map,tasks:new Map,sessions:new Map,serverBySession:new Map,onServerStart:t.onServerStart,onSessionCreate:t.onSessionCreate,onSessionDestroy:t.onSessionDestroy},o=z(),{taskStore:s,cancelledTaskIds:i}=F(),r=new Server(t,{capabilities:{tools:{listChanged:true},resources:{listChanged:true},tasks:{list:{},cancel:{},requests:{tools:{call:{}}}}},taskStore:s});N(r,e,r,o,i);function a$1(d){e.globalMiddlewares.push(d);}function l(...d){let u=d[0],c$1=b$1(`tool("${u}")`,d.slice(1));if(typeof c$1.config.name=="string")throw new TypeError(`tool("${u}"): second-to-last argument must be a config object`);let m=c$1.config,f=[...e.globalMiddlewares,...c$1.middlewares],y={name:u,description:m.description,middlewares:f};e.tools.set(u,{name:u,description:m.description,input:m.input,handler:c$1.handler,middlewares:f,hiddenByMiddlewares:c(y,f)});}function p(...d$1){let u=d$1[0],c$1=b$1(`resource("${u}")`,d$1.slice(1));if(typeof c$1.config.name!="string")throw new TypeError(`resource("${u}"): second-to-last argument must be a config object with a "name" property`);let m=c$1.config,f=[...e.globalMiddlewares,...c$1.middlewares],y={name:m.name,description:m.description,middlewares:f},h=u.includes("{");e.resources.set(u,{uri:u,isTemplate:h,uriPattern:h?d(u):null,name:m.name,description:m.description,mimeType:m.mimeType,handler:c$1.handler,middlewares:f,hiddenByMiddlewares:c(y,f)});}function n(...d){let u=d[0],c$1=b$1(`task("${u}")`,d.slice(1));if(typeof c$1.config.name=="string")throw new TypeError(`task("${u}"): second-to-last argument must be a config object`);let m=c$1.config,f=[...e.globalMiddlewares,...c$1.middlewares],y={name:u,description:m.description,middlewares:f};e.tasks.set(u,{name:u,description:m.description,input:m.input,handler:c$1.handler,middlewares:f,hiddenByMiddlewares:c(y,f)});}async function g(){let{StdioServerTransport:d}=await import('@modelcontextprotocol/sdk/server/stdio.js'),u=new d;await r.connect(u),e.onServerStart&&await Promise.resolve(e.onServerStart()).catch(()=>{});}async function v(d){await r.connect(d);}let T=G(t,e,s,r,o,i,N);return {use:a$1,tool:l,resource:p,task:n,stdio:g,http:T,session:d=>w(e,r,d),completeElicitation:o.complete,store:e.store,connect:v,_server:r,_getSession:d=>b(e,d),_isToolVisible(d,u){let c=e.tools.get(d);return c?P(e,c,u):false},_isResourceVisible(d,u){let c=e.resources.get(d);return c?C(e,c,u):false},_isTaskVisible(d,u){let c=e.tasks.get(d);return c?x(e,c,u):false},_createSessionAPI:d=>w(e,r,d)}}export{ne as createMCPServer};
1
+ import {b as b$1,c,d,a as a$1,k,f,e}from'./chunk-3BJEUP3F.mjs';import {a,c as c$2}from'./chunk-ICQVA5UM.mjs';export{a as memoryStore}from'./chunk-ICQVA5UM.mjs';import {c as c$1,d as d$1,b as b$2,a as a$2}from'./chunk-VAAZWX4U.mjs';export{c as error,d as image,b as json,a as text}from'./chunk-VAAZWX4U.mjs';import {Server}from'@modelcontextprotocol/sdk/server/index.js';import {InMemoryTaskStore}from'@modelcontextprotocol/sdk/experimental/tasks';import {ListToolsRequestSchema,CallToolRequestSchema,ListResourcesRequestSchema,ListResourceTemplatesRequestSchema,ReadResourceRequestSchema}from'@modelcontextprotocol/sdk/types.js';function z(){let t=new Map;function e(){let r=Date.now();for(let[a,d]of t)r-d.createdAt>36e5&&t.delete(a);}function o(r,a,d){return e(),new Promise(p=>{let n;try{n=d.createElicitationCompletionNotifier(r);}catch{}t.set(r,{resolver:p,completionNotifier:n,createdAt:Date.now()});})}function s(r){e();let a=t.get(r);a&&(t.delete(r),a.completionNotifier&&a.completionNotifier().catch(()=>{}),a.resolver());}function i(r){let a=t.get(r);a&&(t.delete(r),a.resolver());}return {register:o,complete:s,cancel:i}}function K(t,e,o){return {async form(s,i){let r=a$1(i),a=await t.elicitInput({message:s,requestedSchema:r});return {action:a.action,content:a.content??{}}},async url(s,i,r){let a=r?.elicitationId??crypto.randomUUID(),d;r?.waitForCompletion&&e&&(d=e(a,t));let p=await t.elicitInput({mode:"url",message:s,url:i,elicitationId:a});if(p.action==="accept"&&d){let n=r?.timeout??3e5,g,v=new Promise((T,c)=>{g=setTimeout(()=>c(new Error("Elicitation timed out")),n);});try{await Promise.race([d,v]);}catch(T){throw o&&o(a),T}finally{clearTimeout(g);}}else d&&o&&o(a);return {action:p.action}}}}function L(t){return async()=>{try{return (await t.listRoots()).roots.map(o=>{let s={uri:o.uri};return o.name!==void 0&&(s.name=o.name),s})}catch{return []}}}function Q(t){async function e(s,i){let r={messages:[{role:"user",content:{type:"text",text:s}}],maxTokens:i?.maxTokens??1024};i?.model!==void 0&&(r.modelPreferences={hints:[{name:i.model}]}),i?.system!==void 0&&(r.systemPrompt=i.system),i?.temperature!==void 0&&(r.temperature=i.temperature),i?.stopSequences!==void 0&&(r.stopSequences=i.stopSequences);let d=(await t.createMessage(r)).content;return d.type==="text"?d.text:""}async function o(s){return t.createMessage(s)}return Object.assign(e,{raw:o})}function O(t,e,o,s,i,r,a,d,p){return {toolName:s,args:i,session:o,signal:r,sessionId:e,elicit:K(t,d,p),roots:L(t),sample:Q(t),text:a$2,json:b$2,error:c$1,image:d$1,store:a,userStore:c$2(o,a)}}function b(t,e){let o=t.sessions.get(e);if(!o&&(o={data:new Map,grants:new Set,toolOverrides:new Map,resourceOverrides:new Map},t.sessions.set(e,o),t.onSessionCreate))try{Promise.resolve(t.onSessionCreate(e)).catch(()=>{});}catch{}return o}function P(t,e$1,o){let s=b(t,o);return e(e$1.hiddenByMiddlewares,e$1.name,s.toolOverrides,s.grants)}function C(t,e$1,o){let s=b(t,o);return e(e$1.hiddenByMiddlewares,e$1.uri,s.resourceOverrides,s.grants)}function x(t,e$1,o){let s=b(t,o);return e(e$1.hiddenByMiddlewares,e$1.name,s.toolOverrides,s.grants)}function _(t,e,o){(o&&t.serverBySession.get(o)||e).sendToolListChanged().catch(()=>{});}function A(t,e,o){(o&&t.serverBySession.get(o)||e).sendResourceListChanged().catch(()=>{});}function w(t,e,o){let s=b(t,o);return {get(i){return s.data.get(i)},set(i,r){s.data.set(i,r);},authorize(i){s.grants.add(i),_(t,e,o),A(t,e,o);},revoke(i){s.grants.delete(i),_(t,e,o),A(t,e,o);},enableTools(...i){for(let r of i)s.toolOverrides.set(r,"enabled");_(t,e,o);},disableTools(...i){for(let r of i)s.toolOverrides.set(r,"disabled");_(t,e,o);},enableResources(...i){for(let r of i)s.resourceOverrides.set(r,"enabled");A(t,e,o);},disableResources(...i){for(let r of i)s.resourceOverrides.set(r,"disabled");A(t,e,o);}}}function F(){let t=new Set,e=new InMemoryTaskStore;return {taskStore:new Proxy(e,{get(s,i,r){return i==="updateTaskStatus"?async(a,d,...p)=>(d==="cancelled"&&t.add(a),s.updateTaskStatus.call(s,a,d,...p)):Reflect.get(s,i,r)}}),cancelledTaskIds:t}}function N(t,e,o,s,i){t.setRequestHandler(ListToolsRequestSchema,(r,a)=>{let d=a.sessionId??"default",p=[];for(let n of e.tools.values())P(e,n,d)&&p.push({name:n.name,description:n.description,inputSchema:a$1(n.input)});for(let n of e.tasks.values())x(e,n,d)&&p.push({name:n.name,description:n.description,inputSchema:a$1(n.input),execution:{taskSupport:"required"}});return {tools:p}}),t.setRequestHandler(CallToolRequestSchema,async(r,a)=>{let{name:d,arguments:p}=r.params,n=a.sessionId??"default",g=e.tools.get(d);if(g){if(!P(e,g,n))return c$1(`Tool not available: ${d}`);let T=p??{},c=O(t,n,w(e,o,n),d,T,a.signal,e.store,(m,f)=>s.register(m,n,f),s.cancel),u=()=>Promise.resolve(g.handler(T,c));return k(g.middlewares,c,u)()}let v=e.tasks.get(d);if(v){if(!x(e,v,n))return c$1(`Tool not available: ${d}`);let T=a.taskStore;if(!T)return c$1("Task store not available");let c=await T.createTask({pollInterval:1e3}),u=c.taskId,l={progress(S,k){if(i.has(u))return;let W=k?`${S}% ${k}`:`${S}%`;T.updateTaskStatus(u,"working",W).catch(()=>{});},get cancelled(){return i.has(u)}},m=p??{},f={...O(t,n,w(e,o,n),d,m,a.signal,e.store,(S,k)=>s.register(S,n,k),s.cancel),task:l},y=async()=>((async()=>{try{let S=await v.handler(m,f);i.has(u)||await T.storeTaskResult(u,"completed",S);}catch(S){if(!i.has(u)){let k=S instanceof Error?S.message:String(S);await T.storeTaskResult(u,"failed",c$1(k)).catch(()=>{});}}})(),{task:c});return k(v.middlewares,f,y)()}return c$1(`Unknown tool: ${d}`)}),t.setRequestHandler(ListResourcesRequestSchema,(r,a)=>{let d=a.sessionId??"default",p=[];for(let n of e.resources.values())!n.isTemplate&&C(e,n,d)&&p.push({uri:n.uri,name:n.name,description:n.description,mimeType:n.mimeType});return {resources:p}}),t.setRequestHandler(ListResourceTemplatesRequestSchema,(r,a)=>{let d=a.sessionId??"default",p=[];for(let n of e.resources.values())n.isTemplate&&C(e,n,d)&&p.push({uriTemplate:n.uri,name:n.name,description:n.description,mimeType:n.mimeType});return {resourceTemplates:p}}),t.setRequestHandler(ReadResourceRequestSchema,async(r,a)=>{let{uri:d}=r.params,p=f(e.resources,d);if(!p)throw new Error(`Unknown resource: ${d}`);let n=a.sessionId??"default";if(!C(e,p,n))throw new Error(`Resource not available: ${d}`);let g=w(e,o,n),v={uri:d,session:g,sessionId:n,roots:L(t),store:e.store,userStore:c$2(g,e.store)},T=O(t,n,g,p.uri,{},a.signal,e.store,(l,m)=>s.register(l,n,m),s.cancel),c=async()=>{let l=await p.handler(d,v);return {contents:[{uri:d,mimeType:l.mimeType??p.mimeType,...l.text!=null?{text:l.text}:{},...l.blob!=null?{blob:l.blob}:{}}]}};return k(p.middlewares,T,c)()});}function G(t,e,o,s,i,r,a){let d={tools:{listChanged:true},resources:{listChanged:true},tasks:{list:{},cancel:{},requests:{tools:{call:{}}}}};function p(){let n=new Server(t,{capabilities:d,taskStore:o});return a(n,e,s,i,r),n}return function(g){let v=null;async function T(){return v||(v=(await import('@modelcontextprotocol/sdk/server/webStandardStreamableHttp.js')).WebStandardStreamableHTTPServerTransport),v}if(g?.sessionless)return async l=>{let m=await T(),f=p(),y=new m({sessionIdGenerator:void 0,enableJsonResponse:g?.enableJsonResponse});return await f.connect(y),y.handleRequest(l)};let c=new Map,u=false;return async l=>{!u&&e.onServerStart&&(u=true,Promise.resolve(e.onServerStart()).catch(()=>{}));let m=await T(),f=l.headers.get("mcp-session-id");if(f){let S=c.get(f);return S?(g?.onRequest&&await g.onRequest(l,f,w(e,s,f)),S.transport.handleRequest(l)):new Response(JSON.stringify({jsonrpc:"2.0",error:{code:-32e3,message:"Session not found"}}),{status:404,headers:{"Content-Type":"application/json"}})}let y=p(),h=new m({sessionIdGenerator:g?.sessionIdGenerator??(()=>crypto.randomUUID()),enableJsonResponse:g?.enableJsonResponse,onsessioninitialized:S=>{c.set(S,{server:y,transport:h}),e.serverBySession.set(S,y),g?.onRequest&&g.onRequest(l,S,w(e,s,S));},onsessionclosed:S=>{c.delete(S),e.serverBySession.delete(S),e.sessions.delete(S),e.onSessionDestroy&&Promise.resolve(e.onSessionDestroy(S)).catch(()=>{});}});return await y.connect(h),h.handleRequest(l)}}}function ne(t){let e={store:t.store??a(),globalMiddlewares:[],tools:new Map,resources:new Map,tasks:new Map,sessions:new Map,serverBySession:new Map,onServerStart:t.onServerStart,onSessionCreate:t.onSessionCreate,onSessionDestroy:t.onSessionDestroy},o=z(),{taskStore:s,cancelledTaskIds:i}=F(),r=new Server(t,{capabilities:{tools:{listChanged:true},resources:{listChanged:true},tasks:{list:{},cancel:{},requests:{tools:{call:{}}}}},taskStore:s});N(r,e,r,o,i),r.onclose=()=>{let c="default";if(e.sessions.delete(c),e.onSessionDestroy)try{Promise.resolve(e.onSessionDestroy(c)).catch(()=>{});}catch{}};function a$1(c){e.globalMiddlewares.push(c);}function d$1(...c$1){let u=c$1[0],l=b$1(`tool("${u}")`,c$1.slice(1));if(typeof l.config.name=="string")throw new TypeError(`tool("${u}"): second-to-last argument must be a config object`);let m=l.config,f=[...e.globalMiddlewares,...l.middlewares],y={name:u,description:m.description,middlewares:f};e.tools.set(u,{name:u,description:m.description,input:m.input,handler:l.handler,middlewares:f,hiddenByMiddlewares:c(y,f)});}function p(...c$1){let u=c$1[0],l=b$1(`resource("${u}")`,c$1.slice(1));if(typeof l.config.name!="string")throw new TypeError(`resource("${u}"): second-to-last argument must be a config object with a "name" property`);let m=l.config,f=[...e.globalMiddlewares,...l.middlewares],y={name:m.name,description:m.description,middlewares:f},h=u.includes("{");e.resources.set(u,{uri:u,isTemplate:h,uriPattern:h?d(u):null,name:m.name,description:m.description,mimeType:m.mimeType,handler:l.handler,middlewares:f,hiddenByMiddlewares:c(y,f)});}function n(...c$1){let u=c$1[0],l=b$1(`task("${u}")`,c$1.slice(1));if(typeof l.config.name=="string")throw new TypeError(`task("${u}"): second-to-last argument must be a config object`);let m=l.config,f=[...e.globalMiddlewares,...l.middlewares],y={name:u,description:m.description,middlewares:f};e.tasks.set(u,{name:u,description:m.description,input:m.input,handler:l.handler,middlewares:f,hiddenByMiddlewares:c(y,f)});}async function g(){let{StdioServerTransport:c}=await import('@modelcontextprotocol/sdk/server/stdio.js'),u=new c;await r.connect(u),e.onServerStart&&await Promise.resolve(e.onServerStart()).catch(()=>{});}async function v(c){await r.connect(c);}let T=G(t,e,s,r,o,i,N);return {use:a$1,tool:d$1,resource:p,task:n,stdio:g,http:T,session:c=>w(e,r,c),completeElicitation:o.complete,store:e.store,connect:v,_server:r,_getSession:c=>b(e,c),_isToolVisible(c,u){let l=e.tools.get(c);return l?P(e,l,u):false},_isResourceVisible(c,u){let l=e.resources.get(c);return l?C(e,l,u):false},_isTaskVisible(c,u){let l=e.tasks.get(c);return l?x(e,l,u):false},_createSessionAPI:c=>w(e,r,c)}}export{ne as createMCPServer};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lynq/lynq",
3
- "version": "0.8.0",
3
+ "version": "0.8.1",
4
4
  "description": "Lightweight MCP server framework. Tool visibility control through middleware.",
5
5
  "type": "module",
6
6
  "exports": {