@theia/ai-chat-ui 1.55.0-next.97 → 1.56.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.map +1 -1
  2. package/lib/browser/ai-chat-ui-frontend-module.js +2 -0
  3. package/lib/browser/ai-chat-ui-frontend-module.js.map +1 -1
  4. package/lib/browser/chat-response-renderer/markdown-part-renderer.d.ts +3 -2
  5. package/lib/browser/chat-response-renderer/markdown-part-renderer.d.ts.map +1 -1
  6. package/lib/browser/chat-response-renderer/markdown-part-renderer.js +5 -3
  7. package/lib/browser/chat-response-renderer/markdown-part-renderer.js.map +1 -1
  8. package/lib/browser/chat-response-renderer/question-part-renderer.d.ts +10 -0
  9. package/lib/browser/chat-response-renderer/question-part-renderer.d.ts.map +1 -0
  10. package/lib/browser/chat-response-renderer/question-part-renderer.js +43 -0
  11. package/lib/browser/chat-response-renderer/question-part-renderer.js.map +1 -0
  12. package/lib/browser/chat-response-renderer/toolcall-part-renderer.d.ts +2 -0
  13. package/lib/browser/chat-response-renderer/toolcall-part-renderer.d.ts.map +1 -1
  14. package/lib/browser/chat-response-renderer/toolcall-part-renderer.js +30 -10
  15. package/lib/browser/chat-response-renderer/toolcall-part-renderer.js.map +1 -1
  16. package/lib/browser/chat-tree-view/chat-view-tree-widget.d.ts +4 -0
  17. package/lib/browser/chat-tree-view/chat-view-tree-widget.d.ts.map +1 -1
  18. package/lib/browser/chat-tree-view/chat-view-tree-widget.js +79 -12
  19. package/lib/browser/chat-tree-view/chat-view-tree-widget.js.map +1 -1
  20. package/package.json +11 -11
  21. package/src/browser/ai-chat-ui-frontend-module.ts +2 -0
  22. package/src/browser/chat-response-renderer/markdown-part-renderer.tsx +5 -3
  23. package/src/browser/chat-response-renderer/question-part-renderer.tsx +59 -0
  24. package/src/browser/chat-response-renderer/toolcall-part-renderer.tsx +38 -9
  25. package/src/browser/chat-tree-view/chat-view-tree-widget.tsx +133 -11
  26. package/src/browser/style/index.css +57 -1
@@ -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":"AAmBA,OAAO,EAAE,eAAe,EAAc,MAAM,8BAA8B,CAAC;AAE3E,OAAO,mCAAmC,CAAC;;AAkB3C,wBAgDG"}
1
+ {"version":3,"file":"ai-chat-ui-frontend-module.d.ts","sourceRoot":"","sources":["../../src/browser/ai-chat-ui-frontend-module.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAE,eAAe,EAAc,MAAM,8BAA8B,CAAC;AAE3E,OAAO,mCAAmC,CAAC;;AAmB3C,wBAiDG"}
@@ -34,6 +34,7 @@ const chat_view_language_contribution_1 = require("./chat-view-language-contribu
34
34
  const chat_view_widget_1 = require("./chat-view-widget");
35
35
  const chat_view_widget_toolbar_contribution_1 = require("./chat-view-widget-toolbar-contribution");
36
36
  const editor_preview_manager_1 = require("@theia/editor-preview/lib/browser/editor-preview-manager");
37
+ const question_part_renderer_1 = require("./chat-response-renderer/question-part-renderer");
37
38
  exports.default = new inversify_1.ContainerModule((bind, _unbind, _isBound, rebind) => {
38
39
  (0, browser_1.bindViewContribution)(bind, ai_chat_ui_contribution_1.AIChatContribution);
39
40
  bind(tab_bar_toolbar_1.TabBarToolbarContribution).toService(ai_chat_ui_contribution_1.AIChatContribution);
@@ -56,6 +57,7 @@ exports.default = new inversify_1.ContainerModule((bind, _unbind, _isBound, rebi
56
57
  bind(chat_response_part_renderer_1.ChatResponsePartRenderer).to(chat_response_renderer_1.CommandPartRenderer).inSingletonScope();
57
58
  bind(chat_response_part_renderer_1.ChatResponsePartRenderer).to(chat_response_renderer_1.ToolCallPartRenderer).inSingletonScope();
58
59
  bind(chat_response_part_renderer_1.ChatResponsePartRenderer).to(chat_response_renderer_1.ErrorPartRenderer).inSingletonScope();
60
+ bind(chat_response_part_renderer_1.ChatResponsePartRenderer).to(question_part_renderer_1.QuestionPartRenderer).inSingletonScope();
59
61
  [core_1.CommandContribution, core_1.MenuContribution].forEach(serviceIdentifier => bind(serviceIdentifier).to(chat_view_contribution_1.ChatViewMenuContribution).inSingletonScope());
60
62
  bind(ai_editor_manager_1.AIEditorManager).toSelf().inSingletonScope();
61
63
  rebind(browser_2.EditorManager).toService(ai_editor_manager_1.AIEditorManager);
@@ -1 +1 @@
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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"}
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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"}
@@ -13,12 +13,13 @@ export declare class MarkdownPartRenderer implements ChatResponsePartRenderer<Ma
13
13
  /**
14
14
  * This hook uses markdown-it directly to render markdown.
15
15
  * The reason to use markdown-it directly is that the MarkdownRenderer is
16
- * overriden by theia with a monaco version. This monaco version strips all html
16
+ * overridden by theia with a monaco version. This monaco version strips all html
17
17
  * tags from the markdown with empty content.
18
18
  * This leads to unexpected behavior when rendering markdown with html tags.
19
19
  *
20
20
  * @param markdown the string to render as markdown
21
+ * @param skipSurroundingParagraph whether to remove a surrounding paragraph element (default: false)
21
22
  * @returns the ref to use in an element to render the markdown
22
23
  */
23
- export declare const useMarkdownRendering: (markdown: string | MarkdownString) => React.MutableRefObject<HTMLDivElement | null>;
24
+ export declare const useMarkdownRendering: (markdown: string | MarkdownString, skipSurroundingParagraph?: boolean) => React.MutableRefObject<HTMLDivElement | null>;
24
25
  //# sourceMappingURL=markdown-part-renderer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"markdown-part-renderer.d.ts","sourceRoot":"","sources":["../../../src/browser/chat-response-renderer/markdown-part-renderer.tsx"],"names":[],"mappings":";AAgBA,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAE1E,OAAO,EACH,mBAAmB,EACnB,gCAAgC,EAChC,2BAA2B,EAC9B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,SAAS,EAAqB,MAAM,0BAA0B,CAAC;AACxE,OAAO,KAAK,KAAK,MAAM,0BAA0B,CAAC;AAClD,OAAO,KAAK,UAAU,MAAM,gCAAgC,CAAC;AAE7D,OAAO,EAAE,cAAc,EAAE,MAAM,2CAA2C,CAAC;AAE3E,qBACa,oBAAqB,YAAW,wBAAwB,CAAC,2BAA2B,GAAG,gCAAgC,CAAC;IACjI,SAAS,CAAC,QAAQ,CAAC,UAAU,aAAgB;IAC7C,SAAS,CAAC,QAAQ,EAAE,mBAAmB,GAAG,MAAM;IAShD,MAAM,CAAC,QAAQ,EAAE,2BAA2B,GAAG,gCAAgC,GAAG,SAAS;CAW9F;AAQD;;;;;;;;;GASG;AACH,eAAO,MAAM,oBAAoB,aAAc,MAAM,GAAG,cAAc,kDAmBrE,CAAC"}
1
+ {"version":3,"file":"markdown-part-renderer.d.ts","sourceRoot":"","sources":["../../../src/browser/chat-response-renderer/markdown-part-renderer.tsx"],"names":[],"mappings":";AAgBA,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAE1E,OAAO,EACH,mBAAmB,EACnB,gCAAgC,EAChC,2BAA2B,EAC9B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,SAAS,EAAqB,MAAM,0BAA0B,CAAC;AACxE,OAAO,KAAK,KAAK,MAAM,0BAA0B,CAAC;AAClD,OAAO,KAAK,UAAU,MAAM,gCAAgC,CAAC;AAE7D,OAAO,EAAE,cAAc,EAAE,MAAM,2CAA2C,CAAC;AAE3E,qBACa,oBAAqB,YAAW,wBAAwB,CAAC,2BAA2B,GAAG,gCAAgC,CAAC;IACjI,SAAS,CAAC,QAAQ,CAAC,UAAU,aAAgB;IAC7C,SAAS,CAAC,QAAQ,EAAE,mBAAmB,GAAG,MAAM;IAShD,MAAM,CAAC,QAAQ,EAAE,2BAA2B,GAAG,gCAAgC,GAAG,SAAS;CAW9F;AAQD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,oBAAoB,aAAc,MAAM,GAAG,cAAc,6BAA4B,OAAO,kDAoBxG,CAAC"}
@@ -57,14 +57,15 @@ const MarkdownRender = ({ response }) => {
57
57
  /**
58
58
  * This hook uses markdown-it directly to render markdown.
59
59
  * The reason to use markdown-it directly is that the MarkdownRenderer is
60
- * overriden by theia with a monaco version. This monaco version strips all html
60
+ * overridden by theia with a monaco version. This monaco version strips all html
61
61
  * tags from the markdown with empty content.
62
62
  * This leads to unexpected behavior when rendering markdown with html tags.
63
63
  *
64
64
  * @param markdown the string to render as markdown
65
+ * @param skipSurroundingParagraph whether to remove a surrounding paragraph element (default: false)
65
66
  * @returns the ref to use in an element to render the markdown
66
67
  */
67
- const useMarkdownRendering = (markdown) => {
68
+ const useMarkdownRendering = (markdown, skipSurroundingParagraph = false) => {
68
69
  // eslint-disable-next-line no-null/no-null
69
70
  const ref = (0, react_1.useRef)(null);
70
71
  const markdownString = typeof markdown === 'string' ? markdown : markdown.value;
@@ -72,7 +73,8 @@ const useMarkdownRendering = (markdown) => {
72
73
  var _a, _b;
73
74
  const markdownIt = markdownit();
74
75
  const host = document.createElement('div');
75
- const html = markdownIt.render(markdownString);
76
+ // markdownIt always puts the content in a paragraph element, so we remove it if we don't want it
77
+ const html = skipSurroundingParagraph ? markdownIt.render(markdownString).replace(/^<p>|<\/p>|<p><\/p>$/g, '') : markdownIt.render(markdownString);
76
78
  host.innerHTML = DOMPurify.sanitize(html, {
77
79
  ALLOW_UNKNOWN_PROTOCOLS: true // DOMPurify usually strips non http(s) links from hrefs
78
80
  });
@@ -1 +1 @@
1
- {"version":3,"file":"markdown-part-renderer.js","sourceRoot":"","sources":["../../../src/browser/chat-response-renderer/markdown-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;;;;AAGhF,4DAA0D;AAC1D,sDAImC;AACnC,oDAAwE;AACxE,kDAAkD;AAClD,6DAA6D;AAC7D,0DAA0D;AAInD,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IAA1B;QACgB,eAAU,GAAG,UAAU,EAAE,CAAC;IAqBjD,CAAC;IApBG,SAAS,CAAC,QAA6B;QACnC,IAAI,oCAA2B,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC3C,OAAO,EAAE,CAAC;QACd,CAAC;QACD,IAAI,yCAAgC,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChD,OAAO,EAAE,CAAC;QACd,CAAC;QACD,OAAO,CAAC,CAAC,CAAC;IACd,CAAC;IACD,MAAM,CAAC,QAAwE;QAC3E,6EAA6E;QAC7E,IAAI,yCAAgC,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChD,yBAAyB;YACzB,2CAA2C;YAC3C,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,OAAO,oBAAC,cAAc,IAAC,QAAQ,EAAE,QAAQ,GAAI,CAAC;IAClD,CAAC;CAEJ,CAAA;AAtBY,oDAAoB;+BAApB,oBAAoB;IADhC,IAAA,sBAAU,GAAE;GACA,oBAAoB,CAsBhC;AAED,MAAM,cAAc,GAAG,CAAC,EAAE,QAAQ,EAAgF,EAAE,EAAE;IAClH,MAAM,GAAG,GAAG,IAAA,4BAAoB,EAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAEnD,OAAO,6BAAK,GAAG,EAAE,GAAG,GAAQ,CAAC;AACjC,CAAC,CAAC;AAEF;;;;;;;;;GASG;AACI,MAAM,oBAAoB,GAAG,CAAC,QAAiC,EAAE,EAAE;IACtE,2CAA2C;IAC3C,MAAM,GAAG,GAAG,IAAA,cAAM,EAAwB,IAAI,CAAC,CAAC;IAChD,MAAM,cAAc,GAAG,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;IAChF,IAAA,iBAAS,EAAC,GAAG,EAAE;;QACX,MAAM,UAAU,GAAG,UAAU,EAAE,CAAC;QAChC,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC3C,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QAC/C,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE;YACtC,uBAAuB,EAAE,IAAI,CAAC,wDAAwD;SACzF,CAAC,CAAC;QACH,OAAO,MAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,OAAO,0CAAE,UAAU,EAAE,CAAC;YAC9B,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACpD,CAAC;QAED,MAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,OAAO,0CAAE,WAAW,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;IAErB,OAAO,GAAG,CAAC;AACf,CAAC,CAAC;AAnBW,QAAA,oBAAoB,wBAmB/B"}
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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"}
@@ -0,0 +1,10 @@
1
+ /// <reference types="react" />
2
+ import { ChatResponseContent, QuestionResponseContent } from '@theia/ai-chat';
3
+ import { ReactNode } from '@theia/core/shared/react';
4
+ import { ChatResponsePartRenderer } from '../chat-response-part-renderer';
5
+ import { ResponseNode } from '../chat-tree-view';
6
+ export declare class QuestionPartRenderer implements ChatResponsePartRenderer<QuestionResponseContent> {
7
+ canHandle(response: ChatResponseContent): number;
8
+ render(question: QuestionResponseContent, node: ResponseNode): ReactNode;
9
+ }
10
+ //# sourceMappingURL=question-part-renderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"question-part-renderer.d.ts","sourceRoot":"","sources":["../../../src/browser/chat-response-renderer/question-part-renderer.tsx"],"names":[],"mappings":";AAeA,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAG9E,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,qBACa,oBACT,YAAW,wBAAwB,CAAC,uBAAuB,CAAC;IAE5D,SAAS,CAAC,QAAQ,EAAE,mBAAmB,GAAG,MAAM;IAOhD,MAAM,CAAC,QAAQ,EAAE,uBAAuB,EAAE,IAAI,EAAE,YAAY,GAAG,SAAS;CAyB3E"}
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.QuestionPartRenderer = void 0;
4
+ const tslib_1 = require("tslib");
5
+ // *****************************************************************************
6
+ // Copyright (C) 2024 EclipseSource GmbH.
7
+ //
8
+ // This program and the accompanying materials are made available under the
9
+ // terms of the Eclipse Public License v. 2.0 which is available at
10
+ // http://www.eclipse.org/legal/epl-2.0.
11
+ //
12
+ // This Source Code may also be made available under the following Secondary
13
+ // Licenses when the conditions for such availability set forth in the Eclipse
14
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
15
+ // with the GNU Classpath Exception which is available at
16
+ // https://www.gnu.org/software/classpath/license.html.
17
+ //
18
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
19
+ // *****************************************************************************
20
+ const ai_chat_1 = require("@theia/ai-chat");
21
+ const inversify_1 = require("@theia/core/shared/inversify");
22
+ const React = require("@theia/core/shared/react");
23
+ let QuestionPartRenderer = class QuestionPartRenderer {
24
+ canHandle(response) {
25
+ if (ai_chat_1.QuestionResponseContent.is(response)) {
26
+ return 10;
27
+ }
28
+ return -1;
29
+ }
30
+ render(question, node) {
31
+ return (React.createElement("div", { className: "theia-QuestionPartRenderer-root" },
32
+ React.createElement("div", { className: "theia-QuestionPartRenderer-question" }, question.question),
33
+ React.createElement("div", { className: "theia-QuestionPartRenderer-options" }, question.options.map((option, index) => (React.createElement("button", { className: `theia-button theia-QuestionPartRenderer-option ${question.selectedOption === option ? 'selected' : ''}`, onClick: () => {
34
+ question.selectedOption = option;
35
+ question.handler(option);
36
+ }, disabled: question.selectedOption !== undefined || !node.response.isWaitingForInput, key: index }, option.text))))));
37
+ }
38
+ };
39
+ exports.QuestionPartRenderer = QuestionPartRenderer;
40
+ exports.QuestionPartRenderer = QuestionPartRenderer = tslib_1.__decorate([
41
+ (0, inversify_1.injectable)()
42
+ ], QuestionPartRenderer);
43
+ //# sourceMappingURL=question-part-renderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"question-part-renderer.js","sourceRoot":"","sources":["../../../src/browser/chat-response-renderer/question-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;AAChF,4CAA8E;AAC9E,4DAA0D;AAC1D,kDAAkD;AAM3C,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IAG7B,SAAS,CAAC,QAA6B;QACnC,IAAI,iCAAuB,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;YACvC,OAAO,EAAE,CAAC;QACd,CAAC;QACD,OAAO,CAAC,CAAC,CAAC;IACd,CAAC;IAED,MAAM,CAAC,QAAiC,EAAE,IAAkB;QACxD,OAAO,CACH,6BAAK,SAAS,EAAC,iCAAiC;YAC5C,6BAAK,SAAS,EAAC,qCAAqC,IAAE,QAAQ,CAAC,QAAQ,CAAO;YAC9E,6BAAK,SAAS,EAAC,oCAAoC,IAE3C,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CACpC,gCACI,SAAS,EAAE,kDAAkD,QAAQ,CAAC,cAAc,KAAK,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,EACnH,OAAO,EAAE,GAAG,EAAE;oBACV,QAAQ,CAAC,cAAc,GAAG,MAAM,CAAC;oBACjC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBAC7B,CAAC,EACD,QAAQ,EAAE,QAAQ,CAAC,cAAc,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EACnF,GAAG,EAAE,KAAK,IAET,MAAM,CAAC,IAAI,CACP,CACZ,CAAC,CAEJ,CACJ,CACT,CAAC;IACN,CAAC;CAEJ,CAAA;AAnCY,oDAAoB;+BAApB,oBAAoB;IADhC,IAAA,sBAAU,GAAE;GACA,oBAAoB,CAmChC"}
@@ -5,6 +5,8 @@ import { ReactNode } from '@theia/core/shared/react';
5
5
  export declare class ToolCallPartRenderer implements ChatResponsePartRenderer<ToolCallChatResponseContent> {
6
6
  canHandle(response: ChatResponseContent): number;
7
7
  render(response: ToolCallChatResponseContent): ReactNode;
8
+ protected renderCollapsibleArguments(args: string | undefined): ReactNode;
9
+ private prettyPrintArgs;
8
10
  private tryPrettyPrintJson;
9
11
  }
10
12
  //# sourceMappingURL=toolcall-part-renderer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"toolcall-part-renderer.d.ts","sourceRoot":"","sources":["../../../src/browser/chat-response-renderer/toolcall-part-renderer.tsx"],"names":[],"mappings":";AAgBA,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAE1E,OAAO,EAAE,mBAAmB,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AAC7F,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAGrD,qBACa,oBAAqB,YAAW,wBAAwB,CAAC,2BAA2B,CAAC;IAE9F,SAAS,CAAC,QAAQ,EAAE,mBAAmB,GAAG,MAAM;IAMhD,MAAM,CAAC,QAAQ,EAAE,2BAA2B,GAAG,SAAS;IAaxD,OAAO,CAAC,kBAAkB;CAW7B"}
1
+ {"version":3,"file":"toolcall-part-renderer.d.ts","sourceRoot":"","sources":["../../../src/browser/chat-response-renderer/toolcall-part-renderer.tsx"],"names":[],"mappings":";AAgBA,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAE1E,OAAO,EAAE,mBAAmB,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AAC7F,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAGrD,qBACa,oBAAqB,YAAW,wBAAwB,CAAC,2BAA2B,CAAC;IAE9F,SAAS,CAAC,QAAQ,EAAE,mBAAmB,GAAG,MAAM;IAOhD,MAAM,CAAC,QAAQ,EAAE,2BAA2B,GAAG,SAAS;IAmBxD,SAAS,CAAC,0BAA0B,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAazE,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,kBAAkB;CAW7B"}
@@ -28,17 +28,37 @@ let ToolCallPartRenderer = class ToolCallPartRenderer {
28
28
  return -1;
29
29
  }
30
30
  render(response) {
31
- return React.createElement("h4", { className: 'theia-toolCall' }, response.finished ?
32
- React.createElement("details", null,
33
- React.createElement("summary", null,
34
- "Ran ",
35
- response.name),
36
- React.createElement("pre", null, this.tryPrettyPrintJson(response)))
37
- : React.createElement("span", null,
38
- React.createElement(Spinner, null),
39
- " Running [",
31
+ return (React.createElement("h4", { className: 'theia-toolCall' }, response.finished ? (React.createElement("details", null,
32
+ React.createElement("summary", null,
33
+ "Ran ",
40
34
  response.name,
41
- "]"));
35
+ "(",
36
+ this.renderCollapsibleArguments(response.arguments),
37
+ ")"),
38
+ React.createElement("pre", null, this.tryPrettyPrintJson(response)))) : (React.createElement("span", null,
39
+ React.createElement(Spinner, null),
40
+ " Running ",
41
+ response.name,
42
+ "(",
43
+ this.renderCollapsibleArguments(response.arguments),
44
+ ")"))));
45
+ }
46
+ renderCollapsibleArguments(args) {
47
+ if (!args || !args.trim() || args.trim() === '{}') {
48
+ return undefined;
49
+ }
50
+ return (React.createElement("details", { className: "collapsible-arguments" },
51
+ React.createElement("summary", { className: "collapsible-arguments-summary" }, "..."),
52
+ React.createElement("span", null, this.prettyPrintArgs(args))));
53
+ }
54
+ prettyPrintArgs(args) {
55
+ try {
56
+ return JSON.stringify(JSON.parse(args), undefined, 2);
57
+ }
58
+ catch (e) {
59
+ // fall through
60
+ return args;
61
+ }
42
62
  }
43
63
  tryPrettyPrintJson(response) {
44
64
  let responseContent = response.result;
@@ -1 +1 @@
1
- {"version":3,"file":"toolcall-part-renderer.js","sourceRoot":"","sources":["../../../src/browser/chat-response-renderer/toolcall-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;;;;AAGhF,4DAA0D;AAC1D,sDAA6F;AAE7F,kDAAkD;AAG3C,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IAE7B,SAAS,CAAC,QAA6B;QACnC,IAAI,oCAA2B,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC3C,OAAO,EAAE,CAAC;QACd,CAAC;QACD,OAAO,CAAC,CAAC,CAAC;IACd,CAAC;IACD,MAAM,CAAC,QAAqC;QACxC,OAAO,4BAAI,SAAS,EAAC,gBAAgB,IAChC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAChB;gBACI;;oBAAc,QAAQ,CAAC,IAAI,CAAW;gBACtC,iCAAM,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAO,CACxC;YACV,CAAC,CAAC;gBAAM,oBAAC,OAAO,OAAG;;gBAAW,QAAQ,CAAC,IAAI;oBAAS,CAEvD,CAAC;IAEV,CAAC;IAEO,kBAAkB,CAAC,QAAqC;QAC5D,IAAI,eAAe,GAAG,QAAQ,CAAC,MAAM,CAAC;QACtC,IAAI,CAAC;YACD,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;gBAClB,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;YAChF,CAAC;QACL,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,eAAe;QACnB,CAAC;QACD,OAAO,eAAe,CAAC;IAC3B,CAAC;CACJ,CAAA;AAhCY,oDAAoB;+BAApB,oBAAoB;IADhC,IAAA,sBAAU,GAAE;GACA,oBAAoB,CAgChC;AAED,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,CAClB,2BAAG,SAAS,EAAC,uBAAuB,GAAK,CAC5C,CAAC"}
1
+ {"version":3,"file":"toolcall-part-renderer.js","sourceRoot":"","sources":["../../../src/browser/chat-response-renderer/toolcall-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;;;;AAGhF,4DAA0D;AAC1D,sDAA6F;AAE7F,kDAAkD;AAG3C,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IAE7B,SAAS,CAAC,QAA6B;QACnC,IAAI,oCAA2B,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC3C,OAAO,EAAE,CAAC;QACd,CAAC;QACD,OAAO,CAAC,CAAC,CAAC;IACd,CAAC;IAED,MAAM,CAAC,QAAqC;QACxC,OAAO,CACH,4BAAI,SAAS,EAAC,gBAAgB,IACzB,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CACjB;YACI;;gBAAc,QAAQ,CAAC,IAAI;;gBACrB,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC,SAAS,CAAC;oBAC/C;YACV,iCAAM,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAO,CACxC,CACb,CAAC,CAAC,CAAC,CACA;YACI,oBAAC,OAAO,OAAG;;YAAU,QAAQ,CAAC,IAAI;;YAAG,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC,SAAS,CAAC;gBACrF,CACV,CACA,CACR,CAAC;IACN,CAAC;IAES,0BAA0B,CAAC,IAAwB;QACzD,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;YAChD,OAAO,SAAS,CAAC;QACrB,CAAC;QAED,OAAO,CACH,iCAAS,SAAS,EAAC,uBAAuB;YACtC,iCAAS,SAAS,EAAC,+BAA+B,UAAc;YAChE,kCAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAQ,CACnC,CACb,CAAC;IACN,CAAC;IAEO,eAAe,CAAC,IAAY;QAChC,IAAI,CAAC;YACD,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;QAC1D,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,eAAe;YACf,OAAO,IAAI,CAAC;QAChB,CAAC;IACL,CAAC;IAEO,kBAAkB,CAAC,QAAqC;QAC5D,IAAI,eAAe,GAAG,QAAQ,CAAC,MAAM,CAAC;QACtC,IAAI,CAAC;YACD,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;gBAClB,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;YAChF,CAAC;QACL,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,eAAe;QACnB,CAAC;QACD,OAAO,eAAe,CAAC;IAC3B,CAAC;CACJ,CAAA;AA7DY,oDAAoB;+BAApB,oBAAoB;IADhC,IAAA,sBAAU,GAAE;GACA,oBAAoB,CA6DhC;AAED,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,CAClB,2BAAG,SAAS,EAAC,uBAAuB,GAAK,CAC5C,CAAC"}
@@ -5,6 +5,7 @@ import { ContextMenuRenderer, NodeProps, TreeModel, TreeNode, TreeProps, TreeWid
5
5
  import * as React from '@theia/core/shared/react';
6
6
  import { ChatNodeToolbarActionContribution } from '../chat-node-toolbar-action-contribution';
7
7
  import { ChatResponsePartRenderer } from '../chat-response-part-renderer';
8
+ import { AIVariableService } from '@theia/ai-core';
8
9
  export interface RequestNode extends TreeNode {
9
10
  request: ChatRequestModel;
10
11
  }
@@ -19,7 +20,9 @@ export declare class ChatViewTreeWidget extends TreeWidget {
19
20
  protected readonly chatResponsePartRenderers: ContributionProvider<ChatResponsePartRenderer<ChatResponseContent>>;
20
21
  protected readonly chatNodeToolbarActionContributions: ContributionProvider<ChatNodeToolbarActionContribution>;
21
22
  protected chatAgentService: ChatAgentService;
23
+ protected readonly variableService: AIVariableService;
22
24
  private commandRegistry;
25
+ private hoverService;
23
26
  protected _shouldScrollToEnd: boolean;
24
27
  protected isEnabled: boolean;
25
28
  set shouldScrollToEnd(shouldScrollToEnd: boolean);
@@ -42,6 +45,7 @@ export declare class ChatViewTreeWidget extends TreeWidget {
42
45
  protected renderNode(node: TreeNode, props: NodeProps): React.ReactNode;
43
46
  private renderAgent;
44
47
  private getAgentLabel;
48
+ private getAgent;
45
49
  private getAgentIconClassName;
46
50
  private renderDetail;
47
51
  private renderChatRequest;
@@ -1 +1 @@
1
- {"version":3,"file":"chat-view-tree-widget.d.ts","sourceRoot":"","sources":["../../../src/browser/chat-tree-view/chat-view-tree-widget.tsx"],"names":[],"mappings":";AAeA,OAAO,EACH,gBAAgB,EAChB,SAAS,EAET,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,EACpB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAmB,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACpE,OAAO,EAIH,mBAAmB,EAGnB,SAAS,EACT,SAAS,EACT,QAAQ,EACR,SAAS,EACT,UAAU,EACb,MAAM,yBAAyB,CAAC;AAOjC,OAAO,KAAK,KAAK,MAAM,0BAA0B,CAAC;AAElD,OAAO,EAAE,iCAAiC,EAAE,MAAM,0CAA0C,CAAC;AAC7F,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAI1E,MAAM,WAAW,WAAY,SAAQ,QAAQ;IACzC,OAAO,EAAE,gBAAgB,CAAA;CAC5B;AACD,eAAO,MAAM,aAAa,SAAU,QAAQ,wBAA2C,CAAC;AAGxF,MAAM,WAAW,YAAa,SAAQ,QAAQ;IAC1C,QAAQ,EAAE,iBAAiB,CAAA;CAC9B;AACD,eAAO,MAAM,cAAc,SAAU,QAAQ,yBAA6C,CAAC;AAM3F,qBACa,kBAAmB,SAAQ,UAAU;IAC9C,MAAM,CAAC,QAAQ,CAAC,EAAE,sBAAsB;IACxC,MAAM,CAAC,QAAQ,CAAC,YAAY,WAA8B;IAG1D,SAAS,CAAC,QAAQ,CAAC,yBAAyB,EAAE,oBAAoB,CAAC,wBAAwB,CAAC,mBAAmB,CAAC,CAAC,CAAC;IAGlH,SAAS,CAAC,QAAQ,CAAC,kCAAkC,EAAE,oBAAoB,CAAC,iCAAiC,CAAC,CAAC;IAG/G,SAAS,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IAG7C,OAAO,CAAC,eAAe,CAAkB;IAEzC,SAAS,CAAC,kBAAkB,UAAQ;IAEpC,SAAS,CAAC,SAAS,UAAS;IAE5B,IAAI,iBAAiB,CAAC,iBAAiB,EAAE,OAAO,EAG/C;IAED,IAAI,iBAAiB,IAAI,OAAO,CAE/B;gBAGsB,KAAK,EAAE,SAAS,EAChB,KAAK,EAAE,SAAS,EACN,mBAAmB,EAAE,mBAAmB;cAiBtD,IAAI,IAAI,IAAI;IAOxB,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;cAKtB,UAAU,CAAC,KAAK,EAAE,SAAS,GAAG,KAAK,CAAC,SAAS;IAOhE,OAAO,CAAC,qBAAqB;IAiD7B,OAAO,CAAC,gBAAgB;IAUxB,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,iBAAiB;IAQzB;;;OAGG;IACI,cAAc,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI;cAiB9B,cAAc,IAAI,MAAM,GAAG,SAAS;YAOzC,iBAAiB;cAYZ,UAAU,CACzB,IAAI,EAAE,QAAQ,EACd,KAAK,EAAE,SAAS,GACjB,KAAK,CAAC,SAAS;IAelB,OAAO,CAAC,WAAW;IAuCnB,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,qBAAqB;IAS7B,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,kBAAkB;IAe1B,OAAO,CAAC,2BAA2B;IAgBnC,SAAS,CAAC,iBAAiB,CAAC,IAAI,EAAE,QAAQ,GAAG,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,GAAG,IAAI;CAQtG"}
1
+ {"version":3,"file":"chat-view-tree-widget.d.ts","sourceRoot":"","sources":["../../../src/browser/chat-tree-view/chat-view-tree-widget.tsx"],"names":[],"mappings":";AAeA,OAAO,EAEH,gBAAgB,EAChB,SAAS,EAET,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,EAGpB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAmB,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACpE,OAAO,EAIH,mBAAmB,EAInB,SAAS,EACT,SAAS,EACT,QAAQ,EACR,SAAS,EACT,UAAU,EACb,MAAM,yBAAyB,CAAC;AAOjC,OAAO,KAAK,KAAK,MAAM,0BAA0B,CAAC;AAElD,OAAO,EAAE,iCAAiC,EAAE,MAAM,0CAA0C,CAAC;AAC7F,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAE1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAGnD,MAAM,WAAW,WAAY,SAAQ,QAAQ;IACzC,OAAO,EAAE,gBAAgB,CAAA;CAC5B;AACD,eAAO,MAAM,aAAa,SAAU,QAAQ,wBAA2C,CAAC;AAGxF,MAAM,WAAW,YAAa,SAAQ,QAAQ;IAC1C,QAAQ,EAAE,iBAAiB,CAAA;CAC9B;AACD,eAAO,MAAM,cAAc,SAAU,QAAQ,yBAA6C,CAAC;AAM3F,qBACa,kBAAmB,SAAQ,UAAU;IAC9C,MAAM,CAAC,QAAQ,CAAC,EAAE,sBAAsB;IACxC,MAAM,CAAC,QAAQ,CAAC,YAAY,WAA8B;IAG1D,SAAS,CAAC,QAAQ,CAAC,yBAAyB,EAAE,oBAAoB,CAAC,wBAAwB,CAAC,mBAAmB,CAAC,CAAC,CAAC;IAGlH,SAAS,CAAC,QAAQ,CAAC,kCAAkC,EAAE,oBAAoB,CAAC,iCAAiC,CAAC,CAAC;IAG/G,SAAS,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IAG7C,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,iBAAiB,CAAC;IAGtD,OAAO,CAAC,eAAe,CAAkB;IAGzC,OAAO,CAAC,YAAY,CAAe;IAEnC,SAAS,CAAC,kBAAkB,UAAQ;IAEpC,SAAS,CAAC,SAAS,UAAS;IAE5B,IAAI,iBAAiB,CAAC,iBAAiB,EAAE,OAAO,EAG/C;IAED,IAAI,iBAAiB,IAAI,OAAO,CAE/B;gBAGsB,KAAK,EAAE,SAAS,EAChB,KAAK,EAAE,SAAS,EACN,mBAAmB,EAAE,mBAAmB;cAiBtD,IAAI,IAAI,IAAI;IAOxB,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;cAKtB,UAAU,CAAC,KAAK,EAAE,SAAS,GAAG,KAAK,CAAC,SAAS;IAOhE,OAAO,CAAC,qBAAqB;IAiD7B,OAAO,CAAC,gBAAgB;IAUxB,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,iBAAiB;IAQzB;;;OAGG;IACI,cAAc,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI;cAiB9B,cAAc,IAAI,MAAM,GAAG,SAAS;YAOzC,iBAAiB;cAYZ,UAAU,CACzB,IAAI,EAAE,QAAQ,EACd,KAAK,EAAE,SAAS,GACjB,KAAK,CAAC,SAAS;IAelB,OAAO,CAAC,WAAW;IAuDnB,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,QAAQ;IAOhB,OAAO,CAAC,qBAAqB;IAS7B,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,kBAAkB;IA+B1B,OAAO,CAAC,2BAA2B;IAgBnC,SAAS,CAAC,iBAAiB,CAAC,IAAI,EAAE,QAAQ,GAAG,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,GAAG,IAAI;CAQtG"}
@@ -26,6 +26,7 @@ const React = require("@theia/core/shared/react");
26
26
  const chat_node_toolbar_action_contribution_1 = require("../chat-node-toolbar-action-contribution");
27
27
  const chat_response_part_renderer_1 = require("../chat-response-part-renderer");
28
28
  const markdown_part_renderer_1 = require("../chat-response-renderer/markdown-part-renderer");
29
+ const ai_core_1 = require("@theia/ai-core");
29
30
  const isRequestNode = (node) => 'request' in node;
30
31
  exports.isRequestNode = isRequestNode;
31
32
  const isResponseNode = (node) => 'response' in node;
@@ -184,18 +185,31 @@ let ChatViewTreeWidget = ChatViewTreeWidget_1 = class ChatViewTreeWidget extends
184
185
  this.renderDetail(node)));
185
186
  }
186
187
  renderAgent(node) {
188
+ var _a;
187
189
  const inProgress = (0, exports.isResponseNode)(node) && !node.response.isComplete && !node.response.isCanceled && !node.response.isError;
190
+ const waitingForInput = (0, exports.isResponseNode)(node) && node.response.isWaitingForInput;
188
191
  const toolbarContributions = !inProgress
189
192
  ? this.chatNodeToolbarActionContributions.getContributions()
190
193
  .flatMap(c => c.getToolbarActions(node))
191
194
  .filter(action => this.commandRegistry.isEnabled(action.commandId, node))
192
195
  .sort((a, b) => { var _a, _b; return ((_a = a.priority) !== null && _a !== void 0 ? _a : 0) - ((_b = b.priority) !== null && _b !== void 0 ? _b : 0); })
193
196
  : [];
197
+ const agentLabel = React.createRef();
198
+ const agentDescription = (_a = this.getAgent(node)) === null || _a === void 0 ? void 0 : _a.description;
194
199
  return React.createElement(React.Fragment, null,
195
200
  React.createElement("div", { className: 'theia-ChatNodeHeader' },
196
201
  React.createElement("div", { className: `theia-AgentAvatar ${this.getAgentIconClassName(node)}` }),
197
- React.createElement("h3", { className: 'theia-AgentLabel' }, this.getAgentLabel(node)),
202
+ React.createElement("h3", { ref: agentLabel, className: 'theia-AgentLabel', onMouseEnter: () => {
203
+ if (agentDescription) {
204
+ this.hoverService.requestHover({
205
+ content: agentDescription,
206
+ target: agentLabel.current,
207
+ position: 'right'
208
+ });
209
+ }
210
+ } }, this.getAgentLabel(node)),
198
211
  inProgress && React.createElement("span", { className: 'theia-ChatContentInProgress' }, "Generating"),
212
+ inProgress && waitingForInput && React.createElement("span", { className: 'theia-ChatContentInProgress' }, "Waiting for input"),
199
213
  React.createElement("div", { className: 'theia-ChatNodeToolbar' }, !inProgress &&
200
214
  toolbarContributions.length > 0 &&
201
215
  toolbarContributions.map(action => React.createElement("span", { key: action.commandId, className: `theia-ChatNodeToolbarAction ${action.icon}`, title: action.tooltip, onClick: e => {
@@ -209,13 +223,18 @@ let ChatViewTreeWidget = ChatViewTreeWidget_1 = class ChatViewTreeWidget extends
209
223
  }, role: 'button' })))));
210
224
  }
211
225
  getAgentLabel(node) {
212
- var _a;
226
+ var _a, _b;
213
227
  if ((0, exports.isRequestNode)(node)) {
214
228
  // TODO find user name
215
229
  return 'You';
216
230
  }
217
- const agent = node.response.agentId ? this.chatAgentService.getAgent(node.response.agentId) : undefined;
218
- return (_a = agent === null || agent === void 0 ? void 0 : agent.name) !== null && _a !== void 0 ? _a : 'AI';
231
+ return (_b = (_a = this.getAgent(node)) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : 'AI';
232
+ }
233
+ getAgent(node) {
234
+ if ((0, exports.isRequestNode)(node)) {
235
+ return undefined;
236
+ }
237
+ return node.response.agentId ? this.chatAgentService.getAgent(node.response.agentId) : undefined;
219
238
  }
220
239
  getAgentIconClassName(node) {
221
240
  var _a;
@@ -235,14 +254,23 @@ let ChatViewTreeWidget = ChatViewTreeWidget_1 = class ChatViewTreeWidget extends
235
254
  ;
236
255
  }
237
256
  renderChatRequest(node) {
238
- return React.createElement(ChatRequestRender, { node: node });
257
+ return React.createElement(ChatRequestRender, { node: node, hoverService: this.hoverService, chatAgentService: this.chatAgentService, variableService: this.variableService });
239
258
  }
240
259
  renderChatResponse(node) {
241
260
  return (React.createElement("div", { className: 'theia-ResponseNode' },
242
261
  !node.response.isComplete
243
262
  && node.response.response.content.length === 0
244
- && node.response.progressMessages.map((c, i) => React.createElement(ProgressMessage, { ...c, key: `${node.id}-progress-${i}` })),
245
- node.response.response.content.map((c, i) => React.createElement("div", { className: 'theia-ResponseNode-Content', key: `${node.id}-content-${i}` }, this.getChatResponsePartRenderer(c, node)))));
263
+ && node.response.progressMessages
264
+ .filter(c => c.show === 'untilFirstContent')
265
+ .map((c, i) => React.createElement(ProgressMessage, { ...c, key: `${node.id}-progress-untilFirstContent-${i}` })),
266
+ node.response.response.content.map((c, i) => React.createElement("div", { className: 'theia-ResponseNode-Content', key: `${node.id}-content-${i}` }, this.getChatResponsePartRenderer(c, node))),
267
+ !node.response.isComplete
268
+ && node.response.progressMessages
269
+ .filter(c => c.show === 'whileIncomplete')
270
+ .map((c, i) => React.createElement(ProgressMessage, { ...c, key: `${node.id}-progress-whileIncomplete-${i}` })),
271
+ node.response.progressMessages
272
+ .filter(c => c.show === 'forever')
273
+ .map((c, i) => React.createElement(ProgressMessage, { ...c, key: `${node.id}-progress-afterComplete-${i}` }))));
246
274
  }
247
275
  getChatResponsePartRenderer(content, node) {
248
276
  const renderer = this.chatResponsePartRenderers.getContributions().reduce((prev, current) => {
@@ -284,10 +312,18 @@ tslib_1.__decorate([
284
312
  (0, inversify_1.inject)(ai_chat_1.ChatAgentService),
285
313
  tslib_1.__metadata("design:type", Object)
286
314
  ], ChatViewTreeWidget.prototype, "chatAgentService", void 0);
315
+ tslib_1.__decorate([
316
+ (0, inversify_1.inject)(ai_core_1.AIVariableService),
317
+ tslib_1.__metadata("design:type", Object)
318
+ ], ChatViewTreeWidget.prototype, "variableService", void 0);
287
319
  tslib_1.__decorate([
288
320
  (0, inversify_1.inject)(core_1.CommandRegistry),
289
321
  tslib_1.__metadata("design:type", core_1.CommandRegistry)
290
322
  ], ChatViewTreeWidget.prototype, "commandRegistry", void 0);
323
+ tslib_1.__decorate([
324
+ (0, inversify_1.inject)(browser_1.HoverService),
325
+ tslib_1.__metadata("design:type", browser_1.HoverService)
326
+ ], ChatViewTreeWidget.prototype, "hoverService", void 0);
291
327
  tslib_1.__decorate([
292
328
  (0, inversify_1.postConstruct)(),
293
329
  tslib_1.__metadata("design:type", Function),
@@ -301,11 +337,42 @@ exports.ChatViewTreeWidget = ChatViewTreeWidget = ChatViewTreeWidget_1 = tslib_1
301
337
  tslib_1.__param(2, (0, inversify_1.inject)(browser_1.ContextMenuRenderer)),
302
338
  tslib_1.__metadata("design:paramtypes", [Object, Object, browser_1.ContextMenuRenderer])
303
339
  ], ChatViewTreeWidget);
304
- const ChatRequestRender = ({ node }) => {
305
- var _a;
306
- const text = (_a = node.request.request.displayText) !== null && _a !== void 0 ? _a : node.request.request.text;
307
- const ref = (0, markdown_part_renderer_1.useMarkdownRendering)(text);
308
- return React.createElement("div", { className: 'theia-RequestNode', ref: ref });
340
+ const ChatRequestRender = ({ node, hoverService, chatAgentService, variableService }) => {
341
+ const parts = node.request.message.parts;
342
+ return (React.createElement("div", { className: "theia-RequestNode" },
343
+ React.createElement("p", null, parts.map((part, index) => {
344
+ var _a, _b;
345
+ if (part instanceof ai_chat_1.ParsedChatRequestAgentPart || part instanceof ai_chat_1.ParsedChatRequestVariablePart) {
346
+ let description = undefined;
347
+ let className = '';
348
+ if (part instanceof ai_chat_1.ParsedChatRequestAgentPart) {
349
+ description = (_a = chatAgentService.getAgent(part.agentId)) === null || _a === void 0 ? void 0 : _a.description;
350
+ className = 'theia-RequestNode-AgentLabel';
351
+ }
352
+ else if (part instanceof ai_chat_1.ParsedChatRequestVariablePart) {
353
+ description = (_b = variableService.getVariable(part.variableName)) === null || _b === void 0 ? void 0 : _b.description;
354
+ className = 'theia-RequestNode-VariableLabel';
355
+ }
356
+ return (React.createElement(HoverableLabel, { key: index, text: part.text, description: description, hoverService: hoverService, className: className }));
357
+ }
358
+ else {
359
+ // maintain the leading and trailing spaces with explicit `&nbsp;`, otherwise they would get trimmed by the markdown renderer
360
+ const ref = (0, markdown_part_renderer_1.useMarkdownRendering)(part.text.replace(/^\s|\s$/g, '&nbsp;'), true);
361
+ return (React.createElement("span", { key: index, ref: ref }));
362
+ }
363
+ }))));
364
+ };
365
+ const HoverableLabel = ({ text, description, hoverService, className }) => {
366
+ const spanRef = React.createRef();
367
+ return (React.createElement("span", { className: className, ref: spanRef, onMouseEnter: () => {
368
+ if (description) {
369
+ hoverService.requestHover({
370
+ content: description,
371
+ target: spanRef.current,
372
+ position: 'right'
373
+ });
374
+ }
375
+ } }, text));
309
376
  };
310
377
  const ProgressMessage = (c) => (React.createElement("div", { className: 'theia-ResponseNode-ProgressMessage' },
311
378
  React.createElement(Indicator, { ...c }),
@@ -1 +1 @@
1
- {"version":3,"file":"chat-view-tree-widget.js","sourceRoot":"","sources":["../../../src/browser/chat-tree-view/chat-view-tree-widget.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chat-view-tree-widget.js","sourceRoot":"","sources":["../../../src/browser/chat-tree-view/chat-view-tree-widget.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,17 +1,17 @@
1
1
  {
2
2
  "name": "@theia/ai-chat-ui",
3
- "version": "1.55.0-next.97+52cad8a35",
3
+ "version": "1.56.0",
4
4
  "description": "Theia - AI Chat UI Extension",
5
5
  "dependencies": {
6
- "@theia/ai-chat": "1.55.0-next.97+52cad8a35",
7
- "@theia/ai-core": "1.55.0-next.97+52cad8a35",
8
- "@theia/core": "1.55.0-next.97+52cad8a35",
9
- "@theia/editor": "1.55.0-next.97+52cad8a35",
10
- "@theia/editor-preview": "1.55.0-next.97+52cad8a35",
11
- "@theia/filesystem": "1.55.0-next.97+52cad8a35",
12
- "@theia/monaco": "1.55.0-next.97+52cad8a35",
6
+ "@theia/ai-chat": "1.56.0",
7
+ "@theia/ai-core": "1.56.0",
8
+ "@theia/core": "1.56.0",
9
+ "@theia/editor": "1.56.0",
10
+ "@theia/editor-preview": "1.56.0",
11
+ "@theia/filesystem": "1.56.0",
12
+ "@theia/monaco": "1.56.0",
13
13
  "@theia/monaco-editor-core": "1.83.101",
14
- "@theia/workspace": "1.55.0-next.97+52cad8a35",
14
+ "@theia/workspace": "1.56.0",
15
15
  "minimatch": "^5.1.0",
16
16
  "tslib": "^2.6.2",
17
17
  "uuid": "^9.0.1"
@@ -50,10 +50,10 @@
50
50
  "watch": "theiaext watch"
51
51
  },
52
52
  "devDependencies": {
53
- "@theia/ext-scripts": "1.55.0"
53
+ "@theia/ext-scripts": "1.56.0"
54
54
  },
55
55
  "nyc": {
56
56
  "extends": "../../configs/nyc.json"
57
57
  },
58
- "gitHead": "52cad8a35c3c86231f1b3efc74608bd159840a69"
58
+ "gitHead": "3b4498f8f1c66be688847418fcc35595282671dc"
59
59
  }
@@ -36,6 +36,7 @@ import { ChatViewLanguageContribution } from './chat-view-language-contribution'
36
36
  import { ChatViewWidget } from './chat-view-widget';
37
37
  import { ChatViewWidgetToolbarContribution } from './chat-view-widget-toolbar-contribution';
38
38
  import { EditorPreviewManager } from '@theia/editor-preview/lib/browser/editor-preview-manager';
39
+ import { QuestionPartRenderer } from './chat-response-renderer/question-part-renderer';
39
40
 
40
41
  export default new ContainerModule((bind, _unbind, _isBound, rebind) => {
41
42
  bindViewContribution(bind, AIChatContribution);
@@ -66,6 +67,7 @@ export default new ContainerModule((bind, _unbind, _isBound, rebind) => {
66
67
  bind(ChatResponsePartRenderer).to(CommandPartRenderer).inSingletonScope();
67
68
  bind(ChatResponsePartRenderer).to(ToolCallPartRenderer).inSingletonScope();
68
69
  bind(ChatResponsePartRenderer).to(ErrorPartRenderer).inSingletonScope();
70
+ bind(ChatResponsePartRenderer).to(QuestionPartRenderer).inSingletonScope();
69
71
  [CommandContribution, MenuContribution].forEach(serviceIdentifier =>
70
72
  bind(serviceIdentifier).to(ChatViewMenuContribution).inSingletonScope()
71
73
  );
@@ -61,21 +61,23 @@ const MarkdownRender = ({ response }: { response: MarkdownChatResponseContent |
61
61
  /**
62
62
  * This hook uses markdown-it directly to render markdown.
63
63
  * The reason to use markdown-it directly is that the MarkdownRenderer is
64
- * overriden by theia with a monaco version. This monaco version strips all html
64
+ * overridden by theia with a monaco version. This monaco version strips all html
65
65
  * tags from the markdown with empty content.
66
66
  * This leads to unexpected behavior when rendering markdown with html tags.
67
67
  *
68
68
  * @param markdown the string to render as markdown
69
+ * @param skipSurroundingParagraph whether to remove a surrounding paragraph element (default: false)
69
70
  * @returns the ref to use in an element to render the markdown
70
71
  */
71
- export const useMarkdownRendering = (markdown: string | MarkdownString) => {
72
+ export const useMarkdownRendering = (markdown: string | MarkdownString, skipSurroundingParagraph: boolean = false) => {
72
73
  // eslint-disable-next-line no-null/no-null
73
74
  const ref = useRef<HTMLDivElement | null>(null);
74
75
  const markdownString = typeof markdown === 'string' ? markdown : markdown.value;
75
76
  useEffect(() => {
76
77
  const markdownIt = markdownit();
77
78
  const host = document.createElement('div');
78
- const html = markdownIt.render(markdownString);
79
+ // markdownIt always puts the content in a paragraph element, so we remove it if we don't want it
80
+ const html = skipSurroundingParagraph ? markdownIt.render(markdownString).replace(/^<p>|<\/p>|<p><\/p>$/g, '') : markdownIt.render(markdownString);
79
81
  host.innerHTML = DOMPurify.sanitize(html, {
80
82
  ALLOW_UNKNOWN_PROTOCOLS: true // DOMPurify usually strips non http(s) links from hrefs
81
83
  });
@@ -0,0 +1,59 @@
1
+ // *****************************************************************************
2
+ // Copyright (C) 2024 EclipseSource GmbH.
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
+ import { ChatResponseContent, QuestionResponseContent } from '@theia/ai-chat';
17
+ import { injectable } from '@theia/core/shared/inversify';
18
+ import * as React from '@theia/core/shared/react';
19
+ import { ReactNode } from '@theia/core/shared/react';
20
+ import { ChatResponsePartRenderer } from '../chat-response-part-renderer';
21
+ import { ResponseNode } from '../chat-tree-view';
22
+
23
+ @injectable()
24
+ export class QuestionPartRenderer
25
+ implements ChatResponsePartRenderer<QuestionResponseContent> {
26
+
27
+ canHandle(response: ChatResponseContent): number {
28
+ if (QuestionResponseContent.is(response)) {
29
+ return 10;
30
+ }
31
+ return -1;
32
+ }
33
+
34
+ render(question: QuestionResponseContent, node: ResponseNode): ReactNode {
35
+ return (
36
+ <div className="theia-QuestionPartRenderer-root">
37
+ <div className="theia-QuestionPartRenderer-question">{question.question}</div>
38
+ <div className="theia-QuestionPartRenderer-options">
39
+ {
40
+ question.options.map((option, index) => (
41
+ <button
42
+ className={`theia-button theia-QuestionPartRenderer-option ${question.selectedOption === option ? 'selected' : ''}`}
43
+ onClick={() => {
44
+ question.selectedOption = option;
45
+ question.handler(option);
46
+ }}
47
+ disabled={question.selectedOption !== undefined || !node.response.isWaitingForInput}
48
+ key={index}
49
+ >
50
+ {option.text}
51
+ </button>
52
+ ))
53
+ }
54
+ </div>
55
+ </div>
56
+ );
57
+ }
58
+
59
+ }
@@ -29,17 +29,46 @@ export class ToolCallPartRenderer implements ChatResponsePartRenderer<ToolCallCh
29
29
  }
30
30
  return -1;
31
31
  }
32
+
32
33
  render(response: ToolCallChatResponseContent): ReactNode {
33
- return <h4 className='theia-toolCall'>
34
- {response.finished ?
35
- <details>
36
- <summary>Ran {response.name}</summary>
37
- <pre>{this.tryPrettyPrintJson(response)}</pre>
38
- </details>
39
- : <span><Spinner /> Running [{response.name}]</span>
40
- }
41
- </h4>;
34
+ return (
35
+ <h4 className='theia-toolCall'>
36
+ {response.finished ? (
37
+ <details>
38
+ <summary>Ran {response.name}
39
+ ({this.renderCollapsibleArguments(response.arguments)})
40
+ </summary>
41
+ <pre>{this.tryPrettyPrintJson(response)}</pre>
42
+ </details>
43
+ ) : (
44
+ <span>
45
+ <Spinner /> Running {response.name}({this.renderCollapsibleArguments(response.arguments)})
46
+ </span>
47
+ )}
48
+ </h4>
49
+ );
50
+ }
42
51
 
52
+ protected renderCollapsibleArguments(args: string | undefined): ReactNode {
53
+ if (!args || !args.trim() || args.trim() === '{}') {
54
+ return undefined;
55
+ }
56
+
57
+ return (
58
+ <details className="collapsible-arguments">
59
+ <summary className="collapsible-arguments-summary">...</summary>
60
+ <span>{this.prettyPrintArgs(args)}</span>
61
+ </details>
62
+ );
63
+ }
64
+
65
+ private prettyPrintArgs(args: string): string {
66
+ try {
67
+ return JSON.stringify(JSON.parse(args), undefined, 2);
68
+ } catch (e) {
69
+ // fall through
70
+ return args;
71
+ }
43
72
  }
44
73
 
45
74
  private tryPrettyPrintJson(response: ToolCallChatResponseContent): string | undefined {
@@ -14,12 +14,15 @@
14
14
  // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
15
15
  // *****************************************************************************
16
16
  import {
17
+ ChatAgent,
17
18
  ChatAgentService,
18
19
  ChatModel,
19
20
  ChatProgressMessage,
20
21
  ChatRequestModel,
21
22
  ChatResponseContent,
22
23
  ChatResponseModel,
24
+ ParsedChatRequestAgentPart,
25
+ ParsedChatRequestVariablePart,
23
26
  } from '@theia/ai-chat';
24
27
  import { CommandRegistry, ContributionProvider } from '@theia/core';
25
28
  import {
@@ -27,6 +30,7 @@ import {
27
30
  CommonCommands,
28
31
  CompositeTreeNode,
29
32
  ContextMenuRenderer,
33
+ HoverService,
30
34
  Key,
31
35
  KeyCode,
32
36
  NodeProps,
@@ -46,6 +50,7 @@ import * as React from '@theia/core/shared/react';
46
50
  import { ChatNodeToolbarActionContribution } from '../chat-node-toolbar-action-contribution';
47
51
  import { ChatResponsePartRenderer } from '../chat-response-part-renderer';
48
52
  import { useMarkdownRendering } from '../chat-response-renderer/markdown-part-renderer';
53
+ import { AIVariableService } from '@theia/ai-core';
49
54
 
50
55
  // TODO Instead of directly operating on the ChatRequestModel we could use an intermediate view model
51
56
  export interface RequestNode extends TreeNode {
@@ -77,9 +82,15 @@ export class ChatViewTreeWidget extends TreeWidget {
77
82
  @inject(ChatAgentService)
78
83
  protected chatAgentService: ChatAgentService;
79
84
 
85
+ @inject(AIVariableService)
86
+ protected readonly variableService: AIVariableService;
87
+
80
88
  @inject(CommandRegistry)
81
89
  private commandRegistry: CommandRegistry;
82
90
 
91
+ @inject(HoverService)
92
+ private hoverService: HoverService;
93
+
83
94
  protected _shouldScrollToEnd = true;
84
95
 
85
96
  protected isEnabled = false;
@@ -267,17 +278,33 @@ export class ChatViewTreeWidget extends TreeWidget {
267
278
 
268
279
  private renderAgent(node: RequestNode | ResponseNode): React.ReactNode {
269
280
  const inProgress = isResponseNode(node) && !node.response.isComplete && !node.response.isCanceled && !node.response.isError;
281
+ const waitingForInput = isResponseNode(node) && node.response.isWaitingForInput;
270
282
  const toolbarContributions = !inProgress
271
283
  ? this.chatNodeToolbarActionContributions.getContributions()
272
284
  .flatMap(c => c.getToolbarActions(node))
273
285
  .filter(action => this.commandRegistry.isEnabled(action.commandId, node))
274
286
  .sort((a, b) => (a.priority ?? 0) - (b.priority ?? 0))
275
287
  : [];
288
+ const agentLabel = React.createRef<HTMLHeadingElement>();
289
+ const agentDescription = this.getAgent(node)?.description;
276
290
  return <React.Fragment>
277
291
  <div className='theia-ChatNodeHeader'>
278
292
  <div className={`theia-AgentAvatar ${this.getAgentIconClassName(node)}`}></div>
279
- <h3 className='theia-AgentLabel'>{this.getAgentLabel(node)}</h3>
293
+ <h3 ref={agentLabel}
294
+ className='theia-AgentLabel'
295
+ onMouseEnter={() => {
296
+ if (agentDescription) {
297
+ this.hoverService.requestHover({
298
+ content: agentDescription,
299
+ target: agentLabel.current!,
300
+ position: 'right'
301
+ });
302
+ }
303
+ }}>
304
+ {this.getAgentLabel(node)}
305
+ </h3>
280
306
  {inProgress && <span className='theia-ChatContentInProgress'>Generating</span>}
307
+ {inProgress && waitingForInput && <span className='theia-ChatContentInProgress'>Waiting for input</span>}
281
308
  <div className='theia-ChatNodeToolbar'>
282
309
  {!inProgress &&
283
310
  toolbarContributions.length > 0 &&
@@ -309,8 +336,14 @@ export class ChatViewTreeWidget extends TreeWidget {
309
336
  // TODO find user name
310
337
  return 'You';
311
338
  }
312
- const agent = node.response.agentId ? this.chatAgentService.getAgent(node.response.agentId) : undefined;
313
- return agent?.name ?? 'AI';
339
+ return this.getAgent(node)?.name ?? 'AI';
340
+ }
341
+
342
+ private getAgent(node: RequestNode | ResponseNode): ChatAgent | undefined {
343
+ if (isRequestNode(node)) {
344
+ return undefined;
345
+ }
346
+ return node.response.agentId ? this.chatAgentService.getAgent(node.response.agentId) : undefined;
314
347
  }
315
348
 
316
349
  private getAgentIconClassName(node: RequestNode | ResponseNode): string | undefined {
@@ -332,7 +365,12 @@ export class ChatViewTreeWidget extends TreeWidget {
332
365
  }
333
366
 
334
367
  private renderChatRequest(node: RequestNode): React.ReactNode {
335
- return <ChatRequestRender node={node} />;
368
+ return <ChatRequestRender
369
+ node={node}
370
+ hoverService={this.hoverService}
371
+ chatAgentService={this.chatAgentService}
372
+ variableService={this.variableService}
373
+ />;
336
374
  }
337
375
 
338
376
  private renderChatResponse(node: ResponseNode): React.ReactNode {
@@ -340,12 +378,28 @@ export class ChatViewTreeWidget extends TreeWidget {
340
378
  <div className={'theia-ResponseNode'}>
341
379
  {!node.response.isComplete
342
380
  && node.response.response.content.length === 0
343
- && node.response.progressMessages.map((c, i) =>
344
- <ProgressMessage {...c} key={`${node.id}-progress-${i}`} />
345
- )}
381
+ && node.response.progressMessages
382
+ .filter(c => c.show === 'untilFirstContent')
383
+ .map((c, i) =>
384
+ <ProgressMessage {...c} key={`${node.id}-progress-untilFirstContent-${i}`} />
385
+ )
386
+ }
346
387
  {node.response.response.content.map((c, i) =>
347
388
  <div className='theia-ResponseNode-Content' key={`${node.id}-content-${i}`}>{this.getChatResponsePartRenderer(c, node)}</div>
348
389
  )}
390
+ {!node.response.isComplete
391
+ && node.response.progressMessages
392
+ .filter(c => c.show === 'whileIncomplete')
393
+ .map((c, i) =>
394
+ <ProgressMessage {...c} key={`${node.id}-progress-whileIncomplete-${i}`} />
395
+ )
396
+ }
397
+ {node.response.progressMessages
398
+ .filter(c => c.show === 'forever')
399
+ .map((c, i) =>
400
+ <ProgressMessage {...c} key={`${node.id}-progress-afterComplete-${i}`} />
401
+ )
402
+ }
349
403
  </div>
350
404
  );
351
405
  }
@@ -376,11 +430,79 @@ export class ChatViewTreeWidget extends TreeWidget {
376
430
  }
377
431
  }
378
432
 
379
- const ChatRequestRender = ({ node }: { node: RequestNode }) => {
380
- const text = node.request.request.displayText ?? node.request.request.text;
381
- const ref = useMarkdownRendering(text);
433
+ const ChatRequestRender = (
434
+ {
435
+ node, hoverService, chatAgentService, variableService
436
+ }: {
437
+ node: RequestNode,
438
+ hoverService: HoverService,
439
+ chatAgentService: ChatAgentService,
440
+ variableService: AIVariableService
441
+ }) => {
442
+ const parts = node.request.message.parts;
443
+ return (
444
+ <div className="theia-RequestNode">
445
+ <p>
446
+ {parts.map((part, index) => {
447
+ if (part instanceof ParsedChatRequestAgentPart || part instanceof ParsedChatRequestVariablePart) {
448
+ let description = undefined;
449
+ let className = '';
450
+ if (part instanceof ParsedChatRequestAgentPart) {
451
+ description = chatAgentService.getAgent(part.agentId)?.description;
452
+ className = 'theia-RequestNode-AgentLabel';
453
+ } else if (part instanceof ParsedChatRequestVariablePart) {
454
+ description = variableService.getVariable(part.variableName)?.description;
455
+ className = 'theia-RequestNode-VariableLabel';
456
+ }
457
+ return (
458
+ <HoverableLabel
459
+ key={index}
460
+ text={part.text}
461
+ description={description}
462
+ hoverService={hoverService}
463
+ className={className}
464
+ />
465
+ );
466
+ } else {
467
+ // maintain the leading and trailing spaces with explicit `&nbsp;`, otherwise they would get trimmed by the markdown renderer
468
+ const ref = useMarkdownRendering(part.text.replace(/^\s|\s$/g, '&nbsp;'), true);
469
+ return (
470
+ <span key={index} ref={ref}></span>
471
+ );
472
+ }
473
+ })}
474
+ </p>
475
+ </div>
476
+ );
477
+ };
382
478
 
383
- return <div className={'theia-RequestNode'} ref={ref}></div>;
479
+ const HoverableLabel = (
480
+ {
481
+ text, description, hoverService, className
482
+ }: {
483
+ text: string,
484
+ description?: string,
485
+ hoverService: HoverService,
486
+ className: string
487
+ }) => {
488
+ const spanRef = React.createRef<HTMLSpanElement>();
489
+ return (
490
+ <span
491
+ className={className}
492
+ ref={spanRef}
493
+ onMouseEnter={() => {
494
+ if (description) {
495
+ hoverService.requestHover({
496
+ content: description,
497
+ target: spanRef.current!,
498
+ position: 'right'
499
+ });
500
+ }
501
+ }}
502
+ >
503
+ {text}
504
+ </span>
505
+ );
384
506
  };
385
507
 
386
508
  const ProgressMessage = (c: ChatProgressMessage) => (
@@ -132,6 +132,20 @@ div:last-child > .theia-ChatNode {
132
132
  font-size: var(--theia-code-font-size);
133
133
  }
134
134
 
135
+ .theia-RequestNode > p div {
136
+ display: inline;
137
+ }
138
+
139
+ .theia-RequestNode .theia-RequestNode-AgentLabel,
140
+ .theia-RequestNode .theia-RequestNode-VariableLabel {
141
+ padding: calc(var(--theia-ui-padding) * 2 / 3);
142
+ padding-top: 0px;
143
+ padding-bottom: 0px;
144
+ border-radius: calc(var(--theia-ui-padding) * 2 / 3);
145
+ background: var(--theia-badge-background);
146
+ color: var(--theia-badge-foreground);
147
+ }
148
+
135
149
  .chat-input-widget {
136
150
  align-items: flex-end;
137
151
  display: flex;
@@ -231,7 +245,7 @@ div:last-child > .theia-ChatNode {
231
245
  display: flex;
232
246
  flex-direction: column;
233
247
  gap: 2px;
234
- border: 1px solid var(--theia-input-border);
248
+ border: var(--theia-border-width) solid var(--theia-input-border);
235
249
  border-radius: 4px;
236
250
  }
237
251
 
@@ -265,6 +279,33 @@ div:last-child > .theia-ChatNode {
265
279
  background-color: var(--theia-input-border);
266
280
  }
267
281
 
282
+ .theia-QuestionPartRenderer-root {
283
+ display: flex;
284
+ flex-direction: column;
285
+ gap: 8px;
286
+ border: var(--theia-border-width) solid
287
+ var(--theia-sideBarSectionHeader-border);
288
+ padding: 8px 12px 12px;
289
+ border-radius: 5px;
290
+ margin: 0 0 8px 0;
291
+ }
292
+ .theia-QuestionPartRenderer-options {
293
+ display: flex;
294
+ flex-wrap: wrap;
295
+ gap: 12px;
296
+ }
297
+ .theia-QuestionPartRenderer-option {
298
+ min-width: 100px;
299
+ flex: 1 1 auto;
300
+ margin: 0;
301
+ }
302
+ .theia-QuestionPartRenderer-option.selected:disabled:hover {
303
+ background-color: var(--theia-button-disabledBackground);
304
+ }
305
+ .theia-QuestionPartRenderer-option:disabled:not(.selected) {
306
+ background-color: var(--theia-button-secondaryBackground);
307
+ }
308
+
268
309
  .theia-toolCall {
269
310
  font-weight: normal;
270
311
  color: var(--theia-descriptionForeground);
@@ -289,6 +330,21 @@ div:last-child > .theia-ChatNode {
289
330
  overflow: auto;
290
331
  }
291
332
 
333
+ .collapsible-arguments {
334
+ display: inline-block;
335
+ }
336
+
337
+ .collapsible-arguments .collapsible-arguments-summary {
338
+ display: inline-block;
339
+ white-space: nowrap;
340
+ text-decoration: underline;
341
+ }
342
+
343
+ details[open].collapsible-arguments,
344
+ details[open].collapsible-arguments .collapsible-arguments-summary {
345
+ display: unset;
346
+ }
347
+
292
348
  .theia-ResponseNode-ProgressMessage {
293
349
  font-weight: normal;
294
350
  color: var(--theia-descriptionForeground);