@theia/ai-chat-ui 1.75.0-next.8 → 1.75.0

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 (163) hide show
  1. package/lib/browser/ai-chat-ui-contribution.js +1 -1
  2. package/lib/browser/ai-chat-ui-contribution.js.map +1 -1
  3. package/lib/browser/ai-chat-ui-frontend-module.d.ts +1 -0
  4. package/lib/browser/ai-chat-ui-frontend-module.d.ts.map +1 -1
  5. package/lib/browser/ai-chat-ui-frontend-module.js +1 -0
  6. package/lib/browser/ai-chat-ui-frontend-module.js.map +1 -1
  7. package/lib/browser/change-set-actions/change-set-accept-action.js +2 -17
  8. package/lib/browser/change-set-actions/change-set-accept-action.js.map +1 -1
  9. package/lib/browser/chat-banner-widget.js +7 -6
  10. package/lib/browser/chat-banner-widget.js.map +1 -1
  11. package/lib/browser/chat-capabilities-panel.js +8 -11
  12. package/lib/browser/chat-capabilities-panel.js.map +1 -1
  13. package/lib/browser/chat-capabilities-service.d.ts.map +1 -1
  14. package/lib/browser/chat-capabilities-service.js +3 -2
  15. package/lib/browser/chat-capabilities-service.js.map +1 -1
  16. package/lib/browser/chat-input-agent-suggestions.js +3 -18
  17. package/lib/browser/chat-input-agent-suggestions.js.map +1 -1
  18. package/lib/browser/chat-input-history.d.ts +2 -0
  19. package/lib/browser/chat-input-history.d.ts.map +1 -1
  20. package/lib/browser/chat-input-history.js +7 -1
  21. package/lib/browser/chat-input-history.js.map +1 -1
  22. package/lib/browser/chat-input-widget.d.ts +13 -0
  23. package/lib/browser/chat-input-widget.d.ts.map +1 -1
  24. package/lib/browser/chat-input-widget.js +132 -158
  25. package/lib/browser/chat-input-widget.js.map +1 -1
  26. package/lib/browser/chat-node-toolbar-action-contribution.d.ts +7 -1
  27. package/lib/browser/chat-node-toolbar-action-contribution.d.ts.map +1 -1
  28. package/lib/browser/chat-node-toolbar-action-contribution.js.map +1 -1
  29. package/lib/browser/chat-progress-message.d.ts +2 -3
  30. package/lib/browser/chat-progress-message.d.ts.map +1 -1
  31. package/lib/browser/chat-progress-message.js +6 -27
  32. package/lib/browser/chat-progress-message.js.map +1 -1
  33. package/lib/browser/chat-response-renderer/blocked-resource-placeholder.d.ts.map +1 -1
  34. package/lib/browser/chat-response-renderer/blocked-resource-placeholder.js +4 -29
  35. package/lib/browser/chat-response-renderer/blocked-resource-placeholder.js.map +1 -1
  36. package/lib/browser/chat-response-renderer/code-part-renderer.js +11 -16
  37. package/lib/browser/chat-response-renderer/code-part-renderer.js.map +1 -1
  38. package/lib/browser/chat-response-renderer/command-part-renderer.d.ts +2 -0
  39. package/lib/browser/chat-response-renderer/command-part-renderer.d.ts.map +1 -1
  40. package/lib/browser/chat-response-renderer/command-part-renderer.js +11 -21
  41. package/lib/browser/chat-response-renderer/command-part-renderer.js.map +1 -1
  42. package/lib/browser/chat-response-renderer/compaction-part-renderer.d.ts.map +1 -1
  43. package/lib/browser/chat-response-renderer/compaction-part-renderer.js +3 -22
  44. package/lib/browser/chat-response-renderer/compaction-part-renderer.js.map +1 -1
  45. package/lib/browser/chat-response-renderer/delegation-tool-renderer.js +10 -30
  46. package/lib/browser/chat-response-renderer/delegation-tool-renderer.js.map +1 -1
  47. package/lib/browser/chat-response-renderer/error-part-renderer.d.ts.map +1 -1
  48. package/lib/browser/chat-response-renderer/error-part-renderer.js +2 -25
  49. package/lib/browser/chat-response-renderer/error-part-renderer.js.map +1 -1
  50. package/lib/browser/chat-response-renderer/horizontal-layout-part-renderer.d.ts.map +1 -1
  51. package/lib/browser/chat-response-renderer/horizontal-layout-part-renderer.js +13 -13
  52. package/lib/browser/chat-response-renderer/horizontal-layout-part-renderer.js.map +1 -1
  53. package/lib/browser/chat-response-renderer/index.d.ts +1 -0
  54. package/lib/browser/chat-response-renderer/index.d.ts.map +1 -1
  55. package/lib/browser/chat-response-renderer/index.js +1 -0
  56. package/lib/browser/chat-response-renderer/index.js.map +1 -1
  57. package/lib/browser/chat-response-renderer/markdown-part-renderer.d.ts +1 -1
  58. package/lib/browser/chat-response-renderer/markdown-part-renderer.d.ts.map +1 -1
  59. package/lib/browser/chat-response-renderer/markdown-part-renderer.js +3 -18
  60. package/lib/browser/chat-response-renderer/markdown-part-renderer.js.map +1 -1
  61. package/lib/browser/chat-response-renderer/markdown-part-renderer.spec.js +14 -14
  62. package/lib/browser/chat-response-renderer/markdown-part-renderer.spec.js.map +1 -1
  63. package/lib/browser/chat-response-renderer/mcp-app-frame.d.ts +12 -0
  64. package/lib/browser/chat-response-renderer/mcp-app-frame.d.ts.map +1 -0
  65. package/lib/browser/chat-response-renderer/mcp-app-frame.js +78 -0
  66. package/lib/browser/chat-response-renderer/mcp-app-frame.js.map +1 -0
  67. package/lib/browser/chat-response-renderer/mcp-app-frame.spec.d.ts +2 -0
  68. package/lib/browser/chat-response-renderer/mcp-app-frame.spec.d.ts.map +1 -0
  69. package/lib/browser/chat-response-renderer/mcp-app-frame.spec.js +79 -0
  70. package/lib/browser/chat-response-renderer/mcp-app-frame.spec.js.map +1 -0
  71. package/lib/browser/chat-response-renderer/mermaid-part-renderer.d.ts.map +1 -1
  72. package/lib/browser/chat-response-renderer/mermaid-part-renderer.js +5 -5
  73. package/lib/browser/chat-response-renderer/mermaid-part-renderer.js.map +1 -1
  74. package/lib/browser/chat-response-renderer/mermaid-rendering.js +14 -44
  75. package/lib/browser/chat-response-renderer/mermaid-rendering.js.map +1 -1
  76. package/lib/browser/chat-response-renderer/not-available-toolcall-renderer.d.ts.map +1 -1
  77. package/lib/browser/chat-response-renderer/not-available-toolcall-renderer.js +2 -23
  78. package/lib/browser/chat-response-renderer/not-available-toolcall-renderer.js.map +1 -1
  79. package/lib/browser/chat-response-renderer/progress-part-renderer.d.ts.map +1 -1
  80. package/lib/browser/chat-response-renderer/progress-part-renderer.js +2 -17
  81. package/lib/browser/chat-response-renderer/progress-part-renderer.js.map +1 -1
  82. package/lib/browser/chat-response-renderer/question-part-renderer.js +13 -25
  83. package/lib/browser/chat-response-renderer/question-part-renderer.js.map +1 -1
  84. package/lib/browser/chat-response-renderer/server-toolcall-part-renderer.js +5 -41
  85. package/lib/browser/chat-response-renderer/server-toolcall-part-renderer.js.map +1 -1
  86. package/lib/browser/chat-response-renderer/text-part-renderer.d.ts.map +1 -1
  87. package/lib/browser/chat-response-renderer/text-part-renderer.js +3 -21
  88. package/lib/browser/chat-response-renderer/text-part-renderer.js.map +1 -1
  89. package/lib/browser/chat-response-renderer/thinking-part-renderer.d.ts.map +1 -1
  90. package/lib/browser/chat-response-renderer/thinking-part-renderer.js +2 -20
  91. package/lib/browser/chat-response-renderer/thinking-part-renderer.js.map +1 -1
  92. package/lib/browser/chat-response-renderer/tool-call-rendering.js +7 -14
  93. package/lib/browser/chat-response-renderer/tool-call-rendering.js.map +1 -1
  94. package/lib/browser/chat-response-renderer/tool-confirmation.js +25 -82
  95. package/lib/browser/chat-response-renderer/tool-confirmation.js.map +1 -1
  96. package/lib/browser/chat-response-renderer/toolcall-part-renderer.js +5 -65
  97. package/lib/browser/chat-response-renderer/toolcall-part-renderer.js.map +1 -1
  98. package/lib/browser/chat-response-renderer/toolcall-result.d.ts.map +1 -1
  99. package/lib/browser/chat-response-renderer/toolcall-result.js +23 -38
  100. package/lib/browser/chat-response-renderer/toolcall-result.js.map +1 -1
  101. package/lib/browser/chat-response-renderer/unknown-part-renderer.d.ts.map +1 -1
  102. package/lib/browser/chat-response-renderer/unknown-part-renderer.js +5 -9
  103. package/lib/browser/chat-response-renderer/unknown-part-renderer.js.map +1 -1
  104. package/lib/browser/chat-tree-view/chat-view-tree-widget.d.ts.map +1 -1
  105. package/lib/browser/chat-tree-view/chat-view-tree-widget.js +107 -136
  106. package/lib/browser/chat-tree-view/chat-view-tree-widget.js.map +1 -1
  107. package/lib/browser/chat-tree-view/chat-view-tree-widget.spec.js +5 -5
  108. package/lib/browser/chat-tree-view/chat-view-tree-widget.spec.js.map +1 -1
  109. package/lib/browser/chat-tree-view/model-badge.js +3 -2
  110. package/lib/browser/chat-tree-view/model-badge.js.map +1 -1
  111. package/lib/browser/chat-tree-view/prompt-variant-badge.js +3 -2
  112. package/lib/browser/chat-tree-view/prompt-variant-badge.js.map +1 -1
  113. package/lib/browser/chat-tree-view/sub-chat-widget.d.ts +2 -1
  114. package/lib/browser/chat-tree-view/sub-chat-widget.d.ts.map +1 -1
  115. package/lib/browser/chat-tree-view/sub-chat-widget.js +22 -20
  116. package/lib/browser/chat-tree-view/sub-chat-widget.js.map +1 -1
  117. package/lib/browser/chat-view-widget.d.ts +2 -1
  118. package/lib/browser/chat-view-widget.d.ts.map +1 -1
  119. package/lib/browser/chat-view-widget.js +6 -1
  120. package/lib/browser/chat-view-widget.js.map +1 -1
  121. package/lib/browser/generic-capabilities-section.js +2 -19
  122. package/lib/browser/generic-capabilities-section.js.map +1 -1
  123. package/lib/browser/generic-capabilities-service.js +2 -2
  124. package/lib/browser/generic-capabilities-service.js.map +1 -1
  125. package/lib/browser/generic-capabilities-service.spec.js +18 -2
  126. package/lib/browser/generic-capabilities-service.spec.js.map +1 -1
  127. package/lib/browser/generic-capabilities-tree.js +31 -47
  128. package/lib/browser/generic-capabilities-tree.js.map +1 -1
  129. package/lib/browser/session-settings-dialog.js +12 -51
  130. package/lib/browser/session-settings-dialog.js.map +1 -1
  131. package/package.json +13 -13
  132. package/src/browser/ai-chat-ui-contribution.ts +1 -1
  133. package/src/browser/ai-chat-ui-frontend-module.ts +1 -0
  134. package/src/browser/chat-capabilities-service.ts +3 -2
  135. package/src/browser/chat-input-history.ts +6 -2
  136. package/src/browser/chat-input-widget.tsx +58 -11
  137. package/src/browser/chat-node-toolbar-action-contribution.ts +7 -1
  138. package/src/browser/chat-progress-message.tsx +0 -1
  139. package/src/browser/chat-response-renderer/blocked-resource-placeholder.tsx +1 -2
  140. package/src/browser/chat-response-renderer/command-part-renderer.tsx +9 -6
  141. package/src/browser/chat-response-renderer/compaction-part-renderer.tsx +0 -1
  142. package/src/browser/chat-response-renderer/error-part-renderer.tsx +0 -1
  143. package/src/browser/chat-response-renderer/horizontal-layout-part-renderer.tsx +0 -1
  144. package/src/browser/chat-response-renderer/index.ts +1 -0
  145. package/src/browser/chat-response-renderer/markdown-part-renderer.spec.tsx +0 -1
  146. package/src/browser/chat-response-renderer/mcp-app-frame.spec.ts +87 -0
  147. package/src/browser/chat-response-renderer/mcp-app-frame.tsx +95 -0
  148. package/src/browser/chat-response-renderer/mermaid-part-renderer.tsx +0 -1
  149. package/src/browser/chat-response-renderer/not-available-toolcall-renderer.tsx +0 -1
  150. package/src/browser/chat-response-renderer/progress-part-renderer.tsx +0 -1
  151. package/src/browser/chat-response-renderer/text-part-renderer.tsx +0 -1
  152. package/src/browser/chat-response-renderer/thinking-part-renderer.tsx +0 -1
  153. package/src/browser/chat-response-renderer/toolcall-result.tsx +6 -1
  154. package/src/browser/chat-response-renderer/unknown-part-renderer.tsx +0 -1
  155. package/src/browser/chat-tree-view/chat-view-tree-widget.spec.tsx +0 -1
  156. package/src/browser/chat-tree-view/chat-view-tree-widget.tsx +7 -0
  157. package/src/browser/chat-tree-view/sub-chat-widget.tsx +5 -2
  158. package/src/browser/chat-view-widget.tsx +5 -2
  159. package/src/browser/generic-capabilities-service.spec.ts +20 -2
  160. package/src/browser/generic-capabilities-service.ts +2 -2
  161. package/src/browser/session-settings-dialog.tsx +1 -1
  162. package/src/browser/style/index.css +24 -14
  163. package/src/browser/style/mcp-app-frame.css +34 -0
@@ -1,26 +1,11 @@
1
1
  "use strict";
2
- // *****************************************************************************
3
- // Copyright (C) 2024 EclipseSource GmbH.
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-only WITH Classpath-exception-2.0
16
- // *****************************************************************************
17
2
  Object.defineProperty(exports, "__esModule", { value: true });
18
3
  exports.useMarkdownRendering = exports.MarkdownPartRenderer = exports.MarkdownRender = void 0;
19
4
  const tslib_1 = require("tslib");
5
+ const jsx_runtime_1 = require("@theia/core/shared/react/jsx-runtime");
20
6
  const inversify_1 = require("@theia/core/shared/inversify");
21
7
  const common_1 = require("@theia/ai-chat/lib/common");
22
8
  const react_1 = require("@theia/core/shared/react");
23
- const React = require("@theia/core/shared/react");
24
9
  const markdownit = require("@theia/core/shared/markdown-it");
25
10
  const markdownitemoji = require("@theia/core/shared/markdown-it-emoji");
26
11
  const DOMPurify = require("@theia/core/shared/dompurify");
@@ -33,7 +18,7 @@ const block_external_resources_1 = require("./block-external-resources");
33
18
  */
34
19
  const MarkdownRender = ({ text, openerService, className }) => {
35
20
  const ref = (0, exports.useMarkdownRendering)(text, openerService);
36
- return React.createElement("div", { className: className, ref: ref });
21
+ return (0, jsx_runtime_1.jsx)("div", { className: className, ref: ref });
37
22
  };
38
23
  exports.MarkdownRender = MarkdownRender;
39
24
  let MarkdownPartRenderer = class MarkdownPartRenderer {
@@ -56,7 +41,7 @@ let MarkdownPartRenderer = class MarkdownPartRenderer {
56
41
  // eslint-disable-next-line no-null/no-null
57
42
  return null;
58
43
  }
59
- return React.createElement(exports.MarkdownRender, { text: response.content, openerService: this.openerService });
44
+ return (0, jsx_runtime_1.jsx)(exports.MarkdownRender, { text: response.content, openerService: this.openerService });
60
45
  }
61
46
  };
62
47
  exports.MarkdownPartRenderer = MarkdownPartRenderer;
@@ -1 +1 @@
1
- {"version":3,"file":"markdown-part-renderer.js","sourceRoot":"","sources":["../../../src/browser/chat-response-renderer/markdown-part-renderer.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"markdown-part-renderer.js","sourceRoot":"","sources":["../../../src/browser/chat-response-renderer/markdown-part-renderer.tsx"],"names":[],"mappings":"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"}
@@ -1,4 +1,6 @@
1
1
  "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const jsx_runtime_1 = require("@theia/core/shared/react/jsx-runtime");
2
4
  // *****************************************************************************
3
5
  // Copyright (C) 2026 EclipseSource GmbH.
4
6
  //
@@ -14,11 +16,9 @@
14
16
  //
15
17
  // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
16
18
  // *****************************************************************************
17
- Object.defineProperty(exports, "__esModule", { value: true });
18
19
  const jsdom_1 = require("@theia/core/lib/browser/test/jsdom");
19
20
  let disableJSDOM = (0, jsdom_1.enableJSDOM)();
20
21
  const chai_1 = require("chai");
21
- const React = require("@theia/core/shared/react");
22
22
  const client_1 = require("@theia/core/shared/react-dom/client");
23
23
  const markdown_part_renderer_1 = require("./markdown-part-renderer");
24
24
  const block_external_resources_1 = require("./block-external-resources");
@@ -33,11 +33,11 @@ describe('useMarkdownRendering', () => {
33
33
  };
34
34
  const Markdown = ({ markdown, eventHandler }) => {
35
35
  const ref = (0, markdown_part_renderer_1.useMarkdownRendering)(markdown, openerService, false, eventHandler);
36
- return React.createElement("div", { ref: ref });
36
+ return (0, jsx_runtime_1.jsx)("div", { ref: ref });
37
37
  };
38
38
  const TrustedMarkdown = ({ markdown }) => {
39
39
  const ref = (0, markdown_part_renderer_1.useMarkdownRendering)(markdown, openerService, false, undefined, false);
40
- return React.createElement("div", { ref: ref });
40
+ return (0, jsx_runtime_1.jsx)("div", { ref: ref });
41
41
  };
42
42
  before(() => disableJSDOM = (0, jsdom_1.enableJSDOM)());
43
43
  after(() => disableJSDOM());
@@ -51,7 +51,7 @@ describe('useMarkdownRendering', () => {
51
51
  document.body.removeChild(container);
52
52
  });
53
53
  it('blocks external markdown images before they are mounted', done => {
54
- root.render(React.createElement(Markdown, { markdown: "![](https://evil.com/x.gif)" }));
54
+ root.render((0, jsx_runtime_1.jsx)(Markdown, { markdown: "![](https://evil.com/x.gif)" }));
55
55
  setTimeout(() => {
56
56
  (0, chai_1.expect)(container.querySelector(`.${block_external_resources_1.BLOCKED_RESOURCE_CLASS}`)).to.exist;
57
57
  (0, chai_1.expect)(container.querySelector('img')).to.be.null;
@@ -59,7 +59,7 @@ describe('useMarkdownRendering', () => {
59
59
  }, 50);
60
60
  });
61
61
  it('allows a blocked resource after explicit user action', done => {
62
- root.render(React.createElement(Markdown, { markdown: "![](https://evil.com/x.gif)" }));
62
+ root.render((0, jsx_runtime_1.jsx)(Markdown, { markdown: "![](https://evil.com/x.gif)" }));
63
63
  setTimeout(() => {
64
64
  const allow = container.querySelector(`.${block_external_resources_1.BLOCKED_RESOURCE_ALLOW_CLASS}`);
65
65
  (0, chai_1.expect)(allow).to.exist;
@@ -78,7 +78,7 @@ describe('useMarkdownRendering', () => {
78
78
  return true;
79
79
  }
80
80
  };
81
- root.render(React.createElement(Markdown, { markdown: "![](https://evil.com/x.gif)", eventHandler: eventHandler }));
81
+ root.render((0, jsx_runtime_1.jsx)(Markdown, { markdown: "![](https://evil.com/x.gif)", eventHandler: eventHandler }));
82
82
  setTimeout(() => {
83
83
  const allow = container.querySelector(`.${block_external_resources_1.BLOCKED_RESOURCE_ALLOW_CLASS}`);
84
84
  (0, chai_1.expect)(allow).to.exist;
@@ -93,7 +93,7 @@ describe('useMarkdownRendering', () => {
93
93
  it('does not restore forged blocked-resource placeholders', done => {
94
94
  const forgedPlaceholder = '<span class="theia-blocked-resource" data-blocked-html="&lt;img src=x onerror=alert(1)&gt;">'
95
95
  + '<button class="theia-blocked-resource-allow">Allow this resource</button></span>';
96
- root.render(React.createElement(Markdown, { markdown: forgedPlaceholder }));
96
+ root.render((0, jsx_runtime_1.jsx)(Markdown, { markdown: forgedPlaceholder }));
97
97
  setTimeout(() => {
98
98
  const allow = container.querySelector(`.${block_external_resources_1.BLOCKED_RESOURCE_ALLOW_CLASS}`);
99
99
  (0, chai_1.expect)(allow).to.exist;
@@ -104,7 +104,7 @@ describe('useMarkdownRendering', () => {
104
104
  }, 50);
105
105
  });
106
106
  it('renders external resources directly when blocking is disabled', done => {
107
- root.render(React.createElement(TrustedMarkdown, { markdown: "![](https://evil.com/x.gif)" }));
107
+ root.render((0, jsx_runtime_1.jsx)(TrustedMarkdown, { markdown: "![](https://evil.com/x.gif)" }));
108
108
  setTimeout(() => {
109
109
  (0, chai_1.expect)(container.querySelector(`.${block_external_resources_1.BLOCKED_RESOURCE_CLASS}`)).to.be.null;
110
110
  (0, chai_1.expect)(container.querySelector('img')?.getAttribute('src')).to.equal('https://evil.com/x.gif');
@@ -112,7 +112,7 @@ describe('useMarkdownRendering', () => {
112
112
  }, 50);
113
113
  });
114
114
  it('shows blocked placeholders for iframe markdown', done => {
115
- root.render(React.createElement(Markdown, { markdown: '<iframe src="https://evil.com"></iframe>' }));
115
+ root.render((0, jsx_runtime_1.jsx)(Markdown, { markdown: '<iframe src="https://evil.com"></iframe>' }));
116
116
  setTimeout(() => {
117
117
  const placeholder = container.querySelector(`.${block_external_resources_1.BLOCKED_RESOURCE_CLASS}`);
118
118
  (0, chai_1.expect)(placeholder).to.exist;
@@ -122,7 +122,7 @@ describe('useMarkdownRendering', () => {
122
122
  }, 50);
123
123
  });
124
124
  it('sandboxes allowed iframes with inline content', done => {
125
- root.render(React.createElement(Markdown, { markdown: '<iframe srcdoc="&lt;img src=x onerror=alert(1)&gt;"></iframe>' }));
125
+ root.render((0, jsx_runtime_1.jsx)(Markdown, { markdown: '<iframe srcdoc="&lt;img src=x onerror=alert(1)&gt;"></iframe>' }));
126
126
  setTimeout(() => {
127
127
  const allow = container.querySelector(`.${block_external_resources_1.BLOCKED_RESOURCE_ALLOW_CLASS}`);
128
128
  (0, chai_1.expect)(allow).to.exist;
@@ -134,7 +134,7 @@ describe('useMarkdownRendering', () => {
134
134
  }, 50);
135
135
  });
136
136
  it('shows blocked placeholders for SVG resource markdown', done => {
137
- root.render(React.createElement(Markdown, { markdown: '<svg><image href="https://evil.com/x.png"></image></svg>' }));
137
+ root.render((0, jsx_runtime_1.jsx)(Markdown, { markdown: '<svg><image href="https://evil.com/x.png"></image></svg>' }));
138
138
  setTimeout(() => {
139
139
  const placeholder = container.querySelector(`.${block_external_resources_1.BLOCKED_RESOURCE_CLASS}`);
140
140
  (0, chai_1.expect)(placeholder).to.exist;
@@ -144,7 +144,7 @@ describe('useMarkdownRendering', () => {
144
144
  }, 50);
145
145
  });
146
146
  it('shows blocked placeholders for style sheets importing external CSS', done => {
147
- root.render(React.createElement(Markdown, { markdown: 'some text\n\n<style>@import url("https://evil.com/main.css");</style>\n<div class="App">content</div>' }));
147
+ root.render((0, jsx_runtime_1.jsx)(Markdown, { markdown: 'some text\n\n<style>@import url("https://evil.com/main.css");</style>\n<div class="App">content</div>' }));
148
148
  setTimeout(() => {
149
149
  const placeholder = container.querySelector(`.${block_external_resources_1.BLOCKED_RESOURCE_CLASS}`);
150
150
  (0, chai_1.expect)(placeholder).to.exist;
@@ -154,7 +154,7 @@ describe('useMarkdownRendering', () => {
154
154
  }, 50);
155
155
  });
156
156
  it('shows blocked placeholders for SVG filter image markdown', done => {
157
- root.render(React.createElement(Markdown, { markdown: '<svg><filter><feImage href="https://evil.com/filter.png"></feImage></filter></svg>' }));
157
+ root.render((0, jsx_runtime_1.jsx)(Markdown, { markdown: '<svg><filter><feImage href="https://evil.com/filter.png"></feImage></filter></svg>' }));
158
158
  setTimeout(() => {
159
159
  const placeholder = container.querySelector(`.${block_external_resources_1.BLOCKED_RESOURCE_CLASS}`);
160
160
  (0, chai_1.expect)(placeholder).to.exist;
@@ -1 +1 @@
1
- {"version":3,"file":"markdown-part-renderer.spec.js","sourceRoot":"","sources":["../../../src/browser/chat-response-renderer/markdown-part-renderer.spec.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"markdown-part-renderer.spec.js","sourceRoot":"","sources":["../../../src/browser/chat-response-renderer/markdown-part-renderer.spec.tsx"],"names":[],"mappings":";;;AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;AAEhF,8DAAiE;AAEjE,IAAI,YAAY,GAAG,IAAA,mBAAW,GAAE,CAAC;AAEjC,+BAA8B;AAC9B,gEAAuE;AAEvE,qEAAmG;AACnG,yEAAkG;AAElG,YAAY,EAAE,CAAC;AAEf,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IAClC,IAAI,SAAsB,CAAC;IAC3B,IAAI,IAAU,CAAC;IACf,MAAM,aAAa,GAAkB;QACjC,SAAS,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,SAAS,EAAE,CAAC;QACxD,UAAU,EAAE,KAAK,IAAI,EAAE,CAAC,EAAE;QAC1B,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,SAAS;KACF,CAAC;IAE9B,MAAM,QAAQ,GAAG,CAAC,EAAE,QAAQ,EAAE,YAAY,EAA0E,EAAE,EAAE;QACpH,MAAM,GAAG,GAAG,IAAA,6CAAoB,EAAC,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;QAC/E,OAAO,gCAAK,GAAG,EAAE,GAAG,GAAQ,CAAC;IACjC,CAAC,CAAC;IAEF,MAAM,eAAe,GAAG,CAAC,EAAE,QAAQ,EAAwB,EAAE,EAAE;QAC3D,MAAM,GAAG,GAAG,IAAA,6CAAoB,EAAC,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QACnF,OAAO,gCAAK,GAAG,EAAE,GAAG,GAAQ,CAAC;IACjC,CAAC,CAAC;IAEF,MAAM,CAAC,GAAG,EAAE,CAAC,YAAY,GAAG,IAAA,mBAAW,GAAE,CAAC,CAAC;IAC3C,KAAK,CAAC,GAAG,EAAE,CAAC,YAAY,EAAE,CAAC,CAAC;IAE5B,UAAU,CAAC,GAAG,EAAE;QACZ,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC1C,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QACrC,IAAI,GAAG,IAAA,mBAAU,EAAC,SAAS,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yDAAyD,EAAE,IAAI,CAAC,EAAE;QACjE,IAAI,CAAC,MAAM,CAAC,uBAAC,QAAQ,IAAC,QAAQ,EAAC,6BAA6B,GAAG,CAAC,CAAC;QAEjE,UAAU,CAAC,GAAG,EAAE;YACZ,IAAA,aAAM,EAAC,SAAS,CAAC,aAAa,CAAC,IAAI,iDAAsB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;YACvE,IAAA,aAAM,EAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;YAClD,IAAI,EAAE,CAAC;QACX,CAAC,EAAE,EAAE,CAAC,CAAC;IACX,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,IAAI,CAAC,EAAE;QAC9D,IAAI,CAAC,MAAM,CAAC,uBAAC,QAAQ,IAAC,QAAQ,EAAC,6BAA6B,GAAG,CAAC,CAAC;QAEjE,UAAU,CAAC,GAAG,EAAE;YACZ,MAAM,KAAK,GAAG,SAAS,CAAC,aAAa,CAAC,IAAI,uDAA4B,EAAE,CAAsB,CAAC;YAC/F,IAAA,aAAM,EAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;YAEvB,KAAK,CAAC,aAAa,CAAC,IAAI,UAAU,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YAEhE,MAAM,KAAK,GAAG,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC7C,IAAA,aAAM,EAAC,SAAS,CAAC,aAAa,CAAC,IAAI,iDAAsB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;YACzE,IAAA,aAAM,EAAC,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;YACtE,IAAI,EAAE,CAAC;QACX,CAAC,EAAE,EAAE,CAAC,CAAC;IACX,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,IAAI,CAAC,EAAE;QAC3D,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,MAAM,YAAY,GAAsC;YACpD,WAAW,EAAE,GAAG,EAAE;gBACd,OAAO,GAAG,IAAI,CAAC;gBACf,OAAO,IAAI,CAAC;YAChB,CAAC;SACJ,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,uBAAC,QAAQ,IAAC,QAAQ,EAAC,6BAA6B,EAAC,YAAY,EAAE,YAAY,GAAI,CAAC,CAAC;QAE7F,UAAU,CAAC,GAAG,EAAE;YACZ,MAAM,KAAK,GAAG,SAAS,CAAC,aAAa,CAAC,IAAI,uDAA4B,EAAE,CAAsB,CAAC;YAC/F,IAAA,aAAM,EAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;YAEvB,KAAK,CAAC,aAAa,CAAC,IAAI,UAAU,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YAEhE,MAAM,KAAK,GAAG,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC7C,IAAA,aAAM,EAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;YAC5B,IAAA,aAAM,EAAC,SAAS,CAAC,aAAa,CAAC,IAAI,iDAAsB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;YACzE,IAAA,aAAM,EAAC,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;YACtE,IAAI,EAAE,CAAC;QACX,CAAC,EAAE,EAAE,CAAC,CAAC;IACX,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,IAAI,CAAC,EAAE;QAC/D,MAAM,iBAAiB,GAAG,8FAA8F;cAClH,kFAAkF,CAAC;QACzF,IAAI,CAAC,MAAM,CAAC,uBAAC,QAAQ,IAAC,QAAQ,EAAE,iBAAiB,GAAI,CAAC,CAAC;QAEvD,UAAU,CAAC,GAAG,EAAE;YACZ,MAAM,KAAK,GAAG,SAAS,CAAC,aAAa,CAAC,IAAI,uDAA4B,EAAE,CAAsB,CAAC;YAC/F,IAAA,aAAM,EAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;YAEvB,KAAK,CAAC,aAAa,CAAC,IAAI,UAAU,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YAEhE,IAAA,aAAM,EAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;YAClD,IAAA,aAAM,EAAC,SAAS,CAAC,aAAa,CAAC,IAAI,iDAAsB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;YACvE,IAAI,EAAE,CAAC;QACX,CAAC,EAAE,EAAE,CAAC,CAAC;IACX,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+DAA+D,EAAE,IAAI,CAAC,EAAE;QACvE,IAAI,CAAC,MAAM,CAAC,uBAAC,eAAe,IAAC,QAAQ,EAAC,6BAA6B,GAAG,CAAC,CAAC;QAExE,UAAU,CAAC,GAAG,EAAE;YACZ,IAAA,aAAM,EAAC,SAAS,CAAC,aAAa,CAAC,IAAI,iDAAsB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;YACzE,IAAA,aAAM,EAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;YAC/F,IAAI,EAAE,CAAC;QACX,CAAC,EAAE,EAAE,CAAC,CAAC;IACX,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,IAAI,CAAC,EAAE;QACxD,IAAI,CAAC,MAAM,CAAC,uBAAC,QAAQ,IAAC,QAAQ,EAAE,0CAA0C,GAAI,CAAC,CAAC;QAEhF,UAAU,CAAC,GAAG,EAAE;YACZ,MAAM,WAAW,GAAG,SAAS,CAAC,aAAa,CAAC,IAAI,iDAAsB,EAAE,CAAC,CAAC;YAC1E,IAAA,aAAM,EAAC,WAAW,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;YAC7B,IAAA,aAAM,EAAC,WAAW,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;YAChE,IAAA,aAAM,EAAC,SAAS,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;YACrD,IAAI,EAAE,CAAC;QACX,CAAC,EAAE,EAAE,CAAC,CAAC;IACX,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,IAAI,CAAC,EAAE;QACvD,IAAI,CAAC,MAAM,CAAC,uBAAC,QAAQ,IAAC,QAAQ,EAAE,+DAA+D,GAAI,CAAC,CAAC;QAErG,UAAU,CAAC,GAAG,EAAE;YACZ,MAAM,KAAK,GAAG,SAAS,CAAC,aAAa,CAAC,IAAI,uDAA4B,EAAE,CAAsB,CAAC;YAC/F,IAAA,aAAM,EAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;YAEvB,KAAK,CAAC,aAAa,CAAC,IAAI,UAAU,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YAEhE,MAAM,MAAM,GAAG,SAAS,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YACjD,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;YACxB,IAAA,aAAM,EAAC,MAAM,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACrD,IAAI,EAAE,CAAC;QACX,CAAC,EAAE,EAAE,CAAC,CAAC;IACX,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,IAAI,CAAC,EAAE;QAC9D,IAAI,CAAC,MAAM,CAAC,uBAAC,QAAQ,IAAC,QAAQ,EAAE,0DAA0D,GAAI,CAAC,CAAC;QAEhG,UAAU,CAAC,GAAG,EAAE;YACZ,MAAM,WAAW,GAAG,SAAS,CAAC,aAAa,CAAC,IAAI,iDAAsB,EAAE,CAAC,CAAC;YAC1E,IAAA,aAAM,EAAC,WAAW,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;YAC7B,IAAA,aAAM,EAAC,WAAW,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC;YACtE,IAAA,aAAM,EAAC,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;YACpD,IAAI,EAAE,CAAC;QACX,CAAC,EAAE,EAAE,CAAC,CAAC;IACX,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oEAAoE,EAAE,IAAI,CAAC,EAAE;QAC5E,IAAI,CAAC,MAAM,CAAC,uBAAC,QAAQ,IAAC,QAAQ,EAAE,uGAAuG,GAAI,CAAC,CAAC;QAE7I,UAAU,CAAC,GAAG,EAAE;YACZ,MAAM,WAAW,GAAG,SAAS,CAAC,aAAa,CAAC,IAAI,iDAAsB,EAAE,CAAC,CAAC;YAC1E,IAAA,aAAM,EAAC,WAAW,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;YAC7B,IAAA,aAAM,EAAC,WAAW,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;YACzE,IAAA,aAAM,EAAC,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;YACpD,IAAI,EAAE,CAAC;QACX,CAAC,EAAE,EAAE,CAAC,CAAC;IACX,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0DAA0D,EAAE,IAAI,CAAC,EAAE;QAClE,IAAI,CAAC,MAAM,CAAC,uBAAC,QAAQ,IAAC,QAAQ,EAAE,oFAAoF,GAAI,CAAC,CAAC;QAE1H,UAAU,CAAC,GAAG,EAAE;YACZ,MAAM,WAAW,GAAG,SAAS,CAAC,aAAa,CAAC,IAAI,iDAAsB,EAAE,CAAC,CAAC;YAC1E,IAAA,aAAM,EAAC,WAAW,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;YAC7B,IAAA,aAAM,EAAC,WAAW,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC;YAC3E,IAAA,aAAM,EAAC,SAAS,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;YACtD,IAAI,EAAE,CAAC;QACX,CAAC,EAAE,EAAE,CAAC,CAAC;IACX,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -0,0 +1,12 @@
1
+ import * as React from '@theia/core/shared/react';
2
+ export interface McpAppFrameProps {
3
+ html: string;
4
+ title?: string;
5
+ }
6
+ /**
7
+ * Builds the `srcDoc` for the sandboxed iframe by injecting a CSP meta tag and a resize-reporting script.
8
+ * Exported for testability.
9
+ */
10
+ export declare function buildSrcDoc(html: string): string;
11
+ export declare const McpAppFrame: React.FC<McpAppFrameProps>;
12
+ //# sourceMappingURL=mcp-app-frame.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-app-frame.d.ts","sourceRoot":"","sources":["../../../src/browser/chat-response-renderer/mcp-app-frame.tsx"],"names":[],"mappings":"AAgBA,OAAO,KAAK,KAAK,MAAM,0BAA0B,CAAC;AAElD,MAAM,WAAW,gBAAgB;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAcD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAiBhD;AAED,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAoClD,CAAC"}
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.McpAppFrame = void 0;
4
+ exports.buildSrcDoc = buildSrcDoc;
5
+ const jsx_runtime_1 = require("@theia/core/shared/react/jsx-runtime");
6
+ // *****************************************************************************
7
+ // Copyright (C) 2026 Ericsson and others.
8
+ //
9
+ // This program and the accompanying materials are made available under the
10
+ // terms of the Eclipse Public License v. 2.0 which is available at
11
+ // http://www.eclipse.org/legal/epl-2.0.
12
+ //
13
+ // This Source Code may also be made available under the following Secondary
14
+ // Licenses when the conditions for such availability set forth in the Eclipse
15
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
16
+ // with the GNU Classpath Exception which is available at
17
+ // https://www.gnu.org/software/classpath/license.html.
18
+ //
19
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
20
+ // *****************************************************************************
21
+ const React = require("@theia/core/shared/react");
22
+ /** Maximum height the iframe can grow to (px). Consistent with the mermaid renderer viewport cap. */
23
+ const MAX_HEIGHT = 800;
24
+ const CSP_META = '<meta http-equiv="Content-Security-Policy" ' +
25
+ 'content="default-src \'none\'; script-src \'unsafe-inline\'; style-src \'unsafe-inline\'; img-src data: blob:; font-src data:; connect-src \'none\';">';
26
+ const RESIZE_SCRIPT = `<script>
27
+ new ResizeObserver(() => {
28
+ window.parent.postMessage({ type: 'mcp-app-resize', height: document.documentElement.scrollHeight }, '*');
29
+ }).observe(document.documentElement);
30
+ </script>`;
31
+ /**
32
+ * Builds the `srcDoc` for the sandboxed iframe by injecting a CSP meta tag and a resize-reporting script.
33
+ * Exported for testability.
34
+ */
35
+ function buildSrcDoc(html) {
36
+ let doc = html;
37
+ // Inject CSP meta tag into <head> if present (tolerant of attributes and casing), otherwise prepend it.
38
+ if (/<head[\s>]/i.test(doc)) {
39
+ doc = doc.replace(/<head[\s>]/i, match => `${match}${CSP_META}`);
40
+ }
41
+ else if (doc.includes('<html')) {
42
+ doc = doc.replace(/(<html[^>]*>)/, `$1<head>${CSP_META}</head>`);
43
+ }
44
+ else {
45
+ doc = `${CSP_META}${doc}`;
46
+ }
47
+ // Inject resize script before </body> if present, otherwise append it.
48
+ if (doc.includes('</body>')) {
49
+ doc = doc.replace('</body>', `${RESIZE_SCRIPT}</body>`);
50
+ }
51
+ else {
52
+ doc = `${doc}${RESIZE_SCRIPT}`;
53
+ }
54
+ return doc;
55
+ }
56
+ const McpAppFrame = ({ html, title }) => {
57
+ // eslint-disable-next-line no-null/no-null
58
+ const iframeRef = React.useRef(null);
59
+ const [height, setHeight] = React.useState(200);
60
+ React.useEffect(() => {
61
+ const handler = (event) => {
62
+ if (iframeRef.current?.contentWindow === event.source &&
63
+ event.data?.type === 'mcp-app-resize' &&
64
+ typeof event.data.height === 'number') {
65
+ const h = event.data.height;
66
+ if (Number.isFinite(h) && h > 0) {
67
+ setHeight(Math.min(h, MAX_HEIGHT));
68
+ }
69
+ }
70
+ };
71
+ window.addEventListener('message', handler);
72
+ return () => window.removeEventListener('message', handler);
73
+ }, []);
74
+ const srcDoc = buildSrcDoc(html);
75
+ return ((0, jsx_runtime_1.jsxs)("div", { className: 'theia-mcp-app-container', children: [title && (0, jsx_runtime_1.jsx)("div", { className: 'theia-mcp-app-title', children: title }), (0, jsx_runtime_1.jsx)("iframe", { ref: iframeRef, srcDoc: srcDoc, sandbox: 'allow-scripts', allow: '', className: 'theia-mcp-app-iframe', style: { height: `${height}px` }, title: title ?? 'MCP App' })] }));
76
+ };
77
+ exports.McpAppFrame = McpAppFrame;
78
+ //# sourceMappingURL=mcp-app-frame.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-app-frame.js","sourceRoot":"","sources":["../../../src/browser/chat-response-renderer/mcp-app-frame.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=mcp-app-frame.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-app-frame.spec.d.ts","sourceRoot":"","sources":["../../../src/browser/chat-response-renderer/mcp-app-frame.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ // *****************************************************************************
3
+ // Copyright (C) 2026 Ericsson 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-only WITH Classpath-exception-2.0
16
+ // *****************************************************************************
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ const chai_1 = require("chai");
19
+ const mcp_app_frame_1 = require("./mcp-app-frame");
20
+ describe('McpAppFrame buildSrcDoc', () => {
21
+ it('injects CSP into <head> and resize script before </body>', () => {
22
+ const html = '<html><head><title>App</title></head><body><p>Hello</p></body></html>';
23
+ const result = (0, mcp_app_frame_1.buildSrcDoc)(html);
24
+ (0, chai_1.expect)(result).to.contain('Content-Security-Policy');
25
+ (0, chai_1.expect)(result).to.contain('mcp-app-resize');
26
+ (0, chai_1.expect)(result.indexOf('Content-Security-Policy')).to.be.lessThan(result.indexOf('</head>'));
27
+ (0, chai_1.expect)(result.indexOf('ResizeObserver')).to.be.lessThan(result.indexOf('</body>'));
28
+ });
29
+ it('handles <head> with attributes (e.g. <head lang="en">)', () => {
30
+ const html = '<html><head lang="en"><title>App</title></head><body><p>Hi</p></body></html>';
31
+ const result = (0, mcp_app_frame_1.buildSrcDoc)(html);
32
+ (0, chai_1.expect)(result).to.contain('Content-Security-Policy');
33
+ // Should not inject a second <head>
34
+ const headCount = (result.match(/<head/gi) || []).length;
35
+ (0, chai_1.expect)(headCount).to.equal(1);
36
+ });
37
+ it('handles uppercase <HEAD>', () => {
38
+ const html = '<html><HEAD><title>App</title></HEAD><body><p>Hi</p></body></html>';
39
+ const result = (0, mcp_app_frame_1.buildSrcDoc)(html);
40
+ (0, chai_1.expect)(result).to.contain('Content-Security-Policy');
41
+ const headCount = (result.match(/<head/gi) || []).length;
42
+ (0, chai_1.expect)(headCount).to.equal(1);
43
+ });
44
+ it('wraps CSP in a new <head> when only <html> is present', () => {
45
+ const html = '<html><body><p>No head</p></body></html>';
46
+ const result = (0, mcp_app_frame_1.buildSrcDoc)(html);
47
+ (0, chai_1.expect)(result).to.contain('<head>');
48
+ (0, chai_1.expect)(result).to.contain('Content-Security-Policy');
49
+ });
50
+ it('prepends CSP when no <html> or <head> present', () => {
51
+ const html = '<div>Simple content</div>';
52
+ const result = (0, mcp_app_frame_1.buildSrcDoc)(html);
53
+ (0, chai_1.expect)(result).to.match(/^<meta/);
54
+ (0, chai_1.expect)(result).to.contain('Content-Security-Policy');
55
+ (0, chai_1.expect)(result).to.contain('<div>Simple content</div>');
56
+ });
57
+ it('appends resize script when no </body> tag', () => {
58
+ const html = '<div>Simple content</div>';
59
+ const result = (0, mcp_app_frame_1.buildSrcDoc)(html);
60
+ (0, chai_1.expect)(result).to.contain('mcp-app-resize');
61
+ (0, chai_1.expect)(result.endsWith('</script>')).to.be.true;
62
+ });
63
+ it('handles empty html', () => {
64
+ const result = (0, mcp_app_frame_1.buildSrcDoc)('');
65
+ (0, chai_1.expect)(result).to.contain('Content-Security-Policy');
66
+ (0, chai_1.expect)(result).to.contain('mcp-app-resize');
67
+ });
68
+ it('preserves original html content', () => {
69
+ const html = '<html><head></head><body><h1>Title</h1><p>Content</p></body></html>';
70
+ const result = (0, mcp_app_frame_1.buildSrcDoc)(html);
71
+ (0, chai_1.expect)(result).to.contain('<h1>Title</h1>');
72
+ (0, chai_1.expect)(result).to.contain('<p>Content</p>');
73
+ });
74
+ it('CSP blocks connect-src', () => {
75
+ const result = (0, mcp_app_frame_1.buildSrcDoc)('<html><head></head><body></body></html>');
76
+ (0, chai_1.expect)(result).to.contain("connect-src 'none'");
77
+ });
78
+ });
79
+ //# sourceMappingURL=mcp-app-frame.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-app-frame.spec.js","sourceRoot":"","sources":["../../../src/browser/chat-response-renderer/mcp-app-frame.spec.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,0CAA0C;AAC1C,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;AAEhF,+BAA8B;AAC9B,mDAA8C;AAE9C,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;IAErC,EAAE,CAAC,0DAA0D,EAAE,GAAG,EAAE;QAChE,MAAM,IAAI,GAAG,uEAAuE,CAAC;QACrF,MAAM,MAAM,GAAG,IAAA,2BAAW,EAAC,IAAI,CAAC,CAAC;QACjC,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC;QACrD,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;QAC5C,IAAA,aAAM,EAAC,MAAM,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;QAC5F,IAAA,aAAM,EAAC,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;IACvF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;QAC9D,MAAM,IAAI,GAAG,8EAA8E,CAAC;QAC5F,MAAM,MAAM,GAAG,IAAA,2BAAW,EAAC,IAAI,CAAC,CAAC;QACjC,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC;QACrD,oCAAoC;QACpC,MAAM,SAAS,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QACzD,IAAA,aAAM,EAAC,SAAS,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;QAChC,MAAM,IAAI,GAAG,oEAAoE,CAAC;QAClF,MAAM,MAAM,GAAG,IAAA,2BAAW,EAAC,IAAI,CAAC,CAAC;QACjC,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC;QACrD,MAAM,SAAS,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QACzD,IAAA,aAAM,EAAC,SAAS,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAC7D,MAAM,IAAI,GAAG,0CAA0C,CAAC;QACxD,MAAM,MAAM,GAAG,IAAA,2BAAW,EAAC,IAAI,CAAC,CAAC;QACjC,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACpC,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACrD,MAAM,IAAI,GAAG,2BAA2B,CAAC;QACzC,MAAM,MAAM,GAAG,IAAA,2BAAW,EAAC,IAAI,CAAC,CAAC;QACjC,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAClC,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC;QACrD,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACjD,MAAM,IAAI,GAAG,2BAA2B,CAAC;QACzC,MAAM,MAAM,GAAG,IAAA,2BAAW,EAAC,IAAI,CAAC,CAAC;QACjC,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;QAC5C,IAAA,aAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAC1B,MAAM,MAAM,GAAG,IAAA,2BAAW,EAAC,EAAE,CAAC,CAAC;QAC/B,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC;QACrD,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QACvC,MAAM,IAAI,GAAG,qEAAqE,CAAC;QACnF,MAAM,MAAM,GAAG,IAAA,2BAAW,EAAC,IAAI,CAAC,CAAC;QACjC,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;QAC5C,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;QAC9B,MAAM,MAAM,GAAG,IAAA,2BAAW,EAAC,yCAAyC,CAAC,CAAC;QACtE,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"mermaid-part-renderer.d.ts","sourceRoot":"","sources":["../../../src/browser/chat-response-renderer/mermaid-part-renderer.tsx"],"names":[],"mappings":"AAgBA,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACzF,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAG/D,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kDAAkD,CAAC;AACxF,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AAMvE;;;;;;;GAOG;AACH,qBACa,mBAAoB,YAAW,wBAAwB,CAAC,uBAAuB,CAAC;IAGzF,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,oBAAoB,CAAC;IAGxD,SAAS,CAAC,QAAQ,CAAC,wBAAwB,EAAE,wBAAwB,CAAC;IAGtE,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IAG9C,SAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IAEtD,SAAS,CAAC,QAAQ,EAAE,mBAAmB,GAAG,MAAM;IAOhD,MAAM,CAAC,QAAQ,EAAE,uBAAuB,EAAE,UAAU,EAAE,YAAY,GAAG,SAAS;CAYjF"}
1
+ {"version":3,"file":"mermaid-part-renderer.d.ts","sourceRoot":"","sources":["../../../src/browser/chat-response-renderer/mermaid-part-renderer.tsx"],"names":[],"mappings":"AAgBA,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACzF,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAE/D,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kDAAkD,CAAC;AACxF,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AAMvE;;;;;;;GAOG;AACH,qBACa,mBAAoB,YAAW,wBAAwB,CAAC,uBAAuB,CAAC;IAGzF,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,oBAAoB,CAAC;IAGxD,SAAS,CAAC,QAAQ,CAAC,wBAAwB,EAAE,wBAAwB,CAAC;IAGtE,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IAG9C,SAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IAEtD,SAAS,CAAC,QAAQ,EAAE,mBAAmB,GAAG,MAAM;IAOhD,MAAM,CAAC,QAAQ,EAAE,uBAAuB,EAAE,UAAU,EAAE,YAAY,GAAG,SAAS;CAYjF"}
@@ -1,4 +1,8 @@
1
1
  "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MermaidPartRenderer = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const jsx_runtime_1 = require("@theia/core/shared/react/jsx-runtime");
2
6
  // *****************************************************************************
3
7
  // Copyright (C) 2026 EclipseSource GmbH.
4
8
  //
@@ -14,15 +18,11 @@
14
18
  //
15
19
  // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
16
20
  // *****************************************************************************
17
- Object.defineProperty(exports, "__esModule", { value: true });
18
- exports.MermaidPartRenderer = void 0;
19
- const tslib_1 = require("tslib");
20
21
  const common_1 = require("@theia/ai-chat/lib/common");
21
22
  const core_1 = require("@theia/core");
22
23
  const clipboard_service_1 = require("@theia/core/lib/browser/clipboard-service");
23
24
  const theming_1 = require("@theia/core/lib/browser/theming");
24
25
  const inversify_1 = require("@theia/core/shared/inversify");
25
- const React = require("@theia/core/shared/react");
26
26
  const monaco_editor_provider_1 = require("@theia/monaco/lib/browser/monaco-editor-provider");
27
27
  const mermaid_rendering_1 = require("./mermaid-rendering");
28
28
  /** Priority returned by {@link MermaidPartRenderer.canHandle}. Must exceed the {@link CodePartRenderer} priority (10). */
@@ -43,7 +43,7 @@ let MermaidPartRenderer = class MermaidPartRenderer {
43
43
  return -1;
44
44
  }
45
45
  render(response, parentNode) {
46
- return (React.createElement(mermaid_rendering_1.MermaidViewer, { code: response.code, isComplete: parentNode.response.isComplete, themeService: this.themeService, clipboardService: this.clipboardService, editorProvider: this.editorProvider, untitledResourceResolver: this.untitledResourceResolver }));
46
+ return ((0, jsx_runtime_1.jsx)(mermaid_rendering_1.MermaidViewer, { code: response.code, isComplete: parentNode.response.isComplete, themeService: this.themeService, clipboardService: this.clipboardService, editorProvider: this.editorProvider, untitledResourceResolver: this.untitledResourceResolver }));
47
47
  }
48
48
  };
49
49
  exports.MermaidPartRenderer = MermaidPartRenderer;
@@ -1 +1 @@
1
- {"version":3,"file":"mermaid-part-renderer.js","sourceRoot":"","sources":["../../../src/browser/chat-response-renderer/mermaid-part-renderer.tsx"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;;AAEhF,sDAAyF;AACzF,sCAAuD;AACvD,iFAA6E;AAC7E,6DAA+D;AAC/D,4DAAkE;AAClE,kDAAkD;AAElD,6FAAwF;AAGxF,2DAAoD;AAEpD,0HAA0H;AAC1H,MAAM,yBAAyB,GAAG,EAAE,CAAC;AAErC;;;;;;;GAOG;AAEI,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;IAc5B,SAAS,CAAC,QAA6B;QACnC,IAAI,gCAAuB,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,QAAQ,EAAE,WAAW,EAAE,KAAK,SAAS,EAAE,CAAC;YACzF,OAAO,yBAAyB,CAAC;QACrC,CAAC;QACD,OAAO,CAAC,CAAC,CAAC;IACd,CAAC;IAED,MAAM,CAAC,QAAiC,EAAE,UAAwB;QAC9D,OAAO,CACH,oBAAC,iCAAa,IACV,IAAI,EAAE,QAAQ,CAAC,IAAI,EACnB,UAAU,EAAE,UAAU,CAAC,QAAQ,CAAC,UAAU,EAC1C,YAAY,EAAE,IAAI,CAAC,YAAY,EAC/B,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EACvC,cAAc,EAAE,IAAI,CAAC,cAAc,EACnC,wBAAwB,EAAE,IAAI,CAAC,wBAAwB,GACzD,CACL,CAAC;IACN,CAAC;CACJ,CAAA;AAjCY,kDAAmB;AAGT;IADlB,IAAA,kBAAM,EAAC,6CAAoB,CAAC;sCACM,6CAAoB;2DAAC;AAGrC;IADlB,IAAA,kBAAM,EAAC,+BAAwB,CAAC;sCACY,+BAAwB;qEAAC;AAGnD;IADlB,IAAA,kBAAM,EAAC,sBAAY,CAAC;sCACY,sBAAY;yDAAC;AAG3B;IADlB,IAAA,kBAAM,EAAC,oCAAgB,CAAC;;6DAC6B;8BAZ7C,mBAAmB;IAD/B,IAAA,sBAAU,GAAE;GACA,mBAAmB,CAiC/B"}
1
+ {"version":3,"file":"mermaid-part-renderer.js","sourceRoot":"","sources":["../../../src/browser/chat-response-renderer/mermaid-part-renderer.tsx"],"names":[],"mappings":";;;;;AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;AAEhF,sDAAyF;AACzF,sCAAuD;AACvD,iFAA6E;AAC7E,6DAA+D;AAC/D,4DAAkE;AAElE,6FAAwF;AAGxF,2DAAoD;AAEpD,0HAA0H;AAC1H,MAAM,yBAAyB,GAAG,EAAE,CAAC;AAErC;;;;;;;GAOG;AAEI,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;IAc5B,SAAS,CAAC,QAA6B;QACnC,IAAI,gCAAuB,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,QAAQ,EAAE,WAAW,EAAE,KAAK,SAAS,EAAE,CAAC;YACzF,OAAO,yBAAyB,CAAC;QACrC,CAAC;QACD,OAAO,CAAC,CAAC,CAAC;IACd,CAAC;IAED,MAAM,CAAC,QAAiC,EAAE,UAAwB;QAC9D,OAAO,CACH,uBAAC,iCAAa,IACV,IAAI,EAAE,QAAQ,CAAC,IAAI,EACnB,UAAU,EAAE,UAAU,CAAC,QAAQ,CAAC,UAAU,EAC1C,YAAY,EAAE,IAAI,CAAC,YAAY,EAC/B,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EACvC,cAAc,EAAE,IAAI,CAAC,cAAc,EACnC,wBAAwB,EAAE,IAAI,CAAC,wBAAwB,GACzD,CACL,CAAC;IACN,CAAC;CACJ,CAAA;AAjCY,kDAAmB;AAGT;IADlB,IAAA,kBAAM,EAAC,6CAAoB,CAAC;sCACM,6CAAoB;2DAAC;AAGrC;IADlB,IAAA,kBAAM,EAAC,+BAAwB,CAAC;sCACY,+BAAwB;qEAAC;AAGnD;IADlB,IAAA,kBAAM,EAAC,sBAAY,CAAC;sCACY,sBAAY;yDAAC;AAG3B;IADlB,IAAA,kBAAM,EAAC,oCAAgB,CAAC;;6DAC6B;8BAZ7C,mBAAmB;IAD/B,IAAA,sBAAU,GAAE;GACA,mBAAmB,CAiC/B"}
@@ -1,21 +1,7 @@
1
1
  "use strict";
2
- // *****************************************************************************
3
- // Copyright (C) 2026 EclipseSource GmbH.
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-only WITH Classpath-exception-2.0
16
- // *****************************************************************************
17
2
  Object.defineProperty(exports, "__esModule", { value: true });
18
3
  exports.MarkdownWithMermaid = exports.MermaidViewer = exports.splitMermaidSegments = exports.useThemeMode = exports.MermaidDiagram = exports.sanitizeDiagram = void 0;
4
+ const jsx_runtime_1 = require("@theia/core/shared/react/jsx-runtime");
19
5
  const os_1 = require("@theia/core/lib/common/os");
20
6
  const nls_1 = require("@theia/core/lib/common/nls");
21
7
  const theme_1 = require("@theia/core/lib/common/theme");
@@ -183,17 +169,15 @@ const MermaidDiagram = ({ code, themeMode, isComplete }) => {
183
169
  }, [code, themeMode]);
184
170
  if (svg) {
185
171
  // eslint-disable-next-line react/no-danger
186
- return React.createElement("div", { className: 'theia-MermaidViewer-diagram', dangerouslySetInnerHTML: { __html: svg } });
172
+ return (0, jsx_runtime_1.jsx)("div", { className: 'theia-MermaidViewer-diagram', dangerouslySetInnerHTML: { __html: svg } });
187
173
  }
188
174
  // Only show the error once the content is complete and rendering actually failed. Before that (initial async
189
175
  // render, or a still-streaming definition that cannot parse yet) show the "rendering" hint, so a freshly shown
190
176
  // diagram does not briefly flash the error message before it appears.
191
177
  if (error && isComplete) {
192
- return (React.createElement("div", { className: 'theia-MermaidViewer-error', title: error },
193
- React.createElement("span", { className: 'codicon codicon-warning' }),
194
- React.createElement("span", null, nls_1.nls.localize('theia/ai/chat-ui/mermaid-rendering/error', 'Unable to render the Mermaid diagram. Switch to the source view to inspect the definition.'))));
178
+ return ((0, jsx_runtime_1.jsxs)("div", { className: 'theia-MermaidViewer-error', title: error, children: [(0, jsx_runtime_1.jsx)("span", { className: 'codicon codicon-warning' }), (0, jsx_runtime_1.jsx)("span", { children: nls_1.nls.localize('theia/ai/chat-ui/mermaid-rendering/error', 'Unable to render the Mermaid diagram. Switch to the source view to inspect the definition.') })] }));
195
179
  }
196
- return React.createElement("div", { className: 'theia-MermaidViewer-status' }, nls_1.nls.localize('theia/ai/chat-ui/mermaid-rendering/rendering', 'Rendering diagram…'));
180
+ return (0, jsx_runtime_1.jsx)("div", { className: 'theia-MermaidViewer-status', children: nls_1.nls.localize('theia/ai/chat-ui/mermaid-rendering/rendering', 'Rendering diagram…') });
197
181
  };
198
182
  exports.MermaidDiagram = MermaidDiagram;
199
183
  /** Tracks the workbench theme mode (light/dark), re-rendering the consumer when the color theme changes. */
@@ -230,7 +214,7 @@ const splitMermaidSegments = (text) => {
230
214
  };
231
215
  exports.splitMermaidSegments = splitMermaidSegments;
232
216
  /** A small icon button (codicon) used in the diagram toolbar. */
233
- const ToolbarButton = ({ icon, title, onClick }) => React.createElement("div", { className: `action-label codicon codicon-${icon}`, title: title, role: 'button', onClick: onClick });
217
+ const ToolbarButton = ({ icon, title, onClick }) => (0, jsx_runtime_1.jsx)("div", { className: `action-label codicon codicon-${icon}`, title: title, role: 'button', onClick: onClick });
234
218
  /**
235
219
  * Hosts the rendered diagram. Expanded, it provides drag-to-pan and (Ctrl/Cmd +) wheel-to-zoom and is resizable via
236
220
  * CSS; collapsed, it shrinks to a thumbnail and a click expands it. It always keeps its children mounted - collapse,
@@ -275,8 +259,7 @@ const MermaidViewport = ({ scale, offset, onOffsetChange, onScaleChange, collaps
275
259
  element.addEventListener('wheel', onWheel, { passive: false });
276
260
  return () => element.removeEventListener('wheel', onWheel);
277
261
  }, [collapsed, onScaleChange]);
278
- return (React.createElement("div", { ref: viewportRef, className: `theia-MermaidViewer-viewport${collapsed ? ' collapsed' : ''}`, hidden: hidden, onPointerDown: onPointerDown, onPointerMove: onPointerMove, onPointerUp: onPointerUp, onPointerLeave: onPointerUp, onClick: collapsed ? onExpand : undefined },
279
- React.createElement("div", { className: 'theia-MermaidViewer-canvas', style: collapsed ? undefined : { transform: `translate(${offset.x}px, ${offset.y}px) scale(${scale})` } }, children)));
262
+ return ((0, jsx_runtime_1.jsx)("div", { ref: viewportRef, className: `theia-MermaidViewer-viewport${collapsed ? ' collapsed' : ''}`, hidden: hidden, onPointerDown: onPointerDown, onPointerMove: onPointerMove, onPointerUp: onPointerUp, onPointerLeave: onPointerUp, onClick: collapsed ? onExpand : undefined, children: (0, jsx_runtime_1.jsx)("div", { className: 'theia-MermaidViewer-canvas', style: collapsed ? undefined : { transform: `translate(${offset.x}px, ${offset.y}px) scale(${scale})` }, children: children }) }));
280
263
  };
281
264
  /**
282
265
  * A self-contained, reusable mermaid viewer: a toolbar (collapse, diagram/source toggle, zoom, copy), a pan/zoom
@@ -297,25 +280,12 @@ const MermaidViewer = ({ code, isComplete, themeService, clipboardService, edito
297
280
  const resetView = () => { setScale(1); setOffset({ x: 0, y: 0 }); };
298
281
  const copySource = () => clipboardService.writeText(code);
299
282
  const isDiagram = mode === 'diagram';
300
- const diagram = React.createElement(exports.MermaidDiagram, { code: code, themeMode: themeMode, isComplete: isComplete });
283
+ const diagram = (0, jsx_runtime_1.jsx)(exports.MermaidDiagram, { code: code, themeMode: themeMode, isComplete: isComplete });
301
284
  const wheelZoomHint = nls_1.nls.localize('theia/ai/chat-ui/mermaid-rendering/wheelZoomHint', '{0} + Scroll', os_1.isOSX ? 'Cmd' : 'Ctrl');
302
- return (React.createElement("div", { className: 'theia-MermaidViewer-root' },
303
- React.createElement("div", { className: 'theia-MermaidViewer-toolbar', role: 'button', title: collapsed ? nls_1.nls.localizeByDefault('Expand') : nls_1.nls.localizeByDefault('Collapse'), onClick: toggleCollapsed },
304
- React.createElement("span", { className: 'theia-MermaidViewer-title' }, nls_1.nls.localize('theia/ai/chat-ui/mermaid-rendering/title', 'Mermaid Diagram')),
305
- React.createElement("div", { className: 'theia-MermaidViewer-actions', onClick: stopPropagation },
306
- !collapsed && isDiagram && React.createElement(React.Fragment, null,
307
- React.createElement(ToolbarButton, { icon: 'zoom-in', title: `${nls_1.nls.localizeByDefault('Zoom In')} (${wheelZoomHint})`, onClick: zoomIn }),
308
- React.createElement(ToolbarButton, { icon: 'zoom-out', title: `${nls_1.nls.localizeByDefault('Zoom Out')} (${wheelZoomHint})`, onClick: zoomOut }),
309
- React.createElement(ToolbarButton, { icon: 'screen-normal', title: nls_1.nls.localize('theia/ai/chat-ui/mermaid-rendering/resetView', 'Reset View'), onClick: resetView })),
310
- React.createElement(ToolbarButton, { icon: 'copy', title: nls_1.nls.localize('theia/ai/chat-ui/mermaid-rendering/copySource', 'Copy Source'), onClick: copySource }),
311
- !collapsed && React.createElement(ToolbarButton, { icon: isDiagram ? 'code' : 'graph', title: isDiagram
312
- ? nls_1.nls.localize('theia/ai/chat-ui/mermaid-rendering/showSource', 'Show Source')
313
- : nls_1.nls.localize('theia/ai/chat-ui/mermaid-rendering/showDiagram', 'Show Diagram'), onClick: toggleMode }),
314
- React.createElement(ToolbarButton, { icon: collapsed ? 'chevron-down' : 'chevron-up', title: collapsed ? nls_1.nls.localizeByDefault('Expand') : nls_1.nls.localizeByDefault('Collapse'), onClick: toggleCollapsed }))),
315
- React.createElement(MermaidViewport, { scale: scale, offset: offset, onOffsetChange: setOffset, onScaleChange: setScale, collapsed: collapsed, hidden: !collapsed && !isDiagram, onExpand: expand }, diagram),
316
- !collapsed && !isDiagram &&
317
- React.createElement("div", { className: 'theia-MermaidViewer-source' },
318
- React.createElement(code_part_renderer_1.CodeWrapper, { content: code, editorProvider: editorProvider, untitledResourceResolver: untitledResourceResolver, contextMenuCallback: contextMenuCallback ?? (() => { }) }))));
285
+ return ((0, jsx_runtime_1.jsxs)("div", { className: 'theia-MermaidViewer-root', children: [(0, jsx_runtime_1.jsxs)("div", { className: 'theia-MermaidViewer-toolbar', role: 'button', title: collapsed ? nls_1.nls.localizeByDefault('Expand') : nls_1.nls.localizeByDefault('Collapse'), onClick: toggleCollapsed, children: [(0, jsx_runtime_1.jsx)("span", { className: 'theia-MermaidViewer-title', children: nls_1.nls.localize('theia/ai/chat-ui/mermaid-rendering/title', 'Mermaid Diagram') }), (0, jsx_runtime_1.jsxs)("div", { className: 'theia-MermaidViewer-actions', onClick: stopPropagation, children: [!collapsed && isDiagram && (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(ToolbarButton, { icon: 'zoom-in', title: `${nls_1.nls.localizeByDefault('Zoom In')} (${wheelZoomHint})`, onClick: zoomIn }), (0, jsx_runtime_1.jsx)(ToolbarButton, { icon: 'zoom-out', title: `${nls_1.nls.localizeByDefault('Zoom Out')} (${wheelZoomHint})`, onClick: zoomOut }), (0, jsx_runtime_1.jsx)(ToolbarButton, { icon: 'screen-normal', title: nls_1.nls.localize('theia/ai/chat-ui/mermaid-rendering/resetView', 'Reset View'), onClick: resetView })] }), (0, jsx_runtime_1.jsx)(ToolbarButton, { icon: 'copy', title: nls_1.nls.localize('theia/ai/chat-ui/mermaid-rendering/copySource', 'Copy Source'), onClick: copySource }), !collapsed && (0, jsx_runtime_1.jsx)(ToolbarButton, { icon: isDiagram ? 'code' : 'graph', title: isDiagram
286
+ ? nls_1.nls.localize('theia/ai/chat-ui/mermaid-rendering/showSource', 'Show Source')
287
+ : nls_1.nls.localize('theia/ai/chat-ui/mermaid-rendering/showDiagram', 'Show Diagram'), onClick: toggleMode }), (0, jsx_runtime_1.jsx)(ToolbarButton, { icon: collapsed ? 'chevron-down' : 'chevron-up', title: collapsed ? nls_1.nls.localizeByDefault('Expand') : nls_1.nls.localizeByDefault('Collapse'), onClick: toggleCollapsed })] })] }), (0, jsx_runtime_1.jsx)(MermaidViewport, { scale: scale, offset: offset, onOffsetChange: setOffset, onScaleChange: setScale, collapsed: collapsed, hidden: !collapsed && !isDiagram, onExpand: expand, children: diagram }), !collapsed && !isDiagram &&
288
+ (0, jsx_runtime_1.jsx)("div", { className: 'theia-MermaidViewer-source', children: (0, jsx_runtime_1.jsx)(code_part_renderer_1.CodeWrapper, { content: code, editorProvider: editorProvider, untitledResourceResolver: untitledResourceResolver, contextMenuCallback: contextMenuCallback ?? (() => { }) }) })] }));
319
289
  };
320
290
  exports.MermaidViewer = MermaidViewer;
321
291
  /**
@@ -330,9 +300,9 @@ exports.MermaidViewer = MermaidViewer;
330
300
  */
331
301
  const MarkdownWithMermaid = ({ content, openerService, themeService, clipboardService, editorProvider, untitledResourceResolver }) => {
332
302
  const segments = React.useMemo(() => (0, exports.splitMermaidSegments)(content).filter(segment => segment.type === 'mermaid' || segment.content.trim().length > 0), [content]);
333
- return React.createElement(React.Fragment, null, segments.map((segment, index) => segment.type === 'mermaid'
334
- ? React.createElement(exports.MermaidViewer, { key: index, code: segment.content, isComplete: true, themeService: themeService, clipboardService: clipboardService, editorProvider: editorProvider, untitledResourceResolver: untitledResourceResolver })
335
- : React.createElement(markdown_part_renderer_1.MarkdownRender, { key: index, text: segment.content, openerService: openerService })));
303
+ return (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: segments.map((segment, index) => segment.type === 'mermaid'
304
+ ? (0, jsx_runtime_1.jsx)(exports.MermaidViewer, { code: segment.content, isComplete: true, themeService: themeService, clipboardService: clipboardService, editorProvider: editorProvider, untitledResourceResolver: untitledResourceResolver }, index)
305
+ : (0, jsx_runtime_1.jsx)(markdown_part_renderer_1.MarkdownRender, { text: segment.content, openerService: openerService }, index)) });
336
306
  };
337
307
  exports.MarkdownWithMermaid = MarkdownWithMermaid;
338
308
  //# sourceMappingURL=mermaid-rendering.js.map