@eclipse-glsp/server-mcp 2.7.0-next.9
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/LICENSE +642 -0
- package/README.md +57 -0
- package/lib/index.d.ts +23 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +41 -0
- package/lib/index.js.map +1 -0
- package/lib/prompts/handlers/describe-diagram-mcp-prompt-handler.d.ts +43 -0
- package/lib/prompts/handlers/describe-diagram-mcp-prompt-handler.d.ts.map +1 -0
- package/lib/prompts/handlers/describe-diagram-mcp-prompt-handler.js +96 -0
- package/lib/prompts/handlers/describe-diagram-mcp-prompt-handler.js.map +1 -0
- package/lib/prompts/handlers/suggest-improvements-mcp-prompt-handler.d.ts +43 -0
- package/lib/prompts/handlers/suggest-improvements-mcp-prompt-handler.d.ts.map +1 -0
- package/lib/prompts/handlers/suggest-improvements-mcp-prompt-handler.js +95 -0
- package/lib/prompts/handlers/suggest-improvements-mcp-prompt-handler.js.map +1 -0
- package/lib/prompts/index.d.ts +18 -0
- package/lib/prompts/index.d.ts.map +1 -0
- package/lib/prompts/index.js +34 -0
- package/lib/prompts/index.js.map +1 -0
- package/lib/resources/handlers/diagram-png-mcp-resource-handler.d.ts +81 -0
- package/lib/resources/handlers/diagram-png-mcp-resource-handler.d.ts.map +1 -0
- package/lib/resources/handlers/diagram-png-mcp-resource-handler.js +174 -0
- package/lib/resources/handlers/diagram-png-mcp-resource-handler.js.map +1 -0
- package/lib/resources/handlers/diagram-svg-mcp-resource-handler.d.ts +52 -0
- package/lib/resources/handlers/diagram-svg-mcp-resource-handler.d.ts.map +1 -0
- package/lib/resources/handlers/diagram-svg-mcp-resource-handler.js +96 -0
- package/lib/resources/handlers/diagram-svg-mcp-resource-handler.js.map +1 -0
- package/lib/resources/index.d.ts +20 -0
- package/lib/resources/index.d.ts.map +1 -0
- package/lib/resources/index.js +36 -0
- package/lib/resources/index.js.map +1 -0
- package/lib/resources/services/element-types-provider.d.ts +65 -0
- package/lib/resources/services/element-types-provider.d.ts.map +1 -0
- package/lib/resources/services/element-types-provider.js +81 -0
- package/lib/resources/services/element-types-provider.js.map +1 -0
- package/lib/resources/services/mcp-model-serializer.d.ts +78 -0
- package/lib/resources/services/mcp-model-serializer.d.ts.map +1 -0
- package/lib/resources/services/mcp-model-serializer.js +188 -0
- package/lib/resources/services/mcp-model-serializer.js.map +1 -0
- package/lib/server/glsp-mcp-server.d.ts +82 -0
- package/lib/server/glsp-mcp-server.d.ts.map +1 -0
- package/lib/server/glsp-mcp-server.js +140 -0
- package/lib/server/glsp-mcp-server.js.map +1 -0
- package/lib/server/index.d.ts +37 -0
- package/lib/server/index.d.ts.map +1 -0
- package/lib/server/index.js +57 -0
- package/lib/server/index.js.map +1 -0
- package/lib/server/lru-event-store.d.ts +53 -0
- package/lib/server/lru-event-store.d.ts.map +1 -0
- package/lib/server/lru-event-store.js +100 -0
- package/lib/server/lru-event-store.js.map +1 -0
- package/lib/server/mcp-diagram-handler-dispatcher.d.ts +144 -0
- package/lib/server/mcp-diagram-handler-dispatcher.d.ts.map +1 -0
- package/lib/server/mcp-diagram-handler-dispatcher.js +382 -0
- package/lib/server/mcp-diagram-handler-dispatcher.js.map +1 -0
- package/lib/server/mcp-diagram-module.d.ts +123 -0
- package/lib/server/mcp-diagram-module.d.ts.map +1 -0
- package/lib/server/mcp-diagram-module.js +186 -0
- package/lib/server/mcp-diagram-module.js.map +1 -0
- package/lib/server/mcp-diagram-prompt-handler-registry.d.ts +33 -0
- package/lib/server/mcp-diagram-prompt-handler-registry.d.ts.map +1 -0
- package/lib/server/mcp-diagram-prompt-handler-registry.js +76 -0
- package/lib/server/mcp-diagram-prompt-handler-registry.js.map +1 -0
- package/lib/server/mcp-diagram-resource-handler-registry.d.ts +35 -0
- package/lib/server/mcp-diagram-resource-handler-registry.d.ts.map +1 -0
- package/lib/server/mcp-diagram-resource-handler-registry.js +94 -0
- package/lib/server/mcp-diagram-resource-handler-registry.js.map +1 -0
- package/lib/server/mcp-diagram-tool-handler-registry.d.ts +57 -0
- package/lib/server/mcp-diagram-tool-handler-registry.d.ts.map +1 -0
- package/lib/server/mcp-diagram-tool-handler-registry.js +111 -0
- package/lib/server/mcp-diagram-tool-handler-registry.js.map +1 -0
- package/lib/server/mcp-handler-shared.d.ts +142 -0
- package/lib/server/mcp-handler-shared.d.ts.map +1 -0
- package/lib/server/mcp-handler-shared.js +199 -0
- package/lib/server/mcp-handler-shared.js.map +1 -0
- package/lib/server/mcp-http-transport.d.ts +93 -0
- package/lib/server/mcp-http-transport.d.ts.map +1 -0
- package/lib/server/mcp-http-transport.js +350 -0
- package/lib/server/mcp-http-transport.js.map +1 -0
- package/lib/server/mcp-id-alias-service.d.ts +70 -0
- package/lib/server/mcp-id-alias-service.d.ts.map +1 -0
- package/lib/server/mcp-id-alias-service.js +85 -0
- package/lib/server/mcp-id-alias-service.js.map +1 -0
- package/lib/server/mcp-input-schemas.d.ts +73 -0
- package/lib/server/mcp-input-schemas.d.ts.map +1 -0
- package/lib/server/mcp-input-schemas.js +67 -0
- package/lib/server/mcp-input-schemas.js.map +1 -0
- package/lib/server/mcp-label-provider.d.ts +45 -0
- package/lib/server/mcp-label-provider.d.ts.map +1 -0
- package/lib/server/mcp-label-provider.js +42 -0
- package/lib/server/mcp-label-provider.js.map +1 -0
- package/lib/server/mcp-log-level-registry.d.ts +54 -0
- package/lib/server/mcp-log-level-registry.d.ts.map +1 -0
- package/lib/server/mcp-log-level-registry.js +80 -0
- package/lib/server/mcp-log-level-registry.js.map +1 -0
- package/lib/server/mcp-logger.d.ts +59 -0
- package/lib/server/mcp-logger.d.ts.map +1 -0
- package/lib/server/mcp-logger.js +104 -0
- package/lib/server/mcp-logger.js.map +1 -0
- package/lib/server/mcp-mime-types.d.ts +28 -0
- package/lib/server/mcp-mime-types.d.ts.map +1 -0
- package/lib/server/mcp-mime-types.js +18 -0
- package/lib/server/mcp-mime-types.js.map +1 -0
- package/lib/server/mcp-options.d.ts +39 -0
- package/lib/server/mcp-options.d.ts.map +1 -0
- package/lib/server/mcp-options.js +53 -0
- package/lib/server/mcp-options.js.map +1 -0
- package/lib/server/mcp-progress-reporter.d.ts +48 -0
- package/lib/server/mcp-progress-reporter.d.ts.map +1 -0
- package/lib/server/mcp-progress-reporter.js +66 -0
- package/lib/server/mcp-progress-reporter.js.map +1 -0
- package/lib/server/mcp-prompt-handler.d.ts +120 -0
- package/lib/server/mcp-prompt-handler.d.ts.map +1 -0
- package/lib/server/mcp-prompt-handler.js +131 -0
- package/lib/server/mcp-prompt-handler.js.map +1 -0
- package/lib/server/mcp-request-context.d.ts +37 -0
- package/lib/server/mcp-request-context.d.ts.map +1 -0
- package/lib/server/mcp-request-context.js +37 -0
- package/lib/server/mcp-request-context.js.map +1 -0
- package/lib/server/mcp-resource-handler.d.ts +212 -0
- package/lib/server/mcp-resource-handler.d.ts.map +1 -0
- package/lib/server/mcp-resource-handler.js +298 -0
- package/lib/server/mcp-resource-handler.js.map +1 -0
- package/lib/server/mcp-server-launcher.d.ts +143 -0
- package/lib/server/mcp-server-launcher.d.ts.map +1 -0
- package/lib/server/mcp-server-launcher.js +355 -0
- package/lib/server/mcp-server-launcher.js.map +1 -0
- package/lib/server/mcp-server-module.d.ts +143 -0
- package/lib/server/mcp-server-module.d.ts.map +1 -0
- package/lib/server/mcp-server-module.js +249 -0
- package/lib/server/mcp-server-module.js.map +1 -0
- package/lib/server/mcp-session.d.ts +44 -0
- package/lib/server/mcp-session.d.ts.map +1 -0
- package/lib/server/mcp-session.js +18 -0
- package/lib/server/mcp-session.js.map +1 -0
- package/lib/server/mcp-tool-handler.d.ts +259 -0
- package/lib/server/mcp-tool-handler.d.ts.map +1 -0
- package/lib/server/mcp-tool-handler.js +355 -0
- package/lib/server/mcp-tool-handler.js.map +1 -0
- package/lib/tools/handlers/count-elements-mcp-tool-handler.d.ts +46 -0
- package/lib/tools/handlers/count-elements-mcp-tool-handler.d.ts.map +1 -0
- package/lib/tools/handlers/count-elements-mcp-tool-handler.js +76 -0
- package/lib/tools/handlers/count-elements-mcp-tool-handler.js.map +1 -0
- package/lib/tools/handlers/create-edges-mcp-tool-handler.d.ts +112 -0
- package/lib/tools/handlers/create-edges-mcp-tool-handler.d.ts.map +1 -0
- package/lib/tools/handlers/create-edges-mcp-tool-handler.js +190 -0
- package/lib/tools/handlers/create-edges-mcp-tool-handler.js.map +1 -0
- package/lib/tools/handlers/create-nodes-mcp-tool-handler.d.ts +81 -0
- package/lib/tools/handlers/create-nodes-mcp-tool-handler.d.ts.map +1 -0
- package/lib/tools/handlers/create-nodes-mcp-tool-handler.js +123 -0
- package/lib/tools/handlers/create-nodes-mcp-tool-handler.js.map +1 -0
- package/lib/tools/handlers/delete-elements-mcp-tool-handler.d.ts +52 -0
- package/lib/tools/handlers/delete-elements-mcp-tool-handler.d.ts.map +1 -0
- package/lib/tools/handlers/delete-elements-mcp-tool-handler.js +73 -0
- package/lib/tools/handlers/delete-elements-mcp-tool-handler.js.map +1 -0
- package/lib/tools/handlers/diagram-model-mcp-tool-handler.d.ts +59 -0
- package/lib/tools/handlers/diagram-model-mcp-tool-handler.d.ts.map +1 -0
- package/lib/tools/handlers/diagram-model-mcp-tool-handler.js +78 -0
- package/lib/tools/handlers/diagram-model-mcp-tool-handler.js.map +1 -0
- package/lib/tools/handlers/element-types-mcp-tool-handler.d.ts +97 -0
- package/lib/tools/handlers/element-types-mcp-tool-handler.d.ts.map +1 -0
- package/lib/tools/handlers/element-types-mcp-tool-handler.js +155 -0
- package/lib/tools/handlers/element-types-mcp-tool-handler.js.map +1 -0
- package/lib/tools/handlers/get-selection-mcp-tool-handler.d.ts +43 -0
- package/lib/tools/handlers/get-selection-mcp-tool-handler.d.ts.map +1 -0
- package/lib/tools/handlers/get-selection-mcp-tool-handler.js +68 -0
- package/lib/tools/handlers/get-selection-mcp-tool-handler.js.map +1 -0
- package/lib/tools/handlers/layout-mcp-tool-handler.d.ts +43 -0
- package/lib/tools/handlers/layout-mcp-tool-handler.d.ts.map +1 -0
- package/lib/tools/handlers/layout-mcp-tool-handler.js +71 -0
- package/lib/tools/handlers/layout-mcp-tool-handler.js.map +1 -0
- package/lib/tools/handlers/modify-edges-mcp-tool-handler.d.ts +78 -0
- package/lib/tools/handlers/modify-edges-mcp-tool-handler.d.ts.map +1 -0
- package/lib/tools/handlers/modify-edges-mcp-tool-handler.js +136 -0
- package/lib/tools/handlers/modify-edges-mcp-tool-handler.js.map +1 -0
- package/lib/tools/handlers/modify-nodes-mcp-tool-handler.d.ts +92 -0
- package/lib/tools/handlers/modify-nodes-mcp-tool-handler.d.ts.map +1 -0
- package/lib/tools/handlers/modify-nodes-mcp-tool-handler.js +125 -0
- package/lib/tools/handlers/modify-nodes-mcp-tool-handler.js.map +1 -0
- package/lib/tools/handlers/query-elements-mcp-tool-handler.d.ts +102 -0
- package/lib/tools/handlers/query-elements-mcp-tool-handler.d.ts.map +1 -0
- package/lib/tools/handlers/query-elements-mcp-tool-handler.js +158 -0
- package/lib/tools/handlers/query-elements-mcp-tool-handler.js.map +1 -0
- package/lib/tools/handlers/redo-mcp-tool-handler.d.ts +45 -0
- package/lib/tools/handlers/redo-mcp-tool-handler.d.ts.map +1 -0
- package/lib/tools/handlers/redo-mcp-tool-handler.js +73 -0
- package/lib/tools/handlers/redo-mcp-tool-handler.js.map +1 -0
- package/lib/tools/handlers/save-model-mcp-tool-handler.d.ts +55 -0
- package/lib/tools/handlers/save-model-mcp-tool-handler.d.ts.map +1 -0
- package/lib/tools/handlers/save-model-mcp-tool-handler.js +91 -0
- package/lib/tools/handlers/save-model-mcp-tool-handler.js.map +1 -0
- package/lib/tools/handlers/session-info-mcp-tool-handler.d.ts +65 -0
- package/lib/tools/handlers/session-info-mcp-tool-handler.d.ts.map +1 -0
- package/lib/tools/handlers/session-info-mcp-tool-handler.js +108 -0
- package/lib/tools/handlers/session-info-mcp-tool-handler.js.map +1 -0
- package/lib/tools/handlers/set-selection-mcp-tool-handler.d.ts +60 -0
- package/lib/tools/handlers/set-selection-mcp-tool-handler.d.ts.map +1 -0
- package/lib/tools/handlers/set-selection-mcp-tool-handler.js +103 -0
- package/lib/tools/handlers/set-selection-mcp-tool-handler.js.map +1 -0
- package/lib/tools/handlers/set-view-mcp-tool-handler.d.ts +110 -0
- package/lib/tools/handlers/set-view-mcp-tool-handler.d.ts.map +1 -0
- package/lib/tools/handlers/set-view-mcp-tool-handler.js +142 -0
- package/lib/tools/handlers/set-view-mcp-tool-handler.js.map +1 -0
- package/lib/tools/handlers/undo-mcp-tool-handler.d.ts +45 -0
- package/lib/tools/handlers/undo-mcp-tool-handler.d.ts.map +1 -0
- package/lib/tools/handlers/undo-mcp-tool-handler.js +74 -0
- package/lib/tools/handlers/undo-mcp-tool-handler.js.map +1 -0
- package/lib/tools/handlers/validate-diagram-mcp-tool-handler.d.ts +66 -0
- package/lib/tools/handlers/validate-diagram-mcp-tool-handler.d.ts.map +1 -0
- package/lib/tools/handlers/validate-diagram-mcp-tool-handler.js +0 -0
- package/lib/tools/handlers/validate-diagram-mcp-tool-handler.js.map +1 -0
- package/lib/tools/index.d.ts +34 -0
- package/lib/tools/index.d.ts.map +1 -0
- package/lib/tools/index.js +50 -0
- package/lib/tools/index.js.map +1 -0
- package/lib/util/index.d.ts +18 -0
- package/lib/util/index.d.ts.map +1 -0
- package/lib/util/index.js +34 -0
- package/lib/util/index.js.map +1 -0
- package/lib/util/markdown-util.d.ts +20 -0
- package/lib/util/markdown-util.d.ts.map +1 -0
- package/lib/util/markdown-util.js +45 -0
- package/lib/util/markdown-util.js.map +1 -0
- package/lib/util/mcp-util.d.ts +22 -0
- package/lib/util/mcp-util.d.ts.map +1 -0
- package/lib/util/mcp-util.js +29 -0
- package/lib/util/mcp-util.js.map +1 -0
- package/package.json +63 -0
- package/src/index.ts +24 -0
- package/src/prompts/handlers/describe-diagram-mcp-prompt-handler.ts +89 -0
- package/src/prompts/handlers/suggest-improvements-mcp-prompt-handler.ts +86 -0
- package/src/prompts/index.ts +18 -0
- package/src/resources/handlers/diagram-png-mcp-resource-handler.ts +181 -0
- package/src/resources/handlers/diagram-svg-mcp-resource-handler.ts +89 -0
- package/src/resources/index.ts +20 -0
- package/src/resources/services/element-types-provider.ts +105 -0
- package/src/resources/services/mcp-model-serializer.ts +211 -0
- package/src/server/glsp-mcp-server.spec.ts +73 -0
- package/src/server/glsp-mcp-server.ts +196 -0
- package/src/server/index.ts +42 -0
- package/src/server/lru-event-store.spec.ts +121 -0
- package/src/server/lru-event-store.ts +112 -0
- package/src/server/mcp-diagram-handler-dispatcher.spec.ts +231 -0
- package/src/server/mcp-diagram-handler-dispatcher.ts +459 -0
- package/src/server/mcp-diagram-module.ts +248 -0
- package/src/server/mcp-diagram-prompt-handler-registry.ts +59 -0
- package/src/server/mcp-diagram-resource-handler-registry.ts +73 -0
- package/src/server/mcp-diagram-tool-handler-registry.ts +97 -0
- package/src/server/mcp-handler-shared.spec.ts +53 -0
- package/src/server/mcp-handler-shared.ts +247 -0
- package/src/server/mcp-http-transport-e2e.spec.ts +151 -0
- package/src/server/mcp-http-transport.spec.ts +385 -0
- package/src/server/mcp-http-transport.ts +368 -0
- package/src/server/mcp-id-alias-service.spec.ts +106 -0
- package/src/server/mcp-id-alias-service.ts +104 -0
- package/src/server/mcp-input-schemas.ts +82 -0
- package/src/server/mcp-label-provider.ts +52 -0
- package/src/server/mcp-log-level-registry.spec.ts +75 -0
- package/src/server/mcp-log-level-registry.ts +90 -0
- package/src/server/mcp-logger.spec.ts +227 -0
- package/src/server/mcp-logger.ts +91 -0
- package/src/server/mcp-mime-types.ts +31 -0
- package/src/server/mcp-options.ts +43 -0
- package/src/server/mcp-progress-reporter.spec.ts +93 -0
- package/src/server/mcp-progress-reporter.ts +67 -0
- package/src/server/mcp-prompt-handler.ts +157 -0
- package/src/server/mcp-request-context.ts +39 -0
- package/src/server/mcp-resource-handler.ts +389 -0
- package/src/server/mcp-server-launcher.spec.ts +173 -0
- package/src/server/mcp-server-launcher.ts +369 -0
- package/src/server/mcp-server-module.ts +287 -0
- package/src/server/mcp-session.ts +45 -0
- package/src/server/mcp-tool-handler.spec.ts +182 -0
- package/src/server/mcp-tool-handler.ts +431 -0
- package/src/server/raw-http.spec.ts +59 -0
- package/src/tools/handlers/count-elements-mcp-tool-handler.spec.ts +99 -0
- package/src/tools/handlers/count-elements-mcp-tool-handler.ts +66 -0
- package/src/tools/handlers/create-edges-mcp-tool-handler.spec.ts +196 -0
- package/src/tools/handlers/create-edges-mcp-tool-handler.ts +205 -0
- package/src/tools/handlers/create-nodes-mcp-tool-handler.spec.ts +197 -0
- package/src/tools/handlers/create-nodes-mcp-tool-handler.ts +131 -0
- package/src/tools/handlers/delete-elements-mcp-tool-handler.ts +73 -0
- package/src/tools/handlers/diagram-model-mcp-tool-handler.ts +66 -0
- package/src/tools/handlers/element-types-mcp-tool-handler.ts +151 -0
- package/src/tools/handlers/get-selection-mcp-tool-handler.ts +54 -0
- package/src/tools/handlers/layout-mcp-tool-handler.ts +56 -0
- package/src/tools/handlers/modify-edges-mcp-tool-handler.ts +148 -0
- package/src/tools/handlers/modify-nodes-mcp-tool-handler.ts +140 -0
- package/src/tools/handlers/query-elements-mcp-tool-handler.spec.ts +210 -0
- package/src/tools/handlers/query-elements-mcp-tool-handler.ts +161 -0
- package/src/tools/handlers/redo-mcp-tool-handler.ts +62 -0
- package/src/tools/handlers/save-model-mcp-tool-handler.ts +71 -0
- package/src/tools/handlers/session-info-mcp-tool-handler.spec.ts +152 -0
- package/src/tools/handlers/session-info-mcp-tool-handler.ts +97 -0
- package/src/tools/handlers/set-selection-mcp-tool-handler.spec.ts +118 -0
- package/src/tools/handlers/set-selection-mcp-tool-handler.ts +90 -0
- package/src/tools/handlers/set-view-mcp-tool-handler.ts +162 -0
- package/src/tools/handlers/undo-mcp-tool-handler.ts +61 -0
- package/src/tools/handlers/validate-diagram-mcp-tool-handler.ts +0 -0
- package/src/tools/index.ts +34 -0
- package/src/tools/tool-annotations.spec.ts +141 -0
- package/src/util/index.ts +18 -0
- package/src/util/markdown-util.ts +44 -0
- package/src/util/mcp-util.ts +25 -0
|
@@ -0,0 +1,382 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/********************************************************************************
|
|
3
|
+
* Copyright (c) 2026 EclipseSource and others.
|
|
4
|
+
*
|
|
5
|
+
* This program and the accompanying materials are made available under the
|
|
6
|
+
* terms of the Eclipse Public License v. 2.0 which is available at
|
|
7
|
+
* http://www.eclipse.org/legal/epl-2.0.
|
|
8
|
+
*
|
|
9
|
+
* This Source Code may also be made available under the following Secondary
|
|
10
|
+
* Licenses when the conditions for such availability set forth in the Eclipse
|
|
11
|
+
* Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
12
|
+
* with the GNU Classpath Exception which is available at
|
|
13
|
+
* https://www.gnu.org/software/classpath/license.html.
|
|
14
|
+
*
|
|
15
|
+
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
16
|
+
********************************************************************************/
|
|
17
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
18
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
19
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
20
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
21
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
22
|
+
};
|
|
23
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
24
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
25
|
+
};
|
|
26
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
27
|
+
exports.DefaultMcpDiagramHandlerDispatcher = exports.McpDiagramHandlerDispatcher = void 0;
|
|
28
|
+
const server_1 = require("@eclipse-glsp/server");
|
|
29
|
+
const mcp_js_1 = require("@modelcontextprotocol/sdk/server/mcp.js");
|
|
30
|
+
const inversify_1 = require("inversify");
|
|
31
|
+
const mcp_diagram_prompt_handler_registry_1 = require("./mcp-diagram-prompt-handler-registry");
|
|
32
|
+
const mcp_diagram_resource_handler_registry_1 = require("./mcp-diagram-resource-handler-registry");
|
|
33
|
+
const mcp_diagram_tool_handler_registry_1 = require("./mcp-diagram-tool-handler-registry");
|
|
34
|
+
const mcp_handler_shared_1 = require("./mcp-handler-shared");
|
|
35
|
+
const mcp_prompt_handler_1 = require("./mcp-prompt-handler");
|
|
36
|
+
const mcp_request_context_1 = require("./mcp-request-context");
|
|
37
|
+
const mcp_resource_handler_1 = require("./mcp-resource-handler");
|
|
38
|
+
const mcp_tool_handler_1 = require("./mcp-tool-handler");
|
|
39
|
+
exports.McpDiagramHandlerDispatcher = Symbol('McpDiagramHandlerDispatcher');
|
|
40
|
+
let DefaultMcpDiagramHandlerDispatcher = class DefaultMcpDiagramHandlerDispatcher {
|
|
41
|
+
constructor() {
|
|
42
|
+
this.diagramCatalogs = [];
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Build the per-diagram-type catalog by inspecting each diagram type's module set. We don't
|
|
46
|
+
* have a real GLSP session yet — and we don't want one, because we only need the bound
|
|
47
|
+
* constructor *lists*, not instances. So we spin up a throwaway child container per diagram
|
|
48
|
+
* type, load its modules plus a placeholder session module, and read out the multi-binding
|
|
49
|
+
* constants. No handler is instantiated; the temporary container is unbound immediately
|
|
50
|
+
* after.
|
|
51
|
+
*
|
|
52
|
+
* The placeholder session module is bound with the synthetic {@link TEMPORARY_CLIENT_ID} so
|
|
53
|
+
* any session-scoped `@inject(ClientId)` in module-load wiring resolves cleanly. Diagram
|
|
54
|
+
* modules must therefore treat `ClientId` as opaque at `configure()` time — the value they
|
|
55
|
+
* see at harvest is a placeholder, not the GLSP session that will later receive a call.
|
|
56
|
+
*
|
|
57
|
+
* Idempotent until {@link reset}.
|
|
58
|
+
*/
|
|
59
|
+
harvest() {
|
|
60
|
+
if (this.diagramCatalogs.length > 0) {
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
const catalogs = [];
|
|
64
|
+
const placeholderSessionModule = (0, server_1.createClientSessionModule)({
|
|
65
|
+
clientId: server_1.TEMPORARY_CLIENT_ID,
|
|
66
|
+
glspClient: { process: () => { } },
|
|
67
|
+
clientActionKinds: []
|
|
68
|
+
});
|
|
69
|
+
for (const [diagramType, modules] of this.diagramModules) {
|
|
70
|
+
const tempContainer = this.serverContainer.createChild();
|
|
71
|
+
tempContainer.load(...modules, placeholderSessionModule);
|
|
72
|
+
const tools = getConstructorList(tempContainer, mcp_tool_handler_1.McpDiagramToolHandlerConstructor);
|
|
73
|
+
const resources = getConstructorList(tempContainer, mcp_resource_handler_1.McpDiagramResourceHandlerConstructor);
|
|
74
|
+
const prompts = getConstructorList(tempContainer, mcp_prompt_handler_1.McpDiagramPromptHandlerConstructor);
|
|
75
|
+
tempContainer.unbindAll();
|
|
76
|
+
catalogs.push({ diagramType, toolConstructors: tools, resourceConstructors: resources, promptConstructors: prompts });
|
|
77
|
+
}
|
|
78
|
+
this.diagramCatalogs = catalogs;
|
|
79
|
+
}
|
|
80
|
+
/** True when at least one diagram type has at least one tool handler bound. */
|
|
81
|
+
hasDiagramTools() {
|
|
82
|
+
return this.diagramCatalogs.some(catalog => catalog.toolConstructors.length > 0);
|
|
83
|
+
}
|
|
84
|
+
/** True when at least one diagram type has at least one resource handler bound. */
|
|
85
|
+
hasDiagramResources() {
|
|
86
|
+
return this.diagramCatalogs.some(catalog => catalog.resourceConstructors.length > 0);
|
|
87
|
+
}
|
|
88
|
+
/** True when at least one diagram type has at least one prompt handler bound. */
|
|
89
|
+
hasDiagramPrompts() {
|
|
90
|
+
return this.diagramCatalogs.some(catalog => catalog.promptConstructors.length > 0);
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Registers all diagram-scope tools/resources/prompts on the supplied per-MCP-session
|
|
94
|
+
* {@link GLSPMcpServer}. Resource registration shape depends on `dataMode`: `resources`
|
|
95
|
+
* registers them as URI-addressable resources; `tools` (default) registers each
|
|
96
|
+
* `toolAlternativeInputSchema`-bearing resource as a tool.
|
|
97
|
+
*/
|
|
98
|
+
registerAll(glspMcpServer, resourcesAsResources) {
|
|
99
|
+
this.registerDiagramScopeTools(glspMcpServer);
|
|
100
|
+
this.registerDiagramScopeResources(glspMcpServer, resourcesAsResources);
|
|
101
|
+
this.registerDiagramScopePrompts(glspMcpServer);
|
|
102
|
+
}
|
|
103
|
+
registerDiagramScopeTools(glspMcpServer) {
|
|
104
|
+
var _a, _b;
|
|
105
|
+
const seen = new Map();
|
|
106
|
+
for (const catalog of this.diagramCatalogs) {
|
|
107
|
+
for (const Constructor of catalog.toolConstructors) {
|
|
108
|
+
const probe = new Constructor();
|
|
109
|
+
const fingerprint = {
|
|
110
|
+
description: probe.description,
|
|
111
|
+
inputKeys: Object.keys((_b = (_a = probe.inputSchema) === null || _a === void 0 ? void 0 : _a.shape) !== null && _b !== void 0 ? _b : {})
|
|
112
|
+
.sort()
|
|
113
|
+
.join(','),
|
|
114
|
+
diagramType: catalog.diagramType
|
|
115
|
+
};
|
|
116
|
+
const existing = seen.get(probe.name);
|
|
117
|
+
if (existing) {
|
|
118
|
+
if (existing.description !== fingerprint.description || existing.inputKeys !== fingerprint.inputKeys) {
|
|
119
|
+
this.logger.warn(`Diagram-scope tool '${probe.name}' is registered by multiple diagram types with diverging schemas: ` +
|
|
120
|
+
`first registered by '${existing.diagramType}', shadowed registration from '${catalog.diagramType}' ` +
|
|
121
|
+
'is silently dropped. Either align schemas (description + inputSchema.shape keys must match) or ' +
|
|
122
|
+
'pick distinct tool names.');
|
|
123
|
+
}
|
|
124
|
+
continue;
|
|
125
|
+
}
|
|
126
|
+
seen.set(probe.name, fingerprint);
|
|
127
|
+
glspMcpServer.registerTool(probe.name, probe.toRegistrationConfig(), (params, extra) => mcp_request_context_1.mcpRequestContext.run(extra, () => this.dispatchDiagramTool(probe.name, params)));
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
registerDiagramScopeResources(glspMcpServer, resourcesAsResources) {
|
|
132
|
+
const seenNames = new Set();
|
|
133
|
+
for (const catalog of this.diagramCatalogs) {
|
|
134
|
+
for (const Constructor of catalog.resourceConstructors) {
|
|
135
|
+
const probe = new Constructor();
|
|
136
|
+
if (seenNames.has(probe.name)) {
|
|
137
|
+
continue;
|
|
138
|
+
}
|
|
139
|
+
seenNames.add(probe.name);
|
|
140
|
+
if (resourcesAsResources) {
|
|
141
|
+
this.registerOneDiagramResource(glspMcpServer, probe);
|
|
142
|
+
}
|
|
143
|
+
else if (probe.toolAlternativeInputSchema) {
|
|
144
|
+
this.registerOneDiagramResourceAsTool(glspMcpServer, probe);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
registerOneDiagramResource(glspMcpServer, probe) {
|
|
150
|
+
const name = probe.name;
|
|
151
|
+
const annotations = probe.toAnnotations();
|
|
152
|
+
const config = {
|
|
153
|
+
title: probe.title,
|
|
154
|
+
description: probe.description,
|
|
155
|
+
mimeType: probe.mimeType,
|
|
156
|
+
...(annotations ? { annotations } : {})
|
|
157
|
+
};
|
|
158
|
+
if (typeof probe.uri === 'string') {
|
|
159
|
+
const uri = probe.uri;
|
|
160
|
+
glspMcpServer.registerResource(name, uri, config, (_uri, extra) => mcp_request_context_1.mcpRequestContext.run(extra, () => this.dispatchStaticDiagramRead(name, uri)));
|
|
161
|
+
}
|
|
162
|
+
else {
|
|
163
|
+
const template = this.buildAggregatingResourceTemplate(probe.uri.template, name);
|
|
164
|
+
glspMcpServer.registerResource(name, template, config, (uri, params, extra) => mcp_request_context_1.mcpRequestContext.run(extra, () => this.dispatchTemplatedDiagramRead(name, uri, params)));
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
registerOneDiagramResourceAsTool(glspMcpServer, probe) {
|
|
168
|
+
const name = probe.name;
|
|
169
|
+
const inputSchema = probe.toolAlternativeInputSchema;
|
|
170
|
+
// `.strict()` matches the tool-handler policy — see `BaseMcpToolHandler.toRegistrationConfig`
|
|
171
|
+
// for the full rationale (LLM-typoed fields surface as JSON-RPC validation errors instead
|
|
172
|
+
// of being silently stripped).
|
|
173
|
+
glspMcpServer.registerTool(name, {
|
|
174
|
+
title: probe.title,
|
|
175
|
+
description: probe.description,
|
|
176
|
+
inputSchema: inputSchema.strict(),
|
|
177
|
+
outputSchema: probe.toolAlternativeOutputSchema
|
|
178
|
+
}, (params, extra) => mcp_request_context_1.mcpRequestContext.run(extra, () => this.dispatchDiagramResourceAsTool(name, params)));
|
|
179
|
+
}
|
|
180
|
+
registerDiagramScopePrompts(glspMcpServer) {
|
|
181
|
+
const seenNames = new Set();
|
|
182
|
+
for (const catalog of this.diagramCatalogs) {
|
|
183
|
+
for (const Constructor of catalog.promptConstructors) {
|
|
184
|
+
const probe = new Constructor();
|
|
185
|
+
if (seenNames.has(probe.name)) {
|
|
186
|
+
continue;
|
|
187
|
+
}
|
|
188
|
+
seenNames.add(probe.name);
|
|
189
|
+
// Prompt errors propagate as JSON-RPC errors per spec — no `runWithToolErrorEnvelope` wrap.
|
|
190
|
+
glspMcpServer.registerPrompt(probe.name, probe.toRegistrationConfig(), (args, extra) => mcp_request_context_1.mcpRequestContext.run(extra, () => this.dispatchDiagramPrompt(probe.name, args)));
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Builds an SDK `ResourceTemplate` whose `list`/`complete` walk all open GLSP sessions and
|
|
196
|
+
* aggregate the per-session handler results. The cross-GLSP-session-pollution guard for
|
|
197
|
+
* `complete` (auto-empty for non-matching sessions) is applied at the handler base level
|
|
198
|
+
* via {@link AbstractMcpDiagramResourceHandler.glspSessionScopedComplete}.
|
|
199
|
+
*/
|
|
200
|
+
buildAggregatingResourceTemplate(uriTemplate, name) {
|
|
201
|
+
return new mcp_js_1.ResourceTemplate(uriTemplate, {
|
|
202
|
+
list: extra => mcp_request_context_1.mcpRequestContext.run(extra, () => this.aggregateList(name)),
|
|
203
|
+
complete: this.buildAggregatedCompleters(name)
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
async aggregateList(name) {
|
|
207
|
+
var _a;
|
|
208
|
+
const aggregated = [];
|
|
209
|
+
const seenUris = new Set();
|
|
210
|
+
for (const sessionId of this.clientSessionManager.getSessions().map(session => session.id)) {
|
|
211
|
+
const handler = this.findDiagramResourceHandler(name, sessionId);
|
|
212
|
+
const partial = await ((_a = handler === null || handler === void 0 ? void 0 : handler.list) === null || _a === void 0 ? void 0 : _a.call(handler));
|
|
213
|
+
if (!partial) {
|
|
214
|
+
continue;
|
|
215
|
+
}
|
|
216
|
+
for (const entry of partial.resources) {
|
|
217
|
+
if (!seenUris.has(entry.uri)) {
|
|
218
|
+
seenUris.add(entry.uri);
|
|
219
|
+
aggregated.push(entry);
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
return { resources: aggregated };
|
|
224
|
+
}
|
|
225
|
+
buildAggregatedCompleters(name) {
|
|
226
|
+
const variableNames = this.collectCompleterVariableNames(name);
|
|
227
|
+
const completers = {};
|
|
228
|
+
for (const variable of variableNames) {
|
|
229
|
+
completers[variable] = async (value, ctx) => {
|
|
230
|
+
const aggregated = new Set();
|
|
231
|
+
for (const sessionId of this.clientSessionManager.getSessions().map(session => session.id)) {
|
|
232
|
+
const handler = this.findDiagramResourceHandler(name, sessionId);
|
|
233
|
+
if (!handler) {
|
|
234
|
+
continue;
|
|
235
|
+
}
|
|
236
|
+
const sessionScoped = handler.glspSessionScopedComplete();
|
|
237
|
+
const completer = sessionScoped[variable];
|
|
238
|
+
if (!completer) {
|
|
239
|
+
continue;
|
|
240
|
+
}
|
|
241
|
+
const partial = await completer(value, ctx);
|
|
242
|
+
partial.forEach(item => aggregated.add(item));
|
|
243
|
+
}
|
|
244
|
+
return [...aggregated];
|
|
245
|
+
};
|
|
246
|
+
}
|
|
247
|
+
return completers;
|
|
248
|
+
}
|
|
249
|
+
/** Probe each diagram type's resource constructor for `complete()` keys to wire SDK-side. */
|
|
250
|
+
collectCompleterVariableNames(name) {
|
|
251
|
+
var _a, _b;
|
|
252
|
+
const variables = new Set();
|
|
253
|
+
for (const catalog of this.diagramCatalogs) {
|
|
254
|
+
for (const Constructor of catalog.resourceConstructors) {
|
|
255
|
+
const probe = new Constructor();
|
|
256
|
+
if (probe.name !== name) {
|
|
257
|
+
continue;
|
|
258
|
+
}
|
|
259
|
+
Object.keys((_b = (_a = probe.complete) === null || _a === void 0 ? void 0 : _a.call(probe)) !== null && _b !== void 0 ? _b : {}).forEach(key => variables.add(key));
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
return variables;
|
|
263
|
+
}
|
|
264
|
+
// ── Dispatch entry points ──────────────────────────────────────────────────
|
|
265
|
+
/** SDK-validated `params` against the registered Zod schema before this callback fires. */
|
|
266
|
+
dispatchDiagramTool(name, params) {
|
|
267
|
+
return (0, mcp_handler_shared_1.runWithToolErrorEnvelope)(async () => {
|
|
268
|
+
const handler = this.requireDiagramToolHandler(name, params);
|
|
269
|
+
return handler.handle(params);
|
|
270
|
+
});
|
|
271
|
+
}
|
|
272
|
+
/**
|
|
273
|
+
* Dispatch a read against a diagram-scope resource registered with a *static* (non-templated)
|
|
274
|
+
* URI. The URI carries no session id, so we pick the first open GLSP session as the source —
|
|
275
|
+
* adopters that need session-aware routing should register a templated URI instead.
|
|
276
|
+
*/
|
|
277
|
+
dispatchStaticDiagramRead(name, uri) {
|
|
278
|
+
var _a;
|
|
279
|
+
const sessionId = (_a = this.clientSessionManager.getSessions()[0]) === null || _a === void 0 ? void 0 : _a.id;
|
|
280
|
+
if (!sessionId) {
|
|
281
|
+
throw new mcp_handler_shared_1.McpToolError(`No open GLSP session can serve resource '${name}'.`);
|
|
282
|
+
}
|
|
283
|
+
const handler = this.requireDiagramResourceHandler(name, sessionId);
|
|
284
|
+
return handler.handleRead(uri, { sessionId });
|
|
285
|
+
}
|
|
286
|
+
dispatchTemplatedDiagramRead(name, uri, params) {
|
|
287
|
+
const flat = (0, mcp_resource_handler_1.toParams)(params);
|
|
288
|
+
const handler = this.requireDiagramResourceHandler(name, flat.sessionId);
|
|
289
|
+
return handler.handleRead(uri.toString(), flat);
|
|
290
|
+
}
|
|
291
|
+
dispatchDiagramResourceAsTool(name, params) {
|
|
292
|
+
return (0, mcp_handler_shared_1.runWithToolErrorEnvelope)(async () => {
|
|
293
|
+
const handler = this.requireDiagramResourceHandler(name, this.extractSessionId(params));
|
|
294
|
+
return handler.handleAsTool(params);
|
|
295
|
+
});
|
|
296
|
+
}
|
|
297
|
+
dispatchDiagramPrompt(name, args) {
|
|
298
|
+
const handler = this.requireDiagramPromptHandler(name, args);
|
|
299
|
+
return handler.handle(args);
|
|
300
|
+
}
|
|
301
|
+
// ── Handler resolution ─────────────────────────────────────────────────────
|
|
302
|
+
/** Reads `sessionId` from a JSON-shaped tool/resource/prompt input without committing to the full schema. */
|
|
303
|
+
extractSessionId(params) {
|
|
304
|
+
return params.sessionId;
|
|
305
|
+
}
|
|
306
|
+
/** Resolves the per-GLSP-session tool handler for `params.sessionId`, throwing on miss. */
|
|
307
|
+
requireDiagramToolHandler(name, params) {
|
|
308
|
+
const session = this.requireGlspSession(this.extractSessionId(params));
|
|
309
|
+
const registry = session.container.get(mcp_diagram_tool_handler_registry_1.McpDiagramToolHandlerRegistry);
|
|
310
|
+
const handler = registry.get(name);
|
|
311
|
+
if (!handler) {
|
|
312
|
+
throw new mcp_handler_shared_1.McpToolError(`No tool handler '${name}' registered for diagram type '${session.diagramType}'.`);
|
|
313
|
+
}
|
|
314
|
+
return handler;
|
|
315
|
+
}
|
|
316
|
+
/** Resolves the per-GLSP-session resource handler for `sessionId`, throwing on miss. */
|
|
317
|
+
requireDiagramResourceHandler(name, sessionId) {
|
|
318
|
+
const session = this.requireGlspSession(sessionId);
|
|
319
|
+
const registry = session.container.get(mcp_diagram_resource_handler_registry_1.McpDiagramResourceHandlerRegistry);
|
|
320
|
+
const handler = registry.get(name);
|
|
321
|
+
if (!handler) {
|
|
322
|
+
throw new mcp_handler_shared_1.McpToolError(`No resource handler '${name}' registered for diagram type '${session.diagramType}'.`);
|
|
323
|
+
}
|
|
324
|
+
return handler;
|
|
325
|
+
}
|
|
326
|
+
/** Looks up the per-GLSP-session resource handler — returns `undefined` for an unknown id. */
|
|
327
|
+
findDiagramResourceHandler(name, sessionId) {
|
|
328
|
+
const session = this.clientSessionManager.getSession(sessionId);
|
|
329
|
+
if (!session) {
|
|
330
|
+
return undefined;
|
|
331
|
+
}
|
|
332
|
+
return session.container.get(mcp_diagram_resource_handler_registry_1.McpDiagramResourceHandlerRegistry).get(name);
|
|
333
|
+
}
|
|
334
|
+
requireDiagramPromptHandler(name, args) {
|
|
335
|
+
const session = this.requireGlspSession(this.extractSessionId(args));
|
|
336
|
+
const registry = session.container.get(mcp_diagram_prompt_handler_registry_1.McpDiagramPromptHandlerRegistry);
|
|
337
|
+
const handler = registry.get(name);
|
|
338
|
+
if (!handler) {
|
|
339
|
+
throw new mcp_handler_shared_1.McpToolError(`No prompt handler '${name}' registered for diagram type '${session.diagramType}'.`);
|
|
340
|
+
}
|
|
341
|
+
return handler;
|
|
342
|
+
}
|
|
343
|
+
requireGlspSession(sessionId) {
|
|
344
|
+
if (!sessionId) {
|
|
345
|
+
throw new mcp_handler_shared_1.McpMissingParamError('sessionId');
|
|
346
|
+
}
|
|
347
|
+
const session = this.clientSessionManager.getSession(sessionId);
|
|
348
|
+
if (!session) {
|
|
349
|
+
throw new mcp_handler_shared_1.McpSessionNotFoundError(sessionId);
|
|
350
|
+
}
|
|
351
|
+
return session;
|
|
352
|
+
}
|
|
353
|
+
/** Disposes the catalog so a subsequent {@link harvest} call re-reads the diagram modules. */
|
|
354
|
+
reset() {
|
|
355
|
+
this.diagramCatalogs = [];
|
|
356
|
+
}
|
|
357
|
+
};
|
|
358
|
+
exports.DefaultMcpDiagramHandlerDispatcher = DefaultMcpDiagramHandlerDispatcher;
|
|
359
|
+
__decorate([
|
|
360
|
+
(0, inversify_1.inject)(server_1.InjectionContainer),
|
|
361
|
+
__metadata("design:type", inversify_1.Container)
|
|
362
|
+
], DefaultMcpDiagramHandlerDispatcher.prototype, "serverContainer", void 0);
|
|
363
|
+
__decorate([
|
|
364
|
+
(0, inversify_1.inject)(server_1.DiagramModules),
|
|
365
|
+
__metadata("design:type", Map)
|
|
366
|
+
], DefaultMcpDiagramHandlerDispatcher.prototype, "diagramModules", void 0);
|
|
367
|
+
__decorate([
|
|
368
|
+
(0, inversify_1.inject)(server_1.ClientSessionManager),
|
|
369
|
+
__metadata("design:type", Object)
|
|
370
|
+
], DefaultMcpDiagramHandlerDispatcher.prototype, "clientSessionManager", void 0);
|
|
371
|
+
__decorate([
|
|
372
|
+
(0, inversify_1.inject)(server_1.Logger),
|
|
373
|
+
__metadata("design:type", server_1.Logger)
|
|
374
|
+
], DefaultMcpDiagramHandlerDispatcher.prototype, "logger", void 0);
|
|
375
|
+
exports.DefaultMcpDiagramHandlerDispatcher = DefaultMcpDiagramHandlerDispatcher = __decorate([
|
|
376
|
+
(0, inversify_1.injectable)()
|
|
377
|
+
], DefaultMcpDiagramHandlerDispatcher);
|
|
378
|
+
/** Read an optional constructor-list multi-binding. Returns `[]` when no module bound the symbol. */
|
|
379
|
+
function getConstructorList(container, identifier) {
|
|
380
|
+
return container.isBound(identifier) ? container.get(identifier) : [];
|
|
381
|
+
}
|
|
382
|
+
//# sourceMappingURL=mcp-diagram-handler-dispatcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-diagram-handler-dispatcher.js","sourceRoot":"","sources":["../../src/server/mcp-diagram-handler-dispatcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* Copyright (c) 2026 EclipseSource and others.
|
|
3
|
+
*
|
|
4
|
+
* This program and the accompanying materials are made available under the
|
|
5
|
+
* terms of the Eclipse Public License v. 2.0 which is available at
|
|
6
|
+
* http://www.eclipse.org/legal/epl-2.0.
|
|
7
|
+
*
|
|
8
|
+
* This Source Code may also be made available under the following Secondary
|
|
9
|
+
* Licenses when the conditions for such availability set forth in the Eclipse
|
|
10
|
+
* Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
11
|
+
* with the GNU Classpath Exception which is available at
|
|
12
|
+
* https://www.gnu.org/software/classpath/license.html.
|
|
13
|
+
*
|
|
14
|
+
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
15
|
+
********************************************************************************/
|
|
16
|
+
import { BindingTarget, GLSPModule, InstanceMultiBinding } from '@eclipse-glsp/server';
|
|
17
|
+
import { interfaces } from 'inversify';
|
|
18
|
+
import { ElementTypesProvider } from '../resources/services/element-types-provider';
|
|
19
|
+
import { McpModelSerializer } from '../resources/services/mcp-model-serializer';
|
|
20
|
+
import { McpIdAliasService } from './mcp-id-alias-service';
|
|
21
|
+
import { McpLabelProvider } from './mcp-label-provider';
|
|
22
|
+
import { McpDiagramPromptHandlerConstructor } from './mcp-prompt-handler';
|
|
23
|
+
import { McpDiagramResourceHandlerConstructor } from './mcp-resource-handler';
|
|
24
|
+
import { McpDiagramToolHandlerConstructor } from './mcp-tool-handler';
|
|
25
|
+
/**
|
|
26
|
+
* Per-GLSP-client-session DI module for the MCP server. Loaded inside `configureDiagramModule`
|
|
27
|
+
* so each `ClientSession.container` gets its own instance of session-scoped services.
|
|
28
|
+
*
|
|
29
|
+
* Binds the {@link McpIdAliasService}, the {@link McpModelSerializer}, the
|
|
30
|
+
* {@link ElementTypesProvider}, and the diagram-scope handler-constructor multi-bindings
|
|
31
|
+
* (`McpDiagram*HandlerConstructor`). Adopters subclass and override the `bind*` hooks to swap
|
|
32
|
+
* single-instance services and the `configure*` hooks to extend the multi-binding handler sets.
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* ```ts
|
|
36
|
+
* class WorkflowMcpDiagramModule extends DefaultMcpDiagramModule {
|
|
37
|
+
* // Single-instance binding: return the class.
|
|
38
|
+
* protected override bindModelSerializer(): BindingTarget<McpModelSerializer> {
|
|
39
|
+
* return WorkflowMcpModelSerializer;
|
|
40
|
+
* }
|
|
41
|
+
* // Multi-binding: extend or rebind the default set.
|
|
42
|
+
* protected override configureToolHandlers(binding) {
|
|
43
|
+
* super.configureToolHandlers(binding);
|
|
44
|
+
* binding.add(WorkflowExtraTool);
|
|
45
|
+
* binding.rebind(CreateNodesMcpToolHandler, WorkflowCreateNodesMcpToolHandler);
|
|
46
|
+
* }
|
|
47
|
+
* }
|
|
48
|
+
* new WorkflowServerModule().configureDiagramModule(
|
|
49
|
+
* new WorkflowDiagramModule(...),
|
|
50
|
+
* elkLayoutModule,
|
|
51
|
+
* new WorkflowMcpDiagramModule()
|
|
52
|
+
* );
|
|
53
|
+
* ```
|
|
54
|
+
*/
|
|
55
|
+
export declare abstract class AbstractMcpDiagramModule extends GLSPModule {
|
|
56
|
+
protected bind: interfaces.Bind;
|
|
57
|
+
protected rebind: interfaces.Rebind;
|
|
58
|
+
protected configure(bind: interfaces.Bind, _unbind: interfaces.Unbind, isBound: interfaces.IsBound, rebind: interfaces.Rebind): void;
|
|
59
|
+
/**
|
|
60
|
+
* Bind the per-GLSP-session handler registries, factories, and {@link ClientSessionInitializer}s
|
|
61
|
+
* that populate the registries at session-open. Adopters typically don't override.
|
|
62
|
+
*
|
|
63
|
+
* Each kind (tool / resource / prompt) follows the same shape:
|
|
64
|
+
* - `Registry` — singleton-per-session, holds instantiated handlers keyed by `name`.
|
|
65
|
+
* - `Factory` — `dynamicValue` that calls `ctx.container.resolve(constructor)`, so the
|
|
66
|
+
* handler's `@inject(...)` fields resolve against the live `ClientSession.container`.
|
|
67
|
+
* - `RegistryInitializer` — at session-open, reads the constructor multi-binding (added by
|
|
68
|
+
* adopter `configure*Handlers` overrides) and instantiates each via the factory.
|
|
69
|
+
* Picked up by Inversify alongside core's own `ClientSessionInitializer`s
|
|
70
|
+
* (`OperationHandlerRegistryInitializer` etc.).
|
|
71
|
+
*/
|
|
72
|
+
protected configureHandlerRegistries(): void;
|
|
73
|
+
/**
|
|
74
|
+
* {@link McpIdAliasService} binding. Override to swap in a custom alias strategy. Bind the
|
|
75
|
+
* shipped `NullMcpIdAliasService` (passthrough) to expose raw GLSP ids on the wire — useful
|
|
76
|
+
* for diagnostic readability or when token cost isn't a concern.
|
|
77
|
+
*/
|
|
78
|
+
protected bindIdAliasService(): BindingTarget<McpIdAliasService>;
|
|
79
|
+
/**
|
|
80
|
+
* {@link McpLabelProvider} binding. Override to teach MCP about adopter-specific label
|
|
81
|
+
* locations (e.g., labels nested in header components or compartments). One override here
|
|
82
|
+
* covers every read-side echo and every write-side label-edit operation.
|
|
83
|
+
*/
|
|
84
|
+
protected bindLabelProvider(): BindingTarget<McpLabelProvider>;
|
|
85
|
+
/**
|
|
86
|
+
* {@link McpModelSerializer} binding. Override to swap in a diagram-type-specific serializer
|
|
87
|
+
* (e.g. one that emits JSON, or knows the adopter's element schema). Per-session scope means
|
|
88
|
+
* each diagram type provides its own serializer without a server-level rebind.
|
|
89
|
+
*/
|
|
90
|
+
protected bindModelSerializer(): BindingTarget<McpModelSerializer>;
|
|
91
|
+
/**
|
|
92
|
+
* {@link ElementTypesProvider} binding. Override to ship a constant-value list of creatable
|
|
93
|
+
* element types for the adopter's diagram type instead of the default impl that scrapes
|
|
94
|
+
* {@link OperationHandlerRegistry} (noisy for non-trivial diagrams).
|
|
95
|
+
*/
|
|
96
|
+
protected bindElementTypesProvider(): BindingTarget<ElementTypesProvider>;
|
|
97
|
+
/**
|
|
98
|
+
* Override to add or replace diagram-scope tool handlers. Adopters typically
|
|
99
|
+
* `super.configureToolHandlers(binding)` to keep the defaults, then `binding.add(MyTool)`
|
|
100
|
+
* for additions or `binding.rebind(StandardTool, MyTool)` for overrides.
|
|
101
|
+
*/
|
|
102
|
+
protected configureToolHandlers(binding: InstanceMultiBinding<McpDiagramToolHandlerConstructor>): void;
|
|
103
|
+
/** See {@link configureToolHandlers}. */
|
|
104
|
+
protected configureResourceHandlers(binding: InstanceMultiBinding<McpDiagramResourceHandlerConstructor>): void;
|
|
105
|
+
/**
|
|
106
|
+
* See {@link configureToolHandlers}. No diagram-scope prompts ship by default — the shipped
|
|
107
|
+
* `describe-diagram` and `suggest-improvements` prompts are diagram-type-agnostic and bound
|
|
108
|
+
* server-scope. Adopters add their own diagram-type-specific prompts here.
|
|
109
|
+
*/
|
|
110
|
+
protected configurePromptHandlers(_binding: InstanceMultiBinding<McpDiagramPromptHandlerConstructor>): void;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Default {@link AbstractMcpDiagramModule} entry point. Adopters who don't need overrides
|
|
114
|
+
* use it directly: `new DefaultMcpDiagramModule()`. Adopters with customizations subclass
|
|
115
|
+
* `AbstractMcpDiagramModule` (or this class) and override the `bind*` / `configure*` hooks.
|
|
116
|
+
*
|
|
117
|
+
* @experimental The MCP integration is under active development. Option names, schema shapes,
|
|
118
|
+
* and handler contracts MAY change in minor releases until the feature graduates from
|
|
119
|
+
* experimental status.
|
|
120
|
+
*/
|
|
121
|
+
export declare class DefaultMcpDiagramModule extends AbstractMcpDiagramModule {
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=mcp-diagram-module.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-diagram-module.d.ts","sourceRoot":"","sources":["../../src/server/mcp-diagram-module.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAElF,OAAO,EAAsB,aAAa,EAA4B,UAAU,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACrI,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC,OAAO,EAA+B,oBAAoB,EAAE,MAAM,8CAA8C,CAAC;AACjH,OAAO,EAA8B,kBAAkB,EAAE,MAAM,4CAA4C,CAAC;AAkC5G,OAAO,EAA4B,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAErF,OAAO,EAA2B,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACjF,OAAO,EAAmC,kCAAkC,EAAE,MAAM,sBAAsB,CAAC;AAC3G,OAAO,EAAqC,oCAAoC,EAAE,MAAM,wBAAwB,CAAC;AACjH,OAAO,EAA6B,gCAAgC,EAAE,MAAM,oBAAoB,CAAC;AAEjG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,8BAAsB,wBAAyB,SAAQ,UAAU;IAC7D,SAAS,CAAC,IAAI,EAAG,UAAU,CAAC,IAAI,CAAC;IACjC,SAAS,CAAC,MAAM,EAAG,UAAU,CAAC,MAAM,CAAC;cAElB,SAAS,CACxB,IAAI,EAAE,UAAU,CAAC,IAAI,EACrB,OAAO,EAAE,UAAU,CAAC,MAAM,EAC1B,OAAO,EAAE,UAAU,CAAC,OAAO,EAC3B,MAAM,EAAE,UAAU,CAAC,MAAM,GAC1B,IAAI;IAsBP;;;;;;;;;;;;OAYG;IACH,SAAS,CAAC,0BAA0B,IAAI,IAAI;IA0B5C;;;;OAIG;IACH,SAAS,CAAC,kBAAkB,IAAI,aAAa,CAAC,iBAAiB,CAAC;IAIhE;;;;OAIG;IACH,SAAS,CAAC,iBAAiB,IAAI,aAAa,CAAC,gBAAgB,CAAC;IAI9D;;;;OAIG;IACH,SAAS,CAAC,mBAAmB,IAAI,aAAa,CAAC,kBAAkB,CAAC;IAIlE;;;;OAIG;IACH,SAAS,CAAC,wBAAwB,IAAI,aAAa,CAAC,oBAAoB,CAAC;IAIzE;;;;OAIG;IACH,SAAS,CAAC,qBAAqB,CAAC,OAAO,EAAE,oBAAoB,CAAC,gCAAgC,CAAC,GAAG,IAAI;IAoBtG,yCAAyC;IACzC,SAAS,CAAC,yBAAyB,CAAC,OAAO,EAAE,oBAAoB,CAAC,oCAAoC,CAAC,GAAG,IAAI;IAK9G;;;;OAIG;IACH,SAAS,CAAC,uBAAuB,CAAC,QAAQ,EAAE,oBAAoB,CAAC,kCAAkC,CAAC,GAAG,IAAI;CAG9G;AAED;;;;;;;;GAQG;AACH,qBAAa,uBAAwB,SAAQ,wBAAwB;CAAG"}
|