@theia/ai-chat-ui 1.65.0-next.19 → 1.65.0-next.39
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 +9 -1
- package/lib/browser/ai-chat-ui-frontend-module.js.map +1 -1
- package/lib/browser/chat-input-history-contribution.d.ts +16 -0
- package/lib/browser/chat-input-history-contribution.d.ts.map +1 -0
- package/lib/browser/chat-input-history-contribution.js +143 -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 +16 -0
- package/lib/browser/chat-input-widget.d.ts.map +1 -1
- package/lib/browser/chat-input-widget.js +98 -4
- package/lib/browser/chat-input-widget.js.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 +4 -3
- package/lib/browser/chat-response-renderer/toolcall-part-renderer.js.map +1 -1
- package/lib/browser/chat-view-widget.d.ts +2 -2
- package/lib/browser/chat-view-widget.d.ts.map +1 -1
- package/lib/browser/chat-view-widget.js +1 -1
- package/lib/browser/chat-view-widget.js.map +1 -1
- package/package.json +10 -10
- package/src/browser/ai-chat-ui-frontend-module.ts +11 -2
- package/src/browser/chat-input-history-contribution.ts +150 -0
- package/src/browser/chat-input-history.ts +138 -0
- package/src/browser/chat-input-widget.tsx +119 -2
- package/src/browser/chat-response-renderer/toolcall-part-renderer.tsx +2 -1
- package/src/browser/chat-view-widget.tsx +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-chat-ui-frontend-module.d.ts","sourceRoot":"","sources":["../../src/browser/ai-chat-ui-frontend-module.ts"],"names":[],"mappings":"AAgBA,OAAO,mCAAmC,CAAC;AAI3C,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":"AAgBA,OAAO,mCAAmC,CAAC;AAI3C,OAAO,EAAE,eAAe,EAAc,MAAM,8BAA8B,CAAC;;AAwC3E,wBA0GG"}
|
|
@@ -39,16 +39,23 @@ const change_set_action_service_1 = require("./change-set-actions/change-set-act
|
|
|
39
39
|
const change_set_accept_action_1 = require("./change-set-actions/change-set-accept-action");
|
|
40
40
|
const chat_view_tree_input_widget_1 = require("./chat-tree-view/chat-view-tree-input-widget");
|
|
41
41
|
const sub_chat_widget_1 = require("./chat-tree-view/sub-chat-widget");
|
|
42
|
+
const chat_input_history_1 = require("./chat-input-history");
|
|
43
|
+
const chat_input_history_contribution_1 = require("./chat-input-history-contribution");
|
|
42
44
|
exports.default = new inversify_1.ContainerModule((bind, _unbind, _isBound, rebind) => {
|
|
43
45
|
(0, browser_1.bindViewContribution)(bind, ai_chat_ui_contribution_1.AIChatContribution);
|
|
44
46
|
bind(tab_bar_toolbar_1.TabBarToolbarContribution).toService(ai_chat_ui_contribution_1.AIChatContribution);
|
|
47
|
+
bind(chat_input_history_1.ChatInputHistoryService).toSelf().inSingletonScope();
|
|
48
|
+
bind(chat_input_history_contribution_1.ChatInputHistoryContribution).toSelf().inSingletonScope();
|
|
49
|
+
bind(core_1.CommandContribution).toService(chat_input_history_contribution_1.ChatInputHistoryContribution);
|
|
50
|
+
bind(browser_1.KeybindingContribution).toService(chat_input_history_contribution_1.ChatInputHistoryContribution);
|
|
45
51
|
(0, core_1.bindContributionProvider)(bind, chat_response_part_renderer_1.ChatResponsePartRenderer);
|
|
46
52
|
bindChatViewWidget(bind);
|
|
47
53
|
bind(chat_input_widget_1.AIChatInputWidget).toSelf();
|
|
48
54
|
bind(chat_input_widget_1.AIChatInputConfiguration).toConstantValue({
|
|
49
55
|
showContext: true,
|
|
50
56
|
showPinnedAgent: true,
|
|
51
|
-
showChangeSet: true
|
|
57
|
+
showChangeSet: true,
|
|
58
|
+
enablePromptHistory: true
|
|
52
59
|
});
|
|
53
60
|
bind(browser_1.WidgetFactory).toDynamicValue(({ container }) => ({
|
|
54
61
|
id: chat_input_widget_1.AIChatInputWidget.ID,
|
|
@@ -68,6 +75,7 @@ exports.default = new inversify_1.ContainerModule((bind, _unbind, _isBound, rebi
|
|
|
68
75
|
showPinnedAgent: true,
|
|
69
76
|
showChangeSet: false,
|
|
70
77
|
showSuggestions: false,
|
|
78
|
+
enablePromptHistory: false
|
|
71
79
|
});
|
|
72
80
|
container.bind(chat_view_tree_input_widget_1.AIChatTreeInputWidget).toSelf().inSingletonScope();
|
|
73
81
|
const widget = container.get(chat_view_tree_input_widget_1.AIChatTreeInputWidget);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-chat-ui-frontend-module.js","sourceRoot":"","sources":["../../src/browser/ai-chat-ui-frontend-module.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;AAEhF,6CAA2C;AAC3C,sCAA8F;AAC9F,
|
|
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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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { CommandContribution, CommandRegistry } from '@theia/core';
|
|
2
|
+
import { ApplicationShell, KeybindingContribution, KeybindingRegistry } from '@theia/core/lib/browser';
|
|
3
|
+
import { AIChatInputWidget } from './chat-input-widget';
|
|
4
|
+
import { ChatInputHistoryService } from './chat-input-history';
|
|
5
|
+
export declare class ChatInputHistoryContribution implements CommandContribution, KeybindingContribution {
|
|
6
|
+
protected readonly shell: ApplicationShell;
|
|
7
|
+
protected readonly historyService: ChatInputHistoryService;
|
|
8
|
+
registerCommands(commands: CommandRegistry): void;
|
|
9
|
+
registerKeybindings(keybindings: KeybindingRegistry): void;
|
|
10
|
+
protected executeNavigatePrevious(): void;
|
|
11
|
+
protected executeNavigateNext(): void;
|
|
12
|
+
protected positionCursorAtEnd(widget: AIChatInputWidget): void;
|
|
13
|
+
protected findFocusedChatInput(): AIChatInputWidget | undefined;
|
|
14
|
+
protected isNavigationEnabled(): boolean;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=chat-input-history-contribution.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat-input-history-contribution.d.ts","sourceRoot":"","sources":["../../src/browser/chat-input-history-contribution.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAW,mBAAmB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAEvG,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAkB/D,qBACa,4BAA6B,YAAW,mBAAmB,EAAE,sBAAsB;IAG5F,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,gBAAgB,CAAC;IAG3C,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,uBAAuB,CAAC;IAE3D,gBAAgB,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI;IAiBjD,mBAAmB,CAAC,WAAW,EAAE,kBAAkB,GAAG,IAAI;IAc1D,SAAS,CAAC,uBAAuB,IAAI,IAAI;IAezC,SAAS,CAAC,mBAAmB,IAAI,IAAI;IAcrC,SAAS,CAAC,mBAAmB,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI;IAmB9D,SAAS,CAAC,oBAAoB,IAAI,iBAAiB,GAAG,SAAS;IAkB/D,SAAS,CAAC,mBAAmB,IAAI,OAAO;CAK3C"}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// *****************************************************************************
|
|
3
|
+
// Copyright (C) 2025 STMicroelectronics and others.
|
|
4
|
+
//
|
|
5
|
+
// This program and the accompanying materials are made available under the
|
|
6
|
+
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
7
|
+
// http://www.eclipse.org/legal/epl-2.0.
|
|
8
|
+
//
|
|
9
|
+
// This Source Code may also be made available under the following Secondary
|
|
10
|
+
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
11
|
+
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
12
|
+
// with the GNU Classpath Exception which is available at
|
|
13
|
+
// https://www.gnu.org/software/classpath/license.html.
|
|
14
|
+
//
|
|
15
|
+
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
16
|
+
// *****************************************************************************
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.ChatInputHistoryContribution = void 0;
|
|
19
|
+
const tslib_1 = require("tslib");
|
|
20
|
+
const core_1 = require("@theia/core");
|
|
21
|
+
const browser_1 = require("@theia/core/lib/browser");
|
|
22
|
+
const inversify_1 = require("@theia/core/shared/inversify");
|
|
23
|
+
const chat_input_widget_1 = require("./chat-input-widget");
|
|
24
|
+
const chat_input_history_1 = require("./chat-input-history");
|
|
25
|
+
const CHAT_INPUT_PREVIOUS_PROMPT_COMMAND = core_1.Command.toDefaultLocalizedCommand({
|
|
26
|
+
id: 'chat-input:previous-prompt',
|
|
27
|
+
label: 'Previous Prompt'
|
|
28
|
+
});
|
|
29
|
+
const CHAT_INPUT_NEXT_PROMPT_COMMAND = core_1.Command.toDefaultLocalizedCommand({
|
|
30
|
+
id: 'chat-input:next-prompt',
|
|
31
|
+
label: 'Next Prompt'
|
|
32
|
+
});
|
|
33
|
+
const CHAT_INPUT_CLEAR_HISTORY_COMMAND = core_1.Command.toDefaultLocalizedCommand({
|
|
34
|
+
id: 'chat-input:clear-history',
|
|
35
|
+
category: 'Chat',
|
|
36
|
+
label: 'Clear Input Prompt History'
|
|
37
|
+
});
|
|
38
|
+
let ChatInputHistoryContribution = class ChatInputHistoryContribution {
|
|
39
|
+
registerCommands(commands) {
|
|
40
|
+
commands.registerCommand(CHAT_INPUT_PREVIOUS_PROMPT_COMMAND, {
|
|
41
|
+
execute: () => this.executeNavigatePrevious(),
|
|
42
|
+
isEnabled: () => this.isNavigationEnabled()
|
|
43
|
+
});
|
|
44
|
+
commands.registerCommand(CHAT_INPUT_NEXT_PROMPT_COMMAND, {
|
|
45
|
+
execute: () => this.executeNavigateNext(),
|
|
46
|
+
isEnabled: () => this.isNavigationEnabled()
|
|
47
|
+
});
|
|
48
|
+
commands.registerCommand(CHAT_INPUT_CLEAR_HISTORY_COMMAND, {
|
|
49
|
+
execute: () => this.historyService.clearHistory(),
|
|
50
|
+
isEnabled: () => this.historyService.getPrompts().length > 0
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
registerKeybindings(keybindings) {
|
|
54
|
+
keybindings.registerKeybinding({
|
|
55
|
+
command: CHAT_INPUT_PREVIOUS_PROMPT_COMMAND.id,
|
|
56
|
+
keybinding: 'up',
|
|
57
|
+
when: 'chatInputFocus && chatInputFirstLine && !suggestWidgetVisible'
|
|
58
|
+
});
|
|
59
|
+
keybindings.registerKeybinding({
|
|
60
|
+
command: CHAT_INPUT_NEXT_PROMPT_COMMAND.id,
|
|
61
|
+
keybinding: 'down',
|
|
62
|
+
when: 'chatInputFocus && chatInputLastLine && !suggestWidgetVisible'
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
executeNavigatePrevious() {
|
|
66
|
+
const chatInputWidget = this.findFocusedChatInput();
|
|
67
|
+
if (!chatInputWidget || !chatInputWidget.editor) {
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
const currentInput = chatInputWidget.editor.getControl().getValue();
|
|
71
|
+
const previousPrompt = chatInputWidget.getPreviousPrompt(currentInput);
|
|
72
|
+
if (previousPrompt !== undefined) {
|
|
73
|
+
chatInputWidget.editor.getControl().setValue(previousPrompt);
|
|
74
|
+
this.positionCursorAtEnd(chatInputWidget);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
executeNavigateNext() {
|
|
78
|
+
const chatInputWidget = this.findFocusedChatInput();
|
|
79
|
+
if (!chatInputWidget || !chatInputWidget.editor) {
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
const nextPrompt = chatInputWidget.getNextPrompt();
|
|
83
|
+
if (nextPrompt !== undefined) {
|
|
84
|
+
chatInputWidget.editor.getControl().setValue(nextPrompt);
|
|
85
|
+
this.positionCursorAtEnd(chatInputWidget);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
positionCursorAtEnd(widget) {
|
|
89
|
+
var _a;
|
|
90
|
+
const editor = (_a = widget.editor) === null || _a === void 0 ? void 0 : _a.getControl();
|
|
91
|
+
const model = editor === null || editor === void 0 ? void 0 : editor.getModel();
|
|
92
|
+
if (editor && model) {
|
|
93
|
+
const lastLine = model.getLineCount();
|
|
94
|
+
const lastColumn = model.getLineContent(lastLine).length + 1;
|
|
95
|
+
editor.setPosition({ lineNumber: lastLine, column: lastColumn });
|
|
96
|
+
editor.focus();
|
|
97
|
+
setTimeout(() => {
|
|
98
|
+
var _a;
|
|
99
|
+
// Trigger cursor position update after setting value
|
|
100
|
+
if ((_a = widget.editor) === null || _a === void 0 ? void 0 : _a.getControl().hasWidgetFocus()) {
|
|
101
|
+
widget.updateCursorPositionKeys();
|
|
102
|
+
}
|
|
103
|
+
}, 0);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
findFocusedChatInput() {
|
|
107
|
+
var _a, _b;
|
|
108
|
+
const activeElement = document.activeElement;
|
|
109
|
+
if (!(activeElement instanceof HTMLElement)) {
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
const activeWidget = this.shell.findWidgetForElement(activeElement);
|
|
113
|
+
if (!(activeWidget instanceof chat_input_widget_1.AIChatInputWidget)) {
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
if (!((_a = activeWidget.inputConfiguration) === null || _a === void 0 ? void 0 : _a.enablePromptHistory)) {
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
if (!((_b = activeWidget.editor) === null || _b === void 0 ? void 0 : _b.getControl().hasWidgetFocus())) {
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
return activeWidget;
|
|
123
|
+
}
|
|
124
|
+
isNavigationEnabled() {
|
|
125
|
+
var _a;
|
|
126
|
+
const chatInputWidget = this.findFocusedChatInput();
|
|
127
|
+
return chatInputWidget !== undefined &&
|
|
128
|
+
((_a = chatInputWidget.inputConfiguration) === null || _a === void 0 ? void 0 : _a.enablePromptHistory) !== false;
|
|
129
|
+
}
|
|
130
|
+
};
|
|
131
|
+
exports.ChatInputHistoryContribution = ChatInputHistoryContribution;
|
|
132
|
+
tslib_1.__decorate([
|
|
133
|
+
(0, inversify_1.inject)(browser_1.ApplicationShell),
|
|
134
|
+
tslib_1.__metadata("design:type", browser_1.ApplicationShell)
|
|
135
|
+
], ChatInputHistoryContribution.prototype, "shell", void 0);
|
|
136
|
+
tslib_1.__decorate([
|
|
137
|
+
(0, inversify_1.inject)(chat_input_history_1.ChatInputHistoryService),
|
|
138
|
+
tslib_1.__metadata("design:type", chat_input_history_1.ChatInputHistoryService)
|
|
139
|
+
], ChatInputHistoryContribution.prototype, "historyService", void 0);
|
|
140
|
+
exports.ChatInputHistoryContribution = ChatInputHistoryContribution = tslib_1.__decorate([
|
|
141
|
+
(0, inversify_1.injectable)()
|
|
142
|
+
], ChatInputHistoryContribution);
|
|
143
|
+
//# sourceMappingURL=chat-input-history-contribution.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat-input-history-contribution.js","sourceRoot":"","sources":["../../src/browser/chat-input-history-contribution.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { StorageService } from '@theia/core/lib/browser';
|
|
2
|
+
/**
|
|
3
|
+
* Manages navigation state for a single chat input widget.
|
|
4
|
+
* Each widget has its own independent navigation state while sharing the same history.
|
|
5
|
+
*/
|
|
6
|
+
export declare class ChatInputNavigationState {
|
|
7
|
+
private readonly historyService;
|
|
8
|
+
private currentIndex;
|
|
9
|
+
private preservedInput?;
|
|
10
|
+
private isNavigating;
|
|
11
|
+
constructor(historyService: ChatInputHistoryService);
|
|
12
|
+
getPreviousPrompt(currentInput: string): string | undefined;
|
|
13
|
+
getNextPrompt(): string | undefined;
|
|
14
|
+
stopNavigation(): void;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Manages shared prompt history across all chat input widgets.
|
|
18
|
+
* Each prompt is stored only once and shared between all chat inputs.
|
|
19
|
+
*/
|
|
20
|
+
export declare class ChatInputHistoryService {
|
|
21
|
+
protected readonly storageService: StorageService;
|
|
22
|
+
protected history: string[];
|
|
23
|
+
init(): Promise<void>;
|
|
24
|
+
/**
|
|
25
|
+
* Get read-only access to the current prompt history.
|
|
26
|
+
*/
|
|
27
|
+
getPrompts(): readonly string[];
|
|
28
|
+
clearHistory(): void;
|
|
29
|
+
addToHistory(prompt: string): void;
|
|
30
|
+
protected persistHistory(): Promise<void>;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=chat-input-history.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat-input-history.d.ts","sourceRoot":"","sources":["../../src/browser/chat-input-history.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAEzD;;;GAGG;AACH,qBAAa,wBAAwB;IAKrB,OAAO,CAAC,QAAQ,CAAC,cAAc;IAJ3C,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,cAAc,CAAC,CAAS;IAChC,OAAO,CAAC,YAAY,CAAS;gBAEA,cAAc,EAAE,uBAAuB;IAIpE,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAsB3D,aAAa,IAAI,MAAM,GAAG,SAAS;IAqBnC,cAAc,IAAI,IAAI;CAMzB;AAKD;;;GAGG;AACH,qBACa,uBAAuB;IAGhC,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IAElD,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,CAAM;IAE3B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAK3B;;OAEG;IACH,UAAU,IAAI,SAAS,MAAM,EAAE;IAI/B,YAAY,IAAI,IAAI;IAKpB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;cAelB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;CAOlD"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// *****************************************************************************
|
|
3
|
+
// Copyright (C) 2025 STMicroelectronics and others.
|
|
4
|
+
//
|
|
5
|
+
// This program and the accompanying materials are made available under the
|
|
6
|
+
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
7
|
+
// http://www.eclipse.org/legal/epl-2.0.
|
|
8
|
+
//
|
|
9
|
+
// This Source Code may also be made available under the following Secondary
|
|
10
|
+
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
11
|
+
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
12
|
+
// with the GNU Classpath Exception which is available at
|
|
13
|
+
// https://www.gnu.org/software/classpath/license.html.
|
|
14
|
+
//
|
|
15
|
+
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
16
|
+
// *****************************************************************************
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.ChatInputHistoryService = exports.ChatInputNavigationState = void 0;
|
|
19
|
+
const tslib_1 = require("tslib");
|
|
20
|
+
const inversify_1 = require("@theia/core/shared/inversify");
|
|
21
|
+
const browser_1 = require("@theia/core/lib/browser");
|
|
22
|
+
/**
|
|
23
|
+
* Manages navigation state for a single chat input widget.
|
|
24
|
+
* Each widget has its own independent navigation state while sharing the same history.
|
|
25
|
+
*/
|
|
26
|
+
class ChatInputNavigationState {
|
|
27
|
+
constructor(historyService) {
|
|
28
|
+
this.historyService = historyService;
|
|
29
|
+
this.isNavigating = false;
|
|
30
|
+
this.currentIndex = historyService.getPrompts().length;
|
|
31
|
+
}
|
|
32
|
+
getPreviousPrompt(currentInput) {
|
|
33
|
+
const history = this.historyService.getPrompts();
|
|
34
|
+
if (history.length === 0) {
|
|
35
|
+
return undefined;
|
|
36
|
+
}
|
|
37
|
+
if (!this.isNavigating) {
|
|
38
|
+
this.preservedInput = currentInput;
|
|
39
|
+
this.isNavigating = true;
|
|
40
|
+
this.currentIndex = history.length;
|
|
41
|
+
}
|
|
42
|
+
if (this.currentIndex <= 0) {
|
|
43
|
+
// Already at the oldest prompt
|
|
44
|
+
return undefined;
|
|
45
|
+
}
|
|
46
|
+
this.currentIndex--;
|
|
47
|
+
return history[this.currentIndex];
|
|
48
|
+
}
|
|
49
|
+
getNextPrompt() {
|
|
50
|
+
const history = this.historyService.getPrompts();
|
|
51
|
+
if (!this.isNavigating || this.currentIndex >= history.length) {
|
|
52
|
+
return undefined;
|
|
53
|
+
}
|
|
54
|
+
this.currentIndex++;
|
|
55
|
+
if (this.currentIndex >= history.length) {
|
|
56
|
+
// Reached end of history - return to preserved input
|
|
57
|
+
this.isNavigating = false;
|
|
58
|
+
const preserved = this.preservedInput;
|
|
59
|
+
this.preservedInput = undefined;
|
|
60
|
+
this.currentIndex = history.length;
|
|
61
|
+
return preserved || '';
|
|
62
|
+
}
|
|
63
|
+
return history[this.currentIndex];
|
|
64
|
+
}
|
|
65
|
+
stopNavigation() {
|
|
66
|
+
this.isNavigating = false;
|
|
67
|
+
this.preservedInput = undefined;
|
|
68
|
+
this.currentIndex = this.historyService.getPrompts().length;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
exports.ChatInputNavigationState = ChatInputNavigationState;
|
|
72
|
+
const CHAT_PROMPT_HISTORY_STORAGE_KEY = 'ai-chat-prompt-history';
|
|
73
|
+
const MAX_HISTORY_SIZE = 100;
|
|
74
|
+
/**
|
|
75
|
+
* Manages shared prompt history across all chat input widgets.
|
|
76
|
+
* Each prompt is stored only once and shared between all chat inputs.
|
|
77
|
+
*/
|
|
78
|
+
let ChatInputHistoryService = class ChatInputHistoryService {
|
|
79
|
+
constructor() {
|
|
80
|
+
this.history = [];
|
|
81
|
+
}
|
|
82
|
+
async init() {
|
|
83
|
+
const data = await this.storageService.getData(CHAT_PROMPT_HISTORY_STORAGE_KEY, { prompts: [] });
|
|
84
|
+
this.history = data.prompts || [];
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Get read-only access to the current prompt history.
|
|
88
|
+
*/
|
|
89
|
+
getPrompts() {
|
|
90
|
+
return this.history;
|
|
91
|
+
}
|
|
92
|
+
clearHistory() {
|
|
93
|
+
this.history = [];
|
|
94
|
+
this.persistHistory();
|
|
95
|
+
}
|
|
96
|
+
addToHistory(prompt) {
|
|
97
|
+
const trimmed = prompt.trim();
|
|
98
|
+
if (!trimmed) {
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
// Remove existing instance and add to end (most recent)
|
|
102
|
+
this.history = this.history
|
|
103
|
+
.filter(item => item !== trimmed)
|
|
104
|
+
.concat(trimmed)
|
|
105
|
+
.slice(-MAX_HISTORY_SIZE);
|
|
106
|
+
this.persistHistory();
|
|
107
|
+
}
|
|
108
|
+
async persistHistory() {
|
|
109
|
+
try {
|
|
110
|
+
await this.storageService.setData(CHAT_PROMPT_HISTORY_STORAGE_KEY, { prompts: this.history });
|
|
111
|
+
}
|
|
112
|
+
catch (error) {
|
|
113
|
+
console.warn('Failed to persist chat prompt history:', error);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
};
|
|
117
|
+
exports.ChatInputHistoryService = ChatInputHistoryService;
|
|
118
|
+
tslib_1.__decorate([
|
|
119
|
+
(0, inversify_1.inject)(browser_1.StorageService),
|
|
120
|
+
tslib_1.__metadata("design:type", Object)
|
|
121
|
+
], ChatInputHistoryService.prototype, "storageService", void 0);
|
|
122
|
+
exports.ChatInputHistoryService = ChatInputHistoryService = tslib_1.__decorate([
|
|
123
|
+
(0, inversify_1.injectable)()
|
|
124
|
+
], ChatInputHistoryService);
|
|
125
|
+
//# sourceMappingURL=chat-input-history.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat-input-history.js","sourceRoot":"","sources":["../../src/browser/chat-input-history.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,7 @@ import { AIVariableResolutionRequest } from '@theia/ai-core';
|
|
|
5
5
|
import { AgentCompletionNotificationService, FrontendVariableService, AIActivationService } from '@theia/ai-core/lib/browser';
|
|
6
6
|
import { DisposableCollection, Emitter, InMemoryResources, URI } from '@theia/core';
|
|
7
7
|
import { ContextMenuRenderer, LabelProvider, Message, OpenerService, ReactWidget } from '@theia/core/lib/browser';
|
|
8
|
+
import { ContextKey, ContextKeyService } from '@theia/core/lib/browser/context-key-service';
|
|
8
9
|
import { Deferred } from '@theia/core/lib/common/promise-util';
|
|
9
10
|
import * as React from '@theia/core/shared/react';
|
|
10
11
|
import { IMouseEvent } from '@theia/monaco-editor-core';
|
|
@@ -12,6 +13,7 @@ import { MonacoEditorProvider } from '@theia/monaco/lib/browser/monaco-editor-pr
|
|
|
12
13
|
import { SimpleMonacoEditor } from '@theia/monaco/lib/browser/simple-monaco-editor';
|
|
13
14
|
import { ChangeSetActionService } from './change-set-actions/change-set-action-service';
|
|
14
15
|
import { ContextVariablePicker } from './context-variable-picker';
|
|
16
|
+
import { ChatInputHistoryService, ChatInputNavigationState } from './chat-input-history';
|
|
15
17
|
type Query = (query: string) => Promise<void>;
|
|
16
18
|
type Unpin = () => void;
|
|
17
19
|
type Cancel = (requestModel: ChatRequestModel) => void;
|
|
@@ -23,6 +25,7 @@ export interface AIChatInputConfiguration {
|
|
|
23
25
|
showPinnedAgent?: boolean;
|
|
24
26
|
showChangeSet?: boolean;
|
|
25
27
|
showSuggestions?: boolean;
|
|
28
|
+
enablePromptHistory?: boolean;
|
|
26
29
|
}
|
|
27
30
|
export declare class AIChatInputWidget extends ReactWidget {
|
|
28
31
|
static ID: string;
|
|
@@ -40,8 +43,18 @@ export declare class AIChatInputWidget extends ReactWidget {
|
|
|
40
43
|
protected readonly openerService: OpenerService;
|
|
41
44
|
protected readonly chatService: ChatService;
|
|
42
45
|
protected readonly aiActivationService: AIActivationService;
|
|
46
|
+
protected readonly historyService: ChatInputHistoryService;
|
|
47
|
+
protected navigationState: ChatInputNavigationState;
|
|
48
|
+
protected readonly contextKeyService: ContextKeyService;
|
|
43
49
|
protected editorRef: SimpleMonacoEditor | undefined;
|
|
44
50
|
protected readonly editorReady: Deferred<void>;
|
|
51
|
+
get editor(): SimpleMonacoEditor | undefined;
|
|
52
|
+
get inputConfiguration(): AIChatInputConfiguration | undefined;
|
|
53
|
+
getPreviousPrompt(currentInput: string): string | undefined;
|
|
54
|
+
getNextPrompt(): string | undefined;
|
|
55
|
+
protected chatInputFocusKey: ContextKey<boolean>;
|
|
56
|
+
protected chatInputFirstLineKey: ContextKey<boolean>;
|
|
57
|
+
protected chatInputLastLineKey: ContextKey<boolean>;
|
|
45
58
|
protected isEnabled: boolean;
|
|
46
59
|
protected heightInLines: number;
|
|
47
60
|
protected _branch?: ChatHierarchyBranch;
|
|
@@ -66,6 +79,9 @@ export declare class AIChatInputWidget extends ReactWidget {
|
|
|
66
79
|
protected onDidResizeEmitter: Emitter<void>;
|
|
67
80
|
readonly onDidResize: import("@theia/core").Event<void>;
|
|
68
81
|
protected init(): void;
|
|
82
|
+
protected initializeContextKeys(): void;
|
|
83
|
+
updateCursorPositionKeys(): void;
|
|
84
|
+
protected setupEditorEventListeners(): void;
|
|
69
85
|
protected onActivateRequest(msg: Message): void;
|
|
70
86
|
protected handleAgentCompletion(request: ChatRequestModel): Promise<void>;
|
|
71
87
|
protected getResourceUri(): URI;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-input-widget.d.ts","sourceRoot":"","sources":["../../src/browser/chat-input-widget.tsx"],"names":[],"mappings":";AAeA,OAAO,EAC0B,SAAS,EAAmB,mBAAmB,EAC5E,SAAS,EAAE,gBAAgB,EAAE,WAAW,EAC3C,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,yBAAyB,EAAE,MAAM,yDAAyD,CAAC;AAEpG,OAAO,EAAE,2BAA2B,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,EAAE,kCAAkC,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAC9H,OAAO,EAAE,oBAAoB,EAAE,OAAO,EAAE,iBAAiB,EAAE,GAAG,EAAO,MAAM,aAAa,CAAC;AACzF,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAClH,OAAO,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAC;AAE/D,OAAO,KAAK,KAAK,MAAM,0BAA0B,CAAC;AAClD,OAAO,EAAE,WAAW,EAAS,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,kDAAkD,CAAC;AACxF,OAAO,EAAE,kBAAkB,EAAE,MAAM,gDAAgD,CAAC;AACpF,OAAO,EAA2B,sBAAsB,EAAE,MAAM,gDAAgD,CAAC;AAGjH,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"chat-input-widget.d.ts","sourceRoot":"","sources":["../../src/browser/chat-input-widget.tsx"],"names":[],"mappings":"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"}
|