@theia/ai-chat-ui 1.57.0-next.22 → 1.57.0-next.37
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/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-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-view-widget.tsx +6 -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;
|
|
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":"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"}
|
|
@@ -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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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { CommandService, Emitter, Event, MessageService } from '@theia/core';
|
|
2
2
|
import { ChatRequestModel, ChatService, ChatSession } from '@theia/ai-chat';
|
|
3
|
-
import { BaseWidget, ExtractableWidget, PreferenceService, StatefulWidget } from '@theia/core/lib/browser';
|
|
3
|
+
import { BaseWidget, ExtractableWidget, Message, PreferenceService, StatefulWidget } from '@theia/core/lib/browser';
|
|
4
4
|
import { AIChatInputWidget } from './chat-input-widget';
|
|
5
5
|
import { ChatViewTreeWidget } from './chat-tree-view/chat-view-tree-widget';
|
|
6
6
|
import { AIActivationService } from '@theia/ai-core/lib/browser/ai-activation-service';
|
|
@@ -26,6 +26,7 @@ export declare class ChatViewWidget extends BaseWidget implements ExtractableWid
|
|
|
26
26
|
constructor(treeWidget: ChatViewTreeWidget, inputWidget: AIChatInputWidget);
|
|
27
27
|
protected init(): void;
|
|
28
28
|
protected initListeners(): void;
|
|
29
|
+
protected onActivateRequest(msg: Message): void;
|
|
29
30
|
storeState(): object;
|
|
30
31
|
restoreState(oldState: object & Partial<ChatViewWidget.State>): void;
|
|
31
32
|
protected get state(): ChatViewWidget.State;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-view-widget.d.ts","sourceRoot":"","sources":["../../src/browser/chat-view-widget.tsx"],"names":[],"mappings":"AAeA,OAAO,EAAE,cAAc,EAAa,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACxF,OAAO,EAAe,gBAAgB,EAAwB,WAAW,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC/G,OAAO,EAAE,UAAU,EAAW,iBAAiB,EAAe,iBAAiB,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"chat-view-widget.d.ts","sourceRoot":"","sources":["../../src/browser/chat-view-widget.tsx"],"names":[],"mappings":"AAeA,OAAO,EAAE,cAAc,EAAa,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACxF,OAAO,EAAe,gBAAgB,EAAwB,WAAW,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC/G,OAAO,EAAE,UAAU,EAAW,iBAAiB,EAAE,OAAO,EAAe,iBAAiB,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAG1I,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAC5E,OAAO,EAAE,mBAAmB,EAAE,MAAM,kDAAkD,CAAC;AAEvF,yBAAiB,cAAc,CAAC;IAC5B,UAAiB,KAAK;QAClB,MAAM,CAAC,EAAE,OAAO,CAAC;KACpB;CACJ;AAED,qBACa,cAAe,SAAQ,UAAW,YAAW,iBAAiB,EAAE,cAAc;IA6BnF,QAAQ,CAAC,UAAU,EAAE,kBAAkB;IAEvC,QAAQ,CAAC,WAAW,EAAE,iBAAiB;IA7B3C,OAAc,EAAE,SAAsB;IACtC,MAAM,CAAC,KAAK,SAAuD;IAGnE,SAAS,CAAC,WAAW,EAAE,WAAW,CAAC;IAGnC,SAAS,CAAC,cAAc,EAAE,cAAc,CAAC;IAGzC,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAGxD,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IAGlD,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,mBAAmB,CAAC;IAE1D,SAAS,CAAC,WAAW,EAAE,WAAW,CAAC;IAEnC,SAAS,CAAC,MAAM,EAAE,cAAc,CAAC,KAAK,CAAqB;IAC3D,SAAS,CAAC,QAAQ,CAAC,qBAAqB,gCAAuC;IAE/E,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;gBAIvB,UAAU,EAAE,kBAAkB,EAE9B,WAAW,EAAE,iBAAiB;IAa3C,SAAS,CAAC,IAAI,IAAI,IAAI;IAkCtB,SAAS,CAAC,aAAa,IAAI,IAAI;cAkBZ,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI;IAKxD,UAAU,IAAI,MAAM;IAIpB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,IAAI;IAQpE,SAAS,KAAK,KAAK,IAAI,cAAc,CAAC,KAAK,CAE1C;IAED,SAAS,KAAK,KAAK,CAAC,KAAK,EAAE,cAAc,CAAC,KAAK,EAG9C;IAED,IAAI,cAAc,IAAI,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,CAEhD;cAEe,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBrD,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,gBAAgB,GAAG,IAAI;IAMxD,IAAI,IAAI,IAAI;IAIZ,MAAM,IAAI,IAAI;IAId,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED,IAAI,aAAa,IAAI,OAAO,CAE3B;CACJ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-view-widget.js","sourceRoot":"","sources":["../../src/browser/chat-view-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,sCAAwF;AACxF,4CAA+G;AAC/G,
|
|
1
|
+
{"version":3,"file":"chat-view-widget.js","sourceRoot":"","sources":["../../src/browser/chat-view-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.57.0-next.
|
|
3
|
+
"version": "1.57.0-next.37+4e3b183da",
|
|
4
4
|
"description": "Theia - AI Chat UI Extension",
|
|
5
5
|
"dependencies": {
|
|
6
|
-
"@theia/ai-chat": "1.57.0-next.
|
|
7
|
-
"@theia/ai-core": "1.57.0-next.
|
|
8
|
-
"@theia/core": "1.57.0-next.
|
|
9
|
-
"@theia/editor": "1.57.0-next.
|
|
10
|
-
"@theia/editor-preview": "1.57.0-next.
|
|
11
|
-
"@theia/filesystem": "1.57.0-next.
|
|
12
|
-
"@theia/monaco": "1.57.0-next.
|
|
6
|
+
"@theia/ai-chat": "1.57.0-next.37+4e3b183da",
|
|
7
|
+
"@theia/ai-core": "1.57.0-next.37+4e3b183da",
|
|
8
|
+
"@theia/core": "1.57.0-next.37+4e3b183da",
|
|
9
|
+
"@theia/editor": "1.57.0-next.37+4e3b183da",
|
|
10
|
+
"@theia/editor-preview": "1.57.0-next.37+4e3b183da",
|
|
11
|
+
"@theia/filesystem": "1.57.0-next.37+4e3b183da",
|
|
12
|
+
"@theia/monaco": "1.57.0-next.37+4e3b183da",
|
|
13
13
|
"@theia/monaco-editor-core": "1.83.101",
|
|
14
|
-
"@theia/workspace": "1.57.0-next.
|
|
14
|
+
"@theia/workspace": "1.57.0-next.37+4e3b183da",
|
|
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.
|
|
53
|
+
"@theia/ext-scripts": "1.57.0"
|
|
54
54
|
},
|
|
55
55
|
"nyc": {
|
|
56
56
|
"extends": "../../configs/nyc.json"
|
|
57
57
|
},
|
|
58
|
-
"gitHead": "
|
|
58
|
+
"gitHead": "4e3b183daab034ae86eaa610421d4d9791ffdaa5"
|
|
59
59
|
}
|
|
@@ -19,15 +19,27 @@ import { bindViewContribution, FrontendApplicationContribution, WidgetFactory }
|
|
|
19
19
|
import { TabBarToolbarContribution } from '@theia/core/lib/browser/shell/tab-bar-toolbar';
|
|
20
20
|
import { ContainerModule, interfaces } from '@theia/core/shared/inversify';
|
|
21
21
|
import { EditorManager } from '@theia/editor/lib/browser';
|
|
22
|
-
import '../../src/browser/style/index.css';
|
|
23
22
|
import { AIChatContribution } from './ai-chat-ui-contribution';
|
|
24
23
|
import { AIChatInputWidget } from './chat-input-widget';
|
|
25
24
|
import { ChatNodeToolbarActionContribution } from './chat-node-toolbar-action-contribution';
|
|
26
25
|
import { ChatResponsePartRenderer } from './chat-response-part-renderer';
|
|
27
|
-
import { CodePartRenderer, CommandPartRenderer, ErrorPartRenderer, HorizontalLayoutPartRenderer, MarkdownPartRenderer, ToolCallPartRenderer } from './chat-response-renderer';
|
|
28
26
|
import {
|
|
29
|
-
|
|
30
|
-
|
|
27
|
+
CodePartRenderer,
|
|
28
|
+
CodePartRendererAction,
|
|
29
|
+
CommandPartRenderer,
|
|
30
|
+
CopyToClipboardButtonAction,
|
|
31
|
+
ErrorPartRenderer,
|
|
32
|
+
HorizontalLayoutPartRenderer,
|
|
33
|
+
InsertCodeAtCursorButtonAction,
|
|
34
|
+
MarkdownPartRenderer,
|
|
35
|
+
ToolCallPartRenderer,
|
|
36
|
+
} from './chat-response-renderer';
|
|
37
|
+
import {
|
|
38
|
+
AIEditorManager,
|
|
39
|
+
AIEditorSelectionResolver,
|
|
40
|
+
GitHubSelectionResolver,
|
|
41
|
+
TextFragmentSelectionResolver,
|
|
42
|
+
TypeDocSymbolSelectionResolver,
|
|
31
43
|
} from './chat-response-renderer/ai-editor-manager';
|
|
32
44
|
import { createChatViewTreeWidget } from './chat-tree-view';
|
|
33
45
|
import { ChatViewTreeWidget } from './chat-tree-view/chat-view-tree-widget';
|
|
@@ -37,6 +49,7 @@ import { ChatViewWidget } from './chat-view-widget';
|
|
|
37
49
|
import { ChatViewWidgetToolbarContribution } from './chat-view-widget-toolbar-contribution';
|
|
38
50
|
import { EditorPreviewManager } from '@theia/editor-preview/lib/browser/editor-preview-manager';
|
|
39
51
|
import { QuestionPartRenderer } from './chat-response-renderer/question-part-renderer';
|
|
52
|
+
import '../../src/browser/style/index.css';
|
|
40
53
|
|
|
41
54
|
export default new ContainerModule((bind, _unbind, _isBound, rebind) => {
|
|
42
55
|
bindViewContribution(bind, AIChatContribution);
|
|
@@ -72,6 +85,12 @@ export default new ContainerModule((bind, _unbind, _isBound, rebind) => {
|
|
|
72
85
|
bind(serviceIdentifier).to(ChatViewMenuContribution).inSingletonScope()
|
|
73
86
|
);
|
|
74
87
|
|
|
88
|
+
bindContributionProvider(bind, CodePartRendererAction);
|
|
89
|
+
bind(CopyToClipboardButtonAction).toSelf().inSingletonScope();
|
|
90
|
+
bind(CodePartRendererAction).toService(CopyToClipboardButtonAction);
|
|
91
|
+
bind(InsertCodeAtCursorButtonAction).toSelf().inSingletonScope();
|
|
92
|
+
bind(CodePartRendererAction).toService(InsertCodeAtCursorButtonAction);
|
|
93
|
+
|
|
75
94
|
bind(AIEditorManager).toSelf().inSingletonScope();
|
|
76
95
|
rebind(EditorManager).toService(AIEditorManager);
|
|
77
96
|
rebind(EditorPreviewManager).toService(AIEditorManager);
|
|
@@ -22,6 +22,7 @@ import * as React from '@theia/core/shared/react';
|
|
|
22
22
|
import { MonacoEditorProvider } from '@theia/monaco/lib/browser/monaco-editor-provider';
|
|
23
23
|
import { CHAT_VIEW_LANGUAGE_EXTENSION } from './chat-view-language-contribution';
|
|
24
24
|
import { IMouseEvent } from '@theia/monaco-editor-core';
|
|
25
|
+
import { Deferred } from '@theia/core/lib/common/promise-util';
|
|
25
26
|
|
|
26
27
|
type Query = (query: string) => Promise<void>;
|
|
27
28
|
type Cancel = (requestModel: ChatRequestModel) => void;
|
|
@@ -43,6 +44,9 @@ export class AIChatInputWidget extends ReactWidget {
|
|
|
43
44
|
@inject(ContextMenuRenderer)
|
|
44
45
|
protected readonly contextMenuRenderer: ContextMenuRenderer;
|
|
45
46
|
|
|
47
|
+
protected editorRef: MonacoEditor | undefined = undefined;
|
|
48
|
+
private editorReady = new Deferred<void>();
|
|
49
|
+
|
|
46
50
|
protected isEnabled = false;
|
|
47
51
|
|
|
48
52
|
private _onQuery: Query;
|
|
@@ -65,9 +69,14 @@ export class AIChatInputWidget extends ReactWidget {
|
|
|
65
69
|
this.title.closable = false;
|
|
66
70
|
this.update();
|
|
67
71
|
}
|
|
72
|
+
|
|
68
73
|
protected override onActivateRequest(msg: Message): void {
|
|
69
74
|
super.onActivateRequest(msg);
|
|
70
|
-
this.
|
|
75
|
+
this.editorReady.promise.then(() => {
|
|
76
|
+
if (this.editorRef) {
|
|
77
|
+
this.editorRef.focus();
|
|
78
|
+
}
|
|
79
|
+
});
|
|
71
80
|
}
|
|
72
81
|
|
|
73
82
|
protected getChatAgents(): ChatAgent[] {
|
|
@@ -85,6 +94,10 @@ export class AIChatInputWidget extends ReactWidget {
|
|
|
85
94
|
untitledResourceResolver={this.untitledResourceResolver}
|
|
86
95
|
contextMenuCallback={this.handleContextMenu.bind(this)}
|
|
87
96
|
isEnabled={this.isEnabled}
|
|
97
|
+
setEditorRef={editor => {
|
|
98
|
+
this.editorRef = editor;
|
|
99
|
+
this.editorReady.resolve();
|
|
100
|
+
}}
|
|
88
101
|
/>
|
|
89
102
|
);
|
|
90
103
|
}
|
|
@@ -113,6 +126,7 @@ interface ChatInputProperties {
|
|
|
113
126
|
editorProvider: MonacoEditorProvider;
|
|
114
127
|
untitledResourceResolver: UntitledResourceResolver;
|
|
115
128
|
contextMenuCallback: (event: IMouseEvent) => void;
|
|
129
|
+
setEditorRef: (editor: MonacoEditor | undefined) => void;
|
|
116
130
|
}
|
|
117
131
|
const ChatInput: React.FunctionComponent<ChatInputProperties> = (props: ChatInputProperties) => {
|
|
118
132
|
|
|
@@ -171,7 +185,10 @@ const ChatInput: React.FunctionComponent<ChatInputProperties> = (props: ChatInpu
|
|
|
171
185
|
editorContainerRef.current.style.height = `${Math.min(contentHeight, maxHeight)}px`;
|
|
172
186
|
}
|
|
173
187
|
};
|
|
174
|
-
editor.getControl().onDidChangeModelContent(
|
|
188
|
+
editor.getControl().onDidChangeModelContent(() => {
|
|
189
|
+
updateEditorHeight();
|
|
190
|
+
handleOnChange();
|
|
191
|
+
});
|
|
175
192
|
const resizeObserver = new ResizeObserver(updateEditorHeight);
|
|
176
193
|
if (editorContainerRef.current) {
|
|
177
194
|
resizeObserver.observe(editorContainerRef.current);
|
|
@@ -185,11 +202,13 @@ const ChatInput: React.FunctionComponent<ChatInputProperties> = (props: ChatInpu
|
|
|
185
202
|
);
|
|
186
203
|
|
|
187
204
|
editorRef.current = editor;
|
|
205
|
+
props.setEditorRef(editor);
|
|
188
206
|
};
|
|
189
207
|
|
|
190
208
|
React.useEffect(() => {
|
|
191
209
|
createInputElement();
|
|
192
210
|
return () => {
|
|
211
|
+
props.setEditorRef(undefined);
|
|
193
212
|
if (editorRef.current) {
|
|
194
213
|
editorRef.current.dispose();
|
|
195
214
|
}
|
|
@@ -224,15 +243,31 @@ const ChatInput: React.FunctionComponent<ChatInputProperties> = (props: ChatInpu
|
|
|
224
243
|
}, [props.isEnabled]);
|
|
225
244
|
|
|
226
245
|
const handleInputFocus = () => {
|
|
227
|
-
|
|
246
|
+
hidePlaceholderIfEditorFilled();
|
|
247
|
+
};
|
|
248
|
+
|
|
249
|
+
const handleOnChange = () => {
|
|
250
|
+
showPlaceholderIfEditorEmpty();
|
|
251
|
+
hidePlaceholderIfEditorFilled();
|
|
228
252
|
};
|
|
229
253
|
|
|
230
254
|
const handleInputBlur = () => {
|
|
255
|
+
showPlaceholderIfEditorEmpty();
|
|
256
|
+
};
|
|
257
|
+
|
|
258
|
+
const showPlaceholderIfEditorEmpty = () => {
|
|
231
259
|
if (!editorRef.current?.getControl().getValue()) {
|
|
232
260
|
placeholderRef.current?.classList.remove('hidden');
|
|
233
261
|
}
|
|
234
262
|
};
|
|
235
263
|
|
|
264
|
+
const hidePlaceholderIfEditorFilled = () => {
|
|
265
|
+
const value = editorRef.current?.getControl().getValue();
|
|
266
|
+
if (value && value.length > 0) {
|
|
267
|
+
placeholderRef.current?.classList.add('hidden');
|
|
268
|
+
}
|
|
269
|
+
};
|
|
270
|
+
|
|
236
271
|
return <div className='theia-ChatInput'>
|
|
237
272
|
<div className='theia-ChatInput-Editor-Box'>
|
|
238
273
|
<div className='theia-ChatInput-Editor' ref={editorContainerRef} onKeyDown={onKeyDown} onFocus={handleInputFocus} onBlur={handleInputBlur}>
|
|
@@ -13,15 +13,14 @@
|
|
|
13
13
|
//
|
|
14
14
|
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
15
|
// *****************************************************************************
|
|
16
|
-
|
|
17
16
|
import {
|
|
18
17
|
ChatResponseContent,
|
|
19
18
|
CodeChatResponseContent,
|
|
20
19
|
} from '@theia/ai-chat/lib/common';
|
|
21
|
-
import { UntitledResourceResolver, URI } from '@theia/core';
|
|
20
|
+
import { ContributionProvider, UntitledResourceResolver, URI } from '@theia/core';
|
|
22
21
|
import { ContextMenuRenderer, TreeNode } from '@theia/core/lib/browser';
|
|
23
22
|
import { ClipboardService } from '@theia/core/lib/browser/clipboard-service';
|
|
24
|
-
import { inject, injectable } from '@theia/core/shared/inversify';
|
|
23
|
+
import { inject, injectable, named } from '@theia/core/shared/inversify';
|
|
25
24
|
import * as React from '@theia/core/shared/react';
|
|
26
25
|
import { ReactNode } from '@theia/core/shared/react';
|
|
27
26
|
import { Position } from '@theia/core/shared/vscode-languageserver-protocol';
|
|
@@ -33,12 +32,29 @@ import { ChatResponsePartRenderer } from '../chat-response-part-renderer';
|
|
|
33
32
|
import { ChatViewTreeWidget, ResponseNode } from '../chat-tree-view/chat-view-tree-widget';
|
|
34
33
|
import { IMouseEvent } from '@theia/monaco-editor-core';
|
|
35
34
|
|
|
35
|
+
export const CodePartRendererAction = Symbol('CodePartRendererAction');
|
|
36
|
+
/**
|
|
37
|
+
* The CodePartRenderer offers to contribute arbitrary React nodes to the rendered code part.
|
|
38
|
+
* Technically anything can be rendered, however it is intended to be used for actions, like
|
|
39
|
+
* "Copy to Clipboard" or "Insert at Cursor".
|
|
40
|
+
*/
|
|
41
|
+
export interface CodePartRendererAction {
|
|
42
|
+
render(response: CodeChatResponseContent, parentNode: ResponseNode): ReactNode;
|
|
43
|
+
/**
|
|
44
|
+
* Determines if the action should be rendered for the given response.
|
|
45
|
+
*/
|
|
46
|
+
canRender?(response: CodeChatResponseContent, parentNode: ResponseNode): boolean;
|
|
47
|
+
/**
|
|
48
|
+
* The priority determines the order in which the actions are rendered.
|
|
49
|
+
* The default priorities are 10 and 20.
|
|
50
|
+
*/
|
|
51
|
+
priority: number;
|
|
52
|
+
}
|
|
53
|
+
|
|
36
54
|
@injectable()
|
|
37
55
|
export class CodePartRenderer
|
|
38
56
|
implements ChatResponsePartRenderer<CodeChatResponseContent> {
|
|
39
57
|
|
|
40
|
-
@inject(ClipboardService)
|
|
41
|
-
protected readonly clipboardService: ClipboardService;
|
|
42
58
|
@inject(EditorManager)
|
|
43
59
|
protected readonly editorManager: EditorManager;
|
|
44
60
|
@inject(UntitledResourceResolver)
|
|
@@ -49,6 +65,8 @@ export class CodePartRenderer
|
|
|
49
65
|
protected readonly languageService: MonacoLanguages;
|
|
50
66
|
@inject(ContextMenuRenderer)
|
|
51
67
|
protected readonly contextMenuRenderer: ContextMenuRenderer;
|
|
68
|
+
@inject(ContributionProvider) @named(CodePartRendererAction)
|
|
69
|
+
protected readonly codePartRendererActions: ContributionProvider<CodePartRendererAction>;
|
|
52
70
|
|
|
53
71
|
canHandle(response: ChatResponseContent): number {
|
|
54
72
|
if (CodeChatResponseContent.is(response)) {
|
|
@@ -59,14 +77,15 @@ export class CodePartRenderer
|
|
|
59
77
|
|
|
60
78
|
render(response: CodeChatResponseContent, parentNode: ResponseNode): ReactNode {
|
|
61
79
|
const language = response.language ? this.languageService.getExtension(response.language) : undefined;
|
|
62
|
-
|
|
63
80
|
return (
|
|
64
81
|
<div className="theia-CodePartRenderer-root">
|
|
65
82
|
<div className="theia-CodePartRenderer-top">
|
|
66
83
|
<div className="theia-CodePartRenderer-left">{this.renderTitle(response)}</div>
|
|
67
|
-
<div className="theia-CodePartRenderer-right">
|
|
68
|
-
|
|
69
|
-
|
|
84
|
+
<div className="theia-CodePartRenderer-right theia-CodePartRenderer-actions">
|
|
85
|
+
{this.codePartRendererActions.getContributions()
|
|
86
|
+
.filter(action => action.canRender ? action.canRender(response, parentNode) : true)
|
|
87
|
+
.sort((a, b) => a.priority - b.priority)
|
|
88
|
+
.map(action => action.render(response, parentNode))}
|
|
70
89
|
</div>
|
|
71
90
|
</div>
|
|
72
91
|
<div className="theia-CodePartRenderer-separator"></div>
|
|
@@ -123,6 +142,16 @@ export class CodePartRenderer
|
|
|
123
142
|
}
|
|
124
143
|
}
|
|
125
144
|
|
|
145
|
+
@injectable()
|
|
146
|
+
export class CopyToClipboardButtonAction implements CodePartRendererAction {
|
|
147
|
+
@inject(ClipboardService)
|
|
148
|
+
protected readonly clipboardService: ClipboardService;
|
|
149
|
+
priority = 10;
|
|
150
|
+
render(response: CodeChatResponseContent): ReactNode {
|
|
151
|
+
return <CopyToClipboardButton key='copyToClipBoard' code={response.code} clipboardService={this.clipboardService} />;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
|
|
126
155
|
const CopyToClipboardButton = (props: { code: string, clipboardService: ClipboardService }) => {
|
|
127
156
|
const { code, clipboardService } = props;
|
|
128
157
|
const copyCodeToClipboard = React.useCallback(() => {
|
|
@@ -131,6 +160,16 @@ const CopyToClipboardButton = (props: { code: string, clipboardService: Clipboar
|
|
|
131
160
|
return <div className='button codicon codicon-copy' title='Copy' role='button' onClick={copyCodeToClipboard}></div>;
|
|
132
161
|
};
|
|
133
162
|
|
|
163
|
+
@injectable()
|
|
164
|
+
export class InsertCodeAtCursorButtonAction implements CodePartRendererAction {
|
|
165
|
+
@inject(EditorManager)
|
|
166
|
+
protected readonly editorManager: EditorManager;
|
|
167
|
+
priority = 20;
|
|
168
|
+
render(response: CodeChatResponseContent): ReactNode {
|
|
169
|
+
return <InsertCodeAtCursorButton key='insertCodeAtCursor' code={response.code} editorManager={this.editorManager} />;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
|
|
134
173
|
const InsertCodeAtCursorButton = (props: { code: string, editorManager: EditorManager }) => {
|
|
135
174
|
const { code, editorManager } = props;
|
|
136
175
|
const insertCode = React.useCallback(() => {
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
// *****************************************************************************
|
|
16
16
|
import { CommandService, deepClone, Emitter, Event, MessageService } from '@theia/core';
|
|
17
17
|
import { ChatRequest, ChatRequestModel, ChatRequestModelImpl, ChatService, ChatSession } from '@theia/ai-chat';
|
|
18
|
-
import { BaseWidget, codicon, ExtractableWidget, PanelLayout, PreferenceService, StatefulWidget } from '@theia/core/lib/browser';
|
|
18
|
+
import { BaseWidget, codicon, ExtractableWidget, Message, PanelLayout, PreferenceService, StatefulWidget } from '@theia/core/lib/browser';
|
|
19
19
|
import { nls } from '@theia/core/lib/common/nls';
|
|
20
20
|
import { inject, injectable, postConstruct } from '@theia/core/shared/inversify';
|
|
21
21
|
import { AIChatInputWidget } from './chat-input-widget';
|
|
@@ -125,6 +125,11 @@ export class ChatViewWidget extends BaseWidget implements ExtractableWidget, Sta
|
|
|
125
125
|
);
|
|
126
126
|
}
|
|
127
127
|
|
|
128
|
+
protected override onActivateRequest(msg: Message): void {
|
|
129
|
+
super.onActivateRequest(msg);
|
|
130
|
+
this.inputWidget.activate();
|
|
131
|
+
}
|
|
132
|
+
|
|
128
133
|
storeState(): object {
|
|
129
134
|
return this.state;
|
|
130
135
|
}
|