@eclipse-glsp/protocol 2.7.0-next.24 → 2.7.0-next.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/lib/action-protocol/model-saving.d.ts +140 -5
  2. package/lib/action-protocol/model-saving.d.ts.map +1 -1
  3. package/lib/action-protocol/model-saving.js +40 -1
  4. package/lib/action-protocol/model-saving.js.map +1 -1
  5. package/lib/action-protocol/viewport.d.ts +22 -1
  6. package/lib/action-protocol/viewport.d.ts.map +1 -1
  7. package/lib/action-protocol/viewport.js +17 -1
  8. package/lib/action-protocol/viewport.js.map +1 -1
  9. package/lib/client-server-protocol/base-glsp-client.d.ts +2 -2
  10. package/lib/client-server-protocol/base-glsp-client.d.ts.map +1 -1
  11. package/lib/client-server-protocol/base-glsp-client.js +3 -2
  12. package/lib/client-server-protocol/base-glsp-client.js.map +1 -1
  13. package/lib/client-server-protocol/glsp-client.d.ts +7 -2
  14. package/lib/client-server-protocol/glsp-client.d.ts.map +1 -1
  15. package/lib/client-server-protocol/glsp-client.js.map +1 -1
  16. package/lib/client-server-protocol/glsp-server.d.ts +18 -1
  17. package/lib/client-server-protocol/glsp-server.d.ts.map +1 -1
  18. package/lib/client-server-protocol/glsp-server.js +3 -2
  19. package/lib/client-server-protocol/glsp-server.js.map +1 -1
  20. package/lib/client-server-protocol/jsonrpc/base-jsonrpc-glsp-client.d.ts +1 -1
  21. package/lib/client-server-protocol/jsonrpc/base-jsonrpc-glsp-client.d.ts.map +1 -1
  22. package/lib/client-server-protocol/jsonrpc/base-jsonrpc-glsp-client.js +4 -3
  23. package/lib/client-server-protocol/jsonrpc/base-jsonrpc-glsp-client.js.map +1 -1
  24. package/lib/client-server-protocol/mcp.d.ts +225 -0
  25. package/lib/client-server-protocol/mcp.d.ts.map +1 -0
  26. package/lib/client-server-protocol/mcp.js +75 -0
  27. package/lib/client-server-protocol/mcp.js.map +1 -0
  28. package/lib/index.d.ts +1 -0
  29. package/lib/index.d.ts.map +1 -1
  30. package/lib/index.js +1 -0
  31. package/lib/index.js.map +1 -1
  32. package/lib/utils/type-util.d.ts +8 -0
  33. package/lib/utils/type-util.d.ts.map +1 -1
  34. package/lib/utils/type-util.js +13 -1
  35. package/lib/utils/type-util.js.map +1 -1
  36. package/package.json +2 -2
  37. package/src/action-protocol/model-saving.spec.ts +127 -1
  38. package/src/action-protocol/model-saving.ts +171 -6
  39. package/src/action-protocol/viewport.spec.ts +37 -1
  40. package/src/action-protocol/viewport.ts +33 -1
  41. package/src/client-server-protocol/base-glsp-client.spec.ts +21 -6
  42. package/src/client-server-protocol/base-glsp-client.ts +3 -2
  43. package/src/client-server-protocol/glsp-client.ts +7 -3
  44. package/src/client-server-protocol/glsp-server.ts +19 -1
  45. package/src/client-server-protocol/jsonrpc/base-jsonrpc-glsp-client.spec.ts +10 -1
  46. package/src/client-server-protocol/jsonrpc/base-jsonrpc-glsp-client.ts +4 -3
  47. package/src/client-server-protocol/mcp.ts +256 -0
  48. package/src/index.ts +1 -0
  49. package/src/utils/type-util.ts +11 -0
@@ -1 +1 @@
1
- {"version":3,"file":"base-jsonrpc-glsp-client.js","sourceRoot":"","sources":["../../../src/client-server-protocol/jsonrpc/base-jsonrpc-glsp-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"base-jsonrpc-glsp-client.js","sourceRoot":"","sources":["../../../src/client-server-protocol/jsonrpc/base-jsonrpc-glsp-client.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;;;kFAckF;AAClF,uDAA4C;AAG5C,6CAAmD;AACnD,gDAA+E;AAG/E,+DAA8E;AAE9E,MAAa,qBAAqB;IAS9B,IAAI,mBAAmB;QACnB,OAAO,IAAI,CAAC,0BAA0B,CAAC,KAAK,CAAC;IACjD,CAAC;IAGD,IAAc,2BAA2B;QACrC,OAAO,IAAI,CAAC,kCAAkC,CAAC,KAAK,CAAC;IACzD,CAAC;IAGD,IAAI,qBAAqB;QACrB,OAAO,IAAI,CAAC,4BAA4B,CAAC,KAAK,CAAC;IACnD,CAAC;IAGD,IAAc,KAAK,CAAC,KAAkB;QAClC,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;YACxB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;YACpB,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClD,CAAC;IACL,CAAC;IACD,IAAc,KAAK;QACf,OAAO,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;IAGD,IAAI,gBAAgB;QAChB,OAAO,IAAI,CAAC,iBAAiB,CAAC;IAClC,CAAC;IACD,YAAY,OAAkC;QA9BpC,+BAA0B,GAAG,IAAI,eAAO,EAAoB,CAAC;QAK7D,uCAAkC,GAAG,IAAI,eAAO,EAAiB,CAAC;QAKlE,iCAA4B,GAAG,IAAI,eAAO,EAAe,CAAC;QAqBhE,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC;QACrD,IAAI,CAAC,KAAK,GAAG,yBAAW,CAAC,OAAO,CAAC;IACrC,CAAC;IACD,KAAK,CAAC,KAAK;QACP,IAAI,IAAI,CAAC,KAAK,KAAK,yBAAW,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,KAAK,yBAAW,CAAC,WAAW,EAAE,CAAC;YAC/E,OAAO;QACX,CAAC;aAAM,IAAI,IAAI,CAAC,KAAK,KAAK,yBAAW,CAAC,QAAQ,EAAE,CAAC;YAC7C,MAAM,aAAK,CAAC,SAAS,CAAC,IAAI,CAAC,qBAAqB,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,KAAK,yBAAW,CAAC,OAAO,IAAI,KAAK,KAAK,yBAAW,CAAC,WAAW,CAAC,CAAC;YAC/H,OAAO;QACX,CAAC;QACD,IAAI,CAAC;YACD,IAAI,CAAC,KAAK,GAAG,yBAAW,CAAC,QAAQ,CAAC;YAClC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAClD,UAAU,CAAC,MAAM,EAAE,CAAC;YACpB,IAAI,CAAC,kBAAkB,GAAG,UAAU,CAAC;YACrC,IAAI,CAAC,KAAK,GAAG,yBAAW,CAAC,OAAO,CAAC;QACrC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,uCAAiB,CAAC,KAAK,CAAC,sCAAsC,EAAE,KAAK,CAAC,CAAC;YACvE,IAAI,CAAC,KAAK,GAAG,yBAAW,CAAC,WAAW,CAAC;QACzC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,MAA4B;QAC/C,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC,gBAAgB,CAAC;QACjC,CAAC;aAAM,IAAI,IAAI,CAAC,uBAAuB,EAAE,CAAC;YACtC,OAAO,IAAI,CAAC,uBAAuB,CAAC;QACxC,CAAC;QAED,MAAM,kBAAkB,GAAG,IAAI,2BAAQ,EAAoB,CAAC;QAC5D,IAAI,CAAC;YACD,IAAI,CAAC,uBAAuB,GAAG,kBAAkB,CAAC,OAAO,CAAC;YAC1D,IAAI,CAAC,iBAAiB,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,uCAAiB,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;YAC/G,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAC7D,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YACnD,IAAI,CAAC,uBAAuB,GAAG,SAAS,CAAC;QAC7C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACjC,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;YACnC,IAAI,CAAC,uBAAuB,GAAG,SAAS,CAAC;QAC7C,CAAC;QACD,OAAO,kBAAkB,CAAC,OAAO,CAAC;IACtC,CAAC;IAED,uBAAuB,CAAC,MAAyC;QAC7D,OAAO,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,uCAAiB,CAAC,8BAA8B,EAAE,MAAM,CAAC,CAAC;IACxG,CAAC;IAED,oBAAoB,CAAC,MAAsC;QACvD,OAAO,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,uCAAiB,CAAC,2BAA2B,EAAE,MAAM,CAAC,CAAC;IACrG,CAAC;IAED,eAAe,CAAC,OAA6B,EAAE,QAAiB;QAC5D,OAAO,IAAI,CAAC,2BAA2B,CAAC,GAAG,CAAC,EAAE;YAC1C,IAAI,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;gBACzC,OAAO,CAAC,GAAG,CAAC,CAAC;YACjB,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAED,iBAAiB,CAAC,OAAsB;QACpC,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,uCAAiB,CAAC,yBAAyB,EAAE,OAAO,CAAC,CAAC;IAClG,CAAC;IAED,KAAK,CAAC,cAAc;QAChB,sFAAsF;QACtF,MAAM,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,uCAAiB,CAAC,oBAAoB,CAAC,CAAC;IAC1F,CAAC;IAED,IAAI;QACA,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC1B,IAAI,CAAC,KAAK,GAAG,yBAAW,CAAC,OAAO,CAAC;YACjC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;QAC7B,CAAC;QACD,IAAI,IAAI,CAAC,KAAK,KAAK,yBAAW,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACrD,OAAO,IAAI,CAAC,MAAM,CAAC;QACvB,CAAC;QACD,IAAI,CAAC,KAAK,GAAG,yBAAW,CAAC,QAAQ,CAAC;QAClC,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YAC7D,UAAU,CAAC,OAAO,EAAE,CAAC;YACrB,IAAI,CAAC,KAAK,GAAG,yBAAW,CAAC,OAAO,CAAC;YACjC,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;YACxB,IAAI,CAAC,kCAAkC,CAAC,OAAO,EAAE,CAAC;YAClD,IAAI,CAAC,4BAA4B,CAAC,OAAO,EAAE,CAAC;YAC5C,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;YACnC,IAAI,CAAC,kBAAkB,GAAG,SAAS,CAAC;QACxC,CAAC,CAAC,CAAC,CAAC;IACR,CAAC;IAED,IAAc,iBAAiB;QAC3B,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,uCAAiB,CAAC,iBAAiB,CAAC,CAAC;QACzD,CAAC;QACD,OAAO,IAAI,CAAC,kBAAmB,CAAC;IACpC,CAAC;IAES,iBAAiB;QACvB,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC1B,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACvD,CAAC;QACD,OAAO,IAAI,CAAC,iBAAiB,CAAC;IAClC,CAAC;IAES,KAAK,CAAC,kBAAkB;QAC9B,MAAM,UAAU,GAAG,OAAO,IAAI,CAAC,kBAAkB,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC;QAC7H,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClF,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC,CAAC;QACxD,UAAU,CAAC,cAAc,CAAC,uCAAiB,CAAC,yBAAyB,EAAE,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,kCAAkC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACjI,OAAO,UAAU,CAAC;IACtB,CAAC;IAES,qBAAqB,CAAC,KAAY,EAAE,OAA4B,EAAE,KAAyB;QACjG,uCAAiB,CAAC,KAAK,CAAC,yDAAyD,EAAE,KAAK,CAAC,CAAC;QAC1F,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,IAAI,CAAC,KAAK,GAAG,yBAAW,CAAC,WAAW,CAAC;IACzC,CAAC;IAES,sBAAsB;QAC5B,IAAI,IAAI,CAAC,KAAK,KAAK,yBAAW,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,KAAK,yBAAW,CAAC,OAAO,EAAE,CAAC;YAC5E,OAAO;QACX,CAAC;QACD,IAAI,CAAC;YACD,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBAC1B,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,CAAC;gBAClC,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;gBACnC,IAAI,CAAC,kBAAkB,GAAG,SAAS,CAAC;YACxC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,oDAAoD;QACxD,CAAC;QAED,uCAAiB,CAAC,KAAK,CAAC,gEAAgE,CAAC,CAAC;QAC1F,IAAI,CAAC,KAAK,GAAG,yBAAW,CAAC,WAAW,CAAC;IACzC,CAAC;IAED,kBAAkB;QACd,OAAO,IAAI,CAAC,KAAK,KAAK,yBAAW,CAAC,OAAO,IAAI,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC;IAC3E,CAAC;IAED,IAAI,YAAY;QACZ,OAAO,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;CACJ;AArLD,sDAqLC;AAED;;GAEG;AACH,MAAa,kBAAkB;IAI3B,UAAU,CAAC,gBAAmC,EAAE,aAAa,GAAG,KAAK;QACjE,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;QACzC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACvC,CAAC;IAED,OAAO,CAAC,OAAsB;;QAC1B,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,OAAO,CAAC,GAAG,CAAC,gBAAgB,OAAO,CAAC,MAAM,CAAC,IAAI,gBAAgB,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACxF,CAAC;QACD,MAAA,IAAI,CAAC,gBAAgB,0CAAE,gBAAgB,CAAC,uCAAiB,CAAC,yBAAyB,EAAE,OAAO,CAAC,CAAC;IAClG,CAAC;CACJ;AAfD,gDAeC"}
@@ -0,0 +1,225 @@
1
+ /********************************************************************************
2
+ * Copyright (c) 2025-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 { InitializeParameters, InitializeResult } from './types';
17
+ /** Wire-protocol naming for the data-handler exposure mode (see {@link McpServerInitOptions.dataMode}). */
18
+ export type McpDataMode = 'resources' | 'tools';
19
+ /**
20
+ * Behavioral and tuning options that an MCP-aware GLSP client may pass through the
21
+ * `initialize` request. Every field here is safe for the IDE to control per-init: changing
22
+ * any of them cannot widen the network attack surface or relax the DNS-rebinding mitigation.
23
+ *
24
+ * Contrast with {@link McpServerDeployOptions}, which lists fields the adopter sets at
25
+ * deploy time and that are intentionally *not* exposed to init for security reasons. The
26
+ * split limits blast radius: behavioural fields like `port` may be negotiated by the IDE
27
+ * over the wire, while security-sensitive bind/policy fields stay adopter-controlled and
28
+ * cannot be widened by an MCP `initialize` payload.
29
+ *
30
+ * @experimental
31
+ */
32
+ export interface McpServerInitOptions {
33
+ /**
34
+ * How the data handlers are exposed to the MCP client. `'tools'` registers them as tools
35
+ * (default — most MCP clients support tools more reliably). `'resources'` registers them
36
+ * as URI-addressable Resources, the spec-aligned form, when the client is known to
37
+ * support it.
38
+ *
39
+ * @default 'tools'
40
+ */
41
+ dataMode?: McpDataMode;
42
+ /**
43
+ * The personality injected into MCP clients by reading the MCP server's instructions.
44
+ */
45
+ agentPersona?: string;
46
+ /**
47
+ * Maximum number of historical SSE events the in-memory event store retains per session.
48
+ * Older events are evicted (LRU by insert order) so memory stays bounded under long-running
49
+ * deployments. Must exceed the worst-case in-flight event count or a client reconnecting
50
+ * with a stale `Last-Event-ID` will find its resume point already evicted.
51
+ *
52
+ * @default 10000
53
+ */
54
+ eventStoreLimit?: number;
55
+ }
56
+ /**
57
+ * Security-sensitive bind/policy fields the adopter sets at deploy time on the server
58
+ * module. These fields are deliberately *not* part of the wire-protocol init schema — they
59
+ * are not reachable from {@link McpServerConfiguration.options}, and the launcher reads
60
+ * them only from the adopter-supplied defaults. The server-side runtime view that consumers
61
+ * `@inject` (the holder named {@link McpServerOptions}) carries the merged combined shape
62
+ * {@link McpServerOptions} = init ∩ deploy.
63
+ *
64
+ * Why these are deploy-only: an MCP client driven by an LLM should not be able to widen the
65
+ * server's network exposure or weaken its DNS-rebinding mitigation through an `initialize`
66
+ * payload.
67
+ *
68
+ * @experimental
69
+ */
70
+ export interface McpServerDeployOptions {
71
+ /**
72
+ * Host/interface the MCP HTTP server binds to. The launcher pins this to loopback by
73
+ * default; an adopter overrides via the server module's `McpServerDefaults` binding when
74
+ * they need a non-loopback bind.
75
+ *
76
+ * @default '127.0.0.1'
77
+ */
78
+ host?: string;
79
+ /**
80
+ * Allowed `Host` header values for the MCP HTTP endpoint. Requests whose `Host` header is
81
+ * not in this list are rejected with `403 Forbidden`. Spec MUST per the Streamable HTTP
82
+ * transport's DNS-rebinding mitigation.
83
+ *
84
+ * @default ['127.0.0.1', 'localhost']
85
+ */
86
+ allowedHosts?: string[];
87
+ /**
88
+ * Allowed `Origin` header values. When set, browser-originating requests with an `Origin`
89
+ * not in this list are rejected with `403 Forbidden`. Leave undefined to skip Origin
90
+ * checking (typical for desktop-IDE MCP clients which omit `Origin`); set explicitly when
91
+ * the deployment is fronted by a browser-based MCP client.
92
+ */
93
+ allowedOrigins?: string[];
94
+ /**
95
+ * Explicit acknowledgement that the operator accepts running an unauthenticated MCP
96
+ * endpoint on a non-loopback bind. The MCP server ships with NO built-in authentication;
97
+ * the default `host: '127.0.0.1'` is the only safe configuration without external
98
+ * fronting. Setting a non-loopback `host` (e.g., `'0.0.0.0'` for "easier dev access")
99
+ * WITHOUT setting this flag causes the launcher to refuse to start with an actionable
100
+ * error.
101
+ *
102
+ * Set to `true` only when an external mechanism (reverse proxy, mTLS, network ACL, etc.)
103
+ * authenticates traffic before it reaches the MCP endpoint. Deploy-only — like the other
104
+ * fields in this type, it is unreachable from the wire.
105
+ *
106
+ * @default false
107
+ */
108
+ acknowledgedNoAuth?: boolean;
109
+ }
110
+ /**
111
+ * Combined view of MCP server options as seen by the server-side runtime (defaults merged
112
+ * with the init-time overrides). Adopters supplying defaults via the server module's
113
+ * `McpServerDefaults` binding use this shape; per-init overrides use the narrower
114
+ * {@link McpServerInitOptions}.
115
+ *
116
+ * @experimental
117
+ */
118
+ export type McpServerOptions = McpServerInitOptions & McpServerDeployOptions;
119
+ /** @experimental */
120
+ export interface McpServerConfiguration {
121
+ /**
122
+ * The port on which the MCP server should be started. Defaults to `0` (a random available
123
+ * port). The resolved URL is reported in {@link McpInitializeResult.mcpServer.url} and as a
124
+ * tagged log line on the GLSP server's stdout (`[GLSP-MCP-Server]:Ready. ...`) so that
125
+ * IDE integrations can pick it up automatically (mirroring how the GLSP server itself
126
+ * reports its port).
127
+ *
128
+ * Why `port` lives here but `host` lives on {@link McpServerDeployOptions}: an IDE has a
129
+ * legitimate operational reason to pin a specific port (matching its MCP client config),
130
+ * and the security blast radius of port choice is local. `host`, by contrast, controls
131
+ * the bind interface — letting an init payload widen it from loopback would re-open the
132
+ * DNS-rebinding attack pattern that the Host/Origin checks mitigate.
133
+ */
134
+ port?: number;
135
+ /**
136
+ * The route on which the MCP server should be started.
137
+ */
138
+ route?: string;
139
+ /**
140
+ * The name of the MCP server.
141
+ */
142
+ name?: string;
143
+ /**
144
+ * Behavioral and tuning options the IDE may set per init. Security-sensitive bind/policy
145
+ * fields ({@link McpServerDeployOptions}) are intentionally not part of this shape.
146
+ */
147
+ options?: McpServerInitOptions;
148
+ }
149
+ /** @experimental */
150
+ export interface McpInitializeParameters extends InitializeParameters {
151
+ /**
152
+ * MCP server configuration parameters.
153
+ *
154
+ * **Presence is the opt-in signal.** The MCP server is started if and only if this key is
155
+ * defined in the initialize parameters; the value's content controls *how* it is configured.
156
+ * Omitting the key entirely disables MCP. Setting it to an empty object (`{ mcpServer: {} }`)
157
+ * enables MCP with all defaults. A populated object overrides specific fields.
158
+ *
159
+ * @example
160
+ * // Disable MCP (the default for most clients)
161
+ * { applicationId: '...', protocolVersion: '...' }
162
+ *
163
+ * @example
164
+ * // Enable MCP with all defaults
165
+ * { applicationId: '...', protocolVersion: '...', mcpServer: {} }
166
+ *
167
+ * @example
168
+ * // Enable MCP with a custom port
169
+ * { applicationId: '...', protocolVersion: '...', mcpServer: { port: 12345 } }
170
+ */
171
+ mcpServer?: McpServerConfiguration;
172
+ }
173
+ export declare namespace McpInitializeParameters {
174
+ /**
175
+ * Type guard that also doubles as the **opt-in check**: returns `true` iff `params.mcpServer`
176
+ * is defined (regardless of its content). Server-side code uses this to decide whether to
177
+ * start the MCP HTTP server at all. See {@link McpInitializeParameters.mcpServer} for the
178
+ * opt-in semantics.
179
+ */
180
+ function is(params?: InitializeParameters): params is McpInitializeParameters;
181
+ /**
182
+ * Returns the {@link McpServerConfiguration} from the given initialize parameters, or
183
+ * `undefined` if MCP is not opted in (i.e., `mcpServer` is missing). A return value of `{}`
184
+ * (an empty object) means "MCP is enabled, use all defaults" — distinct from `undefined`
185
+ * which means "MCP is not enabled."
186
+ */
187
+ function getServerConfig(params?: InitializeParameters): McpServerConfiguration | undefined;
188
+ }
189
+ /** @experimental */
190
+ export interface McpServerResult {
191
+ /** The name of the MCP server. */
192
+ name: string;
193
+ /** The URL at which the MCP server is accessible. */
194
+ url: string;
195
+ /** Optional headers AI clients should include when connecting. */
196
+ headers?: Record<string, string>;
197
+ }
198
+ export declare namespace McpServerResult {
199
+ /** True when the candidate is shaped like {@link McpServerResult}. */
200
+ function is(candidate: unknown): candidate is McpServerResult;
201
+ }
202
+ /**
203
+ * Initialize-result extension carrying the MCP server's announced URL. Returned by the
204
+ * GLSP server's `initialize` handshake when (and only when) MCP was opted into via
205
+ * {@link McpInitializeParameters.mcpServer}; otherwise the server returns a plain
206
+ * {@link InitializeResult} and callers should narrow with {@link McpInitializeResult.is}.
207
+ *
208
+ * @experimental
209
+ */
210
+ export interface McpInitializeResult extends InitializeResult {
211
+ mcpServer: McpServerResult;
212
+ }
213
+ export declare namespace McpInitializeResult {
214
+ /** Narrows to `McpInitializeResult` (i.e., asserts `mcpServer` is populated and well-shaped). */
215
+ function is(result?: InitializeResult): result is McpInitializeResult;
216
+ /** Returns the {@link McpServerResult} from the given initialize result, or `undefined` if MCP is not announced. */
217
+ function getServer(result?: InitializeResult): McpServerResult | undefined;
218
+ /**
219
+ * Attaches an {@link McpServerResult} announcement to a base {@link InitializeResult},
220
+ * returning the augmented {@link McpInitializeResult}. Server-side handshake code uses this
221
+ * instead of an in-place cast to keep the mutation typed.
222
+ */
223
+ function attachServer(result: InitializeResult, server: McpServerResult): McpInitializeResult;
224
+ }
225
+ //# sourceMappingURL=mcp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/client-server-protocol/mcp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAGlF,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEjE,2GAA2G;AAC3G,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG,OAAO,CAAC;AAEhD;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,oBAAoB;IACjC;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,WAAW,CAAC;IACvB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;;;;OAOG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,sBAAsB;IACnC;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB;;;;;OAKG;IACH,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B;;;;;;;;;;;;;OAaG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAChC;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,gBAAgB,GAAG,oBAAoB,GAAG,sBAAsB,CAAC;AAE7E,oBAAoB;AACpB,MAAM,WAAW,sBAAsB;IACnC;;;;;;;;;;;;OAYG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,OAAO,CAAC,EAAE,oBAAoB,CAAC;CAClC;AAED,oBAAoB;AACpB,MAAM,WAAW,uBAAwB,SAAQ,oBAAoB;IACjE;;;;;;;;;;;;;;;;;;;OAmBG;IACH,SAAS,CAAC,EAAE,sBAAsB,CAAC;CACtC;AAED,yBAAiB,uBAAuB,CAAC;IACrC;;;;;OAKG;IACH,SAAgB,EAAE,CAAC,MAAM,CAAC,EAAE,oBAAoB,GAAG,MAAM,IAAI,uBAAuB,CAEnF;IAED;;;;;OAKG;IACH,SAAgB,eAAe,CAAC,MAAM,CAAC,EAAE,oBAAoB,GAAG,sBAAsB,GAAG,SAAS,CAEjG;CACJ;AAED,oBAAoB;AACpB,MAAM,WAAW,eAAe;IAC5B,kCAAkC;IAClC,IAAI,EAAE,MAAM,CAAC;IAEb,qDAAqD;IACrD,GAAG,EAAE,MAAM,CAAC;IAEZ,kEAAkE;IAClE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACpC;AAED,yBAAiB,eAAe,CAAC;IAC7B,sEAAsE;IACtE,SAAgB,EAAE,CAAC,SAAS,EAAE,OAAO,GAAG,SAAS,IAAI,eAAe,CAEnE;CACJ;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,mBAAoB,SAAQ,gBAAgB;IACzD,SAAS,EAAE,eAAe,CAAC;CAC9B;AAED,yBAAiB,mBAAmB,CAAC;IACjC,iGAAiG;IACjG,SAAgB,EAAE,CAAC,MAAM,CAAC,EAAE,gBAAgB,GAAG,MAAM,IAAI,mBAAmB,CAE3E;IAED,oHAAoH;IACpH,SAAgB,SAAS,CAAC,MAAM,CAAC,EAAE,gBAAgB,GAAG,eAAe,GAAG,SAAS,CAEhF;IAED;;;;OAIG;IACH,SAAgB,YAAY,CAAC,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,eAAe,GAAG,mBAAmB,CAInG;CACJ"}
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ /********************************************************************************
3
+ * Copyright (c) 2025-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
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.McpInitializeResult = exports.McpServerResult = exports.McpInitializeParameters = void 0;
19
+ const type_util_1 = require("../utils/type-util");
20
+ var McpInitializeParameters;
21
+ (function (McpInitializeParameters) {
22
+ /**
23
+ * Type guard that also doubles as the **opt-in check**: returns `true` iff `params.mcpServer`
24
+ * is defined (regardless of its content). Server-side code uses this to decide whether to
25
+ * start the MCP HTTP server at all. See {@link McpInitializeParameters.mcpServer} for the
26
+ * opt-in semantics.
27
+ */
28
+ function is(params) {
29
+ return type_util_1.AnyObject.is(params) && (0, type_util_1.hasObjectProp)(params, 'mcpServer');
30
+ }
31
+ McpInitializeParameters.is = is;
32
+ /**
33
+ * Returns the {@link McpServerConfiguration} from the given initialize parameters, or
34
+ * `undefined` if MCP is not opted in (i.e., `mcpServer` is missing). A return value of `{}`
35
+ * (an empty object) means "MCP is enabled, use all defaults" — distinct from `undefined`
36
+ * which means "MCP is not enabled."
37
+ */
38
+ function getServerConfig(params) {
39
+ return is(params) ? params.mcpServer : undefined;
40
+ }
41
+ McpInitializeParameters.getServerConfig = getServerConfig;
42
+ })(McpInitializeParameters || (exports.McpInitializeParameters = McpInitializeParameters = {}));
43
+ var McpServerResult;
44
+ (function (McpServerResult) {
45
+ /** True when the candidate is shaped like {@link McpServerResult}. */
46
+ function is(candidate) {
47
+ return type_util_1.AnyObject.is(candidate) && (0, type_util_1.hasStringProp)(candidate, 'name') && (0, type_util_1.hasStringProp)(candidate, 'url');
48
+ }
49
+ McpServerResult.is = is;
50
+ })(McpServerResult || (exports.McpServerResult = McpServerResult = {}));
51
+ var McpInitializeResult;
52
+ (function (McpInitializeResult) {
53
+ /** Narrows to `McpInitializeResult` (i.e., asserts `mcpServer` is populated and well-shaped). */
54
+ function is(result) {
55
+ return type_util_1.AnyObject.is(result) && (0, type_util_1.hasObjectProp)(result, 'mcpServer') && McpServerResult.is(result.mcpServer);
56
+ }
57
+ McpInitializeResult.is = is;
58
+ /** Returns the {@link McpServerResult} from the given initialize result, or `undefined` if MCP is not announced. */
59
+ function getServer(result) {
60
+ return is(result) ? result.mcpServer : undefined;
61
+ }
62
+ McpInitializeResult.getServer = getServer;
63
+ /**
64
+ * Attaches an {@link McpServerResult} announcement to a base {@link InitializeResult},
65
+ * returning the augmented {@link McpInitializeResult}. Server-side handshake code uses this
66
+ * instead of an in-place cast to keep the mutation typed.
67
+ */
68
+ function attachServer(result, server) {
69
+ const augmented = result;
70
+ augmented.mcpServer = server;
71
+ return augmented;
72
+ }
73
+ McpInitializeResult.attachServer = attachServer;
74
+ })(McpInitializeResult || (exports.McpInitializeResult = McpInitializeResult = {}));
75
+ //# sourceMappingURL=mcp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/client-server-protocol/mcp.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;kFAckF;;;AAElF,kDAA6E;AAqK7E,IAAiB,uBAAuB,CAoBvC;AApBD,WAAiB,uBAAuB;IACpC;;;;;OAKG;IACH,SAAgB,EAAE,CAAC,MAA6B;QAC5C,OAAO,qBAAS,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,IAAA,yBAAa,EAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACtE,CAAC;IAFe,0BAAE,KAEjB,CAAA;IAED;;;;;OAKG;IACH,SAAgB,eAAe,CAAC,MAA6B;QACzD,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;IACrD,CAAC;IAFe,uCAAe,kBAE9B,CAAA;AACL,CAAC,EApBgB,uBAAuB,uCAAvB,uBAAuB,QAoBvC;AAcD,IAAiB,eAAe,CAK/B;AALD,WAAiB,eAAe;IAC5B,sEAAsE;IACtE,SAAgB,EAAE,CAAC,SAAkB;QACjC,OAAO,qBAAS,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,IAAA,yBAAa,EAAC,SAAS,EAAE,MAAM,CAAC,IAAI,IAAA,yBAAa,EAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC1G,CAAC;IAFe,kBAAE,KAEjB,CAAA;AACL,CAAC,EALgB,eAAe,+BAAf,eAAe,QAK/B;AAcD,IAAiB,mBAAmB,CAqBnC;AArBD,WAAiB,mBAAmB;IAChC,iGAAiG;IACjG,SAAgB,EAAE,CAAC,MAAyB;QACxC,OAAO,qBAAS,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,IAAA,yBAAa,EAAC,MAAM,EAAE,WAAW,CAAC,IAAI,eAAe,CAAC,EAAE,CAAE,MAA8B,CAAC,SAAS,CAAC,CAAC;IACvI,CAAC;IAFe,sBAAE,KAEjB,CAAA;IAED,oHAAoH;IACpH,SAAgB,SAAS,CAAC,MAAyB;QAC/C,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;IACrD,CAAC;IAFe,6BAAS,YAExB,CAAA;IAED;;;;OAIG;IACH,SAAgB,YAAY,CAAC,MAAwB,EAAE,MAAuB;QAC1E,MAAM,SAAS,GAAG,MAA6B,CAAC;QAChD,SAAS,CAAC,SAAS,GAAG,MAAM,CAAC;QAC7B,OAAO,SAAS,CAAC;IACrB,CAAC;IAJe,gCAAY,eAI3B,CAAA;AACL,CAAC,EArBgB,mBAAmB,mCAAnB,mBAAmB,QAqBnC"}
package/lib/index.d.ts CHANGED
@@ -43,6 +43,7 @@ export * from './client-server-protocol/jsonrpc/glsp-jsonrpc-server';
43
43
  export * from './client-server-protocol/jsonrpc/websocket-connection';
44
44
  export * from './client-server-protocol/jsonrpc/worker-connection-provider';
45
45
  export * from './client-server-protocol/jsonrpc/ws-connection-provider';
46
+ export * from './client-server-protocol/mcp';
46
47
  export * from './client-server-protocol/types';
47
48
  export * from './model/default-types';
48
49
  export * from './model/model-schema';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAClF,cAAc,iCAAiC,CAAC;AAChD,cAAc,uCAAuC,CAAC;AACtD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qCAAqC,CAAC;AACpD,cAAc,oCAAoC,CAAC;AACnD,cAAc,iCAAiC,CAAC;AAChD,cAAc,sCAAsC,CAAC;AACrD,cAAc,qCAAqC,CAAC;AACpD,cAAc,wCAAwC,CAAC;AACvD,cAAc,sCAAsC,CAAC;AACrD,cAAc,sCAAsC,CAAC;AACrD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mCAAmC,CAAC;AAClD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,qCAAqC,CAAC;AACpD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2CAA2C,CAAC;AAC1D,cAAc,sCAAsC,CAAC;AACrD,cAAc,sCAAsC,CAAC;AACrD,cAAc,2DAA2D,CAAC;AAC1E,cAAc,sDAAsD,CAAC;AACrE,cAAc,sDAAsD,CAAC;AACrE,cAAc,uDAAuD,CAAC;AACtE,cAAc,6DAA6D,CAAC;AAC5E,cAAc,yDAAyD,CAAC;AACxE,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAClF,cAAc,iCAAiC,CAAC;AAChD,cAAc,uCAAuC,CAAC;AACtD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qCAAqC,CAAC;AACpD,cAAc,oCAAoC,CAAC;AACnD,cAAc,iCAAiC,CAAC;AAChD,cAAc,sCAAsC,CAAC;AACrD,cAAc,qCAAqC,CAAC;AACpD,cAAc,wCAAwC,CAAC;AACvD,cAAc,sCAAsC,CAAC;AACrD,cAAc,sCAAsC,CAAC;AACrD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mCAAmC,CAAC;AAClD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,qCAAqC,CAAC;AACpD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2CAA2C,CAAC;AAC1D,cAAc,sCAAsC,CAAC;AACrD,cAAc,sCAAsC,CAAC;AACrD,cAAc,2DAA2D,CAAC;AAC1E,cAAc,sDAAsD,CAAC;AACrE,cAAc,sDAAsD,CAAC;AACrE,cAAc,uDAAuD,CAAC;AACtE,cAAc,6DAA6D,CAAC;AAC5E,cAAc,yDAAyD,CAAC;AACxE,cAAc,8BAA8B,CAAC;AAC7C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC"}
package/lib/index.js CHANGED
@@ -59,6 +59,7 @@ __exportStar(require("./client-server-protocol/jsonrpc/glsp-jsonrpc-server"), ex
59
59
  __exportStar(require("./client-server-protocol/jsonrpc/websocket-connection"), exports);
60
60
  __exportStar(require("./client-server-protocol/jsonrpc/worker-connection-provider"), exports);
61
61
  __exportStar(require("./client-server-protocol/jsonrpc/ws-connection-provider"), exports);
62
+ __exportStar(require("./client-server-protocol/mcp"), exports);
62
63
  __exportStar(require("./client-server-protocol/types"), exports);
63
64
  __exportStar(require("./model/default-types"), exports);
64
65
  __exportStar(require("./model/model-schema"), exports);
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA;;;;;;;;;;;;;;kFAckF;AAClF,kEAAgD;AAChD,wEAAsD;AACtD,8DAA4C;AAC5C,6DAA2C;AAC3C,sEAAoD;AACpD,qEAAmD;AACnD,kEAAgD;AAChD,uEAAqD;AACrD,sEAAoD;AACpD,yEAAuD;AACvD,uEAAqD;AACrD,uEAAqD;AACrD,+DAA6C;AAC7C,oEAAkD;AAClD,iEAA+C;AAC/C,iEAA+C;AAC/C,sEAAoD;AACpD,iEAA+C;AAC/C,0DAAwC;AACxC,8DAA4C;AAC5C,6DAA2C;AAC3C,4EAA0D;AAC1D,uEAAqD;AACrD,uEAAqD;AACrD,4FAA0E;AAC1E,uFAAqE;AACrE,uFAAqE;AACrE,wFAAsE;AACtE,8FAA4E;AAC5E,0FAAwE;AACxE,iEAA+C;AAC/C,wDAAsC;AACtC,uDAAqC;AACrC,+CAA6B;AAC7B,oDAAkC;AAClC,4DAA0C;AAC1C,+DAA6C;AAC7C,2DAAyC;AACzC,qDAAmC;AACnC,qDAAmC;AACnC,gDAA8B;AAC9B,wDAAsC;AACtC,4DAA0C;AAC1C,wDAAsC;AACtC,0DAAwC;AACxC,oDAAkC;AAClC,oDAAkC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA;;;;;;;;;;;;;;kFAckF;AAClF,kEAAgD;AAChD,wEAAsD;AACtD,8DAA4C;AAC5C,6DAA2C;AAC3C,sEAAoD;AACpD,qEAAmD;AACnD,kEAAgD;AAChD,uEAAqD;AACrD,sEAAoD;AACpD,yEAAuD;AACvD,uEAAqD;AACrD,uEAAqD;AACrD,+DAA6C;AAC7C,oEAAkD;AAClD,iEAA+C;AAC/C,iEAA+C;AAC/C,sEAAoD;AACpD,iEAA+C;AAC/C,0DAAwC;AACxC,8DAA4C;AAC5C,6DAA2C;AAC3C,4EAA0D;AAC1D,uEAAqD;AACrD,uEAAqD;AACrD,4FAA0E;AAC1E,uFAAqE;AACrE,uFAAqE;AACrE,wFAAsE;AACtE,8FAA4E;AAC5E,0FAAwE;AACxE,+DAA6C;AAC7C,iEAA+C;AAC/C,wDAAsC;AACtC,uDAAqC;AACrC,+CAA6B;AAC7B,oDAAkC;AAClC,4DAA0C;AAC1C,+DAA6C;AAC7C,2DAAyC;AACzC,qDAAmC;AACnC,qDAAmC;AACnC,gDAA8B;AAC9B,wDAAsC;AACtC,4DAA0C;AAC1C,wDAAsC;AACtC,0DAAwC;AACxC,oDAAkC;AAClC,oDAAkC"}
@@ -56,6 +56,14 @@ export type PropertiesOfType<T, V> = Pick<T, KeysOfType<T, V>>;
56
56
  * Utility type to describe a value as might be provided as a promise.
57
57
  */
58
58
  export type MaybePromise<T> = T | PromiseLike<T>;
59
+ export declare namespace MaybePromise {
60
+ /**
61
+ * Type guard to check whether a given value is a {@link PromiseLike}.
62
+ * @param value The value to check.
63
+ * @returns `true` if the value is a `PromiseLike`.
64
+ */
65
+ function isPromise<T = unknown>(value: MaybePromise<T>): value is PromiseLike<T>;
66
+ }
59
67
  /**
60
68
  * Utility type to describe typeguard functions.
61
69
  */
@@ -1 +1 @@
1
- {"version":3,"file":"type-util.d.ts","sourceRoot":"","sources":["../../src/utils/type-util.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"type-util.d.ts","sourceRoot":"","sources":["../../src/utils/type-util.ts"],"names":[],"mappings":"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"}
@@ -15,7 +15,7 @@
15
15
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
16
16
  ********************************************************************************/
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
- exports.MaybeActions = exports.AnyObject = void 0;
18
+ exports.MaybeActions = exports.MaybePromise = exports.AnyObject = void 0;
19
19
  exports.typeGuard = typeGuard;
20
20
  exports.typeGuardOr = typeGuardOr;
21
21
  exports.toTypeGuard = toTypeGuard;
@@ -40,6 +40,18 @@ var AnyObject;
40
40
  }
41
41
  AnyObject.is = is;
42
42
  })(AnyObject || (exports.AnyObject = AnyObject = {}));
43
+ var MaybePromise;
44
+ (function (MaybePromise) {
45
+ /**
46
+ * Type guard to check whether a given value is a {@link PromiseLike}.
47
+ * @param value The value to check.
48
+ * @returns `true` if the value is a `PromiseLike`.
49
+ */
50
+ function isPromise(value) {
51
+ return AnyObject.is(value) && hasFunctionProp(value, 'then');
52
+ }
53
+ MaybePromise.isPromise = isPromise;
54
+ })(MaybePromise || (exports.MaybePromise = MaybePromise = {}));
43
55
  /** Utility function to combine two type guards */
44
56
  function typeGuard(one, other) {
45
57
  return (element) => one(element) && other(element);
@@ -1 +1 @@
1
- {"version":3,"file":"type-util.js","sourceRoot":"","sources":["../../src/utils/type-util.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"type-util.js","sourceRoot":"","sources":["../../src/utils/type-util.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eclipse-glsp/protocol",
3
- "version": "2.7.0-next.24+55f4bde",
3
+ "version": "2.7.0-next.26+5bb5792",
4
4
  "description": "The protocol definition for client-server communication in GLSP",
5
5
  "keywords": [
6
6
  "eclipse",
@@ -58,5 +58,5 @@
58
58
  "publishConfig": {
59
59
  "access": "public"
60
60
  },
61
- "gitHead": "55f4bdeff32c8658aa12576324e0077a564b0d18"
61
+ "gitHead": "5bb5792121e9317888ff6f78495d551900739c29"
62
62
  }
@@ -13,9 +13,17 @@
13
13
  *
14
14
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
15
  ********************************************************************************/
16
+ /* eslint-disable @typescript-eslint/no-deprecated */
16
17
 
17
18
  import { expect } from 'chai';
18
- import { ExportSvgAction, RequestExportSvgAction, SaveModelAction, SetDirtyStateAction } from './model-saving';
19
+ import {
20
+ ExportResultAction,
21
+ ExportSvgAction,
22
+ RequestExportAction,
23
+ RequestExportSvgAction,
24
+ SaveModelAction,
25
+ SetDirtyStateAction
26
+ } from './model-saving';
19
27
  /**
20
28
  * Tests for the utility functions declared in the namespaces of the protocol
21
29
  * action definitions.
@@ -170,4 +178,122 @@ describe('Model saving actions', () => {
170
178
  });
171
179
  });
172
180
  });
181
+
182
+ describe('RequestExportAction', () => {
183
+ describe('is', () => {
184
+ it('should return true for a well-formed action carrying a `format`', () => {
185
+ const action: RequestExportAction = {
186
+ kind: 'requestExport',
187
+ requestId: '',
188
+ format: 'png'
189
+ };
190
+ expect(RequestExportAction.is(action)).to.be.true;
191
+ });
192
+ it('should reject the legacy `requestExportSvg` kind to keep strict separation between the two protocols', () => {
193
+ expect(RequestExportAction.is({ kind: 'requestExportSvg', requestId: '' })).to.be.false;
194
+ });
195
+ it('should return false for an action missing the `format` discriminator', () => {
196
+ expect(RequestExportAction.is({ kind: 'requestExport', requestId: '' })).to.be.false;
197
+ });
198
+ it('should return false for `undefined`', () => {
199
+ expect(RequestExportAction.is(undefined)).to.be.false;
200
+ });
201
+ });
202
+
203
+ describe('create', () => {
204
+ it('should default `requestId` to empty when none is supplied', () => {
205
+ expect(RequestExportAction.create('svg')).to.deep.equals({
206
+ kind: 'requestExport',
207
+ format: 'svg',
208
+ requestId: ''
209
+ });
210
+ });
211
+ it('should propagate caller-supplied formatOptions and requestId', () => {
212
+ const formatOptions = { width: 1024, skipCopyStyles: true };
213
+ expect(RequestExportAction.create('png', { formatOptions, requestId: 'abc' })).to.deep.equals({
214
+ kind: 'requestExport',
215
+ format: 'png',
216
+ requestId: 'abc',
217
+ formatOptions
218
+ });
219
+ });
220
+ it('should accept an arbitrary string format (open registry)', () => {
221
+ const action = RequestExportAction.create('pdf');
222
+ expect(action.format).to.equal('pdf');
223
+ });
224
+ });
225
+ });
226
+
227
+ describe('ExportResultAction', () => {
228
+ describe('is', () => {
229
+ it('should return true for a well-formed text-encoded result', () => {
230
+ const action: ExportResultAction = {
231
+ kind: 'exportResult',
232
+ responseId: '',
233
+ format: 'svg',
234
+ mimeType: 'image/svg+xml',
235
+ encoding: 'text',
236
+ data: '<svg/>'
237
+ };
238
+ expect(ExportResultAction.is(action)).to.be.true;
239
+ });
240
+ it('should return true for a well-formed base64-encoded result', () => {
241
+ const action: ExportResultAction = {
242
+ kind: 'exportResult',
243
+ responseId: '',
244
+ format: 'png',
245
+ mimeType: 'image/png',
246
+ encoding: 'base64',
247
+ data: 'aGVsbG8='
248
+ };
249
+ expect(ExportResultAction.is(action)).to.be.true;
250
+ });
251
+ it('should reject the legacy `exportSvg` kind to keep strict separation between the two protocols', () => {
252
+ expect(ExportResultAction.is({ kind: 'exportSvg', responseId: '', svg: '<svg/>' })).to.be.false;
253
+ });
254
+ it('should return false when `data` is missing', () => {
255
+ expect(
256
+ ExportResultAction.is({
257
+ kind: 'exportResult',
258
+ responseId: '',
259
+ format: 'svg',
260
+ mimeType: 'image/svg+xml',
261
+ encoding: 'text'
262
+ })
263
+ ).to.be.false;
264
+ });
265
+ });
266
+
267
+ describe('create', () => {
268
+ it('should round-trip an SVG payload', () => {
269
+ const created = ExportResultAction.create('svg', '<svg/>', { mimeType: 'image/svg+xml', encoding: 'text' });
270
+ expect(created).to.deep.equals({
271
+ kind: 'exportResult',
272
+ responseId: '',
273
+ format: 'svg',
274
+ mimeType: 'image/svg+xml',
275
+ encoding: 'text',
276
+ data: '<svg/>'
277
+ });
278
+ });
279
+ it('should round-trip a PNG payload with formatOptions echo', () => {
280
+ const formatOptions = { width: 800 };
281
+ const created = ExportResultAction.create('png', 'aGVsbG8=', {
282
+ mimeType: 'image/png',
283
+ encoding: 'base64',
284
+ responseId: 'r-1',
285
+ formatOptions
286
+ });
287
+ expect(created).to.deep.equals({
288
+ kind: 'exportResult',
289
+ responseId: 'r-1',
290
+ format: 'png',
291
+ mimeType: 'image/png',
292
+ encoding: 'base64',
293
+ data: 'aGVsbG8=',
294
+ formatOptions
295
+ });
296
+ });
297
+ });
298
+ });
173
299
  });