@theia/ai-chat-ui 1.75.0-next.46 → 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 (26) hide show
  1. package/lib/browser/ai-chat-ui-frontend-module.d.ts +1 -0
  2. package/lib/browser/ai-chat-ui-frontend-module.d.ts.map +1 -1
  3. package/lib/browser/ai-chat-ui-frontend-module.js +1 -0
  4. package/lib/browser/ai-chat-ui-frontend-module.js.map +1 -1
  5. package/lib/browser/chat-response-renderer/index.d.ts +1 -0
  6. package/lib/browser/chat-response-renderer/index.d.ts.map +1 -1
  7. package/lib/browser/chat-response-renderer/index.js +1 -0
  8. package/lib/browser/chat-response-renderer/index.js.map +1 -1
  9. package/lib/browser/chat-response-renderer/mcp-app-frame.d.ts +12 -0
  10. package/lib/browser/chat-response-renderer/mcp-app-frame.d.ts.map +1 -0
  11. package/lib/browser/chat-response-renderer/mcp-app-frame.js +78 -0
  12. package/lib/browser/chat-response-renderer/mcp-app-frame.js.map +1 -0
  13. package/lib/browser/chat-response-renderer/mcp-app-frame.spec.d.ts +2 -0
  14. package/lib/browser/chat-response-renderer/mcp-app-frame.spec.d.ts.map +1 -0
  15. package/lib/browser/chat-response-renderer/mcp-app-frame.spec.js +79 -0
  16. package/lib/browser/chat-response-renderer/mcp-app-frame.spec.js.map +1 -0
  17. package/lib/browser/chat-response-renderer/toolcall-result.d.ts.map +1 -1
  18. package/lib/browser/chat-response-renderer/toolcall-result.js +4 -0
  19. package/lib/browser/chat-response-renderer/toolcall-result.js.map +1 -1
  20. package/package.json +12 -12
  21. package/src/browser/ai-chat-ui-frontend-module.ts +1 -0
  22. package/src/browser/chat-response-renderer/index.ts +1 -0
  23. package/src/browser/chat-response-renderer/mcp-app-frame.spec.ts +87 -0
  24. package/src/browser/chat-response-renderer/mcp-app-frame.tsx +95 -0
  25. package/src/browser/chat-response-renderer/toolcall-result.tsx +6 -0
  26. package/src/browser/style/mcp-app-frame.css +34 -0
@@ -1,6 +1,7 @@
1
1
  import '../../src/browser/style/index.css';
2
2
  import '../../src/browser/style/tool-call-rendering.css';
3
3
  import '../../src/browser/style/mermaid-rendering.css';
4
+ import '../../src/browser/style/mcp-app-frame.css';
4
5
  import { ContainerModule } from '@theia/core/shared/inversify';
5
6
  declare const _default: ContainerModule;
6
7
  export default _default;
@@ -1 +1 @@
1
- {"version":3,"file":"ai-chat-ui-frontend-module.d.ts","sourceRoot":"","sources":["../../src/browser/ai-chat-ui-frontend-module.ts"],"names":[],"mappings":"AAgBA,OAAO,mCAAmC,CAAC;AAC3C,OAAO,iDAAiD,CAAC;AACzD,OAAO,+CAA+C,CAAC;AAIvD,OAAO,EAAE,eAAe,EAAc,MAAM,8BAA8B,CAAC;;AA2D3E,wBA2JG"}
1
+ {"version":3,"file":"ai-chat-ui-frontend-module.d.ts","sourceRoot":"","sources":["../../src/browser/ai-chat-ui-frontend-module.ts"],"names":[],"mappings":"AAgBA,OAAO,mCAAmC,CAAC;AAC3C,OAAO,iDAAiD,CAAC;AACzD,OAAO,+CAA+C,CAAC;AACvD,OAAO,2CAA2C,CAAC;AAInD,OAAO,EAAE,eAAe,EAAc,MAAM,8BAA8B,CAAC;;AA2D3E,wBA2JG"}
@@ -18,6 +18,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
18
18
  require("../../src/browser/style/index.css");
19
19
  require("../../src/browser/style/tool-call-rendering.css");
20
20
  require("../../src/browser/style/mermaid-rendering.css");
21
+ require("../../src/browser/style/mcp-app-frame.css");
21
22
  const core_1 = require("@theia/core");
22
23
  const browser_1 = require("@theia/core/lib/browser");
23
24
  const tab_bar_toolbar_1 = require("@theia/core/lib/browser/shell/tab-bar-toolbar");
@@ -1 +1 @@
1
- {"version":3,"file":"ai-chat-ui-frontend-module.js","sourceRoot":"","sources":["../../src/browser/ai-chat-ui-frontend-module.ts"],"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,6CAA2C;AAC3C,2DAAyD;AACzD,yDAAuD;AACvD,sCAAkG;AAClG,qDAAuI;AACvI,mFAA0F;AAC1F,4DAA2E;AAC3E,6EAAmF;AACnF,uEAA+D;AAC/D,2DAAkF;AAClF,mGAAsI;AACtI,+EAAyE;AACzE,qEAkBkC;AAClC,0FAAqF;AACrF,0FAIwD;AACxD,4FAAuF;AACvF,gIAA0H;AAC1H,qDAAwF;AACxF,kFAA4E;AAC5E,qEAAoE;AACpE,uFAAiF;AACjF,mEAAkE;AAClE,yDAAoD;AACpD,iEAA4D;AAC5D,6DAAwD;AACxD,mGAA4F;AAC5F,uEAAkE;AAClE,8FAAiH;AACjH,4FAAsF;AACtF,8FAAgK;AAChK,sEAAuF;AACvF,6DAA+D;AAC/D,uFAAiF;AACjF,iFAA2E;AAC3E,mFAA6E;AAC7E,yEAAmE;AACnE,uEAAkE;AAClE,2EAAmG;AACnG,iGAA2F;AAC3F,iFAA6I;AAC7I,2GAAqG;AACrG,qGAA+F;AAE/F,kBAAe,IAAI,2BAAe,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE;IACnE,IAAA,+CAAuB,EAAC,IAAI,CAAC,CAAC;IAE9B,IAAA,8BAAoB,EAAC,IAAI,EAAE,4CAAkB,CAAC,CAAC;IAC/C,IAAI,CAAC,yCAA+B,CAAC,CAAC,SAAS,CAAC,4CAAkB,CAAC,CAAC;IACpE,IAAI,CAAC,2CAAyB,CAAC,CAAC,SAAS,CAAC,4CAAkB,CAAC,CAAC;IAE9D,IAAI,CAAC,4CAAuB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAC1D,IAAI,CAAC,8DAA4B,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAC/D,IAAI,CAAC,0BAAmB,CAAC,CAAC,SAAS,CAAC,8DAA4B,CAAC,CAAC;IAClE,IAAI,CAAC,gCAAsB,CAAC,CAAC,SAAS,CAAC,8DAA4B,CAAC,CAAC;IAErE,IAAI,CAAC,gDAAqB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAExD,IAAI,CAAC,wDAAyB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAC5D,IAAI,CAAC,0BAAmB,CAAC,CAAC,SAAS,CAAC,wDAAyB,CAAC,CAAC;IAC/D,IAAI,CAAC,gCAAsB,CAAC,CAAC,SAAS,CAAC,wDAAyB,CAAC,CAAC;IAElE,IAAI,CAAC,0DAA0B,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAC7D,IAAI,CAAC,0BAAmB,CAAC,CAAC,SAAS,CAAC,0DAA0B,CAAC,CAAC;IAChE,IAAI,CAAC,gCAAsB,CAAC,CAAC,SAAS,CAAC,0DAA0B,CAAC,CAAC;IAEnE,IAAI,CAAC,+CAAqB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACxD,IAAI,CAAC,0BAAmB,CAAC,CAAC,SAAS,CAAC,+CAAqB,CAAC,CAAC;IAC3D,IAAI,CAAC,gCAAsB,CAAC,CAAC,SAAS,CAAC,+CAAqB,CAAC,CAAC;IAE9D,IAAI,CAAC,uDAA2B,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAC9D,IAAI,CAAC,mDAAuB,CAAC,CAAC,SAAS,CAAC,uDAA2B,CAAC,CAAC;IAErE,IAAA,mCAA4B,EAAC,IAAI,EAAE,8DAA+B,CAAC,CAAC;IACpE,IAAI,CAAC,6DAA8B,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACjE,IAAI,CAAC,yDAA0B,CAAC,CAAC,SAAS,CAAC,6DAA8B,CAAC,CAAC;IAE3E,IAAI,CAAC,wEAAiC,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACpE,IAAI,CAAC,0BAAmB,CAAC,CAAC,SAAS,CAAC,wEAAiC,CAAC,CAAC;IACvE,IAAI,CAAC,gCAAsB,CAAC,CAAC,SAAS,CAAC,wEAAiC,CAAC,CAAC;IAE1E,IAAI,CAAC,kFAAsC,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACzE,IAAI,CAAC,0BAAmB,CAAC,CAAC,SAAS,CAAC,kFAAsC,CAAC,CAAC;IAC5E,IAAI,CAAC,gCAAsB,CAAC,CAAC,SAAS,CAAC,kFAAsC,CAAC,CAAC;IAE/E,IAAI,CAAC,4EAAmC,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACtE,IAAI,CAAC,yCAA+B,CAAC,CAAC,SAAS,CAAC,4EAAmC,CAAC,CAAC;IAErF,IAAA,mCAA4B,EAAC,IAAI,EAAE,sDAAwB,CAAC,CAAC;IAC7D,IAAA,mCAA4B,EAAC,IAAI,EAAE,2CAA0B,CAAC,CAAC;IAC/D,IAAA,mCAA4B,EAAC,IAAI,EAAE,yCAAkB,CAAC,CAAC;IACvD,IAAI,CAAC,qCAAgB,CAAC,CAAC,MAAM,EAAE,CAAC;IAEhC,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAEzB,IAAI,CAAC,qCAAiB,CAAC,CAAC,MAAM,EAAE,CAAC;IACjC,IAAI,CAAC,4CAAwB,CAAC,CAAC,eAAe,CAAC;QAC3C,WAAW,EAAE,IAAI;QACjB,eAAe,EAAE,IAAI;QACrB,aAAa,EAAE,IAAI;QACnB,gBAAgB,EAAE,IAAI;QACtB,mBAAmB,EAAE,IAAI;KACO,CAAC,CAAC;IACtC,IAAI,CAAC,uBAAa,CAAC,CAAC,cAAc,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;QACnD,EAAE,EAAE,qCAAiB,CAAC,EAAE;QACxB,YAAY,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,qCAAiB,CAAC;KACvD,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAEvB,IAAI,CAAC,0CAAkB,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAC1C,IAAA,yCAAwB,EAAC,GAAG,CAAC,SAAS,CAAC,CAC1C,CAAC;IACF,IAAI,CAAC,uBAAa,CAAC,CAAC,cAAc,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;QACnD,EAAE,EAAE,0CAAkB,CAAC,EAAE;QACzB,YAAY,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,0CAAkB,CAAC;KACxD,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAEvB,IAAI,CAAC,oDAAsB,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAyB,EAAE,EAAE;QACxE,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;QAC9C,SAAS,CAAC,IAAI,CAAC,iDAAmB,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAC1D,SAAS,CAAC,IAAI,CAAC,0DAA4B,CAAC,CAAC,eAAe,CAAC;YACzD,WAAW,EAAE,IAAI;YACjB,eAAe,EAAE,IAAI;YACrB,aAAa,EAAE,KAAK;YACpB,eAAe,EAAE,KAAK;YACtB,gBAAgB,EAAE,IAAI;YACtB,mBAAmB,EAAE,KAAK;SACM,CAAC,CAAC;QACtC,SAAS,CAAC,IAAI,CAAC,mDAAqB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;QAClE,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,mDAAqB,CAAC,CAAC;QACpD,MAAM,IAAI,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC;QACvB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;QAC/C,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;QAC7C,MAAM,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QACxC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACxB,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC9B,6EAA6E;QAC7E,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC;QACtC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC;QACxC,MAAM,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC;QAC1D,MAAM,CAAC,wBAAwB,GAAG,IAAI,CAAC,wBAAwB,IAAI,IAAI,CAAC;QACxE,OAAO,MAAM,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,+CAAqB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAExD,IAAI,CAAC,sDAAwB,CAAC,CAAC,EAAE,CAAC,qDAA4B,CAAC,CAAC,gBAAgB,EAAE,CAAC;IACnF,IAAI,CAAC,sDAAwB,CAAC,CAAC,EAAE,CAAC,0CAAiB,CAAC,CAAC,gBAAgB,EAAE,CAAC;IACxE,IAAI,CAAC,sDAAwB,CAAC,CAAC,EAAE,CAAC,6CAAoB,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAC3E,IAAI,CAAC,sDAAwB,CAAC,CAAC,EAAE,CAAC,yCAAgB,CAAC,CAAC,gBAAgB,EAAE,CAAC;IACvE,IAAI,CAAC,4CAAmB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACtD,IAAI,CAAC,sDAAwB,CAAC,CAAC,SAAS,CAAC,4CAAmB,CAAC,CAAC;IAC9D,IAAI,CAAC,sDAAwB,CAAC,CAAC,EAAE,CAAC,4CAAmB,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAC1E,IAAI,CAAC,sDAAwB,CAAC,CAAC,EAAE,CAAC,6CAAoB,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAC3E,IAAI,CAAC,sDAAwB,CAAC,CAAC,EAAE,CAAC,mDAA0B,CAAC,CAAC,gBAAgB,EAAE,CAAC;IACjF,IAAI,CAAC,sDAAwB,CAAC,CAAC,EAAE,CAAC,qDAA4B,CAAC,CAAC,gBAAgB,EAAE,CAAC;IACnF,IAAI,CAAC,sDAAwB,CAAC,CAAC,EAAE,CAAC,0CAAiB,CAAC,CAAC,gBAAgB,EAAE,CAAC;IACxE,IAAI,CAAC,sDAAwB,CAAC,CAAC,EAAE,CAAC,6CAAoB,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAC3E,IAAI,CAAC,sDAAwB,CAAC,CAAC,EAAE,CAAC,+CAAsB,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAC7E,IAAI,CAAC,sDAAwB,CAAC,CAAC,EAAE,CAAC,6CAAoB,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAC3E,IAAI,CAAC,sDAAwB,CAAC,CAAC,EAAE,CAAC,6CAAoB,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAC3E,IAAI,CAAC,sDAAwB,CAAC,CAAC,EAAE,CAAC,yCAAgB,CAAC,CAAC,gBAAgB,EAAE,CAAC;IACvE,IAAI,CAAC,sDAAwB,CAAC,CAAC,EAAE,CAAC,+CAAsB,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAC7E,IAAI,CAAC,sDAAwB,CAAC,CAAC,EAAE,CAAC,2CAAmB,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAC1E,CAAC,0BAAmB,EAAE,uBAAgB,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,CAChE,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,iDAAwB,CAAC,CAAC,gBAAgB,EAAE,CAC1E,CAAC;IAEF,IAAA,mCAA4B,EAAC,IAAI,EAAE,+CAAsB,CAAC,CAAC;IAC3D,IAAA,mCAA4B,EAAC,IAAI,EAAE,mDAAuB,CAAC,CAAC;IAC5D,IAAI,CAAC,oDAA2B,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAC9D,IAAI,CAAC,+CAAsB,CAAC,CAAC,SAAS,CAAC,oDAA2B,CAAC,CAAC;IACpE,IAAI,CAAC,uDAA8B,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACjE,IAAI,CAAC,+CAAsB,CAAC,CAAC,SAAS,CAAC,uDAA8B,CAAC,CAAC;IAEvE,IAAI,CAAC,wCAAuB,CAAC,CAAC,EAAE,CAAC,+CAAuB,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAC7E,IAAI,CAAC,wCAAuB,CAAC,CAAC,EAAE,CAAC,sDAA8B,CAAC,CAAC,gBAAgB,EAAE,CAAC;IACpF,IAAI,CAAC,wCAAuB,CAAC,CAAC,EAAE,CAAC,qDAA6B,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAEnF,IAAI,CAAC,yEAAiC,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACpE,IAAI,CAAC,2CAAyB,CAAC,CAAC,SAAS,CAAC,yEAAiC,CAAC,CAAC;IAE7E,IAAI,CAAC,yCAA+B,CAAC,CAAC,EAAE,CAAC,8DAA4B,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAC1F,IAAI,CAAC,gFAAqC,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACxE,IAAI,CAAC,yCAA+B,CAAC,CAAC,SAAS,CAAC,gFAAqC,CAAC,CAAC;IACvF,IAAI,CAAC,kDAAsB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACzD,IAAI,CAAC,gDAAqB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACxD,IAAI,CAAC,mDAAuB,CAAC,CAAC,SAAS,CAAC,gDAAqB,CAAC,CAAC;IAE/D,IAAA,mCAA4B,EAAC,IAAI,EAAE,yEAAiC,CAAC,CAAC;IACtE,IAAI,CAAC,gFAAwC,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAC3E,IAAI,CAAC,yEAAiC,CAAC,CAAC,SAAS,CAAC,gFAAwC,CAAC,CAAC;IAE5F,IAAI,CAAC,sCAAoB,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE;QAC7C,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;QAC9C,SAAS,CAAC,IAAI,CAAC,+BAAa,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;QAC1D,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,+BAAa,CAAC,CAAC;QAC5C,OAAO,MAAM,CAAC;IAClB,CAAC,CAAC,CAAC;AAEP,CAAC,CAAC,CAAC;AAEH,SAAS,kBAAkB,CAAC,IAAqB;IAC7C,IAAI,cAA0C,CAAC;IAC/C,IAAI,CAAC,iCAAc,CAAC,CAAC,MAAM,EAAE,CAAC;IAE9B,IAAI,CAAC,uBAAa,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC3C,EAAE,EAAE,iCAAc,CAAC,EAAE;QACrB,YAAY,EAAE,GAAG,EAAE;YACf,IAAI,cAAc,EAAE,UAAU,KAAK,KAAK,EAAE,CAAC;gBACvC,cAAc,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,CAAiB,iCAAc,CAAC,CAAC;YAC3E,CAAC;YACD,OAAO,cAAc,CAAC;QAC1B,CAAC;KACJ,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC;AAC3B,CAAC"}
1
+ {"version":3,"file":"ai-chat-ui-frontend-module.js","sourceRoot":"","sources":["../../src/browser/ai-chat-ui-frontend-module.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ export * from './command-part-renderer';
4
4
  export * from './error-part-renderer';
5
5
  export * from './horizontal-layout-part-renderer';
6
6
  export * from './markdown-part-renderer';
7
+ export * from './mcp-app-frame';
7
8
  export * from './mermaid-part-renderer';
8
9
  export * from './mermaid-rendering';
9
10
  export * from './text-part-renderer';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/browser/chat-response-renderer/index.ts"],"names":[],"mappings":"AAeA,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mCAAmC,CAAC;AAClD,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,iCAAiC,CAAC;AAChD,cAAc,mCAAmC,CAAC;AAClD,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/browser/chat-response-renderer/index.ts"],"names":[],"mappings":"AAeA,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mCAAmC,CAAC;AAClD,cAAc,0BAA0B,CAAC;AACzC,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,iCAAiC,CAAC;AAChD,cAAc,mCAAmC,CAAC;AAClD,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC"}
@@ -22,6 +22,7 @@ tslib_1.__exportStar(require("./command-part-renderer"), exports);
22
22
  tslib_1.__exportStar(require("./error-part-renderer"), exports);
23
23
  tslib_1.__exportStar(require("./horizontal-layout-part-renderer"), exports);
24
24
  tslib_1.__exportStar(require("./markdown-part-renderer"), exports);
25
+ tslib_1.__exportStar(require("./mcp-app-frame"), exports);
25
26
  tslib_1.__exportStar(require("./mermaid-part-renderer"), exports);
26
27
  tslib_1.__exportStar(require("./mermaid-rendering"), exports);
27
28
  tslib_1.__exportStar(require("./text-part-renderer"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/browser/chat-response-renderer/index.ts"],"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;AAChF,kEAAwC;AACxC,+DAAqC;AACrC,kEAAwC;AACxC,gEAAsC;AACtC,4EAAkD;AAClD,mEAAyC;AACzC,kEAAwC;AACxC,8DAAoC;AACpC,+DAAqC;AACrC,mEAAyC;AACzC,0EAAgD;AAChD,4EAAkD;AAClD,mEAAyC;AACzC,qEAA2C;AAC3C,mEAAyC;AACzC,8DAAoC;AACpC,qEAA2C;AAC3C,gEAAsC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/browser/chat-response-renderer/index.ts"],"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;AAChF,kEAAwC;AACxC,+DAAqC;AACrC,kEAAwC;AACxC,gEAAsC;AACtC,4EAAkD;AAClD,mEAAyC;AACzC,0DAAgC;AAChC,kEAAwC;AACxC,8DAAoC;AACpC,+DAAqC;AACrC,mEAAyC;AACzC,0EAAgD;AAChD,4EAAkD;AAClD,mEAAyC;AACzC,qEAA2C;AAC3C,mEAAyC;AACzC,8DAAoC;AACpC,qEAA2C;AAC3C,gEAAsC"}
@@ -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":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"toolcall-result.d.ts","sourceRoot":"","sources":["../../../src/browser/chat-response-renderer/toolcall-result.tsx"],"names":[],"mappings":"AAgBA,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAqB,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGnE,oGAAoG;AACpG,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,cAAc,GAAG,cAAc,CAS7E;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,cAAc,EAAE,aAAa,EAAE,aAAa,GAAG,SAAS,CAmCvG"}
1
+ {"version":3,"file":"toolcall-result.d.ts","sourceRoot":"","sources":["../../../src/browser/chat-response-renderer/toolcall-result.tsx"],"names":[],"mappings":"AAgBA,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAqB,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAInE,oGAAoG;AACpG,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,cAAc,GAAG,cAAc,CAS7E;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,cAAc,EAAE,aAAa,EAAE,aAAa,GAAG,SAAS,CAwCvG"}
@@ -5,6 +5,7 @@ exports.renderToolCallResult = renderToolCallResult;
5
5
  const jsx_runtime_1 = require("@theia/core/shared/react/jsx-runtime");
6
6
  const ai_core_1 = require("@theia/ai-core");
7
7
  const markdown_part_renderer_1 = require("./markdown-part-renderer");
8
+ const mcp_app_frame_1 = require("./mcp-app-frame");
8
9
  /** Parses a tool call result that may be a JSON string, returning the original value on failure. */
9
10
  function tryParseToolCallResult(result) {
10
11
  if (!result) {
@@ -39,6 +40,9 @@ function renderToolCallResult(rawResult, openerService) {
39
40
  case 'text': {
40
41
  return (0, jsx_runtime_1.jsx)("div", { className: 'theia-toolCall-text-result', children: (0, jsx_runtime_1.jsx)(markdown_part_renderer_1.MarkdownRender, { text: content.text, openerService: openerService }) }, `content-${idx}-${content.type}`);
41
42
  }
43
+ case 'html': {
44
+ return (0, jsx_runtime_1.jsx)("div", { className: 'theia-toolCall-html-result', children: (0, jsx_runtime_1.jsx)(mcp_app_frame_1.McpAppFrame, { html: content.html, title: content.title }) }, `content-${idx}-${content.type}`);
45
+ }
42
46
  case 'error': {
43
47
  return (0, jsx_runtime_1.jsx)("div", { className: 'theia-toolCall-error-result', children: (0, jsx_runtime_1.jsx)("pre", { children: content.data }) }, `content-${idx}-${content.type}`);
44
48
  }
@@ -1 +1 @@
1
- {"version":3,"file":"toolcall-result.js","sourceRoot":"","sources":["../../../src/browser/chat-response-renderer/toolcall-result.tsx"],"names":[],"mappings":";;AAsBA,wDASC;AAMD,oDAmCC;;AAtDD,4CAAmE;AACnE,qEAA0D;AAE1D,oGAAoG;AACpG,SAAgB,sBAAsB,CAAC,MAAsB;IACzD,IAAI,CAAC,MAAM,EAAE,CAAC;QACV,OAAO,SAAS,CAAC;IACrB,CAAC;IACD,IAAI,CAAC;QACD,OAAO,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IACpE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,MAAM,CAAC;IAClB,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,SAAgB,oBAAoB,CAAC,SAAyB,EAAE,aAA4B;IACxF,MAAM,MAAM,GAAG,sBAAsB,CAAC,SAAS,CAAC,CAAC;IACjD,IAAI,CAAC,MAAM,EAAE,CAAC;QACV,OAAO,SAAS,CAAC;IACrB,CAAC;IACD,2CAA2C;IAC3C,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QAChD,OAAO,0CAAM,MAAM,CAAC,MAAM,CAAC,GAAO,CAAC;IACvC,CAAC;IACD,IAAI,IAAA,2BAAiB,EAAC,MAAM,CAAC,EAAE,CAAC;QAC5B,OAAO,gCAAK,SAAS,EAAC,iCAAiC,YAClD,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,GAAG,EAAE,EAAE;gBACjC,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;oBACnB,KAAK,OAAO,CAAC,CAAC,CAAC;wBACX,OAAO,gCAA4C,SAAS,EAAC,6BAA6B,YACtF,gCAAK,GAAG,EAAE,QAAQ,OAAO,CAAC,QAAQ,WAAW,OAAO,CAAC,UAAU,EAAE,GAAI,IADxD,WAAW,GAAG,IAAI,OAAO,CAAC,IAAI,EAAE,CAE3C,CAAC;oBACX,CAAC;oBACD,KAAK,MAAM,CAAC,CAAC,CAAC;wBACV,OAAO,gCAA4C,SAAS,EAAC,4BAA4B,YACrF,uBAAC,uCAAc,IAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,aAAa,EAAE,aAAa,GAAI,IADvD,WAAW,GAAG,IAAI,OAAO,CAAC,IAAI,EAAE,CAE3C,CAAC;oBACX,CAAC;oBACD,KAAK,OAAO,CAAC,CAAC,CAAC;wBACX,OAAO,gCAA4C,SAAS,EAAC,6BAA6B,YAAC,0CAAM,OAAO,CAAC,IAAI,GAAO,IAAnG,WAAW,GAAG,IAAI,OAAO,CAAC,IAAI,EAAE,CAAyE,CAAC;oBAC/H,CAAC;oBACD,KAAK,OAAO,CAAC;oBACb,OAAO,CAAC,CAAC,CAAC;wBACN,OAAO,gCAA4C,SAAS,EAAC,+BAA+B,YAAC,0CAAM,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,GAAO,IAA9H,WAAW,GAAG,IAAI,OAAO,CAAC,IAAI,EAAE,CAAoG,CAAC;oBAC1J,CAAC;gBACL,CAAC;YACL,CAAC,CAAC,GACA,CAAC;IACX,CAAC;IACD,OAAO,0CAAM,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,GAAO,CAAC;AAC7D,CAAC"}
1
+ {"version":3,"file":"toolcall-result.js","sourceRoot":"","sources":["../../../src/browser/chat-response-renderer/toolcall-result.tsx"],"names":[],"mappings":";;AAuBA,wDASC;AAMD,oDAwCC;;AA5DD,4CAAmE;AACnE,qEAA0D;AAC1D,mDAA8C;AAE9C,oGAAoG;AACpG,SAAgB,sBAAsB,CAAC,MAAsB;IACzD,IAAI,CAAC,MAAM,EAAE,CAAC;QACV,OAAO,SAAS,CAAC;IACrB,CAAC;IACD,IAAI,CAAC;QACD,OAAO,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IACpE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,MAAM,CAAC;IAClB,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,SAAgB,oBAAoB,CAAC,SAAyB,EAAE,aAA4B;IACxF,MAAM,MAAM,GAAG,sBAAsB,CAAC,SAAS,CAAC,CAAC;IACjD,IAAI,CAAC,MAAM,EAAE,CAAC;QACV,OAAO,SAAS,CAAC;IACrB,CAAC;IACD,2CAA2C;IAC3C,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QAChD,OAAO,0CAAM,MAAM,CAAC,MAAM,CAAC,GAAO,CAAC;IACvC,CAAC;IACD,IAAI,IAAA,2BAAiB,EAAC,MAAM,CAAC,EAAE,CAAC;QAC5B,OAAO,gCAAK,SAAS,EAAC,iCAAiC,YAClD,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,GAAG,EAAE,EAAE;gBACjC,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;oBACnB,KAAK,OAAO,CAAC,CAAC,CAAC;wBACX,OAAO,gCAA4C,SAAS,EAAC,6BAA6B,YACtF,gCAAK,GAAG,EAAE,QAAQ,OAAO,CAAC,QAAQ,WAAW,OAAO,CAAC,UAAU,EAAE,GAAI,IADxD,WAAW,GAAG,IAAI,OAAO,CAAC,IAAI,EAAE,CAE3C,CAAC;oBACX,CAAC;oBACD,KAAK,MAAM,CAAC,CAAC,CAAC;wBACV,OAAO,gCAA4C,SAAS,EAAC,4BAA4B,YACrF,uBAAC,uCAAc,IAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,aAAa,EAAE,aAAa,GAAI,IADvD,WAAW,GAAG,IAAI,OAAO,CAAC,IAAI,EAAE,CAE3C,CAAC;oBACX,CAAC;oBACD,KAAK,MAAM,CAAC,CAAC,CAAC;wBACV,OAAO,gCAA4C,SAAS,EAAC,4BAA4B,YACrF,uBAAC,2BAAW,IAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,GAAI,IAD5C,WAAW,GAAG,IAAI,OAAO,CAAC,IAAI,EAAE,CAE3C,CAAC;oBACX,CAAC;oBACD,KAAK,OAAO,CAAC,CAAC,CAAC;wBACX,OAAO,gCAA4C,SAAS,EAAC,6BAA6B,YAAC,0CAAM,OAAO,CAAC,IAAI,GAAO,IAAnG,WAAW,GAAG,IAAI,OAAO,CAAC,IAAI,EAAE,CAAyE,CAAC;oBAC/H,CAAC;oBACD,KAAK,OAAO,CAAC;oBACb,OAAO,CAAC,CAAC,CAAC;wBACN,OAAO,gCAA4C,SAAS,EAAC,+BAA+B,YAAC,0CAAM,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,GAAO,IAA9H,WAAW,GAAG,IAAI,OAAO,CAAC,IAAI,EAAE,CAAoG,CAAC;oBAC1J,CAAC;gBACL,CAAC;YACL,CAAC,CAAC,GACA,CAAC;IACX,CAAC;IACD,OAAO,0CAAM,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,GAAO,CAAC;AAC7D,CAAC"}
package/package.json CHANGED
@@ -1,18 +1,18 @@
1
1
  {
2
2
  "name": "@theia/ai-chat-ui",
3
- "version": "1.75.0-next.46+eb558223a",
3
+ "version": "1.75.0",
4
4
  "description": "Theia - AI Chat UI Extension",
5
5
  "dependencies": {
6
- "@theia/ai-chat": "1.75.0-next.46+eb558223a",
7
- "@theia/ai-core": "1.75.0-next.46+eb558223a",
8
- "@theia/core": "1.75.0-next.46+eb558223a",
9
- "@theia/editor": "1.75.0-next.46+eb558223a",
10
- "@theia/editor-preview": "1.75.0-next.46+eb558223a",
11
- "@theia/filesystem": "1.75.0-next.46+eb558223a",
12
- "@theia/monaco": "1.75.0-next.46+eb558223a",
6
+ "@theia/ai-chat": "1.75.0",
7
+ "@theia/ai-core": "1.75.0",
8
+ "@theia/core": "1.75.0",
9
+ "@theia/editor": "1.75.0",
10
+ "@theia/editor-preview": "1.75.0",
11
+ "@theia/filesystem": "1.75.0",
12
+ "@theia/monaco": "1.75.0",
13
13
  "@theia/monaco-editor-core": "1.108.201",
14
- "@theia/preferences": "1.75.0-next.46+eb558223a",
15
- "@theia/workspace": "1.75.0-next.46+eb558223a",
14
+ "@theia/preferences": "1.75.0",
15
+ "@theia/workspace": "1.75.0",
16
16
  "date-fns": "^4.4.0",
17
17
  "mermaid": "^11.16.1",
18
18
  "tslib": "^2.8.1"
@@ -51,10 +51,10 @@
51
51
  "watch": "theiaext watch"
52
52
  },
53
53
  "devDependencies": {
54
- "@theia/ext-scripts": "1.74.0"
54
+ "@theia/ext-scripts": "1.75.0"
55
55
  },
56
56
  "nyc": {
57
57
  "extends": "../../configs/nyc.json"
58
58
  },
59
- "gitHead": "eb558223aae4b1ebf0a64deeb51741032cb8ea50"
59
+ "gitHead": "6d8e911f05f0fd9a13d76797e79b21ee3f038bc2"
60
60
  }
@@ -17,6 +17,7 @@
17
17
  import '../../src/browser/style/index.css';
18
18
  import '../../src/browser/style/tool-call-rendering.css';
19
19
  import '../../src/browser/style/mermaid-rendering.css';
20
+ import '../../src/browser/style/mcp-app-frame.css';
20
21
  import { bindRootContributionProvider, CommandContribution, MenuContribution } from '@theia/core';
21
22
  import { bindViewContribution, FrontendApplicationContribution, WidgetFactory, KeybindingContribution } from '@theia/core/lib/browser';
22
23
  import { TabBarToolbarContribution } from '@theia/core/lib/browser/shell/tab-bar-toolbar';
@@ -19,6 +19,7 @@ export * from './command-part-renderer';
19
19
  export * from './error-part-renderer';
20
20
  export * from './horizontal-layout-part-renderer';
21
21
  export * from './markdown-part-renderer';
22
+ export * from './mcp-app-frame';
22
23
  export * from './mermaid-part-renderer';
23
24
  export * from './mermaid-rendering';
24
25
  export * from './text-part-renderer';
@@ -0,0 +1,87 @@
1
+ // *****************************************************************************
2
+ // Copyright (C) 2026 Ericsson 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-only WITH Classpath-exception-2.0
15
+ // *****************************************************************************
16
+
17
+ import { expect } from 'chai';
18
+ import { buildSrcDoc } from './mcp-app-frame';
19
+
20
+ describe('McpAppFrame buildSrcDoc', () => {
21
+
22
+ it('injects CSP into <head> and resize script before </body>', () => {
23
+ const html = '<html><head><title>App</title></head><body><p>Hello</p></body></html>';
24
+ const result = buildSrcDoc(html);
25
+ expect(result).to.contain('Content-Security-Policy');
26
+ expect(result).to.contain('mcp-app-resize');
27
+ expect(result.indexOf('Content-Security-Policy')).to.be.lessThan(result.indexOf('</head>'));
28
+ expect(result.indexOf('ResizeObserver')).to.be.lessThan(result.indexOf('</body>'));
29
+ });
30
+
31
+ it('handles <head> with attributes (e.g. <head lang="en">)', () => {
32
+ const html = '<html><head lang="en"><title>App</title></head><body><p>Hi</p></body></html>';
33
+ const result = buildSrcDoc(html);
34
+ expect(result).to.contain('Content-Security-Policy');
35
+ // Should not inject a second <head>
36
+ const headCount = (result.match(/<head/gi) || []).length;
37
+ expect(headCount).to.equal(1);
38
+ });
39
+
40
+ it('handles uppercase <HEAD>', () => {
41
+ const html = '<html><HEAD><title>App</title></HEAD><body><p>Hi</p></body></html>';
42
+ const result = buildSrcDoc(html);
43
+ expect(result).to.contain('Content-Security-Policy');
44
+ const headCount = (result.match(/<head/gi) || []).length;
45
+ expect(headCount).to.equal(1);
46
+ });
47
+
48
+ it('wraps CSP in a new <head> when only <html> is present', () => {
49
+ const html = '<html><body><p>No head</p></body></html>';
50
+ const result = buildSrcDoc(html);
51
+ expect(result).to.contain('<head>');
52
+ expect(result).to.contain('Content-Security-Policy');
53
+ });
54
+
55
+ it('prepends CSP when no <html> or <head> present', () => {
56
+ const html = '<div>Simple content</div>';
57
+ const result = buildSrcDoc(html);
58
+ expect(result).to.match(/^<meta/);
59
+ expect(result).to.contain('Content-Security-Policy');
60
+ expect(result).to.contain('<div>Simple content</div>');
61
+ });
62
+
63
+ it('appends resize script when no </body> tag', () => {
64
+ const html = '<div>Simple content</div>';
65
+ const result = buildSrcDoc(html);
66
+ expect(result).to.contain('mcp-app-resize');
67
+ expect(result.endsWith('</script>')).to.be.true;
68
+ });
69
+
70
+ it('handles empty html', () => {
71
+ const result = buildSrcDoc('');
72
+ expect(result).to.contain('Content-Security-Policy');
73
+ expect(result).to.contain('mcp-app-resize');
74
+ });
75
+
76
+ it('preserves original html content', () => {
77
+ const html = '<html><head></head><body><h1>Title</h1><p>Content</p></body></html>';
78
+ const result = buildSrcDoc(html);
79
+ expect(result).to.contain('<h1>Title</h1>');
80
+ expect(result).to.contain('<p>Content</p>');
81
+ });
82
+
83
+ it('CSP blocks connect-src', () => {
84
+ const result = buildSrcDoc('<html><head></head><body></body></html>');
85
+ expect(result).to.contain("connect-src 'none'");
86
+ });
87
+ });
@@ -0,0 +1,95 @@
1
+ // *****************************************************************************
2
+ // Copyright (C) 2026 Ericsson 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-only WITH Classpath-exception-2.0
15
+ // *****************************************************************************
16
+
17
+ import * as React from '@theia/core/shared/react';
18
+
19
+ export interface McpAppFrameProps {
20
+ html: string;
21
+ title?: string;
22
+ }
23
+
24
+ /** Maximum height the iframe can grow to (px). Consistent with the mermaid renderer viewport cap. */
25
+ const MAX_HEIGHT = 800;
26
+
27
+ const CSP_META = '<meta http-equiv="Content-Security-Policy" ' +
28
+ 'content="default-src \'none\'; script-src \'unsafe-inline\'; style-src \'unsafe-inline\'; img-src data: blob:; font-src data:; connect-src \'none\';">';
29
+
30
+ const RESIZE_SCRIPT = `<script>
31
+ new ResizeObserver(() => {
32
+ window.parent.postMessage({ type: 'mcp-app-resize', height: document.documentElement.scrollHeight }, '*');
33
+ }).observe(document.documentElement);
34
+ </script>`;
35
+
36
+ /**
37
+ * Builds the `srcDoc` for the sandboxed iframe by injecting a CSP meta tag and a resize-reporting script.
38
+ * Exported for testability.
39
+ */
40
+ export function buildSrcDoc(html: string): string {
41
+ let doc = html;
42
+ // Inject CSP meta tag into <head> if present (tolerant of attributes and casing), otherwise prepend it.
43
+ if (/<head[\s>]/i.test(doc)) {
44
+ doc = doc.replace(/<head[\s>]/i, match => `${match}${CSP_META}`);
45
+ } else if (doc.includes('<html')) {
46
+ doc = doc.replace(/(<html[^>]*>)/, `$1<head>${CSP_META}</head>`);
47
+ } else {
48
+ doc = `${CSP_META}${doc}`;
49
+ }
50
+ // Inject resize script before </body> if present, otherwise append it.
51
+ if (doc.includes('</body>')) {
52
+ doc = doc.replace('</body>', `${RESIZE_SCRIPT}</body>`);
53
+ } else {
54
+ doc = `${doc}${RESIZE_SCRIPT}`;
55
+ }
56
+ return doc;
57
+ }
58
+
59
+ export const McpAppFrame: React.FC<McpAppFrameProps> = ({ html, title }) => {
60
+ // eslint-disable-next-line no-null/no-null
61
+ const iframeRef = React.useRef<HTMLIFrameElement>(null);
62
+ const [height, setHeight] = React.useState(200);
63
+
64
+ React.useEffect(() => {
65
+ const handler = (event: MessageEvent) => {
66
+ if (iframeRef.current?.contentWindow === event.source &&
67
+ event.data?.type === 'mcp-app-resize' &&
68
+ typeof event.data.height === 'number') {
69
+ const h = event.data.height;
70
+ if (Number.isFinite(h) && h > 0) {
71
+ setHeight(Math.min(h, MAX_HEIGHT));
72
+ }
73
+ }
74
+ };
75
+ window.addEventListener('message', handler);
76
+ return () => window.removeEventListener('message', handler);
77
+ }, []);
78
+
79
+ const srcDoc = buildSrcDoc(html);
80
+
81
+ return (
82
+ <div className='theia-mcp-app-container'>
83
+ {title && <div className='theia-mcp-app-title'>{title}</div>}
84
+ <iframe
85
+ ref={iframeRef}
86
+ srcDoc={srcDoc}
87
+ sandbox='allow-scripts'
88
+ allow=''
89
+ className='theia-mcp-app-iframe'
90
+ style={{ height: `${height}px` }}
91
+ title={title ?? 'MCP App'}
92
+ />
93
+ </div>
94
+ );
95
+ };
@@ -18,6 +18,7 @@ import { ReactNode } from '@theia/core/shared/react';
18
18
  import { OpenerService } from '@theia/core/lib/browser';
19
19
  import { isToolCallContent, ToolCallResult } from '@theia/ai-core';
20
20
  import { MarkdownRender } from './markdown-part-renderer';
21
+ import { McpAppFrame } from './mcp-app-frame';
21
22
 
22
23
  /** Parses a tool call result that may be a JSON string, returning the original value on failure. */
23
24
  export function tryParseToolCallResult(result: ToolCallResult): ToolCallResult {
@@ -58,6 +59,11 @@ export function renderToolCallResult(rawResult: ToolCallResult, openerService: O
58
59
  <MarkdownRender text={content.text} openerService={openerService} />
59
60
  </div>;
60
61
  }
62
+ case 'html': {
63
+ return <div key={`content-${idx}-${content.type}`} className='theia-toolCall-html-result'>
64
+ <McpAppFrame html={content.html} title={content.title} />
65
+ </div>;
66
+ }
61
67
  case 'error': {
62
68
  return <div key={`content-${idx}-${content.type}`} className='theia-toolCall-error-result'><pre>{content.data}</pre></div>;
63
69
  }
@@ -0,0 +1,34 @@
1
+ /********************************************************************************
2
+ * Copyright (C) 2026 Ericsson 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-only WITH Classpath-exception-2.0
15
+ ********************************************************************************/
16
+
17
+ .theia-mcp-app-container {
18
+ display: flex;
19
+ flex-direction: column;
20
+ margin: 0 0 var(--theia-ui-padding) 0;
21
+ border-radius: 4px;
22
+ overflow: hidden;
23
+ }
24
+
25
+ .theia-mcp-app-title {
26
+ color: var(--theia-descriptionForeground);
27
+ font-size: var(--theia-ui-font-size0);
28
+ padding: 4px 8px;
29
+ }
30
+
31
+ .theia-mcp-app-iframe {
32
+ width: 100%;
33
+ border: none;
34
+ }