@theia/ai-chat-ui 1.67.0-next.56 → 1.67.0-next.59
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.d.ts +66 -0
- package/lib/browser/ai-chat-ui-contribution.d.ts.map +1 -0
- package/lib/browser/ai-chat-ui-contribution.js +587 -0
- package/lib/browser/ai-chat-ui-contribution.js.map +1 -0
- package/lib/browser/ai-chat-ui-frontend-module.d.ts +5 -0
- package/lib/browser/ai-chat-ui-frontend-module.d.ts.map +1 -0
- package/lib/browser/ai-chat-ui-frontend-module.js +153 -0
- package/lib/browser/ai-chat-ui-frontend-module.js.map +1 -0
- package/lib/browser/change-set-actions/change-set-accept-action.d.ts +10 -0
- package/lib/browser/change-set-actions/change-set-accept-action.d.ts.map +1 -0
- package/lib/browser/change-set-actions/change-set-accept-action.js +47 -0
- package/lib/browser/change-set-actions/change-set-accept-action.js.map +1 -0
- package/lib/browser/change-set-actions/change-set-action-service.d.ts +31 -0
- package/lib/browser/change-set-actions/change-set-action-service.d.ts.map +1 -0
- package/lib/browser/change-set-actions/change-set-action-service.js +57 -0
- package/lib/browser/change-set-actions/change-set-action-service.js.map +1 -0
- package/lib/browser/chat-input-agent-suggestions.d.ts +11 -0
- package/lib/browser/chat-input-agent-suggestions.d.ts.map +1 -0
- package/lib/browser/chat-input-agent-suggestions.js +76 -0
- package/lib/browser/chat-input-agent-suggestions.js.map +1 -0
- 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 +158 -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-mode-contribution.d.ts +12 -0
- package/lib/browser/chat-input-mode-contribution.d.ts.map +1 -0
- package/lib/browser/chat-input-mode-contribution.js +77 -0
- package/lib/browser/chat-input-mode-contribution.js.map +1 -0
- package/lib/browser/chat-input-widget.d.ts +118 -0
- package/lib/browser/chat-input-widget.d.ts.map +1 -0
- package/lib/browser/chat-input-widget.js +1034 -0
- package/lib/browser/chat-input-widget.js.map +1 -0
- package/lib/browser/chat-node-toolbar-action-contribution.d.ts +56 -0
- package/lib/browser/chat-node-toolbar-action-contribution.d.ts.map +1 -0
- package/lib/browser/chat-node-toolbar-action-contribution.js +92 -0
- package/lib/browser/chat-node-toolbar-action-contribution.js.map +1 -0
- package/lib/browser/chat-progress-message.d.ts +7 -0
- package/lib/browser/chat-progress-message.d.ts.map +1 -0
- package/lib/browser/chat-progress-message.js +33 -0
- package/lib/browser/chat-progress-message.js.map +1 -0
- package/lib/browser/chat-response-part-renderer.d.ts +10 -0
- package/lib/browser/chat-response-part-renderer.d.ts.map +1 -0
- package/lib/browser/chat-response-part-renderer.js +20 -0
- package/lib/browser/chat-response-part-renderer.js.map +1 -0
- package/lib/browser/chat-response-renderer/ai-selection-resolver.d.ts +23 -0
- package/lib/browser/chat-response-renderer/ai-selection-resolver.d.ts.map +1 -0
- package/lib/browser/chat-response-renderer/ai-selection-resolver.js +148 -0
- package/lib/browser/chat-response-renderer/ai-selection-resolver.js.map +1 -0
- package/lib/browser/chat-response-renderer/code-part-renderer.d.ts +73 -0
- package/lib/browser/chat-response-renderer/code-part-renderer.d.ts.map +1 -0
- package/lib/browser/chat-response-renderer/code-part-renderer.js +227 -0
- package/lib/browser/chat-response-renderer/code-part-renderer.js.map +1 -0
- package/lib/browser/chat-response-renderer/command-part-renderer.d.ts +12 -0
- package/lib/browser/chat-response-renderer/command-part-renderer.d.ts.map +1 -0
- package/lib/browser/chat-response-renderer/command-part-renderer.js +67 -0
- package/lib/browser/chat-response-renderer/command-part-renderer.js.map +1 -0
- package/lib/browser/chat-response-renderer/delegation-response-renderer.d.ts +14 -0
- package/lib/browser/chat-response-renderer/delegation-response-renderer.d.ts.map +1 -0
- package/lib/browser/chat-response-renderer/delegation-response-renderer.js +144 -0
- package/lib/browser/chat-response-renderer/delegation-response-renderer.js.map +1 -0
- package/lib/browser/chat-response-renderer/error-part-renderer.d.ts +9 -0
- package/lib/browser/chat-response-renderer/error-part-renderer.d.ts.map +1 -0
- package/lib/browser/chat-response-renderer/error-part-renderer.js +40 -0
- package/lib/browser/chat-response-renderer/error-part-renderer.js.map +1 -0
- package/lib/browser/chat-response-renderer/horizontal-layout-part-renderer.d.ts +12 -0
- package/lib/browser/chat-response-renderer/horizontal-layout-part-renderer.d.ts.map +1 -0
- package/lib/browser/chat-response-renderer/horizontal-layout-part-renderer.js +54 -0
- package/lib/browser/chat-response-renderer/horizontal-layout-part-renderer.js.map +1 -0
- package/lib/browser/chat-response-renderer/index.d.ts +13 -0
- package/lib/browser/chat-response-renderer/index.d.ts.map +1 -0
- package/lib/browser/chat-response-renderer/index.js +31 -0
- package/lib/browser/chat-response-renderer/index.js.map +1 -0
- package/lib/browser/chat-response-renderer/markdown-part-renderer.d.ts +36 -0
- package/lib/browser/chat-response-renderer/markdown-part-renderer.d.ts.map +1 -0
- package/lib/browser/chat-response-renderer/markdown-part-renderer.js +129 -0
- package/lib/browser/chat-response-renderer/markdown-part-renderer.js.map +1 -0
- package/lib/browser/chat-response-renderer/progress-part-renderer.d.ts +9 -0
- package/lib/browser/chat-response-renderer/progress-part-renderer.d.ts.map +1 -0
- package/lib/browser/chat-response-renderer/progress-part-renderer.js +39 -0
- package/lib/browser/chat-response-renderer/progress-part-renderer.js.map +1 -0
- package/lib/browser/chat-response-renderer/question-part-renderer.d.ts +10 -0
- package/lib/browser/chat-response-renderer/question-part-renderer.d.ts.map +1 -0
- package/lib/browser/chat-response-renderer/question-part-renderer.js +49 -0
- package/lib/browser/chat-response-renderer/question-part-renderer.js.map +1 -0
- package/lib/browser/chat-response-renderer/text-part-renderer.d.ts +9 -0
- package/lib/browser/chat-response-renderer/text-part-renderer.d.ts.map +1 -0
- package/lib/browser/chat-response-renderer/text-part-renderer.js +43 -0
- package/lib/browser/chat-response-renderer/text-part-renderer.js.map +1 -0
- package/lib/browser/chat-response-renderer/text-part-renderer.spec.d.ts +2 -0
- package/lib/browser/chat-response-renderer/text-part-renderer.spec.d.ts.map +1 -0
- package/lib/browser/chat-response-renderer/text-part-renderer.spec.js +46 -0
- package/lib/browser/chat-response-renderer/text-part-renderer.spec.js.map +1 -0
- package/lib/browser/chat-response-renderer/thinking-part-renderer.d.ts +9 -0
- package/lib/browser/chat-response-renderer/thinking-part-renderer.d.ts.map +1 -0
- package/lib/browser/chat-response-renderer/thinking-part-renderer.js +42 -0
- package/lib/browser/chat-response-renderer/thinking-part-renderer.js.map +1 -0
- package/lib/browser/chat-response-renderer/tool-confirmation.d.ts +17 -0
- package/lib/browser/chat-response-renderer/tool-confirmation.d.ts.map +1 -0
- package/lib/browser/chat-response-renderer/tool-confirmation.js +122 -0
- package/lib/browser/chat-response-renderer/tool-confirmation.js.map +1 -0
- package/lib/browser/chat-response-renderer/toolcall-part-renderer.d.ts +20 -0
- package/lib/browser/chat-response-renderer/toolcall-part-renderer.d.ts.map +1 -0
- package/lib/browser/chat-response-renderer/toolcall-part-renderer.js +223 -0
- package/lib/browser/chat-response-renderer/toolcall-part-renderer.js.map +1 -0
- package/lib/browser/chat-response-renderer/unknown-part-renderer.d.ts +9 -0
- package/lib/browser/chat-response-renderer/unknown-part-renderer.d.ts.map +1 -0
- package/lib/browser/chat-response-renderer/unknown-part-renderer.js +42 -0
- package/lib/browser/chat-response-renderer/unknown-part-renderer.js.map +1 -0
- package/lib/browser/chat-tree-view/chat-view-tree-container.d.ts +4 -0
- package/lib/browser/chat-tree-view/chat-view-tree-container.d.ts.map +1 -0
- package/lib/browser/chat-tree-view/chat-view-tree-container.js +33 -0
- package/lib/browser/chat-tree-view/chat-view-tree-container.js.map +1 -0
- package/lib/browser/chat-tree-view/chat-view-tree-input-widget.d.ts +38 -0
- package/lib/browser/chat-tree-view/chat-view-tree-input-widget.d.ts.map +1 -0
- package/lib/browser/chat-tree-view/chat-view-tree-input-widget.js +88 -0
- package/lib/browser/chat-tree-view/chat-view-tree-input-widget.js.map +1 -0
- package/lib/browser/chat-tree-view/chat-view-tree-widget.d.ts +120 -0
- package/lib/browser/chat-tree-view/chat-view-tree-widget.d.ts.map +1 -0
- package/lib/browser/chat-tree-view/chat-view-tree-widget.js +654 -0
- package/lib/browser/chat-tree-view/chat-view-tree-widget.js.map +1 -0
- package/lib/browser/chat-tree-view/index.d.ts +3 -0
- package/lib/browser/chat-tree-view/index.d.ts.map +1 -0
- package/lib/browser/chat-tree-view/index.js +21 -0
- package/lib/browser/chat-tree-view/index.js.map +1 -0
- package/lib/browser/chat-tree-view/sub-chat-widget.d.ts +22 -0
- package/lib/browser/chat-tree-view/sub-chat-widget.d.ts.map +1 -0
- package/lib/browser/chat-tree-view/sub-chat-widget.js +92 -0
- package/lib/browser/chat-tree-view/sub-chat-widget.js.map +1 -0
- package/lib/browser/chat-view-commands.d.ts +15 -0
- package/lib/browser/chat-view-commands.d.ts.map +1 -0
- package/lib/browser/chat-view-commands.js +76 -0
- package/lib/browser/chat-view-commands.js.map +1 -0
- package/lib/browser/chat-view-contribution.d.ts +21 -0
- package/lib/browser/chat-view-contribution.d.ts.map +1 -0
- package/lib/browser/chat-view-contribution.js +183 -0
- package/lib/browser/chat-view-contribution.js.map +1 -0
- package/lib/browser/chat-view-language-contribution.d.ts +41 -0
- package/lib/browser/chat-view-language-contribution.d.ts.map +1 -0
- package/lib/browser/chat-view-language-contribution.js +269 -0
- package/lib/browser/chat-view-language-contribution.js.map +1 -0
- package/lib/browser/chat-view-widget-toolbar-contribution.d.ts +20 -0
- package/lib/browser/chat-view-widget-toolbar-contribution.d.ts.map +1 -0
- package/lib/browser/chat-view-widget-toolbar-contribution.js +115 -0
- package/lib/browser/chat-view-widget-toolbar-contribution.js.map +1 -0
- package/lib/browser/chat-view-widget.d.ts +60 -0
- package/lib/browser/chat-view-widget.d.ts.map +1 -0
- package/lib/browser/chat-view-widget.js +243 -0
- package/lib/browser/chat-view-widget.js.map +1 -0
- package/lib/browser/context-variable-picker.d.ts +9 -0
- package/lib/browser/context-variable-picker.d.ts.map +1 -0
- package/lib/browser/context-variable-picker.js +86 -0
- package/lib/browser/context-variable-picker.js.map +1 -0
- package/lib/browser/session-settings-dialog.d.ts +35 -0
- package/lib/browser/session-settings-dialog.d.ts.map +1 -0
- package/lib/browser/session-settings-dialog.js +118 -0
- package/lib/browser/session-settings-dialog.js.map +1 -0
- package/package.json +10 -10
|
@@ -0,0 +1,158 @@
|
|
|
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_view_commands_1 = require("./chat-view-commands");
|
|
26
|
+
const CHAT_INPUT_PREVIOUS_PROMPT_COMMAND = core_1.Command.toLocalizedCommand({
|
|
27
|
+
id: 'chat-input:previous-prompt',
|
|
28
|
+
label: 'Previous Prompt'
|
|
29
|
+
}, 'theia/ai/chat-ui/chatInput/previousPrompt');
|
|
30
|
+
const CHAT_INPUT_NEXT_PROMPT_COMMAND = core_1.Command.toLocalizedCommand({
|
|
31
|
+
id: 'chat-input:next-prompt',
|
|
32
|
+
label: 'Next Prompt'
|
|
33
|
+
}, 'theia/ai/chat-ui/chatInput/nextPrompt');
|
|
34
|
+
const CHAT_INPUT_CLEAR_HISTORY_COMMAND = core_1.Command.toLocalizedCommand({
|
|
35
|
+
id: 'chat-input:clear-history',
|
|
36
|
+
category: chat_view_commands_1.ChatCommands.CHAT_CATEGORY,
|
|
37
|
+
label: 'Clear Input Prompt History'
|
|
38
|
+
}, 'theia/ai/chat-ui/chatInput/clearHistory', chat_view_commands_1.ChatCommands.CHAT_CATEGORY_KEY);
|
|
39
|
+
let ChatInputHistoryContribution = class ChatInputHistoryContribution {
|
|
40
|
+
registerCommands(commands) {
|
|
41
|
+
commands.registerCommand(CHAT_INPUT_PREVIOUS_PROMPT_COMMAND, {
|
|
42
|
+
execute: () => this.executeNavigatePrevious(),
|
|
43
|
+
isEnabled: () => this.isNavigationEnabled()
|
|
44
|
+
});
|
|
45
|
+
commands.registerCommand(CHAT_INPUT_NEXT_PROMPT_COMMAND, {
|
|
46
|
+
execute: () => this.executeNavigateNext(),
|
|
47
|
+
isEnabled: () => this.isNavigationEnabled()
|
|
48
|
+
});
|
|
49
|
+
commands.registerCommand(CHAT_INPUT_CLEAR_HISTORY_COMMAND, {
|
|
50
|
+
execute: () => this.historyService.clearHistory(),
|
|
51
|
+
isEnabled: () => this.historyService.getPrompts().length > 0
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
registerKeybindings(keybindings) {
|
|
55
|
+
keybindings.registerKeybinding({
|
|
56
|
+
command: CHAT_INPUT_PREVIOUS_PROMPT_COMMAND.id,
|
|
57
|
+
keybinding: 'up',
|
|
58
|
+
when: 'chatInputFocus && chatInputFirstLine && !suggestWidgetVisible'
|
|
59
|
+
});
|
|
60
|
+
keybindings.registerKeybinding({
|
|
61
|
+
command: CHAT_INPUT_NEXT_PROMPT_COMMAND.id,
|
|
62
|
+
keybinding: 'down',
|
|
63
|
+
when: 'chatInputFocus && chatInputLastLine && !suggestWidgetVisible'
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
executeNavigatePrevious() {
|
|
67
|
+
const chatInputWidget = this.findFocusedChatInput();
|
|
68
|
+
if (!chatInputWidget || !chatInputWidget.editor) {
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
const position = chatInputWidget.editor.getControl().getPosition();
|
|
72
|
+
const isCursorAtBeginning = position && (position.lineNumber > 1 || position.column > 1);
|
|
73
|
+
if (isCursorAtBeginning) {
|
|
74
|
+
this.positionCursorAtBeginning(chatInputWidget);
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
const currentInput = chatInputWidget.editor.getControl().getValue();
|
|
78
|
+
const previousPrompt = chatInputWidget.getPreviousPrompt(currentInput);
|
|
79
|
+
if (previousPrompt !== undefined) {
|
|
80
|
+
chatInputWidget.editor.getControl().setValue(previousPrompt);
|
|
81
|
+
this.positionCursorAtBeginning(chatInputWidget);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
executeNavigateNext() {
|
|
85
|
+
const chatInputWidget = this.findFocusedChatInput();
|
|
86
|
+
if (!chatInputWidget || !chatInputWidget.editor) {
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
const position = chatInputWidget.editor.getControl().getPosition();
|
|
90
|
+
const model = chatInputWidget.editor.getControl().getModel();
|
|
91
|
+
const isCursorAtEnd = position && model && (position.lineNumber < model.getLineCount() || position.column < model.getLineMaxColumn(position.lineNumber));
|
|
92
|
+
if (isCursorAtEnd) {
|
|
93
|
+
this.positionCursorAtEnd(chatInputWidget);
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
const nextPrompt = chatInputWidget.getNextPrompt();
|
|
97
|
+
if (nextPrompt !== undefined) {
|
|
98
|
+
chatInputWidget.editor.getControl().setValue(nextPrompt);
|
|
99
|
+
this.positionCursorAtEnd(chatInputWidget);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
positionCursorAtBeginning(widget) {
|
|
103
|
+
var _a;
|
|
104
|
+
const editor = (_a = widget.editor) === null || _a === void 0 ? void 0 : _a.getControl();
|
|
105
|
+
if (editor) {
|
|
106
|
+
editor.setPosition({ lineNumber: 1, column: 1 });
|
|
107
|
+
editor.focus();
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
positionCursorAtEnd(widget) {
|
|
111
|
+
var _a;
|
|
112
|
+
const editor = (_a = widget.editor) === null || _a === void 0 ? void 0 : _a.getControl();
|
|
113
|
+
const model = editor === null || editor === void 0 ? void 0 : editor.getModel();
|
|
114
|
+
if (editor && model) {
|
|
115
|
+
const lastLine = model.getLineCount();
|
|
116
|
+
const lastColumn = model.getLineContent(lastLine).length + 1;
|
|
117
|
+
editor.setPosition({ lineNumber: lastLine, column: lastColumn });
|
|
118
|
+
editor.focus();
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
findFocusedChatInput() {
|
|
122
|
+
var _a, _b;
|
|
123
|
+
const activeElement = document.activeElement;
|
|
124
|
+
if (!(activeElement instanceof HTMLElement)) {
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
const activeWidget = this.shell.findWidgetForElement(activeElement);
|
|
128
|
+
if (!(activeWidget instanceof chat_input_widget_1.AIChatInputWidget)) {
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
if (!((_a = activeWidget.inputConfiguration) === null || _a === void 0 ? void 0 : _a.enablePromptHistory)) {
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
if (!((_b = activeWidget.editor) === null || _b === void 0 ? void 0 : _b.getControl().hasWidgetFocus())) {
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
return activeWidget;
|
|
138
|
+
}
|
|
139
|
+
isNavigationEnabled() {
|
|
140
|
+
var _a;
|
|
141
|
+
const chatInputWidget = this.findFocusedChatInput();
|
|
142
|
+
return chatInputWidget !== undefined &&
|
|
143
|
+
((_a = chatInputWidget.inputConfiguration) === null || _a === void 0 ? void 0 : _a.enablePromptHistory) !== false;
|
|
144
|
+
}
|
|
145
|
+
};
|
|
146
|
+
exports.ChatInputHistoryContribution = ChatInputHistoryContribution;
|
|
147
|
+
tslib_1.__decorate([
|
|
148
|
+
(0, inversify_1.inject)(browser_1.ApplicationShell),
|
|
149
|
+
tslib_1.__metadata("design:type", browser_1.ApplicationShell)
|
|
150
|
+
], ChatInputHistoryContribution.prototype, "shell", void 0);
|
|
151
|
+
tslib_1.__decorate([
|
|
152
|
+
(0, inversify_1.inject)(chat_input_history_1.ChatInputHistoryService),
|
|
153
|
+
tslib_1.__metadata("design:type", chat_input_history_1.ChatInputHistoryService)
|
|
154
|
+
], ChatInputHistoryContribution.prototype, "historyService", void 0);
|
|
155
|
+
exports.ChatInputHistoryContribution = ChatInputHistoryContribution = tslib_1.__decorate([
|
|
156
|
+
(0, inversify_1.injectable)()
|
|
157
|
+
], ChatInputHistoryContribution);
|
|
158
|
+
//# 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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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
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
|
+
export declare class ChatInputModeContribution implements CommandContribution, KeybindingContribution {
|
|
5
|
+
protected readonly shell: ApplicationShell;
|
|
6
|
+
registerCommands(commands: CommandRegistry): void;
|
|
7
|
+
registerKeybindings(keybindings: KeybindingRegistry): void;
|
|
8
|
+
protected executeCycleMode(): void;
|
|
9
|
+
protected isCycleModeEnabled(): boolean;
|
|
10
|
+
protected findFocusedChatInput(): AIChatInputWidget | undefined;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=chat-input-mode-contribution.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat-input-mode-contribution.d.ts","sourceRoot":"","sources":["../../src/browser/chat-input-mode-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;AAOxD,qBACa,yBAA0B,YAAW,mBAAmB,EAAE,sBAAsB;IAGzF,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,gBAAgB,CAAC;IAE3C,gBAAgB,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI;IAOjD,mBAAmB,CAAC,WAAW,EAAE,kBAAkB,GAAG,IAAI;IAQ1D,SAAS,CAAC,gBAAgB,IAAI,IAAI;IAQlC,SAAS,CAAC,kBAAkB,IAAI,OAAO;IAKvC,SAAS,CAAC,oBAAoB,IAAI,iBAAiB,GAAG,SAAS;CAclE"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// *****************************************************************************
|
|
3
|
+
// Copyright (C) 2025 EclipseSource GmbH.
|
|
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.ChatInputModeContribution = 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_CYCLE_MODE_COMMAND = core_1.Command.toLocalizedCommand({
|
|
25
|
+
id: 'chat-input:cycle-mode',
|
|
26
|
+
label: 'Cycle Chat Mode'
|
|
27
|
+
}, 'theia/ai/chat-ui/chatInput/cycleMode');
|
|
28
|
+
let ChatInputModeContribution = class ChatInputModeContribution {
|
|
29
|
+
registerCommands(commands) {
|
|
30
|
+
commands.registerCommand(CHAT_INPUT_CYCLE_MODE_COMMAND, {
|
|
31
|
+
execute: () => this.executeCycleMode(),
|
|
32
|
+
isEnabled: () => this.isCycleModeEnabled()
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
registerKeybindings(keybindings) {
|
|
36
|
+
keybindings.registerKeybinding({
|
|
37
|
+
command: CHAT_INPUT_CYCLE_MODE_COMMAND.id,
|
|
38
|
+
keybinding: 'shift+tab',
|
|
39
|
+
when: 'chatInputFocus && chatInputHasModes && !suggestWidgetVisible'
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
executeCycleMode() {
|
|
43
|
+
const chatInputWidget = this.findFocusedChatInput();
|
|
44
|
+
if (!chatInputWidget) {
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
chatInputWidget.cycleMode();
|
|
48
|
+
}
|
|
49
|
+
isCycleModeEnabled() {
|
|
50
|
+
const chatInputWidget = this.findFocusedChatInput();
|
|
51
|
+
return chatInputWidget !== undefined;
|
|
52
|
+
}
|
|
53
|
+
findFocusedChatInput() {
|
|
54
|
+
var _a;
|
|
55
|
+
const activeElement = document.activeElement;
|
|
56
|
+
if (!(activeElement instanceof HTMLElement)) {
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
const activeWidget = this.shell.findWidgetForElement(activeElement);
|
|
60
|
+
if (!(activeWidget instanceof chat_input_widget_1.AIChatInputWidget)) {
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
if (!((_a = activeWidget.editor) === null || _a === void 0 ? void 0 : _a.getControl().hasWidgetFocus())) {
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
return activeWidget;
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
exports.ChatInputModeContribution = ChatInputModeContribution;
|
|
70
|
+
tslib_1.__decorate([
|
|
71
|
+
(0, inversify_1.inject)(browser_1.ApplicationShell),
|
|
72
|
+
tslib_1.__metadata("design:type", browser_1.ApplicationShell)
|
|
73
|
+
], ChatInputModeContribution.prototype, "shell", void 0);
|
|
74
|
+
exports.ChatInputModeContribution = ChatInputModeContribution = tslib_1.__decorate([
|
|
75
|
+
(0, inversify_1.injectable)()
|
|
76
|
+
], ChatInputModeContribution);
|
|
77
|
+
//# sourceMappingURL=chat-input-mode-contribution.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat-input-mode-contribution.js","sourceRoot":"","sources":["../../src/browser/chat-input-mode-contribution.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,sCAA4E;AAC5E,qDAAuG;AACvG,4DAAkE;AAClE,2DAAwD;AAExD,MAAM,6BAA6B,GAAG,cAAO,CAAC,kBAAkB,CAAC;IAC7D,EAAE,EAAE,uBAAuB;IAC3B,KAAK,EAAE,iBAAiB;CAC3B,EAAE,sCAAsC,CAAC,CAAC;AAGpC,IAAM,yBAAyB,GAA/B,MAAM,yBAAyB;IAKlC,gBAAgB,CAAC,QAAyB;QACtC,QAAQ,CAAC,eAAe,CAAC,6BAA6B,EAAE;YACpD,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,gBAAgB,EAAE;YACtC,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,kBAAkB,EAAE;SAC7C,CAAC,CAAC;IACP,CAAC;IAED,mBAAmB,CAAC,WAA+B;QAC/C,WAAW,CAAC,kBAAkB,CAAC;YAC3B,OAAO,EAAE,6BAA6B,CAAC,EAAE;YACzC,UAAU,EAAE,WAAW;YACvB,IAAI,EAAE,8DAA8D;SACvE,CAAC,CAAC;IACP,CAAC;IAES,gBAAgB;QACtB,MAAM,eAAe,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;QACpD,IAAI,CAAC,eAAe,EAAE,CAAC;YACnB,OAAO;QACX,CAAC;QACD,eAAe,CAAC,SAAS,EAAE,CAAC;IAChC,CAAC;IAES,kBAAkB;QACxB,MAAM,eAAe,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;QACpD,OAAO,eAAe,KAAK,SAAS,CAAC;IACzC,CAAC;IAES,oBAAoB;;QAC1B,MAAM,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC;QAC7C,IAAI,CAAC,CAAC,aAAa,YAAY,WAAW,CAAC,EAAE,CAAC;YAC1C,OAAO;QACX,CAAC;QACD,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC;QACpE,IAAI,CAAC,CAAC,YAAY,YAAY,qCAAiB,CAAC,EAAE,CAAC;YAC/C,OAAO;QACX,CAAC;QACD,IAAI,CAAC,CAAA,MAAA,YAAY,CAAC,MAAM,0CAAE,UAAU,GAAG,cAAc,EAAE,CAAA,EAAE,CAAC;YACtD,OAAO;QACX,CAAC;QACD,OAAO,YAAY,CAAC;IACxB,CAAC;CACJ,CAAA;AA/CY,8DAAyB;AAGf;IADlB,IAAA,kBAAM,EAAC,0BAAgB,CAAC;sCACC,0BAAgB;wDAAC;oCAHlC,yBAAyB;IADrC,IAAA,sBAAU,GAAE;GACA,yBAAyB,CA+CrC"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { ChatAgent, ChatHierarchyBranch, ChatModel, ChatRequestModel, ChatService, ChatRequestParser, ChatMode } from '@theia/ai-chat';
|
|
3
|
+
import { ChangeSetDecoratorService } from '@theia/ai-chat/lib/browser/change-set-decorator-service';
|
|
4
|
+
import { AIVariableResolutionRequest } from '@theia/ai-core';
|
|
5
|
+
import { AgentCompletionNotificationService, FrontendVariableService, AIActivationService } from '@theia/ai-core/lib/browser';
|
|
6
|
+
import { DisposableCollection, Emitter, InMemoryResources, URI } from '@theia/core';
|
|
7
|
+
import { ContextMenuRenderer, LabelProvider, Message, OpenerService, ReactWidget } from '@theia/core/lib/browser';
|
|
8
|
+
import { ContextKey, ContextKeyService } from '@theia/core/lib/browser/context-key-service';
|
|
9
|
+
import { Deferred } from '@theia/core/lib/common/promise-util';
|
|
10
|
+
import * as React from '@theia/core/shared/react';
|
|
11
|
+
import { IMouseEvent } from '@theia/monaco-editor-core';
|
|
12
|
+
import { MonacoEditorProvider } from '@theia/monaco/lib/browser/monaco-editor-provider';
|
|
13
|
+
import { SimpleMonacoEditor } from '@theia/monaco/lib/browser/simple-monaco-editor';
|
|
14
|
+
import { ChangeSetActionService } from './change-set-actions/change-set-action-service';
|
|
15
|
+
import { ContextVariablePicker } from './context-variable-picker';
|
|
16
|
+
import { ChatInputHistoryService, ChatInputNavigationState } from './chat-input-history';
|
|
17
|
+
import { ContextFileValidationService, FileValidationResult } from '@theia/ai-chat/lib/browser/context-file-validation-service';
|
|
18
|
+
type Query = (query: string, mode?: string) => Promise<void>;
|
|
19
|
+
type Unpin = () => void;
|
|
20
|
+
type Cancel = (requestModel: ChatRequestModel) => void;
|
|
21
|
+
type DeleteChangeSet = (requestModel: ChatRequestModel) => void;
|
|
22
|
+
type DeleteChangeSetElement = (requestModel: ChatRequestModel, index: number) => void;
|
|
23
|
+
export declare const AIChatInputConfiguration: unique symbol;
|
|
24
|
+
export interface AIChatInputConfiguration {
|
|
25
|
+
showContext?: boolean;
|
|
26
|
+
showPinnedAgent?: boolean;
|
|
27
|
+
showChangeSet?: boolean;
|
|
28
|
+
showSuggestions?: boolean;
|
|
29
|
+
enablePromptHistory?: boolean;
|
|
30
|
+
}
|
|
31
|
+
export declare class AIChatInputWidget extends ReactWidget {
|
|
32
|
+
static ID: string;
|
|
33
|
+
static readonly CONTEXT_MENU: string[];
|
|
34
|
+
protected readonly editorProvider: MonacoEditorProvider;
|
|
35
|
+
protected readonly resources: InMemoryResources;
|
|
36
|
+
protected readonly contextMenuRenderer: ContextMenuRenderer;
|
|
37
|
+
protected readonly configuration: AIChatInputConfiguration | undefined;
|
|
38
|
+
protected readonly variableService: FrontendVariableService;
|
|
39
|
+
protected readonly labelProvider: LabelProvider;
|
|
40
|
+
protected readonly contextVariablePicker: ContextVariablePicker;
|
|
41
|
+
protected readonly changeSetActionService: ChangeSetActionService;
|
|
42
|
+
protected readonly agentNotificationService: AgentCompletionNotificationService;
|
|
43
|
+
protected readonly changeSetDecoratorService: ChangeSetDecoratorService;
|
|
44
|
+
protected readonly openerService: OpenerService;
|
|
45
|
+
protected readonly chatService: ChatService;
|
|
46
|
+
protected readonly aiActivationService: AIActivationService;
|
|
47
|
+
protected readonly historyService: ChatInputHistoryService;
|
|
48
|
+
protected readonly chatRequestParser: ChatRequestParser;
|
|
49
|
+
protected readonly validationService: ContextFileValidationService | undefined;
|
|
50
|
+
protected fileValidationState: Map<string, FileValidationResult>;
|
|
51
|
+
protected readonly contextKeyService: ContextKeyService;
|
|
52
|
+
protected navigationState: ChatInputNavigationState;
|
|
53
|
+
protected editorRef: SimpleMonacoEditor | undefined;
|
|
54
|
+
protected readonly editorReady: Deferred<void>;
|
|
55
|
+
get editor(): SimpleMonacoEditor | undefined;
|
|
56
|
+
get inputConfiguration(): AIChatInputConfiguration | undefined;
|
|
57
|
+
getPreviousPrompt(currentInput: string): string | undefined;
|
|
58
|
+
getNextPrompt(): string | undefined;
|
|
59
|
+
cycleMode(): void;
|
|
60
|
+
protected handleModeChange: (mode: string) => void;
|
|
61
|
+
protected chatInputFocusKey: ContextKey<boolean>;
|
|
62
|
+
protected chatInputFirstLineKey: ContextKey<boolean>;
|
|
63
|
+
protected chatInputLastLineKey: ContextKey<boolean>;
|
|
64
|
+
protected chatInputReceivingAgentKey: ContextKey<string>;
|
|
65
|
+
protected chatInputHasModesKey: ContextKey<boolean>;
|
|
66
|
+
protected isEnabled: boolean;
|
|
67
|
+
protected heightInLines: number;
|
|
68
|
+
protected updateReceivingAgentTimeout: number | undefined;
|
|
69
|
+
protected receivingAgent: {
|
|
70
|
+
agentId: string;
|
|
71
|
+
modes: ChatMode[];
|
|
72
|
+
currentModeId?: string;
|
|
73
|
+
} | undefined;
|
|
74
|
+
protected _branch?: ChatHierarchyBranch;
|
|
75
|
+
set branch(branch: ChatHierarchyBranch | undefined);
|
|
76
|
+
protected _onQuery: Query;
|
|
77
|
+
set onQuery(query: Query);
|
|
78
|
+
protected _onUnpin: Unpin;
|
|
79
|
+
set onUnpin(unpin: Unpin);
|
|
80
|
+
protected _onCancel: Cancel;
|
|
81
|
+
set onCancel(cancel: Cancel);
|
|
82
|
+
protected _onDeleteChangeSet: DeleteChangeSet;
|
|
83
|
+
set onDeleteChangeSet(deleteChangeSet: DeleteChangeSet);
|
|
84
|
+
protected _onDeleteChangeSetElement: DeleteChangeSetElement;
|
|
85
|
+
set onDeleteChangeSetElement(deleteChangeSetElement: DeleteChangeSetElement);
|
|
86
|
+
protected _initialValue?: string;
|
|
87
|
+
set initialValue(value: string | undefined);
|
|
88
|
+
protected onDisposeForChatModel: DisposableCollection;
|
|
89
|
+
protected _chatModel: ChatModel;
|
|
90
|
+
set chatModel(chatModel: ChatModel);
|
|
91
|
+
protected _pinnedAgent: ChatAgent | undefined;
|
|
92
|
+
set pinnedAgent(pinnedAgent: ChatAgent | undefined);
|
|
93
|
+
protected onDidResizeEmitter: Emitter<void>;
|
|
94
|
+
readonly onDidResize: import("@theia/core").Event<void>;
|
|
95
|
+
protected init(): void;
|
|
96
|
+
protected initializeContextKeys(): void;
|
|
97
|
+
updateCursorPositionKeys(): void;
|
|
98
|
+
protected scheduleUpdateReceivingAgent(): void;
|
|
99
|
+
protected updateReceivingAgent(): Promise<void>;
|
|
100
|
+
protected setupEditorEventListeners(): void;
|
|
101
|
+
protected onActivateRequest(msg: Message): void;
|
|
102
|
+
protected handleAgentCompletion(request: ChatRequestModel): Promise<void>;
|
|
103
|
+
protected getResourceUri(): URI;
|
|
104
|
+
protected render(): React.ReactNode;
|
|
105
|
+
protected onDragOver(event: React.DragEvent): void;
|
|
106
|
+
protected onDrop(event: React.DragEvent): void;
|
|
107
|
+
protected onPaste(event: ClipboardEvent): void;
|
|
108
|
+
protected onEscape(): void;
|
|
109
|
+
protected openContextElement(request: AIVariableResolutionRequest): Promise<void>;
|
|
110
|
+
setEnabled(enabled: boolean): void;
|
|
111
|
+
protected addContextElement(): void;
|
|
112
|
+
protected deleteContextElement(index: number): void;
|
|
113
|
+
protected handleContextMenu(event: IMouseEvent): void;
|
|
114
|
+
addContext(variable: AIVariableResolutionRequest): void;
|
|
115
|
+
protected getContext(): readonly AIVariableResolutionRequest[];
|
|
116
|
+
}
|
|
117
|
+
export {};
|
|
118
|
+
//# sourceMappingURL=chat-input-widget.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat-input-widget.d.ts","sourceRoot":"","sources":["../../src/browser/chat-input-widget.tsx"],"names":[],"mappings":"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"}
|