@eclipse-glsp-examples/workflow-server-bundled 2.9.0-next.15 → 2.9.0-next.20

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eclipse-glsp-examples/workflow-server-bundled",
3
- "version": "2.9.0-next.15",
3
+ "version": "2.9.0-next.20",
4
4
  "description": "GLSP node server for the workflow example (bundled)",
5
5
  "keywords": [
6
6
  "diagram",
@@ -45,7 +45,7 @@
45
45
  "access": "public"
46
46
  },
47
47
  "devDependencies": {
48
- "@eclipse-glsp-examples/workflow-server": "2.9.0-next.15"
48
+ "@eclipse-glsp-examples/workflow-server": "2.9.0-next.20"
49
49
  },
50
50
  "scripts": {
51
51
  "clean": "rimraf wf-glsp-server-node.js wf-glsp-server-node.js.map"
@@ -243,7 +243,7 @@ data:
243
243
  `;return l&&(g+=`id: ${l}
244
244
  `),g+=`data: ${JSON.stringify(c)}
245
245
 
246
- `,n.enqueue(s.encode(g)),!0}catch(g){return this.onerror?.(g),!1}}handleUnsupportedRequest(){return this.onerror?.(new Error("Method not allowed.")),new Response(JSON.stringify({jsonrpc:"2.0",error:{code:-32e3,message:"Method not allowed."},id:null}),{status:405,headers:{Allow:"GET, POST, DELETE","Content-Type":"application/json"}})}async handlePostRequest(n,s){try{let c=n.headers.get("accept");if(!c?.includes("application/json")||!c.includes("text/event-stream"))return this.onerror?.(new Error("Not Acceptable: Client must accept both application/json and text/event-stream")),this.createJsonErrorResponse(406,-32e3,"Not Acceptable: Client must accept both application/json and text/event-stream");let l=n.headers.get("content-type");if(!l||!l.includes("application/json"))return this.onerror?.(new Error("Unsupported Media Type: Content-Type must be application/json")),this.createJsonErrorResponse(415,-32e3,"Unsupported Media Type: Content-Type must be application/json");let g={headers:Object.fromEntries(n.headers.entries()),url:new URL(n.url)},v;if(s?.parsedBody!==void 0)v=s.parsedBody;else try{v=await n.json()}catch{return this.onerror?.(new Error("Parse error: Invalid JSON")),this.createJsonErrorResponse(400,-32700,"Parse error: Invalid JSON")}let w;try{Array.isArray(v)?w=v.map(ke=>Rp.JSONRPCMessageSchema.parse(ke)):w=[Rp.JSONRPCMessageSchema.parse(v)]}catch{return this.onerror?.(new Error("Parse error: Invalid JSON-RPC message")),this.createJsonErrorResponse(400,-32700,"Parse error: Invalid JSON-RPC message")}let M=w.some(Rp.isInitializeRequest);if(M){if(this._initialized&&this.sessionId!==void 0)return this.onerror?.(new Error("Invalid Request: Server already initialized")),this.createJsonErrorResponse(400,-32600,"Invalid Request: Server already initialized");if(w.length>1)return this.onerror?.(new Error("Invalid Request: Only one initialization request is allowed")),this.createJsonErrorResponse(400,-32600,"Invalid Request: Only one initialization request is allowed");this.sessionId=this.sessionIdGenerator?.(),this._initialized=!0,this.sessionId&&this._onsessioninitialized&&await Promise.resolve(this._onsessioninitialized(this.sessionId))}if(!M){let ke=this.validateSession(n);if(ke)return ke;let Xe=this.validateProtocolVersion(n);if(Xe)return Xe}if(!w.some(Rp.isJSONRPCRequest)){for(let ke of w)this.onmessage?.(ke,{authInfo:s?.authInfo,requestInfo:g});return new Response(null,{status:202})}let k=crypto.randomUUID(),F=w.find(ke=>(0,Rp.isInitializeRequest)(ke)),K=F?F.params.protocolVersion:n.headers.get("mcp-protocol-version")??Rp.DEFAULT_NEGOTIATED_PROTOCOL_VERSION;if(this._enableJsonResponse)return new Promise(ke=>{this._streamMapping.set(k,{resolveJson:ke,cleanup:r(()=>{this._streamMapping.delete(k)},"cleanup")});for(let Xe of w)(0,Rp.isJSONRPCRequest)(Xe)&&this._requestToStreamMapping.set(Xe.id,k);for(let Xe of w)this.onmessage?.(Xe,{authInfo:s?.authInfo,requestInfo:g})});let re=new TextEncoder,ne,me=new ReadableStream({start:r(ke=>{ne=ke},"start"),cancel:r(()=>{this._streamMapping.delete(k)},"cancel")}),Te={"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive"};this.sessionId!==void 0&&(Te["mcp-session-id"]=this.sessionId);for(let ke of w)(0,Rp.isJSONRPCRequest)(ke)&&(this._streamMapping.set(k,{controller:ne,encoder:re,cleanup:r(()=>{this._streamMapping.delete(k);try{ne.close()}catch{}},"cleanup")}),this._requestToStreamMapping.set(ke.id,k));await this.writePrimingEvent(ne,re,k,K);for(let ke of w){let Xe,Ke;(0,Rp.isJSONRPCRequest)(ke)&&this._eventStore&&K>="2025-11-25"&&(Xe=r(()=>{this.closeSSEStream(ke.id)},"closeSSEStream"),Ke=r(()=>{this.closeStandaloneSSEStream()},"closeStandaloneSSEStream")),this.onmessage?.(ke,{authInfo:s?.authInfo,requestInfo:g,closeSSEStream:Xe,closeStandaloneSSEStream:Ke})}return new Response(me,{status:200,headers:Te})}catch(c){return this.onerror?.(c),this.createJsonErrorResponse(400,-32700,"Parse error",{data:String(c)})}}async handleDeleteRequest(n){let s=this.validateSession(n);if(s)return s;let c=this.validateProtocolVersion(n);return c||(await Promise.resolve(this._onsessionclosed?.(this.sessionId)),await this.close(),new Response(null,{status:200}))}validateSession(n){if(this.sessionIdGenerator===void 0)return;if(!this._initialized)return this.onerror?.(new Error("Bad Request: Server not initialized")),this.createJsonErrorResponse(400,-32e3,"Bad Request: Server not initialized");let s=n.headers.get("mcp-session-id");if(!s)return this.onerror?.(new Error("Bad Request: Mcp-Session-Id header is required")),this.createJsonErrorResponse(400,-32e3,"Bad Request: Mcp-Session-Id header is required");if(s!==this.sessionId)return this.onerror?.(new Error("Session not found")),this.createJsonErrorResponse(404,-32001,"Session not found")}validateProtocolVersion(n){let s=n.headers.get("mcp-protocol-version");if(s!==null&&!Rp.SUPPORTED_PROTOCOL_VERSIONS.includes(s))return this.onerror?.(new Error(`Bad Request: Unsupported protocol version: ${s} (supported versions: ${Rp.SUPPORTED_PROTOCOL_VERSIONS.join(", ")})`)),this.createJsonErrorResponse(400,-32e3,`Bad Request: Unsupported protocol version: ${s} (supported versions: ${Rp.SUPPORTED_PROTOCOL_VERSIONS.join(", ")})`)}async close(){this._streamMapping.forEach(({cleanup:n})=>{n()}),this._streamMapping.clear(),this._requestResponseMap.clear(),this.onclose?.()}closeSSEStream(n){let s=this._requestToStreamMapping.get(n);if(!s)return;let c=this._streamMapping.get(s);c&&c.cleanup()}closeStandaloneSSEStream(){let n=this._streamMapping.get(this._standaloneSseStreamId);n&&n.cleanup()}async send(n,s){let c=s?.relatedRequestId;if(((0,Rp.isJSONRPCResultResponse)(n)||(0,Rp.isJSONRPCErrorResponse)(n))&&(c=n.id),c===void 0){if((0,Rp.isJSONRPCResultResponse)(n)||(0,Rp.isJSONRPCErrorResponse)(n))throw new Error("Cannot send a response on a standalone SSE stream unless resuming a previous client request");let v;this._eventStore&&(v=await this._eventStore.storeEvent(this._standaloneSseStreamId,n));let w=this._streamMapping.get(this._standaloneSseStreamId);if(w===void 0)return;w.controller&&w.encoder&&this.writeSSEEvent(w.controller,w.encoder,n,v);return}let l=this._requestToStreamMapping.get(c);if(!l)throw new Error(`No connection established for request ID: ${String(c)}`);let g=this._streamMapping.get(l);if(!this._enableJsonResponse&&g?.controller&&g?.encoder){let v;this._eventStore&&(v=await this._eventStore.storeEvent(l,n)),this.writeSSEEvent(g.controller,g.encoder,n,v)}if((0,Rp.isJSONRPCResultResponse)(n)||(0,Rp.isJSONRPCErrorResponse)(n)){this._requestResponseMap.set(c,n);let v=Array.from(this._requestToStreamMapping.entries()).filter(([M,A])=>A===l).map(([M])=>M);if(v.every(M=>this._requestResponseMap.has(M))){if(!g)throw new Error(`No connection established for request ID: ${String(c)}`);if(this._enableJsonResponse&&g.resolveJson){let M={"Content-Type":"application/json"};this.sessionId!==void 0&&(M["mcp-session-id"]=this.sessionId);let A=v.map(k=>this._requestResponseMap.get(k));A.length===1?g.resolveJson(new Response(JSON.stringify(A[0]),{status:200,headers:M})):g.resolveJson(new Response(JSON.stringify(A),{status:200,headers:M}))}else g.cleanup();for(let M of v)this._requestResponseMap.delete(M),this._requestToStreamMapping.delete(M)}}}};Vye.WebStandardStreamableHTTPServerTransport=SYe});var e0n=q((o$i,Ekr)=>{Ekr.exports={name:"@eclipse-glsp/server-mcp",version:"2.9.0-next.15",description:"Model Context Protocol (MCP) server for the GLSP TypeScript server \u2014 runs on Node, browser, and Fetch-API runtimes",keywords:["diagram","diagram editor","eclipse","glsp","graphics","mcp","modeling","visualization"],homepage:"https://www.eclipse.org/glsp/",bugs:"https://github.com/eclipse-glsp/glsp/issues",license:"(EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0)",author:{name:"Eclipse GLSP"},contributors:[{name:"Eclipse GLSP Project",email:"glsp-dev@eclipse.org",url:"https://projects.eclipse.org/projects/ecd.glsp"}],repository:{type:"git",url:"https://github.com/eclipse-glsp/glsp-core.git",directory:"packages/server/server-mcp"},files:["lib","src","node.js","node.d.ts","browser.js","browser.d.ts","common.js","common.d.ts","!**/*.spec.*","!**/test/**"],main:"lib/node/index",browser:{"lib/node/index":"./lib/browser/index"},types:"lib/common/index",publishConfig:{access:"public"},scripts:{build:"tsc -b",clean:"rimraf lib *.tsbuildinfo coverage","generate:index":"glsp generateIndex src/browser src/common src/node -f -s",prepublishOnly:"pnpm build"},dependencies:{"@eclipse-glsp/server":"workspace:*","@hono/node-server":"^1.19.9","@modelcontextprotocol/sdk":"^1.29.0",zod:"^4.0.0"},peerDependencies:{inversify:"^6.1.3","reflect-metadata":"^0.2.2"}}});var Xye=q(R1=>{"use strict";var Pkr=R1&&R1.__decorate||function(o,n,s,c){var l=arguments.length,g=l<3?n:c===null?c=Object.getOwnPropertyDescriptor(n,s):c,v;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")g=Reflect.decorate(o,n,s,c);else for(var w=o.length-1;w>=0;w--)(v=o[w])&&(g=(l<3?v(g):l>3?v(n,s,g):v(n,s))||g);return l>3&&g&&Object.defineProperty(n,s,g),g},jkr=R1&&R1.__metadata||function(o,n){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(o,n)},OYe=R1&&R1.__param||function(o,n){return function(s,c){n(s,c,o)}};Object.defineProperty(R1,"__esModule",{value:!0});R1.DefaultGLSPMcpServer=R1.GLSPMcpServerFactory=R1.GLSPMcpServer=void 0;var Mkr=Kr(),Tkr=RQ(),EYe=DC(),Wye=en();R1.GLSPMcpServer=Symbol("GLSPMcpServer");var Ikr=3e4,Akr=5e3;R1.GLSPMcpServerFactory=Symbol("GLSPMcpServerFactory");var PYe=class{static{r(this,"DefaultGLSPMcpServer")}constructor(n,s,c){this.mcpServer=n,this.options=s,this.logger=c,this.tools=new Map,this.resources=new Map,this.prompts=new Map;let{tools:l,resources:g,prompts:v}=this;this.registerTool=new Proxy(n.registerTool.bind(n),{apply(w,M,A){let k=Reflect.apply(w,M,A);return typeof A[0]=="string"&&l.set(A[0],k),k}}),this.registerResource=new Proxy(n.registerResource.bind(n),{apply(w,M,A){let k=Reflect.apply(w,M,A);return typeof A[0]=="string"&&g.set(A[0],k),k}}),this.registerPrompt=new Proxy(n.registerPrompt.bind(n),{apply(w,M,A){let k=Reflect.apply(w,M,A);return typeof A[0]=="string"&&v.set(A[0],k),k}})}sendLoggingMessage(...n){return this.mcpServer.sendLoggingMessage(...n)}async connect(...n){await this.mcpServer.connect(...n),this.keepAliveTimer=setInterval(()=>this.ping().catch(c=>{(!(c instanceof EYe.McpError)||c.code!==EYe.ErrorCode.RequestTimeout)&&this.logger.debug("MCP keep-alive ping failed:",c)}),Ikr);let s=this.keepAliveTimer.unref;typeof s=="function"&&s.call(this.keepAliveTimer)}isConnected(){return this.mcpServer.isConnected()}async ping(){await this.mcpServer.server.request({method:"ping"},EYe.EmptyResultSchema,{timeout:Akr})}listTools(){return[...this.tools.values()]}hasTool(n){return this.tools.has(n)}listResources(){return[...this.resources.values()]}listPrompts(){return[...this.prompts.values()]}getRawServer(){return this.mcpServer}dispose(){this.keepAliveTimer&&(clearInterval(this.keepAliveTimer),this.keepAliveTimer=void 0),this.mcpServer.close()}};R1.DefaultGLSPMcpServer=PYe;R1.DefaultGLSPMcpServer=PYe=Pkr([(0,Wye.injectable)(),OYe(0,(0,Wye.unmanaged)()),OYe(1,(0,Wye.unmanaged)()),OYe(2,(0,Wye.unmanaged)()),jkr("design:paramtypes",[Tkr.McpServer,Object,Mkr.Logger])],PYe)});var Qye=q(Yye=>{"use strict";Object.defineProperty(Yye,"__esModule",{value:!0});Yye.LruEventStore=void 0;var jYe=class o{static{r(this,"LruEventStore")}static{this.DEFAULT_LIMIT=1e4}constructor(n=o.DEFAULT_LIMIT,s){if(this.events=new Map,n<1)throw new Error(`LruEventStore limit must be >= 1, got ${n}`);this.limit=n,this.logger=s}get size(){return this.events.size}async storeEvent(n,s){let c=`${n}_${Date.now()}_${Math.random().toString(36).substring(2,10)}`;if(this.events.set(c,{streamId:n,message:s}),this.events.size>this.limit){let l=this.events.keys().next().value;l!==void 0&&this.events.delete(l)}return c}async replayEventsAfter(n,{send:s}){if(!n)return"";if(!this.events.has(n))return this.logger?.warn(`[LruEventStore] Replay miss for last-event-id '${n}'. Cap is ${this.limit}; consider increasing \`eventStoreLimit\` if this fires under normal load.`),"";let c=n.split("_")[0];if(!c)return"";let l=!1;for(let[g,{streamId:v,message:w}]of this.events)if(v===c){if(g===n){l=!0;continue}l&&await s(g,w)}return c}};Yye.LruEventStore=jYe});var e_e=q(k1=>{"use strict";var DQ=k1&&k1.__decorate||function(o,n,s,c){var l=arguments.length,g=l<3?n:c===null?c=Object.getOwnPropertyDescriptor(n,s):c,v;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")g=Reflect.decorate(o,n,s,c);else for(var w=o.length-1;w>=0;w--)(v=o[w])&&(g=(l<3?v(g):l>3?v(n,s,g):v(n,s))||g);return l>3&&g&&Object.defineProperty(n,s,g),g},MYe=k1&&k1.__metadata||function(o,n){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(o,n)};Object.defineProperty(k1,"__esModule",{value:!0});k1.McpDiagramPromptHandlerRegistryInitializer=k1.McpDiagramPromptHandlerRegistry=k1.McpDiagramPromptHandlerFactory=void 0;var Ckr=Kr(),CF=en(),$kr=lI();k1.McpDiagramPromptHandlerFactory=Symbol("McpDiagramPromptHandlerFactory");var kQ=class extends Ckr.Registry{static{r(this,"McpDiagramPromptHandlerRegistry")}registerHandler(n){return this.register(n.name,n)}};k1.McpDiagramPromptHandlerRegistry=kQ;k1.McpDiagramPromptHandlerRegistry=kQ=DQ([(0,CF.injectable)()],kQ);var $F=class{static{r(this,"McpDiagramPromptHandlerRegistryInitializer")}constructor(){this.constructors=[]}initialize(n){for(let s of this.constructors)try{this.registry.registerHandler(this.factory(s))}catch(c){throw new Error(`Failed to instantiate MCP diagram prompt handler '${s.name}': ${c.message}. Check your DiagramModule bindings.`)}}};k1.McpDiagramPromptHandlerRegistryInitializer=$F;DQ([(0,CF.inject)(k1.McpDiagramPromptHandlerFactory),MYe("design:type",Function)],$F.prototype,"factory",void 0);DQ([(0,CF.inject)($kr.McpDiagramPromptHandlerConstructor),(0,CF.optional)(),MYe("design:type",Array)],$F.prototype,"constructors",void 0);DQ([(0,CF.inject)(kQ),MYe("design:type",kQ)],$F.prototype,"registry",void 0);k1.McpDiagramPromptHandlerRegistryInitializer=$F=DQ([(0,CF.injectable)()],$F)});var EI=q(yg=>{"use strict";var OI=yg&&yg.__decorate||function(o,n,s,c){var l=arguments.length,g=l<3?n:c===null?c=Object.getOwnPropertyDescriptor(n,s):c,v;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")g=Reflect.decorate(o,n,s,c);else for(var w=o.length-1;w>=0;w--)(v=o[w])&&(g=(l<3?v(g):l>3?v(n,s,g):v(n,s))||g);return l>3&&g&&Object.defineProperty(n,s,g),g},kF=yg&&yg.__metadata||function(o,n){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(o,n)};Object.defineProperty(yg,"__esModule",{value:!0});yg.McpDiagramResourceHandlerConstructor=yg.AbstractMcpDiagramResourceHandler=yg.AbstractMcpResourceHandler=yg.McpResourceHandler=void 0;yg.toParams=n0n;var NQ=Kr(),Rkr=RQ(),Tj=en(),TYe=ah(),kkr=BN(),t0n=cI();yg.McpResourceHandler=Symbol("McpResourceHandler");var RF=class{static{r(this,"BaseMcpResourceHandler")}constructor(){this.requestContext=new t0n.NoopMcpRequestContext}toAnnotations(){if(!(this.audience===void 0&&this.priority===void 0&&this.lastModified===void 0))return{...this.audience!==void 0?{audience:this.audience}:{},...this.priority!==void 0?{priority:this.priority}:{},...this.lastModified!==void 0?{lastModified:this.lastModified}:{}}}uriTemplate(){return typeof this.uri=="string"?this.uri:this.uri.template}expandUriTemplate(n){return this.uriTemplate().replace(/\{(\w+)\}/g,(s,c)=>{let l=n[c];return l===void 0?s:encodeURIComponent(l)})}async execute(n){try{return{ok:!0,body:await n()}}catch(s){if(s instanceof TYe.McpToolError)return{ok:!1,message:s.message};let c=(0,TYe.extractErrorMessage)(s);return this.logger.error(`Unexpected error in resource '${this.name}': ${c}`,s),{ok:!1,message:c}}}toResourceResult(n,s){return s.ok?{contents:["text"in s.body?{uri:n,mimeType:this.mimeType,text:s.body.text}:{uri:n,mimeType:this.mimeType,blob:s.body.blob}],isError:!1}:{contents:[{uri:n,mimeType:"text/plain",text:s.message}],isError:!0}}toToolResult(n){if(!n.ok)return{isError:!0,content:[{type:"text",text:n.message}]};let s=n.body.structured,c="text"in n.body?{isError:!1,content:[{type:"text",text:n.body.text}]}:{isError:!1,content:[{type:"image",data:n.body.blob,mimeType:this.mimeType}]};return s?{...c,structuredContent:s}:c}buildResourceTemplate(n){return new Rkr.ResourceTemplate(n,{list:this.list?async s=>this.requestContext.run(s,()=>this.list()):void 0,complete:this.complete?.()})}};OI([(0,Tj.inject)(t0n.McpRequestContext),(0,Tj.optional)(),kF("design:type",Object)],RF.prototype,"requestContext",void 0);OI([(0,Tj.inject)(NQ.Logger),kF("design:type",NQ.Logger)],RF.prototype,"logger",void 0);RF=OI([(0,Tj.injectable)()],RF);var IYe=class extends RF{static{r(this,"AbstractMcpResourceHandler")}registerResource(n){let s=this.toAnnotations(),c={title:this.title,description:this.description,mimeType:this.mimeType,...s?{annotations:s}:{}};if(typeof this.uri=="string"){let l=this.uri;n.registerResource(this.name,l,c,async(g,v)=>this.requestContext.run(v,async()=>this.toResourceResult(l,await this.execute(()=>this.createResult({})))))}else n.registerResource(this.name,this.buildResourceTemplate(this.uri.template),c,async(l,g,v)=>this.requestContext.run(v,async()=>this.toResourceResult(l.toString(),await this.execute(()=>this.createResult(n0n(g))))))}registerToolAlternative(n){this.toolAlternativeInputSchema&&this.doRegisterToolAlternative(n)}doRegisterToolAlternative(n){let s=this.toolAlternativeInputSchema;n.registerTool(this.name,{title:this.title,description:this.description,inputSchema:s.strict(),outputSchema:this.toolAlternativeOutputSchema},async(c,l)=>this.requestContext.run(l,async()=>this.toToolResult(await this.execute(()=>this.createResult(c)))))}};yg.AbstractMcpResourceHandler=IYe;yg.AbstractMcpResourceHandler=IYe=OI([(0,Tj.injectable)()],IYe);var S9=class extends RF{static{r(this,"AbstractMcpDiagramResourceHandler")}requestAction(n,s,c=this.name){return(0,TYe.requestActionOrFail)(this.actionDispatcher,n,s,c)}isSupportedByDiagramType(){return!0}canRegister(){return!0}list(){return{resources:[this.toListingEntry()]}}complete(){return this.uriTemplate().includes("{sessionId}")?{sessionId:r(async()=>[this.clientId],"sessionId")}:{}}toListingEntry(){let n=this.toAnnotations();return{uri:this.expandUriTemplate({sessionId:this.clientId}),name:`${this.title??this.name}: ${this.clientId}`,description:this.description,mimeType:this.mimeType,...n?{annotations:n}:{}}}async handleRead(n,s){return this.toResourceResult(n,await this.execute(()=>this.createResult(s)))}async handleAsTool(n){return this.toToolResult(await this.execute(()=>this.createResult(n)))}glspSessionScopedComplete(){let n=this.complete?.()??{},s=this.clientId,c=typeof this.uri=="object"&&this.uri.template.includes("{sessionId}"),l={};for(let[g,v]of Object.entries(n))l[g]=g==="sessionId"||!c?v:async(w,M)=>M?.arguments?.sessionId===s?v(w,M):[];return l}};yg.AbstractMcpDiagramResourceHandler=S9;OI([(0,Tj.inject)(NQ.ClientId),kF("design:type",String)],S9.prototype,"clientId",void 0);OI([(0,Tj.inject)(NQ.ModelState),kF("design:type",Object)],S9.prototype,"modelState",void 0);OI([(0,Tj.inject)(kkr.McpIdAliasService),kF("design:type",Object)],S9.prototype,"aliasService",void 0);OI([(0,Tj.inject)(NQ.ActionDispatcher),kF("design:type",Object)],S9.prototype,"actionDispatcher",void 0);yg.AbstractMcpDiagramResourceHandler=S9=OI([(0,Tj.injectable)()],S9);function n0n(o){let n={};for(let[s,c]of Object.entries(o))n[s]=Array.isArray(c)?c[0]??"":c;return n}r(n0n,"toParams");yg.McpDiagramResourceHandlerConstructor=Symbol("McpDiagramResourceHandlerConstructor")});var t_e=q(D1=>{"use strict";var O9=D1&&D1.__decorate||function(o,n,s,c){var l=arguments.length,g=l<3?n:c===null?c=Object.getOwnPropertyDescriptor(n,s):c,v;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")g=Reflect.decorate(o,n,s,c);else for(var w=o.length-1;w>=0;w--)(v=o[w])&&(g=(l<3?v(g):l>3?v(n,s,g):v(n,s))||g);return l>3&&g&&Object.defineProperty(n,s,g),g},LQ=D1&&D1.__metadata||function(o,n){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(o,n)};Object.defineProperty(D1,"__esModule",{value:!0});D1.McpDiagramResourceHandlerRegistryInitializer=D1.McpDiagramResourceHandlerRegistry=D1.McpDiagramResourceHandlerFactory=void 0;var qQ=Kr(),VC=en(),Dkr=EI();D1.McpDiagramResourceHandlerFactory=Symbol("McpDiagramResourceHandlerFactory");var xQ=class extends qQ.Registry{static{r(this,"McpDiagramResourceHandlerRegistry")}registerHandler(n){return this.register(n.name,n)}};D1.McpDiagramResourceHandlerRegistry=xQ;D1.McpDiagramResourceHandlerRegistry=xQ=O9([(0,VC.injectable)()],xQ);var WC=class{static{r(this,"McpDiagramResourceHandlerRegistryInitializer")}constructor(){this.constructors=[]}initialize(n){let s=this.clientId===qQ.TEMPORARY_CLIENT_ID;for(let c of this.constructors){let l;try{l=this.factory(c)}catch(g){throw new Error(`Failed to instantiate MCP diagram resource handler '${c.name}': ${g.message}. Check your DiagramModule bindings.`)}if(!l.canRegister()){s||this.logger.debug(`Skipping MCP diagram resource handler '${l.name}': canRegister() returned false.`);continue}this.registry.registerHandler(l)}}};D1.McpDiagramResourceHandlerRegistryInitializer=WC;O9([(0,VC.inject)(D1.McpDiagramResourceHandlerFactory),LQ("design:type",Function)],WC.prototype,"factory",void 0);O9([(0,VC.inject)(Dkr.McpDiagramResourceHandlerConstructor),(0,VC.optional)(),LQ("design:type",Array)],WC.prototype,"constructors",void 0);O9([(0,VC.inject)(xQ),LQ("design:type",xQ)],WC.prototype,"registry",void 0);O9([(0,VC.inject)(qQ.ClientId),LQ("design:type",String)],WC.prototype,"clientId",void 0);O9([(0,VC.inject)(qQ.Logger),LQ("design:type",qQ.Logger)],WC.prototype,"logger",void 0);D1.McpDiagramResourceHandlerRegistryInitializer=WC=O9([(0,VC.injectable)()],WC)});var n_e=q(N1=>{"use strict";var E9=N1&&N1.__decorate||function(o,n,s,c){var l=arguments.length,g=l<3?n:c===null?c=Object.getOwnPropertyDescriptor(n,s):c,v;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")g=Reflect.decorate(o,n,s,c);else for(var w=o.length-1;w>=0;w--)(v=o[w])&&(g=(l<3?v(g):l>3?v(n,s,g):v(n,s))||g);return l>3&&g&&Object.defineProperty(n,s,g),g},zQ=N1&&N1.__metadata||function(o,n){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(o,n)};Object.defineProperty(N1,"__esModule",{value:!0});N1.McpDiagramToolHandlerRegistryInitializer=N1.McpDiagramToolHandlerRegistry=N1.McpDiagramToolHandlerFactory=void 0;var BQ=Kr(),XC=en(),Nkr=sl();N1.McpDiagramToolHandlerFactory=Symbol("McpDiagramToolHandlerFactory");var FQ=class extends BQ.Registry{static{r(this,"McpDiagramToolHandlerRegistry")}registerHandler(n){return this.register(n.name,n)}};N1.McpDiagramToolHandlerRegistry=FQ;N1.McpDiagramToolHandlerRegistry=FQ=E9([(0,XC.injectable)()],FQ);var YC=class{static{r(this,"McpDiagramToolHandlerRegistryInitializer")}constructor(){this.constructors=[]}initialize(n){let s=this.clientId===BQ.TEMPORARY_CLIENT_ID;for(let c of this.constructors){let l;try{l=this.factory(c)}catch(g){throw new Error(`Failed to instantiate MCP diagram tool handler '${c.name}': ${g.message}. Check your DiagramModule bindings.`)}if(!l.canRegister()){s||this.logger.debug(`Skipping MCP diagram tool handler '${l.name}': canRegister() returned false.`);continue}this.registry.registerHandler(l)}}};N1.McpDiagramToolHandlerRegistryInitializer=YC;E9([(0,XC.inject)(N1.McpDiagramToolHandlerFactory),zQ("design:type",Function)],YC.prototype,"factory",void 0);E9([(0,XC.inject)(Nkr.McpDiagramToolHandlerConstructor),(0,XC.optional)(),zQ("design:type",Array)],YC.prototype,"constructors",void 0);E9([(0,XC.inject)(FQ),zQ("design:type",FQ)],YC.prototype,"registry",void 0);E9([(0,XC.inject)(BQ.ClientId),zQ("design:type",String)],YC.prototype,"clientId",void 0);E9([(0,XC.inject)(BQ.Logger),zQ("design:type",BQ.Logger)],YC.prototype,"logger",void 0);N1.McpDiagramToolHandlerRegistryInitializer=YC=E9([(0,XC.injectable)()],YC)});var r_e=q(W2=>{"use strict";var DF=W2&&W2.__decorate||function(o,n,s,c){var l=arguments.length,g=l<3?n:c===null?c=Object.getOwnPropertyDescriptor(n,s):c,v;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")g=Reflect.decorate(o,n,s,c);else for(var w=o.length-1;w>=0;w--)(v=o[w])&&(g=(l<3?v(g):l>3?v(n,s,g):v(n,s))||g);return l>3&&g&&Object.defineProperty(n,s,g),g},UQ=W2&&W2.__metadata||function(o,n){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(o,n)};Object.defineProperty(W2,"__esModule",{value:!0});W2.DefaultMcpDiagramHandlerDispatcher=W2.McpDiagramHandlerDispatcher=void 0;var P9=Kr(),qkr=RQ(),e$=en(),xkr=e_e(),r0n=t_e(),Lkr=n_e(),QC=ah(),Bkr=lI(),o0n=cI(),AYe=EI(),i0n=sl();W2.McpDiagramHandlerDispatcher=Symbol("McpDiagramHandlerDispatcher");var t$=class{static{r(this,"DefaultMcpDiagramHandlerDispatcher")}constructor(){this.requestContext=new o0n.NoopMcpRequestContext,this.diagramCatalogs=[]}harvest(){if(this.diagramCatalogs.length>0)return;let n=[],s=(0,P9.createClientSessionModule)({clientId:P9.TEMPORARY_CLIENT_ID,glspClient:{process:r(()=>{},"process")},clientActionKinds:[]});for(let[c,l]of this.diagramModules){let g=this.serverContainer.createChild();g.load(...l,s);let v=this.filterSupported(g,CYe(g,i0n.McpDiagramToolHandlerConstructor),c,i0n.BaseMcpDiagramToolHandler.prototype.isSupportedByDiagramType),w=this.filterSupported(g,CYe(g,AYe.McpDiagramResourceHandlerConstructor),c,AYe.AbstractMcpDiagramResourceHandler.prototype.isSupportedByDiagramType),M=CYe(g,Bkr.McpDiagramPromptHandlerConstructor);g.unbindAll(),n.push({diagramType:c,toolConstructors:v,resourceConstructors:w,promptConstructors:M})}this.diagramCatalogs=n}filterSupported(n,s,c,l){return s.filter(g=>{let v=g.prototype.isSupportedByDiagramType;if(typeof v!="function"||v===l)return!0;try{return n.resolve(g).isSupportedByDiagramType()?!0:(this.logger.debug(`Diagram type '${c}' does not support MCP handler '${g.name}'; not registering.`),!1)}catch(w){return this.logger.debug(`Could not probe MCP handler '${g.name}' for diagram type '${c}'; registering.`,w),!0}})}hasDiagramTools(){return this.diagramCatalogs.some(n=>n.toolConstructors.length>0)}hasDiagramResources(){return this.diagramCatalogs.some(n=>n.resourceConstructors.length>0)}hasDiagramPrompts(){return this.diagramCatalogs.some(n=>n.promptConstructors.length>0)}registerAll(n,s){this.registerDiagramScopeTools(n),this.registerDiagramScopeResources(n,s),this.registerDiagramScopePrompts(n)}registerDiagramScopeTools(n){let s=new Map;for(let c of this.diagramCatalogs)for(let l of c.toolConstructors){let g=new l,v={description:g.description,inputKeys:Object.keys(g.inputSchema?.shape??{}).sort().join(","),diagramType:c.diagramType},w=s.get(g.name);if(w){(w.description!==v.description||w.inputKeys!==v.inputKeys)&&this.logger.warn(`Diagram-scope tool '${g.name}' is registered by multiple diagram types with diverging schemas: first registered by '${w.diagramType}', shadowed registration from '${c.diagramType}' is silently dropped. Either align schemas (description + inputSchema.shape keys must match) or pick distinct tool names.`);continue}s.set(g.name,v),n.registerTool(g.name,g.toRegistrationConfig(),(M,A)=>this.requestContext.run(A,()=>this.dispatchDiagramTool(g.name,M)))}}registerDiagramScopeResources(n,s){let c=new Set;for(let l of this.diagramCatalogs)for(let g of l.resourceConstructors){let v=new g;c.has(v.name)||(c.add(v.name),s?this.registerOneDiagramResource(n,v):v.toolAlternativeInputSchema&&this.registerOneDiagramResourceAsTool(n,v))}}registerOneDiagramResource(n,s){let c=s.name,l=s.toAnnotations(),g={title:s.title,description:s.description,mimeType:s.mimeType,...l?{annotations:l}:{}};if(typeof s.uri=="string"){let v=s.uri;n.registerResource(c,v,g,(w,M)=>this.requestContext.run(M,()=>this.dispatchStaticDiagramRead(c,v)))}else{let v=this.buildAggregatingResourceTemplate(s.uri.template,c);n.registerResource(c,v,g,(w,M,A)=>this.requestContext.run(A,()=>this.dispatchTemplatedDiagramRead(c,w,M)))}}registerOneDiagramResourceAsTool(n,s){let c=s.name,l=s.toolAlternativeInputSchema;n.registerTool(c,{title:s.title,description:s.description,inputSchema:l.strict(),outputSchema:s.toolAlternativeOutputSchema},(g,v)=>this.requestContext.run(v,()=>this.dispatchDiagramResourceAsTool(c,g)))}registerDiagramScopePrompts(n){let s=new Set;for(let c of this.diagramCatalogs)for(let l of c.promptConstructors){let g=new l;s.has(g.name)||(s.add(g.name),n.registerPrompt(g.name,g.toRegistrationConfig(),(v,w)=>this.requestContext.run(w,()=>this.dispatchDiagramPrompt(g.name,v))))}}buildAggregatingResourceTemplate(n,s){return new qkr.ResourceTemplate(n,{list:r(c=>this.requestContext.run(c,()=>this.aggregateList(s)),"list"),complete:this.buildAggregatedCompleters(s)})}async aggregateList(n){let s=[],c=new Set;for(let l of this.clientSessionManager.getSessions().map(g=>g.id)){let v=await this.findDiagramResourceHandler(n,l)?.list?.();if(v)for(let w of v.resources)c.has(w.uri)||(c.add(w.uri),s.push(w))}return{resources:s}}buildAggregatedCompleters(n){let s=this.collectCompleterVariableNames(n),c={};for(let l of s)c[l]=async(g,v)=>{let w=new Set;for(let M of this.clientSessionManager.getSessions().map(A=>A.id)){let A=this.findDiagramResourceHandler(n,M);if(!A)continue;let F=A.glspSessionScopedComplete()[l];if(!F)continue;(await F(g,v)).forEach(re=>w.add(re))}return[...w]};return c}collectCompleterVariableNames(n){let s=new Set;for(let c of this.diagramCatalogs)for(let l of c.resourceConstructors){let g=new l;g.name===n&&Object.keys(g.complete?.()??{}).forEach(v=>s.add(v))}return s}dispatchDiagramTool(n,s){return(0,QC.runWithToolErrorEnvelope)(async()=>this.requireDiagramToolHandler(n,s).handle(s))}dispatchStaticDiagramRead(n,s){let c=this.clientSessionManager.getSessions()[0]?.id;if(!c)throw new QC.McpToolError(`No open GLSP session can serve resource '${n}'.`);return this.requireDiagramResourceHandler(n,c).handleRead(s,{sessionId:c})}dispatchTemplatedDiagramRead(n,s,c){let l=(0,AYe.toParams)(c);return this.requireDiagramResourceHandler(n,l.sessionId).handleRead(s.toString(),l)}dispatchDiagramResourceAsTool(n,s){return(0,QC.runWithToolErrorEnvelope)(async()=>this.requireDiagramResourceHandler(n,this.extractSessionId(s)).handleAsTool(s))}dispatchDiagramPrompt(n,s){return this.requireDiagramPromptHandler(n,s).handle(s)}extractSessionId(n){return n.sessionId}requireDiagramToolHandler(n,s){let c=this.requireGlspSession(this.extractSessionId(s)),g=c.container.get(Lkr.McpDiagramToolHandlerRegistry).get(n);if(!g)throw new QC.McpToolError(`No tool handler '${n}' registered for diagram type '${c.diagramType}'.`);return g}requireDiagramResourceHandler(n,s){let c=this.requireGlspSession(s),g=c.container.get(r0n.McpDiagramResourceHandlerRegistry).get(n);if(!g)throw new QC.McpToolError(`No resource handler '${n}' registered for diagram type '${c.diagramType}'.`);return g}findDiagramResourceHandler(n,s){let c=this.clientSessionManager.getSession(s);if(c)return c.container.get(r0n.McpDiagramResourceHandlerRegistry).get(n)}requireDiagramPromptHandler(n,s){let c=this.requireGlspSession(this.extractSessionId(s)),g=c.container.get(xkr.McpDiagramPromptHandlerRegistry).get(n);if(!g)throw new QC.McpToolError(`No prompt handler '${n}' registered for diagram type '${c.diagramType}'.`);return g}requireGlspSession(n){if(!n)throw new QC.McpMissingParamError("sessionId");let s=this.clientSessionManager.getSession(n);if(!s)throw new QC.McpSessionNotFoundError(n);return s}reset(){this.diagramCatalogs=[]}};W2.DefaultMcpDiagramHandlerDispatcher=t$;DF([(0,e$.inject)(o0n.McpRequestContext),(0,e$.optional)(),UQ("design:type",Object)],t$.prototype,"requestContext",void 0);DF([(0,e$.inject)(P9.InjectionContainer),UQ("design:type",e$.Container)],t$.prototype,"serverContainer",void 0);DF([(0,e$.inject)(P9.DiagramModules),UQ("design:type",Map)],t$.prototype,"diagramModules",void 0);DF([(0,e$.inject)(P9.ClientSessionManager),UQ("design:type",Object)],t$.prototype,"clientSessionManager",void 0);DF([(0,e$.inject)(P9.Logger),UQ("design:type",P9.Logger)],t$.prototype,"logger",void 0);W2.DefaultMcpDiagramHandlerDispatcher=t$=DF([(0,e$.injectable)()],t$);function CYe(o,n){return o.isBound(n)?o.get(n):[]}r(CYe,"getConstructorList")});var GQ=q(Ij=>{"use strict";var Fkr=Ij&&Ij.__decorate||function(o,n,s,c){var l=arguments.length,g=l<3?n:c===null?c=Object.getOwnPropertyDescriptor(n,s):c,v;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")g=Reflect.decorate(o,n,s,c);else for(var w=o.length-1;w>=0;w--)(v=o[w])&&(g=(l<3?v(g):l>3?v(n,s,g):v(n,s))||g);return l>3&&g&&Object.defineProperty(n,s,g),g},i_e;Object.defineProperty(Ij,"__esModule",{value:!0});Ij.DefaultMcpLogLevelRegistry=Ij.McpLogLevelRegistry=void 0;Ij.passesLogThreshold=Ukr;var zkr=en();Ij.McpLogLevelRegistry=Symbol("McpLogLevelRegistry");var s0n={emergency:0,alert:1,critical:2,error:3,warning:4,notice:5,info:6,debug:7};function Ukr(o,n){return s0n[o]<=s0n[n]}r(Ukr,"passesLogThreshold");var $Ye=class{static{r(this,"DefaultMcpLogLevelRegistry")}constructor(){this.levels=new Map}static{i_e=this}static{this.DEFAULT_LEVEL="debug"}setLevel(n,s){this.levels.set(n,s)}getLevel(n){return n===void 0?i_e.DEFAULT_LEVEL:this.levels.get(n)??i_e.DEFAULT_LEVEL}clear(n){this.levels.delete(n)}};Ij.DefaultMcpLogLevelRegistry=$Ye;Ij.DefaultMcpLogLevelRegistry=$Ye=i_e=Fkr([(0,zkr.injectable)()],$Ye)});var o_e=q(PI=>{"use strict";var Gkr=PI&&PI.__decorate||function(o,n,s,c){var l=arguments.length,g=l<3?n:c===null?c=Object.getOwnPropertyDescriptor(n,s):c,v;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")g=Reflect.decorate(o,n,s,c);else for(var w=o.length-1;w>=0;w--)(v=o[w])&&(g=(l<3?v(g):l>3?v(n,s,g):v(n,s))||g);return l>3&&g&&Object.defineProperty(n,s,g),g};Object.defineProperty(PI,"__esModule",{value:!0});PI.McpServerDefaults=PI.McpServerOptions=void 0;var Zkr=en(),RYe=class{static{r(this,"McpServerOptions")}constructor(){this.values={}}};PI.McpServerOptions=RYe;PI.McpServerOptions=RYe=Gkr([(0,Zkr.injectable)()],RYe);PI.McpServerDefaults=Symbol("McpServerDefaults")});var a_e=q(Xv=>{"use strict";var X2=Xv&&Xv.__decorate||function(o,n,s,c){var l=arguments.length,g=l<3?n:c===null?c=Object.getOwnPropertyDescriptor(n,s):c,v;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")g=Reflect.decorate(o,n,s,c);else for(var w=o.length-1;w>=0;w--)(v=o[w])&&(g=(l<3?v(g):l>3?v(n,s,g):v(n,s))||g);return l>3&&g&&Object.defineProperty(n,s,g),g},Cj=Xv&&Xv.__metadata||function(o,n){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(o,n)};Object.defineProperty(Xv,"__esModule",{value:!0});Xv.AbstractMcpServerLauncher=Xv.SERVER_VERSION=void 0;Xv.pickInitOptions=a0n;var Aj=Kr(),Hkr=RQ(),Jkr=Qbn(),s_e=DC(),m0=en(),Kkr=e0n(),Vkr=Xye(),Wkr=Qye(),Xkr=r_e(),Ykr=GQ(),kYe=o_e(),Qkr=lI(),eDr=EI(),tDr=sl();Xv.SERVER_VERSION=Kkr.version;function a0n(o){let{dataMode:n,agentPersona:s,eventStoreLimit:c}=o,l={};return n!==void 0&&(l.dataMode=n),s!==void 0&&(l.agentPersona=s),c!==void 0&&(l.eventStoreLimit=c),l}r(a0n,"pickInitOptions");var nDr=null,Wv=class{static{r(this,"AbstractMcpServerLauncher")}constructor(){this.toolHandlers=[],this.resourceHandlers=[],this.promptHandlers=[],this.toDispose=new Aj.DisposableCollection,this.sessions=new Map,this.sessionServers=new Map,this.onSessionInitializedEmitter=new Aj.Emitter,this.onSessionInitialized=this.onSessionInitializedEmitter.event,this.onSessionClosedEmitter=new Aj.Emitter,this.onSessionClosed=this.onSessionClosedEmitter.event}async initializeServer(n,s,c){let l=Aj.McpInitializeParameters.getServerConfig(s);if(!l)return c;if(this.serverConfig)return this.serverUrl?Aj.McpInitializeResult.attachServer(c,{name:this.serverConfig.name,url:this.serverUrl}):c;let{port:g=0,route:v="/mcp",name:w="glsp",options:M={}}=l,A={...this.mcpDefaults,...a0n(M)};this.mcpOptions.values=A;let k=A.host??"127.0.0.1",F={port:g,host:k,route:v,name:w,options:A};this.dispatcher.harvest(),this.installResourceListChangedNotifier();let K=await this.bindTransport(F);return this.serverConfig=F,this.serverUrl=K.url,this.logger.info(`MCP server '${F.name}' is ready to accept new client requests on: ${this.serverUrl??"(no network endpoint)"}`),K.url?Aj.McpInitializeResult.attachServer(c,{name:F.name,url:K.url,headers:K.headers}):c}serverShutDown(n){this.dispose()}dispose(){let n=Array.from(this.sessions.values()).map(s=>s.close().catch(c=>this.logger.warn(`Error closing MCP session ${s.sessionId}: ${c}`)));this.sessions.clear(),this.sessionServers.forEach(s=>s.dispose()),this.sessionServers.clear(),Promise.allSettled(n).then(()=>{this.toDispose.dispose(),this.toDispose.clear()}),this.serverUrl=void 0,this.serverConfig=void 0,this.dispatcher.reset()}async handleRequest(n,s){let c=new URL(n.url),l=this.serverConfig?.route??"/mcp";if(c.pathname!==l)return new Response("Not Found",{status:404});if(n.method!=="POST"&&n.method!=="GET"&&n.method!=="DELETE")return new Response("Method Not Allowed",{status:405,headers:{Allow:"POST, GET, DELETE"}});let g=this.validateHostHeader(n);if(g)return g;let v;n.method==="POST"&&(v=await n.clone().json().catch(()=>{}));let w=n.method==="POST"&&(0,s_e.isInitializeRequest)(v),M=this.validateProtocolVersionHeader(n,w);if(M)return M;let A=this.resolveTransport(n,w);if(A instanceof Response)return A;try{return await A.handleRequest(n,{parsedBody:v,authInfo:s?.authInfo})}catch(k){let F=k instanceof Error?k.message:String(k);return this.logger.error("Error handling MCP request:",k),this.jsonRpcErrorResponse(500,-32603,`Internal server error: ${F}`)}}getRequestHandler(){return(n,s)=>this.handleRequest(n,s)}resolveTransport(n,s){let c=n.headers.get("mcp-session-id")??void 0;if(s&&!c)return this.createTransport();if(!c)return this.jsonRpcErrorResponse(400,-32e3,"Bad Request: No valid session ID provided");let l=this.sessions.get(c);return l||this.jsonRpcErrorResponse(404,-32001,"Session not found")}validateProtocolVersionHeader(n,s){if(s)return;let c=n.headers.get("mcp-protocol-version")??void 0;if(c!==void 0&&!s_e.SUPPORTED_PROTOCOL_VERSIONS.includes(c))return this.jsonRpcErrorResponse(400,-32e3,`Unsupported MCP-Protocol-Version: '${c}'. Supported versions: ${s_e.SUPPORTED_PROTOCOL_VERSIONS.join(", ")}.`)}validateHostHeader(n){let s=this.mcpOptions.values.allowedHosts;if(!s||s.length===0)return;let c=n.headers.get("host");if(!c)return this.jsonRpcErrorResponse(403,-32e3,"Missing Host header");let l;try{l=new URL(`http://${c}`).hostname}catch{return this.jsonRpcErrorResponse(403,-32e3,`Invalid Host header: ${c}`)}if(!s.includes(l))return this.jsonRpcErrorResponse(403,-32e3,`Invalid Host: ${l}`)}createTransport(){let n=this.mcpOptions.values.allowedOrigins,s=new Jkr.WebStandardStreamableHTTPServerTransport({sessionIdGenerator:r(()=>globalThis.crypto.randomUUID(),"sessionIdGenerator"),eventStore:new Wkr.LruEventStore(this.mcpOptions.values.eventStoreLimit,this.logger),allowedOrigins:n,enableDnsRebindingProtection:(n?.length??0)>0,onsessioninitialized:r(c=>{this.logger.info(`MCP session initialized with ID: ${c}`),this.sessions.set(c,s),this.serverConfig&&this.attachServerToSession(s,this.serverConfig),this.onSessionInitializedEmitter.fire(s)},"onsessioninitialized"),onsessionclosed:r(c=>this.closeSession(c),"onsessionclosed")});return s.onclose=()=>this.closeSession(s.sessionId),s.onerror=c=>this.logger.error(`MCP transport error (session ${s.sessionId??"<pre-init>"}):`,c),s}attachServerToSession(n,s){let c=n.sessionId;if(!c)return;let l=this.createGlspMcpServer(s);this.sessionServers.set(c,l),this.registerLogLevelHandler(l,c),l.connect(n)}closeSession(n){if(!n)return;let s=this.sessions.delete(n),c=this.sessionServers.get(n);c&&(this.sessionServers.delete(n),this.logLevelRegistry.clear(n),c.dispose()),s&&(this.logger.info(`MCP session closed: ${n}`),this.onSessionClosedEmitter.fire(n))}installResourceListChangedNotifier(){if(!this.dispatcher.hasDiagramResources())return;let n={sessionCreated:r(()=>this.broadcastResourceListChanged(),"sessionCreated"),sessionDisposed:r(()=>this.broadcastResourceListChanged(),"sessionDisposed")};this.clientSessionManager.addListener(n),this.toDispose.push(Aj.Disposable.create(()=>this.clientSessionManager.removeListener(n)))}broadcastResourceListChanged(){for(let n of this.sessionServers.values())n.getRawServer().server.sendResourceListChanged().catch(s=>this.logger.debug("sendResourceListChanged failed:",s))}registerLogLevelHandler(n,s){n.getRawServer().server.setRequestHandler(s_e.SetLevelRequestSchema,async c=>(this.logLevelRegistry.setLevel(s,c.params.level),{}))}createGlspMcpServer({name:n,options:s}){let c=s.dataMode==="resources",l=new Hkr.McpServer({name:n,version:Xv.SERVER_VERSION},{capabilities:this.buildCapabilities(c),instructions:s.agentPersona}),g=this.glspMcpServerFactory(l,s);return this.registerHandlers(g,c),g}buildCapabilities(n){let s=this.toolHandlers.length>0,c=this.promptHandlers.length>0,l=this.resourceHandlers.length>0,g=this.dispatcher.hasDiagramTools(),v=this.dispatcher.hasDiagramPrompts(),w=this.dispatcher.hasDiagramResources(),M=l||w;return{logging:{},...s||g||!n&&M?{tools:{listChanged:!1}}:{},...n&&M?{resources:{listChanged:w}}:{},...c||v?{prompts:{listChanged:!1}}:{}}}registerHandlers(n,s){this.toolHandlers.forEach(c=>c.registerTool(n)),this.promptHandlers.forEach(c=>c.registerPrompt(n)),s?this.resourceHandlers.forEach(c=>c.registerResource(n)):this.resourceHandlers.forEach(c=>c.registerToolAlternative?.(n)),this.dispatcher.registerAll(n,s),this.validatePromptToolReferences(n)}validatePromptToolReferences(n){for(let s of this.promptHandlers){let c=s.referencedToolNames().filter(l=>!n.hasTool(l));c.length>0&&this.logger.warn(`Prompt '${s.name}' references unbound tool(s): ${c.join(", ")}. The prompt will still register but its text points at tools the LLM cannot invoke.`)}}jsonRpcErrorResponse(n,s,c){return new Response(JSON.stringify({jsonrpc:"2.0",error:{code:s,message:c},id:nDr}),{status:n,headers:{"Content-Type":"application/json"}})}};Xv.AbstractMcpServerLauncher=Wv;X2([(0,m0.inject)(Aj.Logger),Cj("design:type",Aj.Logger)],Wv.prototype,"logger",void 0);X2([(0,m0.inject)(kYe.McpServerOptions),Cj("design:type",kYe.McpServerOptions)],Wv.prototype,"mcpOptions",void 0);X2([(0,m0.inject)(kYe.McpServerDefaults),Cj("design:type",Object)],Wv.prototype,"mcpDefaults",void 0);X2([(0,m0.inject)(Vkr.GLSPMcpServerFactory),Cj("design:type",Function)],Wv.prototype,"glspMcpServerFactory",void 0);X2([(0,m0.inject)(Xkr.McpDiagramHandlerDispatcher),Cj("design:type",Object)],Wv.prototype,"dispatcher",void 0);X2([(0,m0.inject)(Ykr.McpLogLevelRegistry),Cj("design:type",Object)],Wv.prototype,"logLevelRegistry",void 0);X2([(0,m0.inject)(Aj.ClientSessionManager),Cj("design:type",Object)],Wv.prototype,"clientSessionManager",void 0);X2([(0,m0.multiInject)(tDr.McpToolHandler),(0,m0.optional)(),Cj("design:type",Array)],Wv.prototype,"toolHandlers",void 0);X2([(0,m0.multiInject)(eDr.McpResourceHandler),(0,m0.optional)(),Cj("design:type",Array)],Wv.prototype,"resourceHandlers",void 0);X2([(0,m0.multiInject)(Qkr.McpPromptHandler),(0,m0.optional)(),Cj("design:type",Array)],Wv.prototype,"promptHandlers",void 0);Xv.AbstractMcpServerLauncher=Wv=X2([(0,m0.injectable)()],Wv)});var u_e=q(jI=>{"use strict";var c_e=jI&&jI.__decorate||function(o,n,s,c){var l=arguments.length,g=l<3?n:c===null?c=Object.getOwnPropertyDescriptor(n,s):c,v;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")g=Reflect.decorate(o,n,s,c);else for(var w=o.length-1;w>=0;w--)(v=o[w])&&(g=(l<3?v(g):l>3?v(n,s,g):v(n,s))||g);return l>3&&g&&Object.defineProperty(n,s,g),g},DYe=jI&&jI.__metadata||function(o,n){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(o,n)};Object.defineProperty(jI,"__esModule",{value:!0});jI.McpLogger=void 0;var c0n=Kr(),ZQ=en(),u0n=GQ(),l0n=cI(),NF=class{static{r(this,"McpLogger")}constructor(){this.requestContext=new l0n.NoopMcpRequestContext}info(n,...s){this.glspLogger.info(n,...s),this.notify("info",n)}warn(n,...s){this.glspLogger.warn(n,...s),this.notify("warning",n)}error(n,...s){this.glspLogger.error(n,...s),this.notify("error",n)}debug(n,...s){this.glspLogger.debug(n,...s),this.notify("debug",n)}notify(n,s){let c=this.requestContext.getStore();if(!c)return;let l=this.levelRegistry.getLevel(c.sessionId);(0,u0n.passesLogThreshold)(n,l)&&c.sendNotification({method:"notifications/message",params:{level:n,data:s}}).catch(()=>{})}};jI.McpLogger=NF;c_e([(0,ZQ.inject)(l0n.McpRequestContext),(0,ZQ.optional)(),DYe("design:type",Object)],NF.prototype,"requestContext",void 0);c_e([(0,ZQ.inject)(c0n.Logger),DYe("design:type",c0n.Logger)],NF.prototype,"glspLogger",void 0);c_e([(0,ZQ.inject)(u0n.McpLogLevelRegistry),DYe("design:type",Object)],NF.prototype,"levelRegistry",void 0);jI.McpLogger=NF=c_e([(0,ZQ.injectable)()],NF)});var HQ=q(MI=>{"use strict";var f0n=MI&&MI.__decorate||function(o,n,s,c){var l=arguments.length,g=l<3?n:c===null?c=Object.getOwnPropertyDescriptor(n,s):c,v;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")g=Reflect.decorate(o,n,s,c);else for(var w=o.length-1;w>=0;w--)(v=o[w])&&(g=(l<3?v(g):l>3?v(n,s,g):v(n,s))||g);return l>3&&g&&Object.defineProperty(n,s,g),g},rDr=MI&&MI.__metadata||function(o,n){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(o,n)};Object.defineProperty(MI,"__esModule",{value:!0});MI.McpProgressReporter=void 0;var NYe=en(),d0n=cI(),l_e=class{static{r(this,"McpProgressReporter")}constructor(){this.requestContext=new d0n.NoopMcpRequestContext}async emit(n){let s=this.requestContext.getStore(),c=s?._meta?.progressToken;if(!(s===void 0||c===void 0))try{await s.sendNotification({method:"notifications/progress",params:{progressToken:c,...n}})}catch{}}};MI.McpProgressReporter=l_e;f0n([(0,NYe.inject)(d0n.McpRequestContext),(0,NYe.optional)(),rDr("design:type",Object)],l_e.prototype,"requestContext",void 0);MI.McpProgressReporter=l_e=f0n([(0,NYe.injectable)()],l_e)});var LYe=q(Ll=>{"use strict";var iDr=Ll&&Ll.__createBinding||(Object.create?(function(o,n,s,c){c===void 0&&(c=s);var l=Object.getOwnPropertyDescriptor(n,s);(!l||("get"in l?!n.__esModule:l.writable||l.configurable))&&(l={enumerable:!0,get:r(function(){return n[s]},"get")}),Object.defineProperty(o,c,l)}):(function(o,n,s,c){c===void 0&&(c=s),o[c]=n[s]})),oDr=Ll&&Ll.__setModuleDefault||(Object.create?(function(o,n){Object.defineProperty(o,"default",{enumerable:!0,value:n})}):function(o,n){o.default=n}),h0n=Ll&&Ll.__decorate||function(o,n,s,c){var l=arguments.length,g=l<3?n:c===null?c=Object.getOwnPropertyDescriptor(n,s):c,v;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")g=Reflect.decorate(o,n,s,c);else for(var w=o.length-1;w>=0;w--)(v=o[w])&&(g=(l<3?v(g):l>3?v(n,s,g):v(n,s))||g);return l>3&&g&&Object.defineProperty(n,s,g),g},sDr=Ll&&Ll.__importStar||(function(){var o=r(function(n){return o=Object.getOwnPropertyNames||function(s){var c=[];for(var l in s)Object.prototype.hasOwnProperty.call(s,l)&&(c[c.length]=l);return c},o(n)},"ownKeys");return function(n){if(n&&n.__esModule)return n;var s={};if(n!=null)for(var c=o(n),l=0;l<c.length;l++)c[l]!=="default"&&iDr(s,n,c[l]);return oDr(s,n),s}})(),aDr=Ll&&Ll.__metadata||function(o,n){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(o,n)},qYe;Object.defineProperty(Ll,"__esModule",{value:!0});Ll.SessionInfoMcpToolHandler=Ll.SessionInfoOutputSchema=Ll.SessionInfoRowSchema=Ll.SessionInfoInputSchema=void 0;var xYe=Kr(),p0n=en(),$j=sDr(rl()),cDr=ah(),uDr=sl();Ll.SessionInfoInputSchema=$j.object({sessionId:$j.string().optional().describe("Optional filter \u2014 returns only the matching session, or throws if unknown. Omit to list all sessions.")});Ll.SessionInfoRowSchema=$j.object({sessionId:$j.string(),diagramType:$j.string(),sourceUri:$j.string(),readOnly:$j.boolean(),dirty:$j.boolean().describe("True when the diagram has unsaved changes \u2014 call `save-model` to persist.")});Ll.SessionInfoOutputSchema=$j.object({sessions:$j.array(Ll.SessionInfoRowSchema)});var f_e=class extends uDr.AbstractMcpToolHandler{static{r(this,"SessionInfoMcpToolHandler")}constructor(){super(...arguments),this.name=qYe.NAME,this.title="GLSP Session Info",this.description="Report info on the active GLSP client sessions: session id, diagram type, source uri, and read-only status. Pass `sessionId` to retrieve a single session's entry; omit it to list every active session. Useful as a discovery tool \u2014 most other diagram-scoped tools take the `sessionId` returned here.",this.inputSchema=Ll.SessionInfoInputSchema,this.outputSchema=Ll.SessionInfoOutputSchema}static{qYe=this}static{this.NAME="session-info"}createResult({sessionId:n}){let c=(n!==void 0?this.singleSession(n):this.clientSessionManager.getSessions()).map(l=>this.buildSessionRow(l));return this.success(this.summarizeSessions(c),{sessions:c})}buildSessionRow(n){let s=n.container.get(xYe.ModelState),c=n.container.get(xYe.CommandStack);return{sessionId:n.id,diagramType:n.diagramType,sourceUri:s.sourceUri??"",readOnly:s.isReadonly,dirty:c.isDirty}}summarizeSessions(n){if(n.length===0)return"No active sessions.";let s=n.map(c=>{let l=[c.readOnly?"read-only":void 0,c.dirty?"dirty":void 0].filter(Boolean),g=l.length>0?`, ${l.join(", ")}`:"";return`- ${c.sessionId} (${c.diagramType}${g})`});return`${n.length} session(s); full details in structuredContent.
246
+ `,n.enqueue(s.encode(g)),!0}catch(g){return this.onerror?.(g),!1}}handleUnsupportedRequest(){return this.onerror?.(new Error("Method not allowed.")),new Response(JSON.stringify({jsonrpc:"2.0",error:{code:-32e3,message:"Method not allowed."},id:null}),{status:405,headers:{Allow:"GET, POST, DELETE","Content-Type":"application/json"}})}async handlePostRequest(n,s){try{let c=n.headers.get("accept");if(!c?.includes("application/json")||!c.includes("text/event-stream"))return this.onerror?.(new Error("Not Acceptable: Client must accept both application/json and text/event-stream")),this.createJsonErrorResponse(406,-32e3,"Not Acceptable: Client must accept both application/json and text/event-stream");let l=n.headers.get("content-type");if(!l||!l.includes("application/json"))return this.onerror?.(new Error("Unsupported Media Type: Content-Type must be application/json")),this.createJsonErrorResponse(415,-32e3,"Unsupported Media Type: Content-Type must be application/json");let g={headers:Object.fromEntries(n.headers.entries()),url:new URL(n.url)},v;if(s?.parsedBody!==void 0)v=s.parsedBody;else try{v=await n.json()}catch{return this.onerror?.(new Error("Parse error: Invalid JSON")),this.createJsonErrorResponse(400,-32700,"Parse error: Invalid JSON")}let w;try{Array.isArray(v)?w=v.map(ke=>Rp.JSONRPCMessageSchema.parse(ke)):w=[Rp.JSONRPCMessageSchema.parse(v)]}catch{return this.onerror?.(new Error("Parse error: Invalid JSON-RPC message")),this.createJsonErrorResponse(400,-32700,"Parse error: Invalid JSON-RPC message")}let M=w.some(Rp.isInitializeRequest);if(M){if(this._initialized&&this.sessionId!==void 0)return this.onerror?.(new Error("Invalid Request: Server already initialized")),this.createJsonErrorResponse(400,-32600,"Invalid Request: Server already initialized");if(w.length>1)return this.onerror?.(new Error("Invalid Request: Only one initialization request is allowed")),this.createJsonErrorResponse(400,-32600,"Invalid Request: Only one initialization request is allowed");this.sessionId=this.sessionIdGenerator?.(),this._initialized=!0,this.sessionId&&this._onsessioninitialized&&await Promise.resolve(this._onsessioninitialized(this.sessionId))}if(!M){let ke=this.validateSession(n);if(ke)return ke;let Xe=this.validateProtocolVersion(n);if(Xe)return Xe}if(!w.some(Rp.isJSONRPCRequest)){for(let ke of w)this.onmessage?.(ke,{authInfo:s?.authInfo,requestInfo:g});return new Response(null,{status:202})}let k=crypto.randomUUID(),F=w.find(ke=>(0,Rp.isInitializeRequest)(ke)),K=F?F.params.protocolVersion:n.headers.get("mcp-protocol-version")??Rp.DEFAULT_NEGOTIATED_PROTOCOL_VERSION;if(this._enableJsonResponse)return new Promise(ke=>{this._streamMapping.set(k,{resolveJson:ke,cleanup:r(()=>{this._streamMapping.delete(k)},"cleanup")});for(let Xe of w)(0,Rp.isJSONRPCRequest)(Xe)&&this._requestToStreamMapping.set(Xe.id,k);for(let Xe of w)this.onmessage?.(Xe,{authInfo:s?.authInfo,requestInfo:g})});let re=new TextEncoder,ne,me=new ReadableStream({start:r(ke=>{ne=ke},"start"),cancel:r(()=>{this._streamMapping.delete(k)},"cancel")}),Te={"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive"};this.sessionId!==void 0&&(Te["mcp-session-id"]=this.sessionId);for(let ke of w)(0,Rp.isJSONRPCRequest)(ke)&&(this._streamMapping.set(k,{controller:ne,encoder:re,cleanup:r(()=>{this._streamMapping.delete(k);try{ne.close()}catch{}},"cleanup")}),this._requestToStreamMapping.set(ke.id,k));await this.writePrimingEvent(ne,re,k,K);for(let ke of w){let Xe,Ke;(0,Rp.isJSONRPCRequest)(ke)&&this._eventStore&&K>="2025-11-25"&&(Xe=r(()=>{this.closeSSEStream(ke.id)},"closeSSEStream"),Ke=r(()=>{this.closeStandaloneSSEStream()},"closeStandaloneSSEStream")),this.onmessage?.(ke,{authInfo:s?.authInfo,requestInfo:g,closeSSEStream:Xe,closeStandaloneSSEStream:Ke})}return new Response(me,{status:200,headers:Te})}catch(c){return this.onerror?.(c),this.createJsonErrorResponse(400,-32700,"Parse error",{data:String(c)})}}async handleDeleteRequest(n){let s=this.validateSession(n);if(s)return s;let c=this.validateProtocolVersion(n);return c||(await Promise.resolve(this._onsessionclosed?.(this.sessionId)),await this.close(),new Response(null,{status:200}))}validateSession(n){if(this.sessionIdGenerator===void 0)return;if(!this._initialized)return this.onerror?.(new Error("Bad Request: Server not initialized")),this.createJsonErrorResponse(400,-32e3,"Bad Request: Server not initialized");let s=n.headers.get("mcp-session-id");if(!s)return this.onerror?.(new Error("Bad Request: Mcp-Session-Id header is required")),this.createJsonErrorResponse(400,-32e3,"Bad Request: Mcp-Session-Id header is required");if(s!==this.sessionId)return this.onerror?.(new Error("Session not found")),this.createJsonErrorResponse(404,-32001,"Session not found")}validateProtocolVersion(n){let s=n.headers.get("mcp-protocol-version");if(s!==null&&!Rp.SUPPORTED_PROTOCOL_VERSIONS.includes(s))return this.onerror?.(new Error(`Bad Request: Unsupported protocol version: ${s} (supported versions: ${Rp.SUPPORTED_PROTOCOL_VERSIONS.join(", ")})`)),this.createJsonErrorResponse(400,-32e3,`Bad Request: Unsupported protocol version: ${s} (supported versions: ${Rp.SUPPORTED_PROTOCOL_VERSIONS.join(", ")})`)}async close(){this._streamMapping.forEach(({cleanup:n})=>{n()}),this._streamMapping.clear(),this._requestResponseMap.clear(),this.onclose?.()}closeSSEStream(n){let s=this._requestToStreamMapping.get(n);if(!s)return;let c=this._streamMapping.get(s);c&&c.cleanup()}closeStandaloneSSEStream(){let n=this._streamMapping.get(this._standaloneSseStreamId);n&&n.cleanup()}async send(n,s){let c=s?.relatedRequestId;if(((0,Rp.isJSONRPCResultResponse)(n)||(0,Rp.isJSONRPCErrorResponse)(n))&&(c=n.id),c===void 0){if((0,Rp.isJSONRPCResultResponse)(n)||(0,Rp.isJSONRPCErrorResponse)(n))throw new Error("Cannot send a response on a standalone SSE stream unless resuming a previous client request");let v;this._eventStore&&(v=await this._eventStore.storeEvent(this._standaloneSseStreamId,n));let w=this._streamMapping.get(this._standaloneSseStreamId);if(w===void 0)return;w.controller&&w.encoder&&this.writeSSEEvent(w.controller,w.encoder,n,v);return}let l=this._requestToStreamMapping.get(c);if(!l)throw new Error(`No connection established for request ID: ${String(c)}`);let g=this._streamMapping.get(l);if(!this._enableJsonResponse&&g?.controller&&g?.encoder){let v;this._eventStore&&(v=await this._eventStore.storeEvent(l,n)),this.writeSSEEvent(g.controller,g.encoder,n,v)}if((0,Rp.isJSONRPCResultResponse)(n)||(0,Rp.isJSONRPCErrorResponse)(n)){this._requestResponseMap.set(c,n);let v=Array.from(this._requestToStreamMapping.entries()).filter(([M,A])=>A===l).map(([M])=>M);if(v.every(M=>this._requestResponseMap.has(M))){if(!g)throw new Error(`No connection established for request ID: ${String(c)}`);if(this._enableJsonResponse&&g.resolveJson){let M={"Content-Type":"application/json"};this.sessionId!==void 0&&(M["mcp-session-id"]=this.sessionId);let A=v.map(k=>this._requestResponseMap.get(k));A.length===1?g.resolveJson(new Response(JSON.stringify(A[0]),{status:200,headers:M})):g.resolveJson(new Response(JSON.stringify(A),{status:200,headers:M}))}else g.cleanup();for(let M of v)this._requestResponseMap.delete(M),this._requestToStreamMapping.delete(M)}}}};Vye.WebStandardStreamableHTTPServerTransport=SYe});var e0n=q((o$i,Ekr)=>{Ekr.exports={name:"@eclipse-glsp/server-mcp",version:"2.9.0-next.20",description:"Model Context Protocol (MCP) server for the GLSP TypeScript server \u2014 runs on Node, browser, and Fetch-API runtimes",keywords:["diagram","diagram editor","eclipse","glsp","graphics","mcp","modeling","visualization"],homepage:"https://www.eclipse.org/glsp/",bugs:"https://github.com/eclipse-glsp/glsp/issues",license:"(EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0)",author:{name:"Eclipse GLSP"},contributors:[{name:"Eclipse GLSP Project",email:"glsp-dev@eclipse.org",url:"https://projects.eclipse.org/projects/ecd.glsp"}],repository:{type:"git",url:"https://github.com/eclipse-glsp/glsp-core.git",directory:"packages/server/server-mcp"},files:["lib","src","node.js","node.d.ts","browser.js","browser.d.ts","common.js","common.d.ts","!**/*.spec.*","!**/test/**"],main:"lib/node/index",browser:{"lib/node/index":"./lib/browser/index"},types:"lib/common/index",publishConfig:{access:"public"},scripts:{build:"tsc -b",clean:"rimraf lib *.tsbuildinfo coverage","generate:index":"glsp generateIndex src/browser src/common src/node -f -s",prepublishOnly:"pnpm build"},dependencies:{"@eclipse-glsp/server":"workspace:*","@hono/node-server":"^1.19.9","@modelcontextprotocol/sdk":"^1.29.0",zod:"^4.0.0"},peerDependencies:{inversify:"^6.1.3","reflect-metadata":"^0.2.2"}}});var Xye=q(R1=>{"use strict";var Pkr=R1&&R1.__decorate||function(o,n,s,c){var l=arguments.length,g=l<3?n:c===null?c=Object.getOwnPropertyDescriptor(n,s):c,v;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")g=Reflect.decorate(o,n,s,c);else for(var w=o.length-1;w>=0;w--)(v=o[w])&&(g=(l<3?v(g):l>3?v(n,s,g):v(n,s))||g);return l>3&&g&&Object.defineProperty(n,s,g),g},jkr=R1&&R1.__metadata||function(o,n){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(o,n)},OYe=R1&&R1.__param||function(o,n){return function(s,c){n(s,c,o)}};Object.defineProperty(R1,"__esModule",{value:!0});R1.DefaultGLSPMcpServer=R1.GLSPMcpServerFactory=R1.GLSPMcpServer=void 0;var Mkr=Kr(),Tkr=RQ(),EYe=DC(),Wye=en();R1.GLSPMcpServer=Symbol("GLSPMcpServer");var Ikr=3e4,Akr=5e3;R1.GLSPMcpServerFactory=Symbol("GLSPMcpServerFactory");var PYe=class{static{r(this,"DefaultGLSPMcpServer")}constructor(n,s,c){this.mcpServer=n,this.options=s,this.logger=c,this.tools=new Map,this.resources=new Map,this.prompts=new Map;let{tools:l,resources:g,prompts:v}=this;this.registerTool=new Proxy(n.registerTool.bind(n),{apply(w,M,A){let k=Reflect.apply(w,M,A);return typeof A[0]=="string"&&l.set(A[0],k),k}}),this.registerResource=new Proxy(n.registerResource.bind(n),{apply(w,M,A){let k=Reflect.apply(w,M,A);return typeof A[0]=="string"&&g.set(A[0],k),k}}),this.registerPrompt=new Proxy(n.registerPrompt.bind(n),{apply(w,M,A){let k=Reflect.apply(w,M,A);return typeof A[0]=="string"&&v.set(A[0],k),k}})}sendLoggingMessage(...n){return this.mcpServer.sendLoggingMessage(...n)}async connect(...n){await this.mcpServer.connect(...n),this.keepAliveTimer=setInterval(()=>this.ping().catch(c=>{(!(c instanceof EYe.McpError)||c.code!==EYe.ErrorCode.RequestTimeout)&&this.logger.debug("MCP keep-alive ping failed:",c)}),Ikr);let s=this.keepAliveTimer.unref;typeof s=="function"&&s.call(this.keepAliveTimer)}isConnected(){return this.mcpServer.isConnected()}async ping(){await this.mcpServer.server.request({method:"ping"},EYe.EmptyResultSchema,{timeout:Akr})}listTools(){return[...this.tools.values()]}hasTool(n){return this.tools.has(n)}listResources(){return[...this.resources.values()]}listPrompts(){return[...this.prompts.values()]}getRawServer(){return this.mcpServer}dispose(){this.keepAliveTimer&&(clearInterval(this.keepAliveTimer),this.keepAliveTimer=void 0),this.mcpServer.close()}};R1.DefaultGLSPMcpServer=PYe;R1.DefaultGLSPMcpServer=PYe=Pkr([(0,Wye.injectable)(),OYe(0,(0,Wye.unmanaged)()),OYe(1,(0,Wye.unmanaged)()),OYe(2,(0,Wye.unmanaged)()),jkr("design:paramtypes",[Tkr.McpServer,Object,Mkr.Logger])],PYe)});var Qye=q(Yye=>{"use strict";Object.defineProperty(Yye,"__esModule",{value:!0});Yye.LruEventStore=void 0;var jYe=class o{static{r(this,"LruEventStore")}static{this.DEFAULT_LIMIT=1e4}constructor(n=o.DEFAULT_LIMIT,s){if(this.events=new Map,n<1)throw new Error(`LruEventStore limit must be >= 1, got ${n}`);this.limit=n,this.logger=s}get size(){return this.events.size}async storeEvent(n,s){let c=`${n}_${Date.now()}_${Math.random().toString(36).substring(2,10)}`;if(this.events.set(c,{streamId:n,message:s}),this.events.size>this.limit){let l=this.events.keys().next().value;l!==void 0&&this.events.delete(l)}return c}async replayEventsAfter(n,{send:s}){if(!n)return"";if(!this.events.has(n))return this.logger?.warn(`[LruEventStore] Replay miss for last-event-id '${n}'. Cap is ${this.limit}; consider increasing \`eventStoreLimit\` if this fires under normal load.`),"";let c=n.split("_")[0];if(!c)return"";let l=!1;for(let[g,{streamId:v,message:w}]of this.events)if(v===c){if(g===n){l=!0;continue}l&&await s(g,w)}return c}};Yye.LruEventStore=jYe});var e_e=q(k1=>{"use strict";var DQ=k1&&k1.__decorate||function(o,n,s,c){var l=arguments.length,g=l<3?n:c===null?c=Object.getOwnPropertyDescriptor(n,s):c,v;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")g=Reflect.decorate(o,n,s,c);else for(var w=o.length-1;w>=0;w--)(v=o[w])&&(g=(l<3?v(g):l>3?v(n,s,g):v(n,s))||g);return l>3&&g&&Object.defineProperty(n,s,g),g},MYe=k1&&k1.__metadata||function(o,n){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(o,n)};Object.defineProperty(k1,"__esModule",{value:!0});k1.McpDiagramPromptHandlerRegistryInitializer=k1.McpDiagramPromptHandlerRegistry=k1.McpDiagramPromptHandlerFactory=void 0;var Ckr=Kr(),CF=en(),$kr=lI();k1.McpDiagramPromptHandlerFactory=Symbol("McpDiagramPromptHandlerFactory");var kQ=class extends Ckr.Registry{static{r(this,"McpDiagramPromptHandlerRegistry")}registerHandler(n){return this.register(n.name,n)}};k1.McpDiagramPromptHandlerRegistry=kQ;k1.McpDiagramPromptHandlerRegistry=kQ=DQ([(0,CF.injectable)()],kQ);var $F=class{static{r(this,"McpDiagramPromptHandlerRegistryInitializer")}constructor(){this.constructors=[]}initialize(n){for(let s of this.constructors)try{this.registry.registerHandler(this.factory(s))}catch(c){throw new Error(`Failed to instantiate MCP diagram prompt handler '${s.name}': ${c.message}. Check your DiagramModule bindings.`)}}};k1.McpDiagramPromptHandlerRegistryInitializer=$F;DQ([(0,CF.inject)(k1.McpDiagramPromptHandlerFactory),MYe("design:type",Function)],$F.prototype,"factory",void 0);DQ([(0,CF.inject)($kr.McpDiagramPromptHandlerConstructor),(0,CF.optional)(),MYe("design:type",Array)],$F.prototype,"constructors",void 0);DQ([(0,CF.inject)(kQ),MYe("design:type",kQ)],$F.prototype,"registry",void 0);k1.McpDiagramPromptHandlerRegistryInitializer=$F=DQ([(0,CF.injectable)()],$F)});var EI=q(yg=>{"use strict";var OI=yg&&yg.__decorate||function(o,n,s,c){var l=arguments.length,g=l<3?n:c===null?c=Object.getOwnPropertyDescriptor(n,s):c,v;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")g=Reflect.decorate(o,n,s,c);else for(var w=o.length-1;w>=0;w--)(v=o[w])&&(g=(l<3?v(g):l>3?v(n,s,g):v(n,s))||g);return l>3&&g&&Object.defineProperty(n,s,g),g},kF=yg&&yg.__metadata||function(o,n){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(o,n)};Object.defineProperty(yg,"__esModule",{value:!0});yg.McpDiagramResourceHandlerConstructor=yg.AbstractMcpDiagramResourceHandler=yg.AbstractMcpResourceHandler=yg.McpResourceHandler=void 0;yg.toParams=n0n;var NQ=Kr(),Rkr=RQ(),Tj=en(),TYe=ah(),kkr=BN(),t0n=cI();yg.McpResourceHandler=Symbol("McpResourceHandler");var RF=class{static{r(this,"BaseMcpResourceHandler")}constructor(){this.requestContext=new t0n.NoopMcpRequestContext}toAnnotations(){if(!(this.audience===void 0&&this.priority===void 0&&this.lastModified===void 0))return{...this.audience!==void 0?{audience:this.audience}:{},...this.priority!==void 0?{priority:this.priority}:{},...this.lastModified!==void 0?{lastModified:this.lastModified}:{}}}uriTemplate(){return typeof this.uri=="string"?this.uri:this.uri.template}expandUriTemplate(n){return this.uriTemplate().replace(/\{(\w+)\}/g,(s,c)=>{let l=n[c];return l===void 0?s:encodeURIComponent(l)})}async execute(n){try{return{ok:!0,body:await n()}}catch(s){if(s instanceof TYe.McpToolError)return{ok:!1,message:s.message};let c=(0,TYe.extractErrorMessage)(s);return this.logger.error(`Unexpected error in resource '${this.name}': ${c}`,s),{ok:!1,message:c}}}toResourceResult(n,s){return s.ok?{contents:["text"in s.body?{uri:n,mimeType:this.mimeType,text:s.body.text}:{uri:n,mimeType:this.mimeType,blob:s.body.blob}],isError:!1}:{contents:[{uri:n,mimeType:"text/plain",text:s.message}],isError:!0}}toToolResult(n){if(!n.ok)return{isError:!0,content:[{type:"text",text:n.message}]};let s=n.body.structured,c="text"in n.body?{isError:!1,content:[{type:"text",text:n.body.text}]}:{isError:!1,content:[{type:"image",data:n.body.blob,mimeType:this.mimeType}]};return s?{...c,structuredContent:s}:c}buildResourceTemplate(n){return new Rkr.ResourceTemplate(n,{list:this.list?async s=>this.requestContext.run(s,()=>this.list()):void 0,complete:this.complete?.()})}};OI([(0,Tj.inject)(t0n.McpRequestContext),(0,Tj.optional)(),kF("design:type",Object)],RF.prototype,"requestContext",void 0);OI([(0,Tj.inject)(NQ.Logger),kF("design:type",NQ.Logger)],RF.prototype,"logger",void 0);RF=OI([(0,Tj.injectable)()],RF);var IYe=class extends RF{static{r(this,"AbstractMcpResourceHandler")}registerResource(n){let s=this.toAnnotations(),c={title:this.title,description:this.description,mimeType:this.mimeType,...s?{annotations:s}:{}};if(typeof this.uri=="string"){let l=this.uri;n.registerResource(this.name,l,c,async(g,v)=>this.requestContext.run(v,async()=>this.toResourceResult(l,await this.execute(()=>this.createResult({})))))}else n.registerResource(this.name,this.buildResourceTemplate(this.uri.template),c,async(l,g,v)=>this.requestContext.run(v,async()=>this.toResourceResult(l.toString(),await this.execute(()=>this.createResult(n0n(g))))))}registerToolAlternative(n){this.toolAlternativeInputSchema&&this.doRegisterToolAlternative(n)}doRegisterToolAlternative(n){let s=this.toolAlternativeInputSchema;n.registerTool(this.name,{title:this.title,description:this.description,inputSchema:s.strict(),outputSchema:this.toolAlternativeOutputSchema},async(c,l)=>this.requestContext.run(l,async()=>this.toToolResult(await this.execute(()=>this.createResult(c)))))}};yg.AbstractMcpResourceHandler=IYe;yg.AbstractMcpResourceHandler=IYe=OI([(0,Tj.injectable)()],IYe);var S9=class extends RF{static{r(this,"AbstractMcpDiagramResourceHandler")}requestAction(n,s,c=this.name){return(0,TYe.requestActionOrFail)(this.actionDispatcher,n,s,c)}isSupportedByDiagramType(){return!0}canRegister(){return!0}list(){return{resources:[this.toListingEntry()]}}complete(){return this.uriTemplate().includes("{sessionId}")?{sessionId:r(async()=>[this.clientId],"sessionId")}:{}}toListingEntry(){let n=this.toAnnotations();return{uri:this.expandUriTemplate({sessionId:this.clientId}),name:`${this.title??this.name}: ${this.clientId}`,description:this.description,mimeType:this.mimeType,...n?{annotations:n}:{}}}async handleRead(n,s){return this.toResourceResult(n,await this.execute(()=>this.createResult(s)))}async handleAsTool(n){return this.toToolResult(await this.execute(()=>this.createResult(n)))}glspSessionScopedComplete(){let n=this.complete?.()??{},s=this.clientId,c=typeof this.uri=="object"&&this.uri.template.includes("{sessionId}"),l={};for(let[g,v]of Object.entries(n))l[g]=g==="sessionId"||!c?v:async(w,M)=>M?.arguments?.sessionId===s?v(w,M):[];return l}};yg.AbstractMcpDiagramResourceHandler=S9;OI([(0,Tj.inject)(NQ.ClientId),kF("design:type",String)],S9.prototype,"clientId",void 0);OI([(0,Tj.inject)(NQ.ModelState),kF("design:type",Object)],S9.prototype,"modelState",void 0);OI([(0,Tj.inject)(kkr.McpIdAliasService),kF("design:type",Object)],S9.prototype,"aliasService",void 0);OI([(0,Tj.inject)(NQ.ActionDispatcher),kF("design:type",Object)],S9.prototype,"actionDispatcher",void 0);yg.AbstractMcpDiagramResourceHandler=S9=OI([(0,Tj.injectable)()],S9);function n0n(o){let n={};for(let[s,c]of Object.entries(o))n[s]=Array.isArray(c)?c[0]??"":c;return n}r(n0n,"toParams");yg.McpDiagramResourceHandlerConstructor=Symbol("McpDiagramResourceHandlerConstructor")});var t_e=q(D1=>{"use strict";var O9=D1&&D1.__decorate||function(o,n,s,c){var l=arguments.length,g=l<3?n:c===null?c=Object.getOwnPropertyDescriptor(n,s):c,v;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")g=Reflect.decorate(o,n,s,c);else for(var w=o.length-1;w>=0;w--)(v=o[w])&&(g=(l<3?v(g):l>3?v(n,s,g):v(n,s))||g);return l>3&&g&&Object.defineProperty(n,s,g),g},LQ=D1&&D1.__metadata||function(o,n){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(o,n)};Object.defineProperty(D1,"__esModule",{value:!0});D1.McpDiagramResourceHandlerRegistryInitializer=D1.McpDiagramResourceHandlerRegistry=D1.McpDiagramResourceHandlerFactory=void 0;var qQ=Kr(),VC=en(),Dkr=EI();D1.McpDiagramResourceHandlerFactory=Symbol("McpDiagramResourceHandlerFactory");var xQ=class extends qQ.Registry{static{r(this,"McpDiagramResourceHandlerRegistry")}registerHandler(n){return this.register(n.name,n)}};D1.McpDiagramResourceHandlerRegistry=xQ;D1.McpDiagramResourceHandlerRegistry=xQ=O9([(0,VC.injectable)()],xQ);var WC=class{static{r(this,"McpDiagramResourceHandlerRegistryInitializer")}constructor(){this.constructors=[]}initialize(n){let s=this.clientId===qQ.TEMPORARY_CLIENT_ID;for(let c of this.constructors){let l;try{l=this.factory(c)}catch(g){throw new Error(`Failed to instantiate MCP diagram resource handler '${c.name}': ${g.message}. Check your DiagramModule bindings.`)}if(!l.canRegister()){s||this.logger.debug(`Skipping MCP diagram resource handler '${l.name}': canRegister() returned false.`);continue}this.registry.registerHandler(l)}}};D1.McpDiagramResourceHandlerRegistryInitializer=WC;O9([(0,VC.inject)(D1.McpDiagramResourceHandlerFactory),LQ("design:type",Function)],WC.prototype,"factory",void 0);O9([(0,VC.inject)(Dkr.McpDiagramResourceHandlerConstructor),(0,VC.optional)(),LQ("design:type",Array)],WC.prototype,"constructors",void 0);O9([(0,VC.inject)(xQ),LQ("design:type",xQ)],WC.prototype,"registry",void 0);O9([(0,VC.inject)(qQ.ClientId),LQ("design:type",String)],WC.prototype,"clientId",void 0);O9([(0,VC.inject)(qQ.Logger),LQ("design:type",qQ.Logger)],WC.prototype,"logger",void 0);D1.McpDiagramResourceHandlerRegistryInitializer=WC=O9([(0,VC.injectable)()],WC)});var n_e=q(N1=>{"use strict";var E9=N1&&N1.__decorate||function(o,n,s,c){var l=arguments.length,g=l<3?n:c===null?c=Object.getOwnPropertyDescriptor(n,s):c,v;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")g=Reflect.decorate(o,n,s,c);else for(var w=o.length-1;w>=0;w--)(v=o[w])&&(g=(l<3?v(g):l>3?v(n,s,g):v(n,s))||g);return l>3&&g&&Object.defineProperty(n,s,g),g},zQ=N1&&N1.__metadata||function(o,n){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(o,n)};Object.defineProperty(N1,"__esModule",{value:!0});N1.McpDiagramToolHandlerRegistryInitializer=N1.McpDiagramToolHandlerRegistry=N1.McpDiagramToolHandlerFactory=void 0;var BQ=Kr(),XC=en(),Nkr=sl();N1.McpDiagramToolHandlerFactory=Symbol("McpDiagramToolHandlerFactory");var FQ=class extends BQ.Registry{static{r(this,"McpDiagramToolHandlerRegistry")}registerHandler(n){return this.register(n.name,n)}};N1.McpDiagramToolHandlerRegistry=FQ;N1.McpDiagramToolHandlerRegistry=FQ=E9([(0,XC.injectable)()],FQ);var YC=class{static{r(this,"McpDiagramToolHandlerRegistryInitializer")}constructor(){this.constructors=[]}initialize(n){let s=this.clientId===BQ.TEMPORARY_CLIENT_ID;for(let c of this.constructors){let l;try{l=this.factory(c)}catch(g){throw new Error(`Failed to instantiate MCP diagram tool handler '${c.name}': ${g.message}. Check your DiagramModule bindings.`)}if(!l.canRegister()){s||this.logger.debug(`Skipping MCP diagram tool handler '${l.name}': canRegister() returned false.`);continue}this.registry.registerHandler(l)}}};N1.McpDiagramToolHandlerRegistryInitializer=YC;E9([(0,XC.inject)(N1.McpDiagramToolHandlerFactory),zQ("design:type",Function)],YC.prototype,"factory",void 0);E9([(0,XC.inject)(Nkr.McpDiagramToolHandlerConstructor),(0,XC.optional)(),zQ("design:type",Array)],YC.prototype,"constructors",void 0);E9([(0,XC.inject)(FQ),zQ("design:type",FQ)],YC.prototype,"registry",void 0);E9([(0,XC.inject)(BQ.ClientId),zQ("design:type",String)],YC.prototype,"clientId",void 0);E9([(0,XC.inject)(BQ.Logger),zQ("design:type",BQ.Logger)],YC.prototype,"logger",void 0);N1.McpDiagramToolHandlerRegistryInitializer=YC=E9([(0,XC.injectable)()],YC)});var r_e=q(W2=>{"use strict";var DF=W2&&W2.__decorate||function(o,n,s,c){var l=arguments.length,g=l<3?n:c===null?c=Object.getOwnPropertyDescriptor(n,s):c,v;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")g=Reflect.decorate(o,n,s,c);else for(var w=o.length-1;w>=0;w--)(v=o[w])&&(g=(l<3?v(g):l>3?v(n,s,g):v(n,s))||g);return l>3&&g&&Object.defineProperty(n,s,g),g},UQ=W2&&W2.__metadata||function(o,n){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(o,n)};Object.defineProperty(W2,"__esModule",{value:!0});W2.DefaultMcpDiagramHandlerDispatcher=W2.McpDiagramHandlerDispatcher=void 0;var P9=Kr(),qkr=RQ(),e$=en(),xkr=e_e(),r0n=t_e(),Lkr=n_e(),QC=ah(),Bkr=lI(),o0n=cI(),AYe=EI(),i0n=sl();W2.McpDiagramHandlerDispatcher=Symbol("McpDiagramHandlerDispatcher");var t$=class{static{r(this,"DefaultMcpDiagramHandlerDispatcher")}constructor(){this.requestContext=new o0n.NoopMcpRequestContext,this.diagramCatalogs=[]}harvest(){if(this.diagramCatalogs.length>0)return;let n=[],s=(0,P9.createClientSessionModule)({clientId:P9.TEMPORARY_CLIENT_ID,glspClient:{process:r(()=>{},"process")},clientActionKinds:[]});for(let[c,l]of this.diagramModules){let g=this.serverContainer.createChild();g.load(...l,s);let v=this.filterSupported(g,CYe(g,i0n.McpDiagramToolHandlerConstructor),c,i0n.BaseMcpDiagramToolHandler.prototype.isSupportedByDiagramType),w=this.filterSupported(g,CYe(g,AYe.McpDiagramResourceHandlerConstructor),c,AYe.AbstractMcpDiagramResourceHandler.prototype.isSupportedByDiagramType),M=CYe(g,Bkr.McpDiagramPromptHandlerConstructor);g.unbindAll(),n.push({diagramType:c,toolConstructors:v,resourceConstructors:w,promptConstructors:M})}this.diagramCatalogs=n}filterSupported(n,s,c,l){return s.filter(g=>{let v=g.prototype.isSupportedByDiagramType;if(typeof v!="function"||v===l)return!0;try{return n.resolve(g).isSupportedByDiagramType()?!0:(this.logger.debug(`Diagram type '${c}' does not support MCP handler '${g.name}'; not registering.`),!1)}catch(w){return this.logger.debug(`Could not probe MCP handler '${g.name}' for diagram type '${c}'; registering.`,w),!0}})}hasDiagramTools(){return this.diagramCatalogs.some(n=>n.toolConstructors.length>0)}hasDiagramResources(){return this.diagramCatalogs.some(n=>n.resourceConstructors.length>0)}hasDiagramPrompts(){return this.diagramCatalogs.some(n=>n.promptConstructors.length>0)}registerAll(n,s){this.registerDiagramScopeTools(n),this.registerDiagramScopeResources(n,s),this.registerDiagramScopePrompts(n)}registerDiagramScopeTools(n){let s=new Map;for(let c of this.diagramCatalogs)for(let l of c.toolConstructors){let g=new l,v={description:g.description,inputKeys:Object.keys(g.inputSchema?.shape??{}).sort().join(","),diagramType:c.diagramType},w=s.get(g.name);if(w){(w.description!==v.description||w.inputKeys!==v.inputKeys)&&this.logger.warn(`Diagram-scope tool '${g.name}' is registered by multiple diagram types with diverging schemas: first registered by '${w.diagramType}', shadowed registration from '${c.diagramType}' is silently dropped. Either align schemas (description + inputSchema.shape keys must match) or pick distinct tool names.`);continue}s.set(g.name,v),n.registerTool(g.name,g.toRegistrationConfig(),(M,A)=>this.requestContext.run(A,()=>this.dispatchDiagramTool(g.name,M)))}}registerDiagramScopeResources(n,s){let c=new Set;for(let l of this.diagramCatalogs)for(let g of l.resourceConstructors){let v=new g;c.has(v.name)||(c.add(v.name),s?this.registerOneDiagramResource(n,v):v.toolAlternativeInputSchema&&this.registerOneDiagramResourceAsTool(n,v))}}registerOneDiagramResource(n,s){let c=s.name,l=s.toAnnotations(),g={title:s.title,description:s.description,mimeType:s.mimeType,...l?{annotations:l}:{}};if(typeof s.uri=="string"){let v=s.uri;n.registerResource(c,v,g,(w,M)=>this.requestContext.run(M,()=>this.dispatchStaticDiagramRead(c,v)))}else{let v=this.buildAggregatingResourceTemplate(s.uri.template,c);n.registerResource(c,v,g,(w,M,A)=>this.requestContext.run(A,()=>this.dispatchTemplatedDiagramRead(c,w,M)))}}registerOneDiagramResourceAsTool(n,s){let c=s.name,l=s.toolAlternativeInputSchema;n.registerTool(c,{title:s.title,description:s.description,inputSchema:l.strict(),outputSchema:s.toolAlternativeOutputSchema},(g,v)=>this.requestContext.run(v,()=>this.dispatchDiagramResourceAsTool(c,g)))}registerDiagramScopePrompts(n){let s=new Set;for(let c of this.diagramCatalogs)for(let l of c.promptConstructors){let g=new l;s.has(g.name)||(s.add(g.name),n.registerPrompt(g.name,g.toRegistrationConfig(),(v,w)=>this.requestContext.run(w,()=>this.dispatchDiagramPrompt(g.name,v))))}}buildAggregatingResourceTemplate(n,s){return new qkr.ResourceTemplate(n,{list:r(c=>this.requestContext.run(c,()=>this.aggregateList(s)),"list"),complete:this.buildAggregatedCompleters(s)})}async aggregateList(n){let s=[],c=new Set;for(let l of this.clientSessionManager.getSessions().map(g=>g.id)){let v=await this.findDiagramResourceHandler(n,l)?.list?.();if(v)for(let w of v.resources)c.has(w.uri)||(c.add(w.uri),s.push(w))}return{resources:s}}buildAggregatedCompleters(n){let s=this.collectCompleterVariableNames(n),c={};for(let l of s)c[l]=async(g,v)=>{let w=new Set;for(let M of this.clientSessionManager.getSessions().map(A=>A.id)){let A=this.findDiagramResourceHandler(n,M);if(!A)continue;let F=A.glspSessionScopedComplete()[l];if(!F)continue;(await F(g,v)).forEach(re=>w.add(re))}return[...w]};return c}collectCompleterVariableNames(n){let s=new Set;for(let c of this.diagramCatalogs)for(let l of c.resourceConstructors){let g=new l;g.name===n&&Object.keys(g.complete?.()??{}).forEach(v=>s.add(v))}return s}dispatchDiagramTool(n,s){return(0,QC.runWithToolErrorEnvelope)(async()=>this.requireDiagramToolHandler(n,s).handle(s))}dispatchStaticDiagramRead(n,s){let c=this.clientSessionManager.getSessions()[0]?.id;if(!c)throw new QC.McpToolError(`No open GLSP session can serve resource '${n}'.`);return this.requireDiagramResourceHandler(n,c).handleRead(s,{sessionId:c})}dispatchTemplatedDiagramRead(n,s,c){let l=(0,AYe.toParams)(c);return this.requireDiagramResourceHandler(n,l.sessionId).handleRead(s.toString(),l)}dispatchDiagramResourceAsTool(n,s){return(0,QC.runWithToolErrorEnvelope)(async()=>this.requireDiagramResourceHandler(n,this.extractSessionId(s)).handleAsTool(s))}dispatchDiagramPrompt(n,s){return this.requireDiagramPromptHandler(n,s).handle(s)}extractSessionId(n){return n.sessionId}requireDiagramToolHandler(n,s){let c=this.requireGlspSession(this.extractSessionId(s)),g=c.container.get(Lkr.McpDiagramToolHandlerRegistry).get(n);if(!g)throw new QC.McpToolError(`No tool handler '${n}' registered for diagram type '${c.diagramType}'.`);return g}requireDiagramResourceHandler(n,s){let c=this.requireGlspSession(s),g=c.container.get(r0n.McpDiagramResourceHandlerRegistry).get(n);if(!g)throw new QC.McpToolError(`No resource handler '${n}' registered for diagram type '${c.diagramType}'.`);return g}findDiagramResourceHandler(n,s){let c=this.clientSessionManager.getSession(s);if(c)return c.container.get(r0n.McpDiagramResourceHandlerRegistry).get(n)}requireDiagramPromptHandler(n,s){let c=this.requireGlspSession(this.extractSessionId(s)),g=c.container.get(xkr.McpDiagramPromptHandlerRegistry).get(n);if(!g)throw new QC.McpToolError(`No prompt handler '${n}' registered for diagram type '${c.diagramType}'.`);return g}requireGlspSession(n){if(!n)throw new QC.McpMissingParamError("sessionId");let s=this.clientSessionManager.getSession(n);if(!s)throw new QC.McpSessionNotFoundError(n);return s}reset(){this.diagramCatalogs=[]}};W2.DefaultMcpDiagramHandlerDispatcher=t$;DF([(0,e$.inject)(o0n.McpRequestContext),(0,e$.optional)(),UQ("design:type",Object)],t$.prototype,"requestContext",void 0);DF([(0,e$.inject)(P9.InjectionContainer),UQ("design:type",e$.Container)],t$.prototype,"serverContainer",void 0);DF([(0,e$.inject)(P9.DiagramModules),UQ("design:type",Map)],t$.prototype,"diagramModules",void 0);DF([(0,e$.inject)(P9.ClientSessionManager),UQ("design:type",Object)],t$.prototype,"clientSessionManager",void 0);DF([(0,e$.inject)(P9.Logger),UQ("design:type",P9.Logger)],t$.prototype,"logger",void 0);W2.DefaultMcpDiagramHandlerDispatcher=t$=DF([(0,e$.injectable)()],t$);function CYe(o,n){return o.isBound(n)?o.get(n):[]}r(CYe,"getConstructorList")});var GQ=q(Ij=>{"use strict";var Fkr=Ij&&Ij.__decorate||function(o,n,s,c){var l=arguments.length,g=l<3?n:c===null?c=Object.getOwnPropertyDescriptor(n,s):c,v;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")g=Reflect.decorate(o,n,s,c);else for(var w=o.length-1;w>=0;w--)(v=o[w])&&(g=(l<3?v(g):l>3?v(n,s,g):v(n,s))||g);return l>3&&g&&Object.defineProperty(n,s,g),g},i_e;Object.defineProperty(Ij,"__esModule",{value:!0});Ij.DefaultMcpLogLevelRegistry=Ij.McpLogLevelRegistry=void 0;Ij.passesLogThreshold=Ukr;var zkr=en();Ij.McpLogLevelRegistry=Symbol("McpLogLevelRegistry");var s0n={emergency:0,alert:1,critical:2,error:3,warning:4,notice:5,info:6,debug:7};function Ukr(o,n){return s0n[o]<=s0n[n]}r(Ukr,"passesLogThreshold");var $Ye=class{static{r(this,"DefaultMcpLogLevelRegistry")}constructor(){this.levels=new Map}static{i_e=this}static{this.DEFAULT_LEVEL="debug"}setLevel(n,s){this.levels.set(n,s)}getLevel(n){return n===void 0?i_e.DEFAULT_LEVEL:this.levels.get(n)??i_e.DEFAULT_LEVEL}clear(n){this.levels.delete(n)}};Ij.DefaultMcpLogLevelRegistry=$Ye;Ij.DefaultMcpLogLevelRegistry=$Ye=i_e=Fkr([(0,zkr.injectable)()],$Ye)});var o_e=q(PI=>{"use strict";var Gkr=PI&&PI.__decorate||function(o,n,s,c){var l=arguments.length,g=l<3?n:c===null?c=Object.getOwnPropertyDescriptor(n,s):c,v;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")g=Reflect.decorate(o,n,s,c);else for(var w=o.length-1;w>=0;w--)(v=o[w])&&(g=(l<3?v(g):l>3?v(n,s,g):v(n,s))||g);return l>3&&g&&Object.defineProperty(n,s,g),g};Object.defineProperty(PI,"__esModule",{value:!0});PI.McpServerDefaults=PI.McpServerOptions=void 0;var Zkr=en(),RYe=class{static{r(this,"McpServerOptions")}constructor(){this.values={}}};PI.McpServerOptions=RYe;PI.McpServerOptions=RYe=Gkr([(0,Zkr.injectable)()],RYe);PI.McpServerDefaults=Symbol("McpServerDefaults")});var a_e=q(Xv=>{"use strict";var X2=Xv&&Xv.__decorate||function(o,n,s,c){var l=arguments.length,g=l<3?n:c===null?c=Object.getOwnPropertyDescriptor(n,s):c,v;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")g=Reflect.decorate(o,n,s,c);else for(var w=o.length-1;w>=0;w--)(v=o[w])&&(g=(l<3?v(g):l>3?v(n,s,g):v(n,s))||g);return l>3&&g&&Object.defineProperty(n,s,g),g},Cj=Xv&&Xv.__metadata||function(o,n){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(o,n)};Object.defineProperty(Xv,"__esModule",{value:!0});Xv.AbstractMcpServerLauncher=Xv.SERVER_VERSION=void 0;Xv.pickInitOptions=a0n;var Aj=Kr(),Hkr=RQ(),Jkr=Qbn(),s_e=DC(),m0=en(),Kkr=e0n(),Vkr=Xye(),Wkr=Qye(),Xkr=r_e(),Ykr=GQ(),kYe=o_e(),Qkr=lI(),eDr=EI(),tDr=sl();Xv.SERVER_VERSION=Kkr.version;function a0n(o){let{dataMode:n,agentPersona:s,eventStoreLimit:c}=o,l={};return n!==void 0&&(l.dataMode=n),s!==void 0&&(l.agentPersona=s),c!==void 0&&(l.eventStoreLimit=c),l}r(a0n,"pickInitOptions");var nDr=null,Wv=class{static{r(this,"AbstractMcpServerLauncher")}constructor(){this.toolHandlers=[],this.resourceHandlers=[],this.promptHandlers=[],this.toDispose=new Aj.DisposableCollection,this.sessions=new Map,this.sessionServers=new Map,this.onSessionInitializedEmitter=new Aj.Emitter,this.onSessionInitialized=this.onSessionInitializedEmitter.event,this.onSessionClosedEmitter=new Aj.Emitter,this.onSessionClosed=this.onSessionClosedEmitter.event}async initializeServer(n,s,c){let l=Aj.McpInitializeParameters.getServerConfig(s);if(!l)return c;if(this.serverConfig)return this.serverUrl?Aj.McpInitializeResult.attachServer(c,{name:this.serverConfig.name,url:this.serverUrl}):c;let{port:g=0,route:v="/mcp",name:w="glsp",options:M={}}=l,A={...this.mcpDefaults,...a0n(M)};this.mcpOptions.values=A;let k=A.host??"127.0.0.1",F={port:g,host:k,route:v,name:w,options:A};this.dispatcher.harvest(),this.installResourceListChangedNotifier();let K=await this.bindTransport(F);return this.serverConfig=F,this.serverUrl=K.url,this.logger.info(`MCP server '${F.name}' is ready to accept new client requests on: ${this.serverUrl??"(no network endpoint)"}`),K.url?Aj.McpInitializeResult.attachServer(c,{name:F.name,url:K.url,headers:K.headers}):c}serverShutDown(n){this.dispose()}dispose(){let n=Array.from(this.sessions.values()).map(s=>s.close().catch(c=>this.logger.warn(`Error closing MCP session ${s.sessionId}: ${c}`)));this.sessions.clear(),this.sessionServers.forEach(s=>s.dispose()),this.sessionServers.clear(),Promise.allSettled(n).then(()=>{this.toDispose.dispose(),this.toDispose.clear()}),this.serverUrl=void 0,this.serverConfig=void 0,this.dispatcher.reset()}async handleRequest(n,s){let c=new URL(n.url),l=this.serverConfig?.route??"/mcp";if(c.pathname!==l)return new Response("Not Found",{status:404});if(n.method!=="POST"&&n.method!=="GET"&&n.method!=="DELETE")return new Response("Method Not Allowed",{status:405,headers:{Allow:"POST, GET, DELETE"}});let g=this.validateHostHeader(n);if(g)return g;let v;n.method==="POST"&&(v=await n.clone().json().catch(()=>{}));let w=n.method==="POST"&&(0,s_e.isInitializeRequest)(v),M=this.validateProtocolVersionHeader(n,w);if(M)return M;let A=this.resolveTransport(n,w);if(A instanceof Response)return A;try{return await A.handleRequest(n,{parsedBody:v,authInfo:s?.authInfo})}catch(k){let F=k instanceof Error?k.message:String(k);return this.logger.error("Error handling MCP request:",k),this.jsonRpcErrorResponse(500,-32603,`Internal server error: ${F}`)}}getRequestHandler(){return(n,s)=>this.handleRequest(n,s)}resolveTransport(n,s){let c=n.headers.get("mcp-session-id")??void 0;if(s&&!c)return this.createTransport();if(!c)return this.jsonRpcErrorResponse(400,-32e3,"Bad Request: No valid session ID provided");let l=this.sessions.get(c);return l||this.jsonRpcErrorResponse(404,-32001,"Session not found")}validateProtocolVersionHeader(n,s){if(s)return;let c=n.headers.get("mcp-protocol-version")??void 0;if(c!==void 0&&!s_e.SUPPORTED_PROTOCOL_VERSIONS.includes(c))return this.jsonRpcErrorResponse(400,-32e3,`Unsupported MCP-Protocol-Version: '${c}'. Supported versions: ${s_e.SUPPORTED_PROTOCOL_VERSIONS.join(", ")}.`)}validateHostHeader(n){let s=this.mcpOptions.values.allowedHosts;if(!s||s.length===0)return;let c=n.headers.get("host");if(!c)return this.jsonRpcErrorResponse(403,-32e3,"Missing Host header");let l;try{l=new URL(`http://${c}`).hostname}catch{return this.jsonRpcErrorResponse(403,-32e3,`Invalid Host header: ${c}`)}if(!s.includes(l))return this.jsonRpcErrorResponse(403,-32e3,`Invalid Host: ${l}`)}createTransport(){let n=this.mcpOptions.values.allowedOrigins,s=new Jkr.WebStandardStreamableHTTPServerTransport({sessionIdGenerator:r(()=>globalThis.crypto.randomUUID(),"sessionIdGenerator"),eventStore:new Wkr.LruEventStore(this.mcpOptions.values.eventStoreLimit,this.logger),allowedOrigins:n,enableDnsRebindingProtection:(n?.length??0)>0,onsessioninitialized:r(c=>{this.logger.info(`MCP session initialized with ID: ${c}`),this.sessions.set(c,s),this.serverConfig&&this.attachServerToSession(s,this.serverConfig),this.onSessionInitializedEmitter.fire(s)},"onsessioninitialized"),onsessionclosed:r(c=>this.closeSession(c),"onsessionclosed")});return s.onclose=()=>this.closeSession(s.sessionId),s.onerror=c=>this.logger.error(`MCP transport error (session ${s.sessionId??"<pre-init>"}):`,c),s}attachServerToSession(n,s){let c=n.sessionId;if(!c)return;let l=this.createGlspMcpServer(s);this.sessionServers.set(c,l),this.registerLogLevelHandler(l,c),l.connect(n)}closeSession(n){if(!n)return;let s=this.sessions.delete(n),c=this.sessionServers.get(n);c&&(this.sessionServers.delete(n),this.logLevelRegistry.clear(n),c.dispose()),s&&(this.logger.info(`MCP session closed: ${n}`),this.onSessionClosedEmitter.fire(n))}installResourceListChangedNotifier(){if(!this.dispatcher.hasDiagramResources())return;let n={sessionCreated:r(()=>this.broadcastResourceListChanged(),"sessionCreated"),sessionDisposed:r(()=>this.broadcastResourceListChanged(),"sessionDisposed")};this.clientSessionManager.addListener(n),this.toDispose.push(Aj.Disposable.create(()=>this.clientSessionManager.removeListener(n)))}broadcastResourceListChanged(){for(let n of this.sessionServers.values())n.getRawServer().server.sendResourceListChanged().catch(s=>this.logger.debug("sendResourceListChanged failed:",s))}registerLogLevelHandler(n,s){n.getRawServer().server.setRequestHandler(s_e.SetLevelRequestSchema,async c=>(this.logLevelRegistry.setLevel(s,c.params.level),{}))}createGlspMcpServer({name:n,options:s}){let c=s.dataMode==="resources",l=new Hkr.McpServer({name:n,version:Xv.SERVER_VERSION},{capabilities:this.buildCapabilities(c),instructions:s.agentPersona}),g=this.glspMcpServerFactory(l,s);return this.registerHandlers(g,c),g}buildCapabilities(n){let s=this.toolHandlers.length>0,c=this.promptHandlers.length>0,l=this.resourceHandlers.length>0,g=this.dispatcher.hasDiagramTools(),v=this.dispatcher.hasDiagramPrompts(),w=this.dispatcher.hasDiagramResources(),M=l||w;return{logging:{},...s||g||!n&&M?{tools:{listChanged:!1}}:{},...n&&M?{resources:{listChanged:w}}:{},...c||v?{prompts:{listChanged:!1}}:{}}}registerHandlers(n,s){this.toolHandlers.forEach(c=>c.registerTool(n)),this.promptHandlers.forEach(c=>c.registerPrompt(n)),s?this.resourceHandlers.forEach(c=>c.registerResource(n)):this.resourceHandlers.forEach(c=>c.registerToolAlternative?.(n)),this.dispatcher.registerAll(n,s),this.validatePromptToolReferences(n)}validatePromptToolReferences(n){for(let s of this.promptHandlers){let c=s.referencedToolNames().filter(l=>!n.hasTool(l));c.length>0&&this.logger.warn(`Prompt '${s.name}' references unbound tool(s): ${c.join(", ")}. The prompt will still register but its text points at tools the LLM cannot invoke.`)}}jsonRpcErrorResponse(n,s,c){return new Response(JSON.stringify({jsonrpc:"2.0",error:{code:s,message:c},id:nDr}),{status:n,headers:{"Content-Type":"application/json"}})}};Xv.AbstractMcpServerLauncher=Wv;X2([(0,m0.inject)(Aj.Logger),Cj("design:type",Aj.Logger)],Wv.prototype,"logger",void 0);X2([(0,m0.inject)(kYe.McpServerOptions),Cj("design:type",kYe.McpServerOptions)],Wv.prototype,"mcpOptions",void 0);X2([(0,m0.inject)(kYe.McpServerDefaults),Cj("design:type",Object)],Wv.prototype,"mcpDefaults",void 0);X2([(0,m0.inject)(Vkr.GLSPMcpServerFactory),Cj("design:type",Function)],Wv.prototype,"glspMcpServerFactory",void 0);X2([(0,m0.inject)(Xkr.McpDiagramHandlerDispatcher),Cj("design:type",Object)],Wv.prototype,"dispatcher",void 0);X2([(0,m0.inject)(Ykr.McpLogLevelRegistry),Cj("design:type",Object)],Wv.prototype,"logLevelRegistry",void 0);X2([(0,m0.inject)(Aj.ClientSessionManager),Cj("design:type",Object)],Wv.prototype,"clientSessionManager",void 0);X2([(0,m0.multiInject)(tDr.McpToolHandler),(0,m0.optional)(),Cj("design:type",Array)],Wv.prototype,"toolHandlers",void 0);X2([(0,m0.multiInject)(eDr.McpResourceHandler),(0,m0.optional)(),Cj("design:type",Array)],Wv.prototype,"resourceHandlers",void 0);X2([(0,m0.multiInject)(Qkr.McpPromptHandler),(0,m0.optional)(),Cj("design:type",Array)],Wv.prototype,"promptHandlers",void 0);Xv.AbstractMcpServerLauncher=Wv=X2([(0,m0.injectable)()],Wv)});var u_e=q(jI=>{"use strict";var c_e=jI&&jI.__decorate||function(o,n,s,c){var l=arguments.length,g=l<3?n:c===null?c=Object.getOwnPropertyDescriptor(n,s):c,v;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")g=Reflect.decorate(o,n,s,c);else for(var w=o.length-1;w>=0;w--)(v=o[w])&&(g=(l<3?v(g):l>3?v(n,s,g):v(n,s))||g);return l>3&&g&&Object.defineProperty(n,s,g),g},DYe=jI&&jI.__metadata||function(o,n){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(o,n)};Object.defineProperty(jI,"__esModule",{value:!0});jI.McpLogger=void 0;var c0n=Kr(),ZQ=en(),u0n=GQ(),l0n=cI(),NF=class{static{r(this,"McpLogger")}constructor(){this.requestContext=new l0n.NoopMcpRequestContext}info(n,...s){this.glspLogger.info(n,...s),this.notify("info",n)}warn(n,...s){this.glspLogger.warn(n,...s),this.notify("warning",n)}error(n,...s){this.glspLogger.error(n,...s),this.notify("error",n)}debug(n,...s){this.glspLogger.debug(n,...s),this.notify("debug",n)}notify(n,s){let c=this.requestContext.getStore();if(!c)return;let l=this.levelRegistry.getLevel(c.sessionId);(0,u0n.passesLogThreshold)(n,l)&&c.sendNotification({method:"notifications/message",params:{level:n,data:s}}).catch(()=>{})}};jI.McpLogger=NF;c_e([(0,ZQ.inject)(l0n.McpRequestContext),(0,ZQ.optional)(),DYe("design:type",Object)],NF.prototype,"requestContext",void 0);c_e([(0,ZQ.inject)(c0n.Logger),DYe("design:type",c0n.Logger)],NF.prototype,"glspLogger",void 0);c_e([(0,ZQ.inject)(u0n.McpLogLevelRegistry),DYe("design:type",Object)],NF.prototype,"levelRegistry",void 0);jI.McpLogger=NF=c_e([(0,ZQ.injectable)()],NF)});var HQ=q(MI=>{"use strict";var f0n=MI&&MI.__decorate||function(o,n,s,c){var l=arguments.length,g=l<3?n:c===null?c=Object.getOwnPropertyDescriptor(n,s):c,v;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")g=Reflect.decorate(o,n,s,c);else for(var w=o.length-1;w>=0;w--)(v=o[w])&&(g=(l<3?v(g):l>3?v(n,s,g):v(n,s))||g);return l>3&&g&&Object.defineProperty(n,s,g),g},rDr=MI&&MI.__metadata||function(o,n){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(o,n)};Object.defineProperty(MI,"__esModule",{value:!0});MI.McpProgressReporter=void 0;var NYe=en(),d0n=cI(),l_e=class{static{r(this,"McpProgressReporter")}constructor(){this.requestContext=new d0n.NoopMcpRequestContext}async emit(n){let s=this.requestContext.getStore(),c=s?._meta?.progressToken;if(!(s===void 0||c===void 0))try{await s.sendNotification({method:"notifications/progress",params:{progressToken:c,...n}})}catch{}}};MI.McpProgressReporter=l_e;f0n([(0,NYe.inject)(d0n.McpRequestContext),(0,NYe.optional)(),rDr("design:type",Object)],l_e.prototype,"requestContext",void 0);MI.McpProgressReporter=l_e=f0n([(0,NYe.injectable)()],l_e)});var LYe=q(Ll=>{"use strict";var iDr=Ll&&Ll.__createBinding||(Object.create?(function(o,n,s,c){c===void 0&&(c=s);var l=Object.getOwnPropertyDescriptor(n,s);(!l||("get"in l?!n.__esModule:l.writable||l.configurable))&&(l={enumerable:!0,get:r(function(){return n[s]},"get")}),Object.defineProperty(o,c,l)}):(function(o,n,s,c){c===void 0&&(c=s),o[c]=n[s]})),oDr=Ll&&Ll.__setModuleDefault||(Object.create?(function(o,n){Object.defineProperty(o,"default",{enumerable:!0,value:n})}):function(o,n){o.default=n}),h0n=Ll&&Ll.__decorate||function(o,n,s,c){var l=arguments.length,g=l<3?n:c===null?c=Object.getOwnPropertyDescriptor(n,s):c,v;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")g=Reflect.decorate(o,n,s,c);else for(var w=o.length-1;w>=0;w--)(v=o[w])&&(g=(l<3?v(g):l>3?v(n,s,g):v(n,s))||g);return l>3&&g&&Object.defineProperty(n,s,g),g},sDr=Ll&&Ll.__importStar||(function(){var o=r(function(n){return o=Object.getOwnPropertyNames||function(s){var c=[];for(var l in s)Object.prototype.hasOwnProperty.call(s,l)&&(c[c.length]=l);return c},o(n)},"ownKeys");return function(n){if(n&&n.__esModule)return n;var s={};if(n!=null)for(var c=o(n),l=0;l<c.length;l++)c[l]!=="default"&&iDr(s,n,c[l]);return oDr(s,n),s}})(),aDr=Ll&&Ll.__metadata||function(o,n){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(o,n)},qYe;Object.defineProperty(Ll,"__esModule",{value:!0});Ll.SessionInfoMcpToolHandler=Ll.SessionInfoOutputSchema=Ll.SessionInfoRowSchema=Ll.SessionInfoInputSchema=void 0;var xYe=Kr(),p0n=en(),$j=sDr(rl()),cDr=ah(),uDr=sl();Ll.SessionInfoInputSchema=$j.object({sessionId:$j.string().optional().describe("Optional filter \u2014 returns only the matching session, or throws if unknown. Omit to list all sessions.")});Ll.SessionInfoRowSchema=$j.object({sessionId:$j.string(),diagramType:$j.string(),sourceUri:$j.string(),readOnly:$j.boolean(),dirty:$j.boolean().describe("True when the diagram has unsaved changes \u2014 call `save-model` to persist.")});Ll.SessionInfoOutputSchema=$j.object({sessions:$j.array(Ll.SessionInfoRowSchema)});var f_e=class extends uDr.AbstractMcpToolHandler{static{r(this,"SessionInfoMcpToolHandler")}constructor(){super(...arguments),this.name=qYe.NAME,this.title="GLSP Session Info",this.description="Report info on the active GLSP client sessions: session id, diagram type, source uri, and read-only status. Pass `sessionId` to retrieve a single session's entry; omit it to list every active session. Useful as a discovery tool \u2014 most other diagram-scoped tools take the `sessionId` returned here.",this.inputSchema=Ll.SessionInfoInputSchema,this.outputSchema=Ll.SessionInfoOutputSchema}static{qYe=this}static{this.NAME="session-info"}createResult({sessionId:n}){let c=(n!==void 0?this.singleSession(n):this.clientSessionManager.getSessions()).map(l=>this.buildSessionRow(l));return this.success(this.summarizeSessions(c),{sessions:c})}buildSessionRow(n){let s=n.container.get(xYe.ModelState),c=n.container.get(xYe.CommandStack);return{sessionId:n.id,diagramType:n.diagramType,sourceUri:s.sourceUri??"",readOnly:s.isReadonly,dirty:c.isDirty}}summarizeSessions(n){if(n.length===0)return"No active sessions.";let s=n.map(c=>{let l=[c.readOnly?"read-only":void 0,c.dirty?"dirty":void 0].filter(Boolean),g=l.length>0?`, ${l.join(", ")}`:"";return`- ${c.sessionId} (${c.diagramType}${g})`});return`${n.length} session(s); full details in structuredContent.
247
247
  ${s.join(`
248
248
  `)}`}singleSession(n){let s=this.clientSessionManager.getSession(n);if(!s)throw new cDr.McpToolError(`Unknown sessionId: ${n}`);return[s]}};Ll.SessionInfoMcpToolHandler=f_e;h0n([(0,p0n.inject)(xYe.ClientSessionManager),aDr("design:type",Object)],f_e.prototype,"clientSessionManager",void 0);Ll.SessionInfoMcpToolHandler=f_e=qYe=h0n([(0,p0n.injectable)()],f_e)});var UYe=q(Y2=>{"use strict";Object.defineProperty(Y2,"__esModule",{value:!0});Y2.AbstractMcpServerModule=Y2.McpHandlerMultiBinding=Y2.DEFAULT_MCP_OPTIONS=Y2.DEFAULT_AGENT_PERSONA=void 0;var b0=Kr(),lDr=vVe(),fDr=SVe(),BYe=a_e(),g0n=Xye(),dDr=Qye(),m0n=r_e(),b0n=GQ(),v0n=u_e(),FYe=o_e(),w0n=HQ(),hDr=lI(),pDr=cI(),gDr=EI(),mDr=sl(),bDr=Zve(),vDr=LYe();Y2.DEFAULT_AGENT_PERSONA=`
249
249
  You are the GLSP Modeling Agent. Your primary goal is to assist in the creation and modification of graphical models using the