@theia/ai-chat-ui 1.65.0-next.6 → 1.66.0-next.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.
- package/lib/browser/ai-chat-ui-contribution.js +4 -4
- package/lib/browser/ai-chat-ui-contribution.js.map +1 -1
- package/lib/browser/ai-chat-ui-frontend-module.d.ts.map +1 -1
- package/lib/browser/ai-chat-ui-frontend-module.js +9 -1
- package/lib/browser/ai-chat-ui-frontend-module.js.map +1 -1
- package/lib/browser/chat-input-history-contribution.d.ts +17 -0
- package/lib/browser/chat-input-history-contribution.d.ts.map +1 -0
- package/lib/browser/chat-input-history-contribution.js +157 -0
- package/lib/browser/chat-input-history-contribution.js.map +1 -0
- package/lib/browser/chat-input-history.d.ts +32 -0
- package/lib/browser/chat-input-history.d.ts.map +1 -0
- package/lib/browser/chat-input-history.js +125 -0
- package/lib/browser/chat-input-history.js.map +1 -0
- package/lib/browser/chat-input-widget.d.ts +22 -1
- package/lib/browser/chat-input-widget.d.ts.map +1 -1
- package/lib/browser/chat-input-widget.js +166 -8
- package/lib/browser/chat-input-widget.js.map +1 -1
- package/lib/browser/chat-response-renderer/tool-confirmation.d.ts +1 -1
- package/lib/browser/chat-response-renderer/tool-confirmation.d.ts.map +1 -1
- package/lib/browser/chat-response-renderer/toolcall-part-renderer.d.ts +2 -1
- package/lib/browser/chat-response-renderer/toolcall-part-renderer.d.ts.map +1 -1
- package/lib/browser/chat-response-renderer/toolcall-part-renderer.js +46 -11
- package/lib/browser/chat-response-renderer/toolcall-part-renderer.js.map +1 -1
- package/lib/browser/chat-view-commands.d.ts +2 -0
- package/lib/browser/chat-view-commands.d.ts.map +1 -1
- package/lib/browser/chat-view-commands.js +30 -23
- package/lib/browser/chat-view-commands.js.map +1 -1
- package/lib/browser/chat-view-widget.d.ts +3 -3
- package/lib/browser/chat-view-widget.d.ts.map +1 -1
- package/lib/browser/chat-view-widget.js +2 -4
- package/lib/browser/chat-view-widget.js.map +1 -1
- package/package.json +11 -12
- package/src/browser/ai-chat-ui-contribution.ts +4 -4
- package/src/browser/ai-chat-ui-frontend-module.ts +11 -2
- package/src/browser/chat-input-history-contribution.ts +166 -0
- package/src/browser/chat-input-history.ts +138 -0
- package/src/browser/chat-input-widget.tsx +197 -8
- package/src/browser/chat-response-renderer/tool-confirmation.tsx +1 -1
- package/src/browser/chat-response-renderer/toolcall-part-renderer.tsx +52 -12
- package/src/browser/chat-view-commands.ts +24 -17
- package/src/browser/chat-view-widget.tsx +3 -6
- package/src/browser/style/index.css +22 -16
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-view-commands.d.ts","sourceRoot":"","sources":["../../src/browser/chat-view-commands.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,OAAO,EAAO,MAAM,aAAa,CAAC;AAG3C,yBAAiB,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"chat-view-commands.d.ts","sourceRoot":"","sources":["../../src/browser/chat-view-commands.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,OAAO,EAAO,MAAM,aAAa,CAAC;AAG3C,yBAAiB,YAAY,CAAC;IACnB,MAAM,aAAa,SAAS,CAAC;IAC7B,MAAM,iBAAiB,QAAmC,CAAC;IAE3D,MAAM,kBAAkB,SAKsB,CAAC;IAE/C,MAAM,oBAAoB,SAKsB,CAAC;IAEjD,MAAM,qBAAqB,SAKwB,CAAC;IAEpD,MAAM,6BAA6B,EAAE,OAE3C,CAAC;IAEK,MAAM,0CAA0C,SAIgB,CAAC;IAEjE,MAAM,iCAAiC,SAKqB,CAAC;IAE7D,MAAM,wCAAwC,SAKiB,CAAC;CAC1E;AAED,eAAO,MAAM,+BAA+B,SAK1C,CAAC;AAEH,eAAO,MAAM,0BAA0B,SAKrC,CAAC"}
|
|
@@ -20,50 +20,57 @@ const core_1 = require("@theia/core");
|
|
|
20
20
|
const browser_1 = require("@theia/core/lib/browser");
|
|
21
21
|
var ChatCommands;
|
|
22
22
|
(function (ChatCommands) {
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
ChatCommands.CHAT_CATEGORY = 'Chat';
|
|
24
|
+
ChatCommands.CHAT_CATEGORY_KEY = core_1.nls.getDefaultKey(ChatCommands.CHAT_CATEGORY);
|
|
25
25
|
ChatCommands.SCROLL_LOCK_WIDGET = core_1.Command.toLocalizedCommand({
|
|
26
26
|
id: 'chat:widget:lock',
|
|
27
|
-
category: CHAT_CATEGORY,
|
|
28
|
-
iconClass: (0, browser_1.codicon)('unlock')
|
|
29
|
-
|
|
27
|
+
category: ChatCommands.CHAT_CATEGORY,
|
|
28
|
+
iconClass: (0, browser_1.codicon)('unlock'),
|
|
29
|
+
label: 'Lock Scroll'
|
|
30
|
+
}, 'theia/ai-chat-ui/scroll-lock', ChatCommands.CHAT_CATEGORY_KEY);
|
|
30
31
|
ChatCommands.SCROLL_UNLOCK_WIDGET = core_1.Command.toLocalizedCommand({
|
|
31
32
|
id: 'chat:widget:unlock',
|
|
32
|
-
category: CHAT_CATEGORY,
|
|
33
|
-
iconClass: (0, browser_1.codicon)('lock')
|
|
34
|
-
|
|
33
|
+
category: ChatCommands.CHAT_CATEGORY,
|
|
34
|
+
iconClass: (0, browser_1.codicon)('lock'),
|
|
35
|
+
label: 'Unlock Scroll'
|
|
36
|
+
}, 'theia/ai-chat-ui/scroll-unlock', ChatCommands.CHAT_CATEGORY_KEY);
|
|
35
37
|
ChatCommands.EDIT_SESSION_SETTINGS = core_1.Command.toLocalizedCommand({
|
|
36
38
|
id: 'chat:widget:session-settings',
|
|
37
|
-
category: CHAT_CATEGORY,
|
|
38
|
-
iconClass: (0, browser_1.codicon)('bracket')
|
|
39
|
-
|
|
39
|
+
category: ChatCommands.CHAT_CATEGORY,
|
|
40
|
+
iconClass: (0, browser_1.codicon)('bracket'),
|
|
41
|
+
label: 'Set Session Settings'
|
|
42
|
+
}, 'theia/ai-chat-ui/session-settings', ChatCommands.CHAT_CATEGORY_KEY);
|
|
40
43
|
ChatCommands.AI_CHAT_NEW_WITH_TASK_CONTEXT = {
|
|
41
44
|
id: 'ai-chat.new-with-task-context',
|
|
42
45
|
};
|
|
43
46
|
ChatCommands.AI_CHAT_INITIATE_SESSION_WITH_TASK_CONTEXT = core_1.Command.toLocalizedCommand({
|
|
44
47
|
id: 'ai-chat.initiate-session-with-task-context',
|
|
45
48
|
label: 'Task Context: Initiate Session',
|
|
46
|
-
category: CHAT_CATEGORY
|
|
47
|
-
},
|
|
49
|
+
category: ChatCommands.CHAT_CATEGORY
|
|
50
|
+
}, 'theia/ai-chat-ui/initiate-session-task-context', ChatCommands.CHAT_CATEGORY_KEY);
|
|
48
51
|
ChatCommands.AI_CHAT_SUMMARIZE_CURRENT_SESSION = core_1.Command.toLocalizedCommand({
|
|
49
52
|
id: 'ai-chat-summary-current-session',
|
|
50
53
|
iconClass: (0, browser_1.codicon)('go-to-editing-session'),
|
|
51
54
|
label: 'Summarize Current Session',
|
|
52
|
-
category: CHAT_CATEGORY
|
|
53
|
-
},
|
|
55
|
+
category: ChatCommands.CHAT_CATEGORY
|
|
56
|
+
}, 'theia/ai-chat-ui/summarize-current-session', ChatCommands.CHAT_CATEGORY_KEY);
|
|
54
57
|
ChatCommands.AI_CHAT_OPEN_SUMMARY_FOR_CURRENT_SESSION = core_1.Command.toLocalizedCommand({
|
|
55
58
|
id: 'ai-chat-open-current-session-summary',
|
|
56
59
|
iconClass: (0, browser_1.codicon)('note'),
|
|
57
60
|
label: 'Open Current Session Summary',
|
|
58
|
-
category: CHAT_CATEGORY
|
|
59
|
-
},
|
|
61
|
+
category: ChatCommands.CHAT_CATEGORY
|
|
62
|
+
}, 'theia/ai-chat-ui/open-current-session-summary', ChatCommands.CHAT_CATEGORY_KEY);
|
|
60
63
|
})(ChatCommands || (exports.ChatCommands = ChatCommands = {}));
|
|
61
|
-
exports.AI_CHAT_NEW_CHAT_WINDOW_COMMAND = {
|
|
64
|
+
exports.AI_CHAT_NEW_CHAT_WINDOW_COMMAND = core_1.Command.toDefaultLocalizedCommand({
|
|
62
65
|
id: 'ai-chat-ui.new-chat',
|
|
63
|
-
iconClass: (0, browser_1.codicon)('add')
|
|
64
|
-
|
|
65
|
-
|
|
66
|
+
iconClass: (0, browser_1.codicon)('add'),
|
|
67
|
+
category: ChatCommands.CHAT_CATEGORY,
|
|
68
|
+
label: 'New Chat'
|
|
69
|
+
});
|
|
70
|
+
exports.AI_CHAT_SHOW_CHATS_COMMAND = core_1.Command.toDefaultLocalizedCommand({
|
|
66
71
|
id: 'ai-chat-ui.show-chats',
|
|
67
|
-
iconClass: (0, browser_1.codicon)('history')
|
|
68
|
-
|
|
72
|
+
iconClass: (0, browser_1.codicon)('history'),
|
|
73
|
+
category: ChatCommands.CHAT_CATEGORY,
|
|
74
|
+
label: 'Show Chats...'
|
|
75
|
+
});
|
|
69
76
|
//# sourceMappingURL=chat-view-commands.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-view-commands.js","sourceRoot":"","sources":["../../src/browser/chat-view-commands.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,sCAA2C;AAC3C,qDAAkD;AAElD,IAAiB,YAAY,
|
|
1
|
+
{"version":3,"file":"chat-view-commands.js","sourceRoot":"","sources":["../../src/browser/chat-view-commands.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,sCAA2C;AAC3C,qDAAkD;AAElD,IAAiB,YAAY,CAgD5B;AAhDD,WAAiB,YAAY;IACZ,0BAAa,GAAG,MAAM,CAAC;IACvB,8BAAiB,GAAG,UAAG,CAAC,aAAa,CAAC,aAAA,aAAa,CAAC,CAAC;IAErD,+BAAkB,GAAG,cAAO,CAAC,kBAAkB,CAAC;QACzD,EAAE,EAAE,kBAAkB;QACtB,QAAQ,EAAE,aAAA,aAAa;QACvB,SAAS,EAAE,IAAA,iBAAO,EAAC,QAAQ,CAAC;QAC5B,KAAK,EAAE,aAAa;KACvB,EAAE,8BAA8B,EAAE,aAAA,iBAAiB,CAAC,CAAC;IAEzC,iCAAoB,GAAG,cAAO,CAAC,kBAAkB,CAAC;QAC3D,EAAE,EAAE,oBAAoB;QACxB,QAAQ,EAAE,aAAA,aAAa;QACvB,SAAS,EAAE,IAAA,iBAAO,EAAC,MAAM,CAAC;QAC1B,KAAK,EAAE,eAAe;KACzB,EAAE,gCAAgC,EAAE,aAAA,iBAAiB,CAAC,CAAC;IAE3C,kCAAqB,GAAG,cAAO,CAAC,kBAAkB,CAAC;QAC5D,EAAE,EAAE,8BAA8B;QAClC,QAAQ,EAAE,aAAA,aAAa;QACvB,SAAS,EAAE,IAAA,iBAAO,EAAC,SAAS,CAAC;QAC7B,KAAK,EAAE,sBAAsB;KAChC,EAAE,mCAAmC,EAAE,aAAA,iBAAiB,CAAC,CAAC;IAE9C,0CAA6B,GAAY;QAClD,EAAE,EAAE,+BAA+B;KACtC,CAAC;IAEW,uDAA0C,GAAG,cAAO,CAAC,kBAAkB,CAAC;QACjF,EAAE,EAAE,4CAA4C;QAChD,KAAK,EAAE,gCAAgC;QACvC,QAAQ,EAAE,aAAA,aAAa;KAC1B,EAAE,gDAAgD,EAAE,aAAA,iBAAiB,CAAC,CAAC;IAE3D,8CAAiC,GAAG,cAAO,CAAC,kBAAkB,CAAC;QACxE,EAAE,EAAE,iCAAiC;QACrC,SAAS,EAAE,IAAA,iBAAO,EAAC,uBAAuB,CAAC;QAC3C,KAAK,EAAE,2BAA2B;QAClC,QAAQ,EAAE,aAAA,aAAa;KAC1B,EAAE,4CAA4C,EAAE,aAAA,iBAAiB,CAAC,CAAC;IAEvD,qDAAwC,GAAG,cAAO,CAAC,kBAAkB,CAAC;QAC/E,EAAE,EAAE,sCAAsC;QAC1C,SAAS,EAAE,IAAA,iBAAO,EAAC,MAAM,CAAC;QAC1B,KAAK,EAAE,8BAA8B;QACrC,QAAQ,EAAE,aAAA,aAAa;KAC1B,EAAE,+CAA+C,EAAE,aAAA,iBAAiB,CAAC,CAAC;AAC3E,CAAC,EAhDgB,YAAY,4BAAZ,YAAY,QAgD5B;AAEY,QAAA,+BAA+B,GAAG,cAAO,CAAC,yBAAyB,CAAC;IAC7E,EAAE,EAAE,qBAAqB;IACzB,SAAS,EAAE,IAAA,iBAAO,EAAC,KAAK,CAAC;IACzB,QAAQ,EAAE,YAAY,CAAC,aAAa;IACpC,KAAK,EAAE,UAAU;CACpB,CAAC,CAAC;AAEU,QAAA,0BAA0B,GAAG,cAAO,CAAC,yBAAyB,CAAC;IACxE,EAAE,EAAE,uBAAuB;IAC3B,SAAS,EAAE,IAAA,iBAAO,EAAC,SAAS,CAAC;IAC7B,QAAQ,EAAE,YAAY,CAAC,aAAa;IACpC,KAAK,EAAE,eAAe;CACzB,CAAC,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { CommandService, Emitter, Event, MessageService, URI } from '@theia/core';
|
|
1
|
+
import { CommandService, Emitter, Event, MessageService, PreferenceService, URI } from '@theia/core';
|
|
2
2
|
import { ChatRequest, ChatRequestModel, ChatService, ChatSession } from '@theia/ai-chat';
|
|
3
|
-
import { BaseWidget, ExtractableWidget, Message,
|
|
3
|
+
import { BaseWidget, ExtractableWidget, Message, 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';
|
|
@@ -28,6 +28,7 @@ export declare class ChatViewWidget extends BaseWidget implements ExtractableWid
|
|
|
28
28
|
protected chatSession: ChatSession;
|
|
29
29
|
protected _state: ChatViewWidget.State;
|
|
30
30
|
protected readonly onStateChangedEmitter: Emitter<ChatViewWidget.State>;
|
|
31
|
+
isExtractable: boolean;
|
|
31
32
|
secondaryWindow: Window | undefined;
|
|
32
33
|
constructor(treeWidget: ChatViewTreeWidget, inputWidget: AIChatInputWidget);
|
|
33
34
|
protected init(): void;
|
|
@@ -48,7 +49,6 @@ export declare class ChatViewWidget extends BaseWidget implements ExtractableWid
|
|
|
48
49
|
unlock(): void;
|
|
49
50
|
setTemporaryLock(locked: boolean): void;
|
|
50
51
|
get isLocked(): boolean;
|
|
51
|
-
get isExtractable(): boolean;
|
|
52
52
|
addContext(variable: AIVariableResolutionRequest): void;
|
|
53
53
|
setSettings(settings: {
|
|
54
54
|
[key: string]: unknown;
|
|
@@ -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,GAAG,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"chat-view-widget.d.ts","sourceRoot":"","sources":["../../src/browser/chat-view-widget.tsx"],"names":[],"mappings":"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"}
|
|
@@ -35,6 +35,7 @@ let ChatViewWidget = ChatViewWidget_1 = class ChatViewWidget extends browser_1.B
|
|
|
35
35
|
this.inputWidget = inputWidget;
|
|
36
36
|
this._state = { locked: false, temporaryLocked: false };
|
|
37
37
|
this.onStateChangedEmitter = new core_1.Emitter();
|
|
38
|
+
this.isExtractable = true;
|
|
38
39
|
this.id = ChatViewWidget_1.ID;
|
|
39
40
|
this.title.label = ChatViewWidget_1.LABEL;
|
|
40
41
|
this.title.caption = ChatViewWidget_1.LABEL;
|
|
@@ -178,9 +179,6 @@ let ChatViewWidget = ChatViewWidget_1 = class ChatViewWidget extends browser_1.B
|
|
|
178
179
|
get isLocked() {
|
|
179
180
|
return !!this.state.locked;
|
|
180
181
|
}
|
|
181
|
-
get isExtractable() {
|
|
182
|
-
return this.secondaryWindow === undefined;
|
|
183
|
-
}
|
|
184
182
|
addContext(variable) {
|
|
185
183
|
this.inputWidget.addContext(variable);
|
|
186
184
|
}
|
|
@@ -206,7 +204,7 @@ tslib_1.__decorate([
|
|
|
206
204
|
tslib_1.__metadata("design:type", core_1.MessageService)
|
|
207
205
|
], ChatViewWidget.prototype, "messageService", void 0);
|
|
208
206
|
tslib_1.__decorate([
|
|
209
|
-
(0, inversify_1.inject)(
|
|
207
|
+
(0, inversify_1.inject)(core_1.PreferenceService),
|
|
210
208
|
tslib_1.__metadata("design:type", Object)
|
|
211
209
|
], ChatViewWidget.prototype, "preferenceService", void 0);
|
|
212
210
|
tslib_1.__decorate([
|
|
@@ -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,
|
|
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,19 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@theia/ai-chat-ui",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.66.0-next.0+008c83404",
|
|
4
4
|
"description": "Theia - AI Chat UI Extension",
|
|
5
5
|
"dependencies": {
|
|
6
|
-
"@theia/ai-chat": "1.
|
|
7
|
-
"@theia/ai-core": "1.
|
|
8
|
-
"@theia/core": "1.
|
|
9
|
-
"@theia/editor": "1.
|
|
10
|
-
"@theia/editor-preview": "1.
|
|
11
|
-
"@theia/filesystem": "1.
|
|
12
|
-
"@theia/monaco": "1.
|
|
6
|
+
"@theia/ai-chat": "1.66.0-next.0+008c83404",
|
|
7
|
+
"@theia/ai-core": "1.66.0-next.0+008c83404",
|
|
8
|
+
"@theia/core": "1.66.0-next.0+008c83404",
|
|
9
|
+
"@theia/editor": "1.66.0-next.0+008c83404",
|
|
10
|
+
"@theia/editor-preview": "1.66.0-next.0+008c83404",
|
|
11
|
+
"@theia/filesystem": "1.66.0-next.0+008c83404",
|
|
12
|
+
"@theia/monaco": "1.66.0-next.0+008c83404",
|
|
13
13
|
"@theia/monaco-editor-core": "1.96.302",
|
|
14
|
-
"@theia/workspace": "1.
|
|
14
|
+
"@theia/workspace": "1.66.0-next.0+008c83404",
|
|
15
15
|
"date-fns": "^4.1.0",
|
|
16
|
-
"minimatch": "^5.1.0",
|
|
17
16
|
"tslib": "^2.6.2",
|
|
18
17
|
"uuid": "^9.0.1"
|
|
19
18
|
},
|
|
@@ -51,10 +50,10 @@
|
|
|
51
50
|
"watch": "theiaext watch"
|
|
52
51
|
},
|
|
53
52
|
"devDependencies": {
|
|
54
|
-
"@theia/ext-scripts": "1.
|
|
53
|
+
"@theia/ext-scripts": "1.65.0"
|
|
55
54
|
},
|
|
56
55
|
"nyc": {
|
|
57
56
|
"extends": "../../configs/nyc.json"
|
|
58
57
|
},
|
|
59
|
-
"gitHead": "
|
|
58
|
+
"gitHead": "008c8340465f7e42298839881d814863bef0b039"
|
|
60
59
|
}
|
|
@@ -116,8 +116,8 @@ export class AIChatContribution extends AbstractViewContribution<ChatViewWidget>
|
|
|
116
116
|
});
|
|
117
117
|
registry.registerCommand(AI_CHAT_NEW_CHAT_WINDOW_COMMAND, {
|
|
118
118
|
execute: () => this.openView().then(() => this.chatService.createSession(ChatAgentLocation.Panel, { focus: true })),
|
|
119
|
-
isVisible: widget => this.activationService.isActive
|
|
120
|
-
isEnabled: widget => this.activationService.isActive
|
|
119
|
+
isVisible: widget => this.activationService.isActive,
|
|
120
|
+
isEnabled: widget => this.activationService.isActive,
|
|
121
121
|
});
|
|
122
122
|
registry.registerCommand(ChatCommands.AI_CHAT_NEW_WITH_TASK_CONTEXT, {
|
|
123
123
|
execute: async () => {
|
|
@@ -229,14 +229,14 @@ export class AIChatContribution extends AbstractViewContribution<ChatViewWidget>
|
|
|
229
229
|
registry.registerItem({
|
|
230
230
|
id: AI_CHAT_NEW_CHAT_WINDOW_COMMAND.id,
|
|
231
231
|
command: AI_CHAT_NEW_CHAT_WINDOW_COMMAND.id,
|
|
232
|
-
tooltip:
|
|
232
|
+
tooltip: AI_CHAT_NEW_CHAT_WINDOW_COMMAND.label,
|
|
233
233
|
isVisible: widget => this.activationService.isActive && this.withWidget(widget),
|
|
234
234
|
when: ENABLE_AI_CONTEXT_KEY
|
|
235
235
|
});
|
|
236
236
|
registry.registerItem({
|
|
237
237
|
id: AI_CHAT_SHOW_CHATS_COMMAND.id,
|
|
238
238
|
command: AI_CHAT_SHOW_CHATS_COMMAND.id,
|
|
239
|
-
tooltip:
|
|
239
|
+
tooltip: AI_CHAT_SHOW_CHATS_COMMAND.label,
|
|
240
240
|
isVisible: widget => this.activationService.isActive && this.withWidget(widget),
|
|
241
241
|
when: ENABLE_AI_CONTEXT_KEY
|
|
242
242
|
});
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
|
|
17
17
|
import '../../src/browser/style/index.css';
|
|
18
18
|
import { bindContributionProvider, CommandContribution, MenuContribution } from '@theia/core';
|
|
19
|
-
import { bindViewContribution, FrontendApplicationContribution, WidgetFactory } from '@theia/core/lib/browser';
|
|
19
|
+
import { bindViewContribution, FrontendApplicationContribution, WidgetFactory, KeybindingContribution } from '@theia/core/lib/browser';
|
|
20
20
|
import { TabBarToolbarContribution } from '@theia/core/lib/browser/shell/tab-bar-toolbar';
|
|
21
21
|
import { ContainerModule, interfaces } from '@theia/core/shared/inversify';
|
|
22
22
|
import { EditorSelectionResolver } from '@theia/editor/lib/browser/editor-manager';
|
|
@@ -55,11 +55,18 @@ import { ChangeSetActionRenderer, ChangeSetActionService } from './change-set-ac
|
|
|
55
55
|
import { ChangeSetAcceptAction } from './change-set-actions/change-set-accept-action';
|
|
56
56
|
import { AIChatTreeInputArgs, AIChatTreeInputConfiguration, AIChatTreeInputFactory, AIChatTreeInputWidget } from './chat-tree-view/chat-view-tree-input-widget';
|
|
57
57
|
import { SubChatWidget, SubChatWidgetFactory } from './chat-tree-view/sub-chat-widget';
|
|
58
|
+
import { ChatInputHistoryService } from './chat-input-history';
|
|
59
|
+
import { ChatInputHistoryContribution } from './chat-input-history-contribution';
|
|
58
60
|
|
|
59
61
|
export default new ContainerModule((bind, _unbind, _isBound, rebind) => {
|
|
60
62
|
bindViewContribution(bind, AIChatContribution);
|
|
61
63
|
bind(TabBarToolbarContribution).toService(AIChatContribution);
|
|
62
64
|
|
|
65
|
+
bind(ChatInputHistoryService).toSelf().inSingletonScope();
|
|
66
|
+
bind(ChatInputHistoryContribution).toSelf().inSingletonScope();
|
|
67
|
+
bind(CommandContribution).toService(ChatInputHistoryContribution);
|
|
68
|
+
bind(KeybindingContribution).toService(ChatInputHistoryContribution);
|
|
69
|
+
|
|
63
70
|
bindContributionProvider(bind, ChatResponsePartRenderer);
|
|
64
71
|
|
|
65
72
|
bindChatViewWidget(bind);
|
|
@@ -68,7 +75,8 @@ export default new ContainerModule((bind, _unbind, _isBound, rebind) => {
|
|
|
68
75
|
bind(AIChatInputConfiguration).toConstantValue({
|
|
69
76
|
showContext: true,
|
|
70
77
|
showPinnedAgent: true,
|
|
71
|
-
showChangeSet: true
|
|
78
|
+
showChangeSet: true,
|
|
79
|
+
enablePromptHistory: true
|
|
72
80
|
} satisfies AIChatInputConfiguration);
|
|
73
81
|
bind(WidgetFactory).toDynamicValue(({ container }) => ({
|
|
74
82
|
id: AIChatInputWidget.ID,
|
|
@@ -91,6 +99,7 @@ export default new ContainerModule((bind, _unbind, _isBound, rebind) => {
|
|
|
91
99
|
showPinnedAgent: true,
|
|
92
100
|
showChangeSet: false,
|
|
93
101
|
showSuggestions: false,
|
|
102
|
+
enablePromptHistory: false
|
|
94
103
|
} satisfies AIChatInputConfiguration);
|
|
95
104
|
container.bind(AIChatTreeInputWidget).toSelf().inSingletonScope();
|
|
96
105
|
const widget = container.get(AIChatTreeInputWidget);
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
// *****************************************************************************
|
|
2
|
+
// Copyright (C) 2025 STMicroelectronics and others.
|
|
3
|
+
//
|
|
4
|
+
// This program and the accompanying materials are made available under the
|
|
5
|
+
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
6
|
+
// http://www.eclipse.org/legal/epl-2.0.
|
|
7
|
+
//
|
|
8
|
+
// This Source Code may also be made available under the following Secondary
|
|
9
|
+
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
10
|
+
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
11
|
+
// with the GNU Classpath Exception which is available at
|
|
12
|
+
// https://www.gnu.org/software/classpath/license.html.
|
|
13
|
+
//
|
|
14
|
+
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
|
+
// *****************************************************************************
|
|
16
|
+
|
|
17
|
+
import { Command, CommandContribution, CommandRegistry } from '@theia/core';
|
|
18
|
+
import { ApplicationShell, KeybindingContribution, KeybindingRegistry } from '@theia/core/lib/browser';
|
|
19
|
+
import { inject, injectable } from '@theia/core/shared/inversify';
|
|
20
|
+
import { AIChatInputWidget } from './chat-input-widget';
|
|
21
|
+
import { ChatInputHistoryService } from './chat-input-history';
|
|
22
|
+
|
|
23
|
+
const CHAT_INPUT_PREVIOUS_PROMPT_COMMAND = Command.toDefaultLocalizedCommand({
|
|
24
|
+
id: 'chat-input:previous-prompt',
|
|
25
|
+
label: 'Previous Prompt'
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
const CHAT_INPUT_NEXT_PROMPT_COMMAND = Command.toDefaultLocalizedCommand({
|
|
29
|
+
id: 'chat-input:next-prompt',
|
|
30
|
+
label: 'Next Prompt'
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
const CHAT_INPUT_CLEAR_HISTORY_COMMAND = Command.toDefaultLocalizedCommand({
|
|
34
|
+
id: 'chat-input:clear-history',
|
|
35
|
+
category: 'Chat',
|
|
36
|
+
label: 'Clear Input Prompt History'
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
@injectable()
|
|
40
|
+
export class ChatInputHistoryContribution implements CommandContribution, KeybindingContribution {
|
|
41
|
+
|
|
42
|
+
@inject(ApplicationShell)
|
|
43
|
+
protected readonly shell: ApplicationShell;
|
|
44
|
+
|
|
45
|
+
@inject(ChatInputHistoryService)
|
|
46
|
+
protected readonly historyService: ChatInputHistoryService;
|
|
47
|
+
|
|
48
|
+
registerCommands(commands: CommandRegistry): void {
|
|
49
|
+
commands.registerCommand(CHAT_INPUT_PREVIOUS_PROMPT_COMMAND, {
|
|
50
|
+
execute: () => this.executeNavigatePrevious(),
|
|
51
|
+
isEnabled: () => this.isNavigationEnabled()
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
commands.registerCommand(CHAT_INPUT_NEXT_PROMPT_COMMAND, {
|
|
55
|
+
execute: () => this.executeNavigateNext(),
|
|
56
|
+
isEnabled: () => this.isNavigationEnabled()
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
commands.registerCommand(CHAT_INPUT_CLEAR_HISTORY_COMMAND, {
|
|
60
|
+
execute: () => this.historyService.clearHistory(),
|
|
61
|
+
isEnabled: () => this.historyService.getPrompts().length > 0
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
registerKeybindings(keybindings: KeybindingRegistry): void {
|
|
66
|
+
keybindings.registerKeybinding({
|
|
67
|
+
command: CHAT_INPUT_PREVIOUS_PROMPT_COMMAND.id,
|
|
68
|
+
keybinding: 'up',
|
|
69
|
+
when: 'chatInputFocus && chatInputFirstLine && !suggestWidgetVisible'
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
keybindings.registerKeybinding({
|
|
73
|
+
command: CHAT_INPUT_NEXT_PROMPT_COMMAND.id,
|
|
74
|
+
keybinding: 'down',
|
|
75
|
+
when: 'chatInputFocus && chatInputLastLine && !suggestWidgetVisible'
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
protected executeNavigatePrevious(): void {
|
|
80
|
+
const chatInputWidget = this.findFocusedChatInput();
|
|
81
|
+
if (!chatInputWidget || !chatInputWidget.editor) {
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
const position = chatInputWidget.editor.getControl().getPosition();
|
|
86
|
+
const isCursorAtBeginning = position && (position.lineNumber > 1 || position.column > 1);
|
|
87
|
+
if (isCursorAtBeginning) {
|
|
88
|
+
this.positionCursorAtBeginning(chatInputWidget);
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
const currentInput = chatInputWidget.editor.getControl().getValue();
|
|
93
|
+
const previousPrompt = chatInputWidget.getPreviousPrompt(currentInput);
|
|
94
|
+
if (previousPrompt !== undefined) {
|
|
95
|
+
chatInputWidget.editor.getControl().setValue(previousPrompt);
|
|
96
|
+
this.positionCursorAtBeginning(chatInputWidget);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
protected executeNavigateNext(): void {
|
|
101
|
+
const chatInputWidget = this.findFocusedChatInput();
|
|
102
|
+
if (!chatInputWidget || !chatInputWidget.editor) {
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
const position = chatInputWidget.editor.getControl().getPosition();
|
|
107
|
+
const model = chatInputWidget.editor.getControl().getModel();
|
|
108
|
+
const isCursorAtEnd = position && model && (
|
|
109
|
+
position.lineNumber < model.getLineCount() || position.column < model.getLineMaxColumn(position.lineNumber)
|
|
110
|
+
);
|
|
111
|
+
if (isCursorAtEnd) {
|
|
112
|
+
this.positionCursorAtEnd(chatInputWidget);
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
const nextPrompt = chatInputWidget.getNextPrompt();
|
|
117
|
+
if (nextPrompt !== undefined) {
|
|
118
|
+
chatInputWidget.editor.getControl().setValue(nextPrompt);
|
|
119
|
+
this.positionCursorAtEnd(chatInputWidget);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
protected positionCursorAtBeginning(widget: AIChatInputWidget): void {
|
|
124
|
+
const editor = widget.editor?.getControl();
|
|
125
|
+
if (editor) {
|
|
126
|
+
editor.setPosition({ lineNumber: 1, column: 1 });
|
|
127
|
+
editor.focus();
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
protected positionCursorAtEnd(widget: AIChatInputWidget): void {
|
|
132
|
+
const editor = widget.editor?.getControl();
|
|
133
|
+
const model = editor?.getModel();
|
|
134
|
+
|
|
135
|
+
if (editor && model) {
|
|
136
|
+
const lastLine = model.getLineCount();
|
|
137
|
+
const lastColumn = model.getLineContent(lastLine).length + 1;
|
|
138
|
+
editor.setPosition({ lineNumber: lastLine, column: lastColumn });
|
|
139
|
+
editor.focus();
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
protected findFocusedChatInput(): AIChatInputWidget | undefined {
|
|
144
|
+
const activeElement = document.activeElement;
|
|
145
|
+
if (!(activeElement instanceof HTMLElement)) {
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
const activeWidget = this.shell.findWidgetForElement(activeElement);
|
|
149
|
+
if (!(activeWidget instanceof AIChatInputWidget)) {
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
if (!activeWidget.inputConfiguration?.enablePromptHistory) {
|
|
153
|
+
return;
|
|
154
|
+
}
|
|
155
|
+
if (!activeWidget.editor?.getControl().hasWidgetFocus()) {
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
return activeWidget;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
protected isNavigationEnabled(): boolean {
|
|
162
|
+
const chatInputWidget = this.findFocusedChatInput();
|
|
163
|
+
return chatInputWidget !== undefined &&
|
|
164
|
+
chatInputWidget.inputConfiguration?.enablePromptHistory !== false;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
// *****************************************************************************
|
|
2
|
+
// Copyright (C) 2025 STMicroelectronics and others.
|
|
3
|
+
//
|
|
4
|
+
// This program and the accompanying materials are made available under the
|
|
5
|
+
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
6
|
+
// http://www.eclipse.org/legal/epl-2.0.
|
|
7
|
+
//
|
|
8
|
+
// This Source Code may also be made available under the following Secondary
|
|
9
|
+
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
10
|
+
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
11
|
+
// with the GNU Classpath Exception which is available at
|
|
12
|
+
// https://www.gnu.org/software/classpath/license.html.
|
|
13
|
+
//
|
|
14
|
+
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
|
+
// *****************************************************************************
|
|
16
|
+
|
|
17
|
+
import { inject, injectable } from '@theia/core/shared/inversify';
|
|
18
|
+
import { StorageService } from '@theia/core/lib/browser';
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Manages navigation state for a single chat input widget.
|
|
22
|
+
* Each widget has its own independent navigation state while sharing the same history.
|
|
23
|
+
*/
|
|
24
|
+
export class ChatInputNavigationState {
|
|
25
|
+
private currentIndex: number;
|
|
26
|
+
private preservedInput?: string;
|
|
27
|
+
private isNavigating = false;
|
|
28
|
+
|
|
29
|
+
constructor(private readonly historyService: ChatInputHistoryService) {
|
|
30
|
+
this.currentIndex = historyService.getPrompts().length;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
getPreviousPrompt(currentInput: string): string | undefined {
|
|
34
|
+
const history = this.historyService.getPrompts();
|
|
35
|
+
|
|
36
|
+
if (history.length === 0) {
|
|
37
|
+
return undefined;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
if (!this.isNavigating) {
|
|
41
|
+
this.preservedInput = currentInput;
|
|
42
|
+
this.isNavigating = true;
|
|
43
|
+
this.currentIndex = history.length;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
if (this.currentIndex <= 0) {
|
|
47
|
+
// Already at the oldest prompt
|
|
48
|
+
return undefined;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
this.currentIndex--;
|
|
52
|
+
return history[this.currentIndex];
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
getNextPrompt(): string | undefined {
|
|
56
|
+
const history = this.historyService.getPrompts();
|
|
57
|
+
|
|
58
|
+
if (!this.isNavigating || this.currentIndex >= history.length) {
|
|
59
|
+
return undefined;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
this.currentIndex++;
|
|
63
|
+
|
|
64
|
+
if (this.currentIndex >= history.length) {
|
|
65
|
+
// Reached end of history - return to preserved input
|
|
66
|
+
this.isNavigating = false;
|
|
67
|
+
const preserved = this.preservedInput;
|
|
68
|
+
this.preservedInput = undefined;
|
|
69
|
+
this.currentIndex = history.length;
|
|
70
|
+
return preserved || '';
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
return history[this.currentIndex];
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
stopNavigation(): void {
|
|
77
|
+
this.isNavigating = false;
|
|
78
|
+
this.preservedInput = undefined;
|
|
79
|
+
this.currentIndex = this.historyService.getPrompts().length;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
const CHAT_PROMPT_HISTORY_STORAGE_KEY = 'ai-chat-prompt-history';
|
|
85
|
+
const MAX_HISTORY_SIZE = 100;
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Manages shared prompt history across all chat input widgets.
|
|
89
|
+
* Each prompt is stored only once and shared between all chat inputs.
|
|
90
|
+
*/
|
|
91
|
+
@injectable()
|
|
92
|
+
export class ChatInputHistoryService {
|
|
93
|
+
|
|
94
|
+
@inject(StorageService)
|
|
95
|
+
protected readonly storageService: StorageService;
|
|
96
|
+
|
|
97
|
+
protected history: string[] = [];
|
|
98
|
+
|
|
99
|
+
async init(): Promise<void> {
|
|
100
|
+
const data = await this.storageService.getData<{ prompts: string[] }>(CHAT_PROMPT_HISTORY_STORAGE_KEY, { prompts: [] });
|
|
101
|
+
this.history = data.prompts || [];
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* Get read-only access to the current prompt history.
|
|
106
|
+
*/
|
|
107
|
+
getPrompts(): readonly string[] {
|
|
108
|
+
return this.history;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
clearHistory(): void {
|
|
112
|
+
this.history = [];
|
|
113
|
+
this.persistHistory();
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
addToHistory(prompt: string): void {
|
|
117
|
+
const trimmed = prompt.trim();
|
|
118
|
+
if (!trimmed) {
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
// Remove existing instance and add to end (most recent)
|
|
123
|
+
this.history = this.history
|
|
124
|
+
.filter(item => item !== trimmed)
|
|
125
|
+
.concat(trimmed)
|
|
126
|
+
.slice(-MAX_HISTORY_SIZE);
|
|
127
|
+
|
|
128
|
+
this.persistHistory();
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
protected async persistHistory(): Promise<void> {
|
|
132
|
+
try {
|
|
133
|
+
await this.storageService.setData(CHAT_PROMPT_HISTORY_STORAGE_KEY, { prompts: this.history });
|
|
134
|
+
} catch (error) {
|
|
135
|
+
console.warn('Failed to persist chat prompt history:', error);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|