@theia/ai-chat-ui 1.57.0-next.7 → 1.57.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -1
- package/lib/browser/ai-chat-ui-frontend-module.d.ts.map +1 -1
- package/lib/browser/ai-chat-ui-frontend-module.js +6 -1
- package/lib/browser/ai-chat-ui-frontend-module.js.map +1 -1
- package/lib/browser/chat-input-widget.d.ts +3 -0
- package/lib/browser/chat-input-widget.d.ts.map +1 -1
- package/lib/browser/chat-input-widget.js +33 -5
- package/lib/browser/chat-input-widget.js.map +1 -1
- package/lib/browser/chat-response-renderer/code-part-renderer.d.ts +30 -2
- package/lib/browser/chat-response-renderer/code-part-renderer.d.ts.map +1 -1
- package/lib/browser/chat-response-renderer/code-part-renderer.js +45 -10
- package/lib/browser/chat-response-renderer/code-part-renderer.js.map +1 -1
- package/lib/browser/chat-response-renderer/markdown-part-renderer.d.ts +8 -3
- package/lib/browser/chat-response-renderer/markdown-part-renderer.d.ts.map +1 -1
- package/lib/browser/chat-response-renderer/markdown-part-renderer.js +38 -10
- package/lib/browser/chat-response-renderer/markdown-part-renderer.js.map +1 -1
- package/lib/browser/chat-tree-view/chat-view-tree-widget.d.ts +2 -1
- package/lib/browser/chat-tree-view/chat-view-tree-widget.d.ts.map +1 -1
- package/lib/browser/chat-tree-view/chat-view-tree-widget.js +8 -4
- package/lib/browser/chat-tree-view/chat-view-tree-widget.js.map +1 -1
- package/lib/browser/chat-view-widget.d.ts +2 -1
- package/lib/browser/chat-view-widget.d.ts.map +1 -1
- package/lib/browser/chat-view-widget.js +4 -0
- package/lib/browser/chat-view-widget.js.map +1 -1
- package/package.json +11 -11
- package/src/browser/ai-chat-ui-frontend-module.ts +23 -4
- package/src/browser/chat-input-widget.tsx +38 -3
- package/src/browser/chat-response-renderer/code-part-renderer.tsx +48 -9
- package/src/browser/chat-response-renderer/markdown-part-renderer.tsx +39 -12
- package/src/browser/chat-tree-view/chat-view-tree-widget.tsx +10 -4
- package/src/browser/chat-view-widget.tsx +6 -1
package/README.md
CHANGED
|
@@ -28,5 +28,6 @@ It is based on `@theia/ai-chat`.
|
|
|
28
28
|
- [一 (Secondary) GNU General Public License, version 2 with the GNU Classpath Exception](https://projects.eclipse.org/license/secondary-gpl-2.0-cp)
|
|
29
29
|
|
|
30
30
|
## Trademark
|
|
31
|
+
|
|
31
32
|
"Theia" is a trademark of the Eclipse Foundation
|
|
32
|
-
https://www.eclipse.org/theia
|
|
33
|
+
<https://www.eclipse.org/theia>
|
|
@@ -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;
|
|
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;AAgC3E,OAAO,mCAAmC,CAAC;;AAE3C,wBAuDG"}
|
|
@@ -20,7 +20,6 @@ const browser_1 = require("@theia/core/lib/browser");
|
|
|
20
20
|
const tab_bar_toolbar_1 = require("@theia/core/lib/browser/shell/tab-bar-toolbar");
|
|
21
21
|
const inversify_1 = require("@theia/core/shared/inversify");
|
|
22
22
|
const browser_2 = require("@theia/editor/lib/browser");
|
|
23
|
-
require("../../src/browser/style/index.css");
|
|
24
23
|
const ai_chat_ui_contribution_1 = require("./ai-chat-ui-contribution");
|
|
25
24
|
const chat_input_widget_1 = require("./chat-input-widget");
|
|
26
25
|
const chat_node_toolbar_action_contribution_1 = require("./chat-node-toolbar-action-contribution");
|
|
@@ -35,6 +34,7 @@ const chat_view_widget_1 = require("./chat-view-widget");
|
|
|
35
34
|
const chat_view_widget_toolbar_contribution_1 = require("./chat-view-widget-toolbar-contribution");
|
|
36
35
|
const editor_preview_manager_1 = require("@theia/editor-preview/lib/browser/editor-preview-manager");
|
|
37
36
|
const question_part_renderer_1 = require("./chat-response-renderer/question-part-renderer");
|
|
37
|
+
require("../../src/browser/style/index.css");
|
|
38
38
|
exports.default = new inversify_1.ContainerModule((bind, _unbind, _isBound, rebind) => {
|
|
39
39
|
(0, browser_1.bindViewContribution)(bind, ai_chat_ui_contribution_1.AIChatContribution);
|
|
40
40
|
bind(tab_bar_toolbar_1.TabBarToolbarContribution).toService(ai_chat_ui_contribution_1.AIChatContribution);
|
|
@@ -59,6 +59,11 @@ exports.default = new inversify_1.ContainerModule((bind, _unbind, _isBound, rebi
|
|
|
59
59
|
bind(chat_response_part_renderer_1.ChatResponsePartRenderer).to(chat_response_renderer_1.ErrorPartRenderer).inSingletonScope();
|
|
60
60
|
bind(chat_response_part_renderer_1.ChatResponsePartRenderer).to(question_part_renderer_1.QuestionPartRenderer).inSingletonScope();
|
|
61
61
|
[core_1.CommandContribution, core_1.MenuContribution].forEach(serviceIdentifier => bind(serviceIdentifier).to(chat_view_contribution_1.ChatViewMenuContribution).inSingletonScope());
|
|
62
|
+
(0, core_1.bindContributionProvider)(bind, chat_response_renderer_1.CodePartRendererAction);
|
|
63
|
+
bind(chat_response_renderer_1.CopyToClipboardButtonAction).toSelf().inSingletonScope();
|
|
64
|
+
bind(chat_response_renderer_1.CodePartRendererAction).toService(chat_response_renderer_1.CopyToClipboardButtonAction);
|
|
65
|
+
bind(chat_response_renderer_1.InsertCodeAtCursorButtonAction).toSelf().inSingletonScope();
|
|
66
|
+
bind(chat_response_renderer_1.CodePartRendererAction).toService(chat_response_renderer_1.InsertCodeAtCursorButtonAction);
|
|
62
67
|
bind(ai_editor_manager_1.AIEditorManager).toSelf().inSingletonScope();
|
|
63
68
|
rebind(browser_2.EditorManager).toService(ai_editor_manager_1.AIEditorManager);
|
|
64
69
|
rebind(editor_preview_manager_1.EditorPreviewManager).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":";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,sCAA8F;AAC9F,qDAA+G;AAC/G,mFAA0F;AAC1F,4DAA2E;AAC3E,uDAA0D;AAC1D,
|
|
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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"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import { ChatAgent, ChatAgentService, ChatModel, ChatRequestModel } from '@theia/ai-chat';
|
|
3
3
|
import { UntitledResourceResolver } from '@theia/core';
|
|
4
4
|
import { ContextMenuRenderer, Message, ReactWidget } from '@theia/core/lib/browser';
|
|
5
|
+
import { MonacoEditor } from '@theia/monaco/lib/browser/monaco-editor';
|
|
5
6
|
import * as React from '@theia/core/shared/react';
|
|
6
7
|
import { MonacoEditorProvider } from '@theia/monaco/lib/browser/monaco-editor-provider';
|
|
7
8
|
import { IMouseEvent } from '@theia/monaco-editor-core';
|
|
@@ -14,6 +15,8 @@ export declare class AIChatInputWidget extends ReactWidget {
|
|
|
14
15
|
protected readonly editorProvider: MonacoEditorProvider;
|
|
15
16
|
protected readonly untitledResourceResolver: UntitledResourceResolver;
|
|
16
17
|
protected readonly contextMenuRenderer: ContextMenuRenderer;
|
|
18
|
+
protected editorRef: MonacoEditor | undefined;
|
|
19
|
+
private editorReady;
|
|
17
20
|
protected isEnabled: boolean;
|
|
18
21
|
private _onQuery;
|
|
19
22
|
set onQuery(query: Query);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-input-widget.d.ts","sourceRoot":"","sources":["../../src/browser/chat-input-widget.tsx"],"names":[],"mappings":";AAeA,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAC1F,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"chat-input-widget.d.ts","sourceRoot":"","sources":["../../src/browser/chat-input-widget.tsx"],"names":[],"mappings":";AAeA,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAC1F,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEpF,OAAO,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AACvE,OAAO,KAAK,KAAK,MAAM,0BAA0B,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kDAAkD,CAAC;AAExF,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAGxD,KAAK,KAAK,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAC9C,KAAK,MAAM,GAAG,CAAC,YAAY,EAAE,gBAAgB,KAAK,IAAI,CAAC;AAEvD,qBACa,iBAAkB,SAAQ,WAAW;IAC9C,OAAc,EAAE,SAAuB;IACvC,MAAM,CAAC,QAAQ,CAAC,YAAY,WAA+B;IAG3D,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,gBAAgB,CAAC;IAGlD,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,oBAAoB,CAAC;IAGxD,SAAS,CAAC,QAAQ,CAAC,wBAAwB,EAAE,wBAAwB,CAAC;IAGtE,SAAS,CAAC,QAAQ,CAAC,mBAAmB,EAAE,mBAAmB,CAAC;IAE5D,SAAS,CAAC,SAAS,EAAE,YAAY,GAAG,SAAS,CAAa;IAC1D,OAAO,CAAC,WAAW,CAAwB;IAE3C,SAAS,CAAC,SAAS,UAAS;IAE5B,OAAO,CAAC,QAAQ,CAAQ;IACxB,IAAI,OAAO,CAAC,KAAK,EAAE,KAAK,EAEvB;IACD,OAAO,CAAC,SAAS,CAAS;IAC1B,IAAI,QAAQ,CAAC,MAAM,EAAE,MAAM,EAE1B;IACD,OAAO,CAAC,UAAU,CAAY;IAC9B,IAAI,SAAS,CAAC,SAAS,EAAE,SAAS,EAGjC;IAGD,SAAS,CAAC,IAAI,IAAI,IAAI;cAMH,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI;IASxD,SAAS,CAAC,aAAa,IAAI,SAAS,EAAE;IAItC,SAAS,CAAC,MAAM,IAAI,KAAK,CAAC,SAAS;IAmB5B,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAKzC,SAAS,CAAC,iBAAiB,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;CAQxD"}
|
|
@@ -25,9 +25,12 @@ const inversify_1 = require("@theia/core/shared/inversify");
|
|
|
25
25
|
const React = require("@theia/core/shared/react");
|
|
26
26
|
const monaco_editor_provider_1 = require("@theia/monaco/lib/browser/monaco-editor-provider");
|
|
27
27
|
const chat_view_language_contribution_1 = require("./chat-view-language-contribution");
|
|
28
|
+
const promise_util_1 = require("@theia/core/lib/common/promise-util");
|
|
28
29
|
let AIChatInputWidget = AIChatInputWidget_1 = class AIChatInputWidget extends browser_1.ReactWidget {
|
|
29
30
|
constructor() {
|
|
30
31
|
super(...arguments);
|
|
32
|
+
this.editorRef = undefined;
|
|
33
|
+
this.editorReady = new promise_util_1.Deferred();
|
|
31
34
|
this.isEnabled = false;
|
|
32
35
|
}
|
|
33
36
|
set onQuery(query) {
|
|
@@ -47,13 +50,20 @@ let AIChatInputWidget = AIChatInputWidget_1 = class AIChatInputWidget extends br
|
|
|
47
50
|
}
|
|
48
51
|
onActivateRequest(msg) {
|
|
49
52
|
super.onActivateRequest(msg);
|
|
50
|
-
this.
|
|
53
|
+
this.editorReady.promise.then(() => {
|
|
54
|
+
if (this.editorRef) {
|
|
55
|
+
this.editorRef.focus();
|
|
56
|
+
}
|
|
57
|
+
});
|
|
51
58
|
}
|
|
52
59
|
getChatAgents() {
|
|
53
60
|
return this.agentService.getAgents();
|
|
54
61
|
}
|
|
55
62
|
render() {
|
|
56
|
-
return (React.createElement(ChatInput, { onQuery: this._onQuery.bind(this), onCancel: this._onCancel.bind(this), chatModel: this._chatModel, getChatAgents: this.getChatAgents.bind(this), editorProvider: this.editorProvider, untitledResourceResolver: this.untitledResourceResolver, contextMenuCallback: this.handleContextMenu.bind(this), isEnabled: this.isEnabled
|
|
63
|
+
return (React.createElement(ChatInput, { onQuery: this._onQuery.bind(this), onCancel: this._onCancel.bind(this), chatModel: this._chatModel, getChatAgents: this.getChatAgents.bind(this), editorProvider: this.editorProvider, untitledResourceResolver: this.untitledResourceResolver, contextMenuCallback: this.handleContextMenu.bind(this), isEnabled: this.isEnabled, setEditorRef: editor => {
|
|
64
|
+
this.editorRef = editor;
|
|
65
|
+
this.editorReady.resolve();
|
|
66
|
+
} }));
|
|
57
67
|
}
|
|
58
68
|
setEnabled(enabled) {
|
|
59
69
|
this.isEnabled = enabled;
|
|
@@ -148,7 +158,10 @@ const ChatInput = (props) => {
|
|
|
148
158
|
editorContainerRef.current.style.height = `${Math.min(contentHeight, maxHeight)}px`;
|
|
149
159
|
}
|
|
150
160
|
};
|
|
151
|
-
editor.getControl().onDidChangeModelContent(
|
|
161
|
+
editor.getControl().onDidChangeModelContent(() => {
|
|
162
|
+
updateEditorHeight();
|
|
163
|
+
handleOnChange();
|
|
164
|
+
});
|
|
152
165
|
const resizeObserver = new ResizeObserver(updateEditorHeight);
|
|
153
166
|
if (editorContainerRef.current) {
|
|
154
167
|
resizeObserver.observe(editorContainerRef.current);
|
|
@@ -158,10 +171,12 @@ const ChatInput = (props) => {
|
|
|
158
171
|
});
|
|
159
172
|
editor.getControl().onContextMenu(e => props.contextMenuCallback(e.event));
|
|
160
173
|
editorRef.current = editor;
|
|
174
|
+
props.setEditorRef(editor);
|
|
161
175
|
};
|
|
162
176
|
React.useEffect(() => {
|
|
163
177
|
createInputElement();
|
|
164
178
|
return () => {
|
|
179
|
+
props.setEditorRef(undefined);
|
|
165
180
|
if (editorRef.current) {
|
|
166
181
|
editorRef.current.dispose();
|
|
167
182
|
}
|
|
@@ -193,15 +208,28 @@ const ChatInput = (props) => {
|
|
|
193
208
|
}
|
|
194
209
|
}, [props.isEnabled]);
|
|
195
210
|
const handleInputFocus = () => {
|
|
196
|
-
|
|
197
|
-
|
|
211
|
+
hidePlaceholderIfEditorFilled();
|
|
212
|
+
};
|
|
213
|
+
const handleOnChange = () => {
|
|
214
|
+
showPlaceholderIfEditorEmpty();
|
|
215
|
+
hidePlaceholderIfEditorFilled();
|
|
198
216
|
};
|
|
199
217
|
const handleInputBlur = () => {
|
|
218
|
+
showPlaceholderIfEditorEmpty();
|
|
219
|
+
};
|
|
220
|
+
const showPlaceholderIfEditorEmpty = () => {
|
|
200
221
|
var _a, _b;
|
|
201
222
|
if (!((_a = editorRef.current) === null || _a === void 0 ? void 0 : _a.getControl().getValue())) {
|
|
202
223
|
(_b = placeholderRef.current) === null || _b === void 0 ? void 0 : _b.classList.remove('hidden');
|
|
203
224
|
}
|
|
204
225
|
};
|
|
226
|
+
const hidePlaceholderIfEditorFilled = () => {
|
|
227
|
+
var _a, _b;
|
|
228
|
+
const value = (_a = editorRef.current) === null || _a === void 0 ? void 0 : _a.getControl().getValue();
|
|
229
|
+
if (value && value.length > 0) {
|
|
230
|
+
(_b = placeholderRef.current) === null || _b === void 0 ? void 0 : _b.classList.add('hidden');
|
|
231
|
+
}
|
|
232
|
+
};
|
|
205
233
|
return React.createElement("div", { className: 'theia-ChatInput' },
|
|
206
234
|
React.createElement("div", { className: 'theia-ChatInput-Editor-Box' },
|
|
207
235
|
React.createElement("div", { className: 'theia-ChatInput-Editor', ref: editorContainerRef, onKeyDown: onKeyDown, onFocus: handleInputFocus, onBlur: handleInputBlur },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-input-widget.js","sourceRoot":"","sources":["../../src/browser/chat-input-widget.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,4CAA0F;AAC1F,sCAAuD;AACvD,qDAAoF;AACpF,4DAAiF;AAEjF,kDAAkD;AAClD,6FAAwF;AACxF,uFAAiF;
|
|
1
|
+
{"version":3,"file":"chat-input-widget.js","sourceRoot":"","sources":["../../src/browser/chat-input-widget.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { ChatResponseContent, CodeChatResponseContent } from '@theia/ai-chat/lib/common';
|
|
3
|
-
import { UntitledResourceResolver, URI } from '@theia/core';
|
|
3
|
+
import { ContributionProvider, UntitledResourceResolver, URI } from '@theia/core';
|
|
4
4
|
import { ContextMenuRenderer, TreeNode } from '@theia/core/lib/browser';
|
|
5
5
|
import { ClipboardService } from '@theia/core/lib/browser/clipboard-service';
|
|
6
6
|
import * as React from '@theia/core/shared/react';
|
|
@@ -12,13 +12,31 @@ import { MonacoLanguages } from '@theia/monaco/lib/browser/monaco-languages';
|
|
|
12
12
|
import { ChatResponsePartRenderer } from '../chat-response-part-renderer';
|
|
13
13
|
import { ResponseNode } from '../chat-tree-view/chat-view-tree-widget';
|
|
14
14
|
import { IMouseEvent } from '@theia/monaco-editor-core';
|
|
15
|
+
export declare const CodePartRendererAction: unique symbol;
|
|
16
|
+
/**
|
|
17
|
+
* The CodePartRenderer offers to contribute arbitrary React nodes to the rendered code part.
|
|
18
|
+
* Technically anything can be rendered, however it is intended to be used for actions, like
|
|
19
|
+
* "Copy to Clipboard" or "Insert at Cursor".
|
|
20
|
+
*/
|
|
21
|
+
export interface CodePartRendererAction {
|
|
22
|
+
render(response: CodeChatResponseContent, parentNode: ResponseNode): ReactNode;
|
|
23
|
+
/**
|
|
24
|
+
* Determines if the action should be rendered for the given response.
|
|
25
|
+
*/
|
|
26
|
+
canRender?(response: CodeChatResponseContent, parentNode: ResponseNode): boolean;
|
|
27
|
+
/**
|
|
28
|
+
* The priority determines the order in which the actions are rendered.
|
|
29
|
+
* The default priorities are 10 and 20.
|
|
30
|
+
*/
|
|
31
|
+
priority: number;
|
|
32
|
+
}
|
|
15
33
|
export declare class CodePartRenderer implements ChatResponsePartRenderer<CodeChatResponseContent> {
|
|
16
|
-
protected readonly clipboardService: ClipboardService;
|
|
17
34
|
protected readonly editorManager: EditorManager;
|
|
18
35
|
protected readonly untitledResourceResolver: UntitledResourceResolver;
|
|
19
36
|
protected readonly editorProvider: MonacoEditorProvider;
|
|
20
37
|
protected readonly languageService: MonacoLanguages;
|
|
21
38
|
protected readonly contextMenuRenderer: ContextMenuRenderer;
|
|
39
|
+
protected readonly codePartRendererActions: ContributionProvider<CodePartRendererAction>;
|
|
22
40
|
canHandle(response: ChatResponseContent): number;
|
|
23
41
|
render(response: CodeChatResponseContent, parentNode: ResponseNode): ReactNode;
|
|
24
42
|
protected renderTitle(response: CodeChatResponseContent): ReactNode;
|
|
@@ -32,6 +50,16 @@ export declare class CodePartRenderer implements ChatResponsePartRenderer<CodeCh
|
|
|
32
50
|
openFileAtPosition(uri: URI, position: Position): Promise<void>;
|
|
33
51
|
protected handleContextMenuEvent(node: TreeNode | undefined, event: IMouseEvent, code: string): void;
|
|
34
52
|
}
|
|
53
|
+
export declare class CopyToClipboardButtonAction implements CodePartRendererAction {
|
|
54
|
+
protected readonly clipboardService: ClipboardService;
|
|
55
|
+
priority: number;
|
|
56
|
+
render(response: CodeChatResponseContent): ReactNode;
|
|
57
|
+
}
|
|
58
|
+
export declare class InsertCodeAtCursorButtonAction implements CodePartRendererAction {
|
|
59
|
+
protected readonly editorManager: EditorManager;
|
|
60
|
+
priority: number;
|
|
61
|
+
render(response: CodeChatResponseContent): ReactNode;
|
|
62
|
+
}
|
|
35
63
|
/**
|
|
36
64
|
* Renders the given code within a Monaco Editor
|
|
37
65
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"code-part-renderer.d.ts","sourceRoot":"","sources":["../../../src/browser/chat-response-renderer/code-part-renderer.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"code-part-renderer.d.ts","sourceRoot":"","sources":["../../../src/browser/chat-response-renderer/code-part-renderer.tsx"],"names":[],"mappings":";AAeA,OAAO,EACH,mBAAmB,EACnB,uBAAuB,EAC1B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAClF,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AAE7E,OAAO,KAAK,KAAK,MAAM,0BAA0B,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,mDAAmD,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAgB,MAAM,2BAA2B,CAAC;AAExE,OAAO,EAAE,oBAAoB,EAAE,MAAM,kDAAkD,CAAC;AACxF,OAAO,EAAE,eAAe,EAAE,MAAM,4CAA4C,CAAC;AAC7E,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAC1E,OAAO,EAAsB,YAAY,EAAE,MAAM,yCAAyC,CAAC;AAC3F,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD,eAAO,MAAM,sBAAsB,eAAmC,CAAC;AACvE;;;;GAIG;AACH,MAAM,WAAW,sBAAsB;IACnC,MAAM,CAAC,QAAQ,EAAE,uBAAuB,EAAE,UAAU,EAAE,YAAY,GAAG,SAAS,CAAC;IAC/E;;OAEG;IACH,SAAS,CAAC,CAAC,QAAQ,EAAE,uBAAuB,EAAE,UAAU,EAAE,YAAY,GAAG,OAAO,CAAC;IACjF;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED,qBACa,gBACT,YAAW,wBAAwB,CAAC,uBAAuB,CAAC;IAG5D,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IAEhD,SAAS,CAAC,QAAQ,CAAC,wBAAwB,EAAE,wBAAwB,CAAC;IAEtE,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,oBAAoB,CAAC;IAExD,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAC;IAEpD,SAAS,CAAC,QAAQ,CAAC,mBAAmB,EAAE,mBAAmB,CAAC;IAE5D,SAAS,CAAC,QAAQ,CAAC,uBAAuB,EAAE,oBAAoB,CAAC,sBAAsB,CAAC,CAAC;IAEzF,SAAS,CAAC,QAAQ,EAAE,mBAAmB,GAAG,MAAM;IAOhD,MAAM,CAAC,QAAQ,EAAE,uBAAuB,EAAE,UAAU,EAAE,YAAY,GAAG,SAAS;IA0B9E,SAAS,CAAC,WAAW,CAAC,QAAQ,EAAE,uBAAuB,GAAG,SAAS;IASnE,OAAO,CAAC,QAAQ;IAMhB;;;;;OAKG;IACG,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAUrE,SAAS,CAAC,sBAAsB,CAAC,IAAI,EAAE,QAAQ,GAAG,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;CAQvG;AAED,qBACa,2BAA4B,YAAW,sBAAsB;IAEtE,SAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IACtD,QAAQ,SAAM;IACd,MAAM,CAAC,QAAQ,EAAE,uBAAuB,GAAG,SAAS;CAGvD;AAUD,qBACa,8BAA+B,YAAW,sBAAsB;IAEzE,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IAChD,QAAQ,SAAM;IACd,MAAM,CAAC,QAAQ,EAAE,uBAAuB,GAAG,SAAS;CAGvD;AAwBD;;GAEG;AACH,eAAO,MAAM,WAAW,UAAW;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wBAAwB,EAAE,wBAAwB,CAAC;IACnD,cAAc,EAAE,oBAAoB,CAAC;IACrC,mBAAmB,EAAE,CAAC,CAAC,EAAE,WAAW,KAAK,IAAI,CAAA;CAChD,sBA8CA,CAAC"}
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CodeWrapper = exports.InsertCodeAtCursorButtonAction = exports.CopyToClipboardButtonAction = exports.CodePartRenderer = exports.CodePartRendererAction = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
2
5
|
// *****************************************************************************
|
|
3
6
|
// Copyright (C) 2024 EclipseSource GmbH.
|
|
4
7
|
//
|
|
@@ -14,9 +17,6 @@
|
|
|
14
17
|
//
|
|
15
18
|
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
16
19
|
// *****************************************************************************
|
|
17
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
-
exports.CodeWrapper = exports.CodePartRenderer = void 0;
|
|
19
|
-
const tslib_1 = require("tslib");
|
|
20
20
|
const common_1 = require("@theia/ai-chat/lib/common");
|
|
21
21
|
const core_1 = require("@theia/core");
|
|
22
22
|
const browser_1 = require("@theia/core/lib/browser");
|
|
@@ -27,6 +27,7 @@ const browser_2 = require("@theia/editor/lib/browser");
|
|
|
27
27
|
const monaco_editor_provider_1 = require("@theia/monaco/lib/browser/monaco-editor-provider");
|
|
28
28
|
const monaco_languages_1 = require("@theia/monaco/lib/browser/monaco-languages");
|
|
29
29
|
const chat_view_tree_widget_1 = require("../chat-tree-view/chat-view-tree-widget");
|
|
30
|
+
exports.CodePartRendererAction = Symbol('CodePartRendererAction');
|
|
30
31
|
let CodePartRenderer = class CodePartRenderer {
|
|
31
32
|
canHandle(response) {
|
|
32
33
|
if (common_1.CodeChatResponseContent.is(response)) {
|
|
@@ -39,9 +40,10 @@ let CodePartRenderer = class CodePartRenderer {
|
|
|
39
40
|
return (React.createElement("div", { className: "theia-CodePartRenderer-root" },
|
|
40
41
|
React.createElement("div", { className: "theia-CodePartRenderer-top" },
|
|
41
42
|
React.createElement("div", { className: "theia-CodePartRenderer-left" }, this.renderTitle(response)),
|
|
42
|
-
React.createElement("div", { className: "theia-CodePartRenderer-right" },
|
|
43
|
-
|
|
44
|
-
|
|
43
|
+
React.createElement("div", { className: "theia-CodePartRenderer-right theia-CodePartRenderer-actions" }, this.codePartRendererActions.getContributions()
|
|
44
|
+
.filter(action => action.canRender ? action.canRender(response, parentNode) : true)
|
|
45
|
+
.sort((a, b) => a.priority - b.priority)
|
|
46
|
+
.map(action => action.render(response, parentNode)))),
|
|
45
47
|
React.createElement("div", { className: "theia-CodePartRenderer-separator" }),
|
|
46
48
|
React.createElement("div", { className: "theia-CodePartRenderer-bottom" },
|
|
47
49
|
React.createElement(exports.CodeWrapper, { content: response.code, language: language, editorProvider: this.editorProvider, untitledResourceResolver: this.untitledResourceResolver, contextMenuCallback: e => this.handleContextMenuEvent(parentNode, e, response.code) }))));
|
|
@@ -86,10 +88,6 @@ let CodePartRenderer = class CodePartRenderer {
|
|
|
86
88
|
}
|
|
87
89
|
};
|
|
88
90
|
exports.CodePartRenderer = CodePartRenderer;
|
|
89
|
-
tslib_1.__decorate([
|
|
90
|
-
(0, inversify_1.inject)(clipboard_service_1.ClipboardService),
|
|
91
|
-
tslib_1.__metadata("design:type", Object)
|
|
92
|
-
], CodePartRenderer.prototype, "clipboardService", void 0);
|
|
93
91
|
tslib_1.__decorate([
|
|
94
92
|
(0, inversify_1.inject)(browser_2.EditorManager),
|
|
95
93
|
tslib_1.__metadata("design:type", browser_2.EditorManager)
|
|
@@ -110,9 +108,30 @@ tslib_1.__decorate([
|
|
|
110
108
|
(0, inversify_1.inject)(browser_1.ContextMenuRenderer),
|
|
111
109
|
tslib_1.__metadata("design:type", browser_1.ContextMenuRenderer)
|
|
112
110
|
], CodePartRenderer.prototype, "contextMenuRenderer", void 0);
|
|
111
|
+
tslib_1.__decorate([
|
|
112
|
+
(0, inversify_1.inject)(core_1.ContributionProvider),
|
|
113
|
+
(0, inversify_1.named)(exports.CodePartRendererAction),
|
|
114
|
+
tslib_1.__metadata("design:type", Object)
|
|
115
|
+
], CodePartRenderer.prototype, "codePartRendererActions", void 0);
|
|
113
116
|
exports.CodePartRenderer = CodePartRenderer = tslib_1.__decorate([
|
|
114
117
|
(0, inversify_1.injectable)()
|
|
115
118
|
], CodePartRenderer);
|
|
119
|
+
let CopyToClipboardButtonAction = class CopyToClipboardButtonAction {
|
|
120
|
+
constructor() {
|
|
121
|
+
this.priority = 10;
|
|
122
|
+
}
|
|
123
|
+
render(response) {
|
|
124
|
+
return React.createElement(CopyToClipboardButton, { key: 'copyToClipBoard', code: response.code, clipboardService: this.clipboardService });
|
|
125
|
+
}
|
|
126
|
+
};
|
|
127
|
+
exports.CopyToClipboardButtonAction = CopyToClipboardButtonAction;
|
|
128
|
+
tslib_1.__decorate([
|
|
129
|
+
(0, inversify_1.inject)(clipboard_service_1.ClipboardService),
|
|
130
|
+
tslib_1.__metadata("design:type", Object)
|
|
131
|
+
], CopyToClipboardButtonAction.prototype, "clipboardService", void 0);
|
|
132
|
+
exports.CopyToClipboardButtonAction = CopyToClipboardButtonAction = tslib_1.__decorate([
|
|
133
|
+
(0, inversify_1.injectable)()
|
|
134
|
+
], CopyToClipboardButtonAction);
|
|
116
135
|
const CopyToClipboardButton = (props) => {
|
|
117
136
|
const { code, clipboardService } = props;
|
|
118
137
|
const copyCodeToClipboard = React.useCallback(() => {
|
|
@@ -120,6 +139,22 @@ const CopyToClipboardButton = (props) => {
|
|
|
120
139
|
}, [code, clipboardService]);
|
|
121
140
|
return React.createElement("div", { className: 'button codicon codicon-copy', title: 'Copy', role: 'button', onClick: copyCodeToClipboard });
|
|
122
141
|
};
|
|
142
|
+
let InsertCodeAtCursorButtonAction = class InsertCodeAtCursorButtonAction {
|
|
143
|
+
constructor() {
|
|
144
|
+
this.priority = 20;
|
|
145
|
+
}
|
|
146
|
+
render(response) {
|
|
147
|
+
return React.createElement(InsertCodeAtCursorButton, { key: 'insertCodeAtCursor', code: response.code, editorManager: this.editorManager });
|
|
148
|
+
}
|
|
149
|
+
};
|
|
150
|
+
exports.InsertCodeAtCursorButtonAction = InsertCodeAtCursorButtonAction;
|
|
151
|
+
tslib_1.__decorate([
|
|
152
|
+
(0, inversify_1.inject)(browser_2.EditorManager),
|
|
153
|
+
tslib_1.__metadata("design:type", browser_2.EditorManager)
|
|
154
|
+
], InsertCodeAtCursorButtonAction.prototype, "editorManager", void 0);
|
|
155
|
+
exports.InsertCodeAtCursorButtonAction = InsertCodeAtCursorButtonAction = tslib_1.__decorate([
|
|
156
|
+
(0, inversify_1.injectable)()
|
|
157
|
+
], InsertCodeAtCursorButtonAction);
|
|
123
158
|
const InsertCodeAtCursorButton = (props) => {
|
|
124
159
|
const { code, editorManager } = props;
|
|
125
160
|
const insertCode = React.useCallback(() => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"code-part-renderer.js","sourceRoot":"","sources":["../../../src/browser/chat-response-renderer/code-part-renderer.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"code-part-renderer.js","sourceRoot":"","sources":["../../../src/browser/chat-response-renderer/code-part-renderer.tsx"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,9 @@ import { ReactNode } from '@theia/core/shared/react';
|
|
|
5
5
|
import * as React from '@theia/core/shared/react';
|
|
6
6
|
import * as markdownit from '@theia/core/shared/markdown-it';
|
|
7
7
|
import { MarkdownString } from '@theia/core/lib/common/markdown-rendering';
|
|
8
|
+
import { OpenerService } from '@theia/core/lib/browser';
|
|
8
9
|
export declare class MarkdownPartRenderer implements ChatResponsePartRenderer<MarkdownChatResponseContent | InformationalChatResponseContent> {
|
|
10
|
+
protected readonly openerService: OpenerService;
|
|
9
11
|
protected readonly markdownIt: markdownit;
|
|
10
12
|
canHandle(response: ChatResponseContent): number;
|
|
11
13
|
render(response: MarkdownChatResponseContent | InformationalChatResponseContent): ReactNode;
|
|
@@ -14,12 +16,15 @@ export declare class MarkdownPartRenderer implements ChatResponsePartRenderer<Ma
|
|
|
14
16
|
* This hook uses markdown-it directly to render markdown.
|
|
15
17
|
* The reason to use markdown-it directly is that the MarkdownRenderer is
|
|
16
18
|
* overridden by theia with a monaco version. This monaco version strips all html
|
|
17
|
-
* tags from the markdown with empty content.
|
|
18
|
-
*
|
|
19
|
+
* tags from the markdown with empty content. This leads to unexpected behavior when
|
|
20
|
+
* rendering markdown with html tags.
|
|
21
|
+
*
|
|
22
|
+
* Moreover, we want to intercept link clicks to use the Theia OpenerService instead of the default browser behavior.
|
|
19
23
|
*
|
|
20
24
|
* @param markdown the string to render as markdown
|
|
21
25
|
* @param skipSurroundingParagraph whether to remove a surrounding paragraph element (default: false)
|
|
26
|
+
* @param openerService the service to handle link opening
|
|
22
27
|
* @returns the ref to use in an element to render the markdown
|
|
23
28
|
*/
|
|
24
|
-
export declare const useMarkdownRendering: (markdown: string | MarkdownString, skipSurroundingParagraph?: boolean) => React.MutableRefObject<HTMLDivElement | null>;
|
|
29
|
+
export declare const useMarkdownRendering: (markdown: string | MarkdownString, openerService: OpenerService, skipSurroundingParagraph?: boolean) => React.MutableRefObject<HTMLDivElement | null>;
|
|
25
30
|
//# 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;
|
|
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;AAC3E,OAAO,EAAE,aAAa,EAAQ,MAAM,yBAAyB,CAAC;AAG9D,qBACa,oBAAqB,YAAW,wBAAwB,CAAC,2BAA2B,GAAG,gCAAgC,CAAC;IAC1G,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IACvE,SAAS,CAAC,QAAQ,CAAC,UAAU,aAAgB;IAC7C,SAAS,CAAC,QAAQ,EAAE,mBAAmB,GAAG,MAAM;IAShD,MAAM,CAAC,QAAQ,EAAE,2BAA2B,GAAG,gCAAgC,GAAG,SAAS;CAU9F;AAQD;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,oBAAoB,aAAc,MAAM,GAAG,cAAc,iBAAiB,aAAa,6BAA4B,OAAO,kDA0CtI,CAAC"}
|
|
@@ -23,6 +23,8 @@ const react_1 = require("@theia/core/shared/react");
|
|
|
23
23
|
const React = require("@theia/core/shared/react");
|
|
24
24
|
const markdownit = require("@theia/core/shared/markdown-it");
|
|
25
25
|
const DOMPurify = require("@theia/core/shared/dompurify");
|
|
26
|
+
const browser_1 = require("@theia/core/lib/browser");
|
|
27
|
+
const core_1 = require("@theia/core");
|
|
26
28
|
let MarkdownPartRenderer = class MarkdownPartRenderer {
|
|
27
29
|
constructor() {
|
|
28
30
|
this.markdownIt = markdownit();
|
|
@@ -43,46 +45,72 @@ let MarkdownPartRenderer = class MarkdownPartRenderer {
|
|
|
43
45
|
// eslint-disable-next-line no-null/no-null
|
|
44
46
|
return null;
|
|
45
47
|
}
|
|
46
|
-
return React.createElement(MarkdownRender, { response: response });
|
|
48
|
+
return React.createElement(MarkdownRender, { response: response, openerService: this.openerService });
|
|
47
49
|
}
|
|
48
50
|
};
|
|
49
51
|
exports.MarkdownPartRenderer = MarkdownPartRenderer;
|
|
52
|
+
tslib_1.__decorate([
|
|
53
|
+
(0, inversify_1.inject)(browser_1.OpenerService),
|
|
54
|
+
tslib_1.__metadata("design:type", Object)
|
|
55
|
+
], MarkdownPartRenderer.prototype, "openerService", void 0);
|
|
50
56
|
exports.MarkdownPartRenderer = MarkdownPartRenderer = tslib_1.__decorate([
|
|
51
57
|
(0, inversify_1.injectable)()
|
|
52
58
|
], MarkdownPartRenderer);
|
|
53
|
-
const MarkdownRender = ({ response }) => {
|
|
54
|
-
const ref = (0, exports.useMarkdownRendering)(response.content);
|
|
59
|
+
const MarkdownRender = ({ response, openerService }) => {
|
|
60
|
+
const ref = (0, exports.useMarkdownRendering)(response.content, openerService);
|
|
55
61
|
return React.createElement("div", { ref: ref });
|
|
56
62
|
};
|
|
57
63
|
/**
|
|
58
64
|
* This hook uses markdown-it directly to render markdown.
|
|
59
65
|
* The reason to use markdown-it directly is that the MarkdownRenderer is
|
|
60
66
|
* overridden by theia with a monaco version. This monaco version strips all html
|
|
61
|
-
* tags from the markdown with empty content.
|
|
62
|
-
*
|
|
67
|
+
* tags from the markdown with empty content. This leads to unexpected behavior when
|
|
68
|
+
* rendering markdown with html tags.
|
|
69
|
+
*
|
|
70
|
+
* Moreover, we want to intercept link clicks to use the Theia OpenerService instead of the default browser behavior.
|
|
63
71
|
*
|
|
64
72
|
* @param markdown the string to render as markdown
|
|
65
73
|
* @param skipSurroundingParagraph whether to remove a surrounding paragraph element (default: false)
|
|
74
|
+
* @param openerService the service to handle link opening
|
|
66
75
|
* @returns the ref to use in an element to render the markdown
|
|
67
76
|
*/
|
|
68
|
-
const useMarkdownRendering = (markdown, skipSurroundingParagraph = false) => {
|
|
77
|
+
const useMarkdownRendering = (markdown, openerService, skipSurroundingParagraph = false) => {
|
|
78
|
+
// null is valid in React
|
|
69
79
|
// eslint-disable-next-line no-null/no-null
|
|
70
80
|
const ref = (0, react_1.useRef)(null);
|
|
71
81
|
const markdownString = typeof markdown === 'string' ? markdown : markdown.value;
|
|
72
82
|
(0, react_1.useEffect)(() => {
|
|
73
|
-
var _a, _b;
|
|
83
|
+
var _a, _b, _c;
|
|
74
84
|
const markdownIt = markdownit();
|
|
75
85
|
const host = document.createElement('div');
|
|
76
|
-
// markdownIt always puts the content in a paragraph element, so we remove it if we don't want
|
|
86
|
+
// markdownIt always puts the content in a paragraph element, so we remove it if we don't want that
|
|
77
87
|
const html = skipSurroundingParagraph ? markdownIt.render(markdownString).replace(/^<p>|<\/p>|<p><\/p>$/g, '') : markdownIt.render(markdownString);
|
|
78
88
|
host.innerHTML = DOMPurify.sanitize(html, {
|
|
79
|
-
|
|
89
|
+
// DOMPurify usually strips non http(s) links from hrefs
|
|
90
|
+
// but we want to allow them (see handleClick via OpenerService below)
|
|
91
|
+
ALLOW_UNKNOWN_PROTOCOLS: true
|
|
80
92
|
});
|
|
81
93
|
while ((_a = ref === null || ref === void 0 ? void 0 : ref.current) === null || _a === void 0 ? void 0 : _a.firstChild) {
|
|
82
94
|
ref.current.removeChild(ref.current.firstChild);
|
|
83
95
|
}
|
|
84
96
|
(_b = ref === null || ref === void 0 ? void 0 : ref.current) === null || _b === void 0 ? void 0 : _b.appendChild(host);
|
|
85
|
-
|
|
97
|
+
// intercept link clicks to use the Theia OpenerService instead of the default browser behavior
|
|
98
|
+
const handleClick = (event) => {
|
|
99
|
+
let target = event.target;
|
|
100
|
+
while (target && target.tagName !== 'A') {
|
|
101
|
+
target = target.parentElement;
|
|
102
|
+
}
|
|
103
|
+
if (target && target.tagName === 'A') {
|
|
104
|
+
const href = target.getAttribute('href');
|
|
105
|
+
if (href) {
|
|
106
|
+
(0, browser_1.open)(openerService, new core_1.URI(href));
|
|
107
|
+
event.preventDefault();
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
(_c = ref === null || ref === void 0 ? void 0 : ref.current) === null || _c === void 0 ? void 0 : _c.addEventListener('click', handleClick);
|
|
112
|
+
return () => { var _a; return (_a = ref.current) === null || _a === void 0 ? void 0 : _a.removeEventListener('click', handleClick); };
|
|
113
|
+
}, [markdownString, skipSurroundingParagraph, openerService]);
|
|
86
114
|
return ref;
|
|
87
115
|
};
|
|
88
116
|
exports.useMarkdownRendering = useMarkdownRendering;
|
|
@@ -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,
|
|
1
|
+
{"version":3,"file":"markdown-part-renderer.js","sourceRoot":"","sources":["../../../src/browser/chat-response-renderer/markdown-part-renderer.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { ChatAgentService, ChatModel, ChatRequestModel, ChatResponseContent, ChatResponseModel } from '@theia/ai-chat';
|
|
3
3
|
import { ContributionProvider } from '@theia/core';
|
|
4
|
-
import { ContextMenuRenderer, NodeProps, TreeModel, TreeNode, TreeProps, TreeWidget } from '@theia/core/lib/browser';
|
|
4
|
+
import { ContextMenuRenderer, NodeProps, OpenerService, TreeModel, TreeNode, TreeProps, TreeWidget } from '@theia/core/lib/browser';
|
|
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';
|
|
@@ -22,6 +22,7 @@ export declare class ChatViewTreeWidget extends TreeWidget {
|
|
|
22
22
|
protected chatAgentService: ChatAgentService;
|
|
23
23
|
protected readonly variableService: AIVariableService;
|
|
24
24
|
private commandRegistry;
|
|
25
|
+
protected readonly openerService: OpenerService;
|
|
25
26
|
private hoverService;
|
|
26
27
|
protected _shouldScrollToEnd: boolean;
|
|
27
28
|
protected isEnabled: boolean;
|
|
@@ -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,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;
|
|
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,aAAa,EACb,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,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IAGhD,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;IAUzB,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"}
|