@theia/ai-chat-ui 1.66.0-next.80 → 1.66.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/browser/ai-chat-ui-frontend-module.d.ts.map +1 -1
- package/lib/browser/ai-chat-ui-frontend-module.js +4 -0
- package/lib/browser/ai-chat-ui-frontend-module.js.map +1 -1
- 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 +11 -3
- package/lib/browser/chat-input-widget.d.ts.map +1 -1
- package/lib/browser/chat-input-widget.js +92 -25
- package/lib/browser/chat-input-widget.js.map +1 -1
- package/lib/browser/chat-view-widget.d.ts +1 -1
- package/lib/browser/chat-view-widget.d.ts.map +1 -1
- package/lib/browser/chat-view-widget.js +6 -2
- package/lib/browser/chat-view-widget.js.map +1 -1
- package/package.json +11 -11
- package/src/browser/ai-chat-ui-frontend-module.ts +5 -0
- package/src/browser/chat-input-mode-contribution.ts +75 -0
- package/src/browser/chat-input-widget.tsx +174 -50
- package/src/browser/chat-view-widget.tsx +6 -2
- package/src/browser/style/index.css +34 -0
|
@@ -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;;AA2C3E,wBAgHG"}
|
|
@@ -42,6 +42,7 @@ const chat_view_tree_input_widget_1 = require("./chat-tree-view/chat-view-tree-i
|
|
|
42
42
|
const sub_chat_widget_1 = require("./chat-tree-view/sub-chat-widget");
|
|
43
43
|
const chat_input_history_1 = require("./chat-input-history");
|
|
44
44
|
const chat_input_history_contribution_1 = require("./chat-input-history-contribution");
|
|
45
|
+
const chat_input_mode_contribution_1 = require("./chat-input-mode-contribution");
|
|
45
46
|
exports.default = new inversify_1.ContainerModule((bind, _unbind, _isBound, rebind) => {
|
|
46
47
|
(0, browser_1.bindViewContribution)(bind, ai_chat_ui_contribution_1.AIChatContribution);
|
|
47
48
|
bind(tab_bar_toolbar_1.TabBarToolbarContribution).toService(ai_chat_ui_contribution_1.AIChatContribution);
|
|
@@ -49,6 +50,9 @@ exports.default = new inversify_1.ContainerModule((bind, _unbind, _isBound, rebi
|
|
|
49
50
|
bind(chat_input_history_contribution_1.ChatInputHistoryContribution).toSelf().inSingletonScope();
|
|
50
51
|
bind(core_1.CommandContribution).toService(chat_input_history_contribution_1.ChatInputHistoryContribution);
|
|
51
52
|
bind(browser_1.KeybindingContribution).toService(chat_input_history_contribution_1.ChatInputHistoryContribution);
|
|
53
|
+
bind(chat_input_mode_contribution_1.ChatInputModeContribution).toSelf().inSingletonScope();
|
|
54
|
+
bind(core_1.CommandContribution).toService(chat_input_mode_contribution_1.ChatInputModeContribution);
|
|
55
|
+
bind(browser_1.KeybindingContribution).toService(chat_input_mode_contribution_1.ChatInputModeContribution);
|
|
52
56
|
(0, core_1.bindContributionProvider)(bind, chat_response_part_renderer_1.ChatResponsePartRenderer);
|
|
53
57
|
bindChatViewWidget(bind);
|
|
54
58
|
bind(chat_input_widget_1.AIChatInputWidget).toSelf();
|
|
@@ -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,qDAAuI;AACvI,mFAA0F;AAC1F,4DAA2E;AAC3E,6EAAmF;AACnF,uEAA+D;AAC/D,2DAAkF;AAClF,mGAAsI;AACtI,+EAAyE;AACzE,qEAckC;AAClC,0FAAqF;AACrF,0FAIwD;AACxD,4FAAuF;AACvF,qDAA4D;AAC5D,kFAA4E;AAC5E,qEAAoE;AACpE,uFAAiF;AACjF,yDAAoD;AACpD,mGAA4F;AAC5F,uEAAkE;AAClE,8FAAiH;AACjH,4FAAsF;AACtF,8FAAgK;AAChK,sEAAuF;AACvF,6DAA+D;AAC/D,uFAAiF;
|
|
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,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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
import { ChatAgent, ChatHierarchyBranch, ChatModel, ChatRequestModel, ChatService, ChatRequestParser } from '@theia/ai-chat';
|
|
2
|
+
import { ChatAgent, ChatHierarchyBranch, ChatModel, ChatRequestModel, ChatService, ChatRequestParser, ChatMode } from '@theia/ai-chat';
|
|
3
3
|
import { ChangeSetDecoratorService } from '@theia/ai-chat/lib/browser/change-set-decorator-service';
|
|
4
4
|
import { AIVariableResolutionRequest } from '@theia/ai-core';
|
|
5
5
|
import { AgentCompletionNotificationService, FrontendVariableService, AIActivationService } from '@theia/ai-core/lib/browser';
|
|
@@ -14,7 +14,7 @@ import { SimpleMonacoEditor } from '@theia/monaco/lib/browser/simple-monaco-edit
|
|
|
14
14
|
import { ChangeSetActionService } from './change-set-actions/change-set-action-service';
|
|
15
15
|
import { ContextVariablePicker } from './context-variable-picker';
|
|
16
16
|
import { ChatInputHistoryService, ChatInputNavigationState } from './chat-input-history';
|
|
17
|
-
type Query = (query: string) => Promise<void>;
|
|
17
|
+
type Query = (query: string, mode?: string) => Promise<void>;
|
|
18
18
|
type Unpin = () => void;
|
|
19
19
|
type Cancel = (requestModel: ChatRequestModel) => void;
|
|
20
20
|
type DeleteChangeSet = (requestModel: ChatRequestModel) => void;
|
|
@@ -45,21 +45,29 @@ export declare class AIChatInputWidget extends ReactWidget {
|
|
|
45
45
|
protected readonly aiActivationService: AIActivationService;
|
|
46
46
|
protected readonly historyService: ChatInputHistoryService;
|
|
47
47
|
protected readonly chatRequestParser: ChatRequestParser;
|
|
48
|
-
protected navigationState: ChatInputNavigationState;
|
|
49
48
|
protected readonly contextKeyService: ContextKeyService;
|
|
49
|
+
protected navigationState: ChatInputNavigationState;
|
|
50
50
|
protected editorRef: SimpleMonacoEditor | undefined;
|
|
51
51
|
protected readonly editorReady: Deferred<void>;
|
|
52
52
|
get editor(): SimpleMonacoEditor | undefined;
|
|
53
53
|
get inputConfiguration(): AIChatInputConfiguration | undefined;
|
|
54
54
|
getPreviousPrompt(currentInput: string): string | undefined;
|
|
55
55
|
getNextPrompt(): string | undefined;
|
|
56
|
+
cycleMode(): void;
|
|
57
|
+
protected handleModeChange: (mode: string) => void;
|
|
56
58
|
protected chatInputFocusKey: ContextKey<boolean>;
|
|
57
59
|
protected chatInputFirstLineKey: ContextKey<boolean>;
|
|
58
60
|
protected chatInputLastLineKey: ContextKey<boolean>;
|
|
59
61
|
protected chatInputReceivingAgentKey: ContextKey<string>;
|
|
62
|
+
protected chatInputHasModesKey: ContextKey<boolean>;
|
|
60
63
|
protected isEnabled: boolean;
|
|
61
64
|
protected heightInLines: number;
|
|
62
65
|
protected updateReceivingAgentTimeout: number | undefined;
|
|
66
|
+
protected receivingAgent: {
|
|
67
|
+
agentId: string;
|
|
68
|
+
modes: ChatMode[];
|
|
69
|
+
currentModeId?: string;
|
|
70
|
+
} | undefined;
|
|
63
71
|
protected _branch?: ChatHierarchyBranch;
|
|
64
72
|
set branch(branch: ChatHierarchyBranch | undefined);
|
|
65
73
|
protected _onQuery: Query;
|
|
@@ -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,EACxC,iBAAiB,
|
|
1
|
+
{"version":3,"file":"chat-input-widget.d.ts","sourceRoot":"","sources":["../../src/browser/chat-input-widget.tsx"],"names":[],"mappings":"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"}
|
|
@@ -42,6 +42,12 @@ let AIChatInputWidget = AIChatInputWidget_1 = class AIChatInputWidget extends br
|
|
|
42
42
|
super(...arguments);
|
|
43
43
|
this.editorRef = undefined;
|
|
44
44
|
this.editorReady = new promise_util_1.Deferred();
|
|
45
|
+
this.handleModeChange = (mode) => {
|
|
46
|
+
if (this.receivingAgent) {
|
|
47
|
+
this.receivingAgent = { ...this.receivingAgent, currentModeId: mode };
|
|
48
|
+
this.update();
|
|
49
|
+
}
|
|
50
|
+
};
|
|
45
51
|
this.isEnabled = false;
|
|
46
52
|
this.heightInLines = 12;
|
|
47
53
|
this.onDisposeForChatModel = new core_1.DisposableCollection();
|
|
@@ -66,6 +72,18 @@ let AIChatInputWidget = AIChatInputWidget_1 = class AIChatInputWidget extends br
|
|
|
66
72
|
}
|
|
67
73
|
return this.navigationState.getNextPrompt();
|
|
68
74
|
}
|
|
75
|
+
cycleMode() {
|
|
76
|
+
if (!this.receivingAgent || !this.receivingAgent.modes || this.receivingAgent.modes.length <= 1) {
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
const currentIndex = this.receivingAgent.modes.findIndex(mode => mode.id === this.receivingAgent.currentModeId);
|
|
80
|
+
const nextIndex = currentIndex === -1 ? 1 : (currentIndex + 1) % this.receivingAgent.modes.length;
|
|
81
|
+
this.receivingAgent = {
|
|
82
|
+
...this.receivingAgent,
|
|
83
|
+
currentModeId: this.receivingAgent.modes[nextIndex].id
|
|
84
|
+
};
|
|
85
|
+
this.update();
|
|
86
|
+
}
|
|
69
87
|
set branch(branch) {
|
|
70
88
|
if (this._branch !== branch) {
|
|
71
89
|
this._branch = branch;
|
|
@@ -73,13 +91,13 @@ let AIChatInputWidget = AIChatInputWidget_1 = class AIChatInputWidget extends br
|
|
|
73
91
|
}
|
|
74
92
|
}
|
|
75
93
|
set onQuery(query) {
|
|
76
|
-
this._onQuery = (prompt) => {
|
|
94
|
+
this._onQuery = (prompt, mode) => {
|
|
77
95
|
var _a;
|
|
78
96
|
if (((_a = this.configuration) === null || _a === void 0 ? void 0 : _a.enablePromptHistory) !== false && prompt.trim()) {
|
|
79
97
|
this.historyService.addToHistory(prompt);
|
|
80
98
|
this.navigationState.stopNavigation();
|
|
81
99
|
}
|
|
82
|
-
return query(prompt);
|
|
100
|
+
return query(prompt, mode);
|
|
83
101
|
};
|
|
84
102
|
}
|
|
85
103
|
set onUnpin(unpin) {
|
|
@@ -140,6 +158,7 @@ let AIChatInputWidget = AIChatInputWidget_1 = class AIChatInputWidget extends br
|
|
|
140
158
|
this.chatInputFirstLineKey = this.contextKeyService.createKey('chatInputFirstLine', false);
|
|
141
159
|
this.chatInputLastLineKey = this.contextKeyService.createKey('chatInputLastLine', false);
|
|
142
160
|
this.chatInputReceivingAgentKey = this.contextKeyService.createKey('chatInputReceivingAgent', '');
|
|
161
|
+
this.chatInputHasModesKey = this.contextKeyService.createKey('chatInputHasModes', false);
|
|
143
162
|
}
|
|
144
163
|
updateCursorPositionKeys() {
|
|
145
164
|
if (!this.editorRef) {
|
|
@@ -179,9 +198,14 @@ let AIChatInputWidget = AIChatInputWidget_1 = class AIChatInputWidget extends br
|
|
|
179
198
|
}, 200);
|
|
180
199
|
}
|
|
181
200
|
async updateReceivingAgent() {
|
|
182
|
-
var _a;
|
|
201
|
+
var _a, _b, _c;
|
|
183
202
|
if (!this.editorRef || !this._chatModel) {
|
|
184
|
-
this.
|
|
203
|
+
if (this.receivingAgent !== undefined) {
|
|
204
|
+
this.chatInputReceivingAgentKey.set('');
|
|
205
|
+
this.chatInputHasModesKey.set(false);
|
|
206
|
+
this.receivingAgent = undefined;
|
|
207
|
+
this.update();
|
|
208
|
+
}
|
|
185
209
|
return;
|
|
186
210
|
}
|
|
187
211
|
try {
|
|
@@ -192,15 +216,40 @@ let AIChatInputWidget = AIChatInputWidget_1 = class AIChatInputWidget extends br
|
|
|
192
216
|
const session = this.chatService.getSessions().find(s => s.model.id === this._chatModel.id);
|
|
193
217
|
if (session) {
|
|
194
218
|
const agent = this.chatService.getAgent(parsedRequest, session);
|
|
195
|
-
|
|
219
|
+
const agentId = (_a = agent === null || agent === void 0 ? void 0 : agent.id) !== null && _a !== void 0 ? _a : '';
|
|
220
|
+
const previousAgentId = (_b = this.receivingAgent) === null || _b === void 0 ? void 0 : _b.agentId;
|
|
221
|
+
this.chatInputReceivingAgentKey.set(agentId);
|
|
222
|
+
// Only update and re-render when the agent changes
|
|
223
|
+
if (agent && agentId !== previousAgentId) {
|
|
224
|
+
const modes = (_c = agent.modes) !== null && _c !== void 0 ? _c : [];
|
|
225
|
+
this.receivingAgent = {
|
|
226
|
+
agentId: agentId,
|
|
227
|
+
modes
|
|
228
|
+
};
|
|
229
|
+
this.chatInputHasModesKey.set(modes.length > 1);
|
|
230
|
+
this.update();
|
|
231
|
+
}
|
|
232
|
+
else if (!agent && this.receivingAgent !== undefined) {
|
|
233
|
+
this.receivingAgent = undefined;
|
|
234
|
+
this.chatInputHasModesKey.set(false);
|
|
235
|
+
this.update();
|
|
236
|
+
}
|
|
196
237
|
}
|
|
197
|
-
else {
|
|
238
|
+
else if (this.receivingAgent !== undefined) {
|
|
198
239
|
this.chatInputReceivingAgentKey.set('');
|
|
240
|
+
this.chatInputHasModesKey.set(false);
|
|
241
|
+
this.receivingAgent = undefined;
|
|
242
|
+
this.update();
|
|
199
243
|
}
|
|
200
244
|
}
|
|
201
245
|
catch (error) {
|
|
202
246
|
console.warn('Failed to determine receiving agent:', error);
|
|
203
|
-
this.
|
|
247
|
+
if (this.receivingAgent !== undefined) {
|
|
248
|
+
this.chatInputReceivingAgentKey.set('');
|
|
249
|
+
this.chatInputHasModesKey.set(false);
|
|
250
|
+
this.receivingAgent = undefined;
|
|
251
|
+
this.update();
|
|
252
|
+
}
|
|
204
253
|
}
|
|
205
254
|
}
|
|
206
255
|
setupEditorEventListeners() {
|
|
@@ -256,7 +305,7 @@ let AIChatInputWidget = AIChatInputWidget_1 = class AIChatInputWidget extends br
|
|
|
256
305
|
return new core_1.URI(`ai-chat:/input.${chat_view_language_contribution_1.CHAT_VIEW_LANGUAGE_EXTENSION}`);
|
|
257
306
|
}
|
|
258
307
|
render() {
|
|
259
|
-
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
308
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
260
309
|
const branch = this._branch;
|
|
261
310
|
const chatModel = this._chatModel;
|
|
262
311
|
// State of the input widget's action buttons depends on the state of the currently active or last processed
|
|
@@ -274,7 +323,11 @@ let AIChatInputWidget = AIChatInputWidget_1 = class AIChatInputWidget extends br
|
|
|
274
323
|
if (isPending() !== pending) {
|
|
275
324
|
this.update();
|
|
276
325
|
}
|
|
277
|
-
}, onResize: () => this.onDidResizeEmitter.fire()
|
|
326
|
+
}, onResize: () => this.onDidResizeEmitter.fire(), modeSelectorProps: {
|
|
327
|
+
receivingAgentModes: (_j = this.receivingAgent) === null || _j === void 0 ? void 0 : _j.modes,
|
|
328
|
+
currentMode: (_k = this.receivingAgent) === null || _k === void 0 ? void 0 : _k.currentModeId,
|
|
329
|
+
onModeChange: this.handleModeChange,
|
|
330
|
+
} }));
|
|
278
331
|
}
|
|
279
332
|
onDragOver(event) {
|
|
280
333
|
var _a;
|
|
@@ -454,6 +507,7 @@ exports.AIChatInputWidget = AIChatInputWidget = AIChatInputWidget_1 = tslib_1.__
|
|
|
454
507
|
// Utility to check if we have task context in the chat model
|
|
455
508
|
const hasTaskContext = (chatModel) => chatModel.context.getVariables().some(variable => { var _a; return ((_a = variable.variable) === null || _a === void 0 ? void 0 : _a.id) === task_context_variable_1.TASK_CONTEXT_VARIABLE.id; });
|
|
456
509
|
const ChatInput = (props) => {
|
|
510
|
+
var _a, _b;
|
|
457
511
|
const onDeleteChangeSet = () => props.onDeleteChangeSet(props.chatModel.id);
|
|
458
512
|
const onDeleteChangeSetElement = (uri) => props.onDeleteChangeSetElement(props.chatModel.id, uri);
|
|
459
513
|
const [isInputEmpty, setIsInputEmpty] = React.useState(true);
|
|
@@ -654,12 +708,12 @@ const ChatInput = (props) => {
|
|
|
654
708
|
if (!effectiveValue || effectiveValue.trim().length === 0) {
|
|
655
709
|
return;
|
|
656
710
|
}
|
|
657
|
-
props.onQuery(effectiveValue);
|
|
711
|
+
props.onQuery(effectiveValue, props.modeSelectorProps.currentMode);
|
|
658
712
|
setValue('');
|
|
659
713
|
if (editorRef.current && !editorRef.current.document.textEditorModel.isDisposed()) {
|
|
660
714
|
editorRef.current.document.textEditorModel.setValue('');
|
|
661
715
|
}
|
|
662
|
-
}, [props.context, props.onQuery, setValue, shouldUseTaskPlaceholder, taskPlaceholder]);
|
|
716
|
+
}, [props.context, props.onQuery, props.modeSelectorProps.currentMode, setValue, shouldUseTaskPlaceholder, taskPlaceholder]);
|
|
663
717
|
const onKeyDown = React.useCallback((event) => {
|
|
664
718
|
var _a;
|
|
665
719
|
if (!props.isEnabled) {
|
|
@@ -786,6 +840,8 @@ const ChatInput = (props) => {
|
|
|
786
840
|
}];
|
|
787
841
|
}
|
|
788
842
|
const contextUI = buildContextUI(props.context, props.labelProvider, props.onDeleteContextElement, props.onOpenContextElement);
|
|
843
|
+
// Show mode selector if agent has multiple modes
|
|
844
|
+
const showModeSelector = ((_b = (_a = props.modeSelectorProps.receivingAgentModes) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0) > 1;
|
|
789
845
|
return (React.createElement("div", { className: 'theia-ChatInput', "data-ai-disabled": !props.isEnabled, onDragOver: props.onDragOver, onDrop: props.onDrop, ref: containerRef },
|
|
790
846
|
props.showSuggestions !== false && React.createElement(chat_input_agent_suggestions_1.ChatInputAgentSuggestions, { suggestions: props.suggestions, opener: props.openerService }),
|
|
791
847
|
props.showChangeSet && (changeSetUI === null || changeSetUI === void 0 ? void 0 : changeSetUI.elements) &&
|
|
@@ -795,8 +851,32 @@ const ChatInput = (props) => {
|
|
|
795
851
|
React.createElement("div", { ref: placeholderRef, className: 'theia-ChatInput-Editor-Placeholder' }, placeholderText)),
|
|
796
852
|
props.context && props.context.length > 0 &&
|
|
797
853
|
React.createElement(ChatContext, { context: contextUI.context }),
|
|
798
|
-
React.createElement(ChatInputOptions, { leftOptions: leftOptions, rightOptions: rightOptions
|
|
854
|
+
React.createElement(ChatInputOptions, { leftOptions: leftOptions, rightOptions: rightOptions, isEnabled: props.isEnabled, modeSelectorProps: {
|
|
855
|
+
show: showModeSelector,
|
|
856
|
+
modes: props.modeSelectorProps.receivingAgentModes,
|
|
857
|
+
currentMode: props.modeSelectorProps.currentMode,
|
|
858
|
+
onModeChange: props.modeSelectorProps.onModeChange,
|
|
859
|
+
} }))));
|
|
799
860
|
};
|
|
861
|
+
const ChatInputOptions = ({ leftOptions, rightOptions, isEnabled, modeSelectorProps }) => (React.createElement("div", { className: "theia-ChatInputOptions" },
|
|
862
|
+
React.createElement("div", { className: "theia-ChatInputOptions-left" },
|
|
863
|
+
leftOptions.map((option, index) => {
|
|
864
|
+
var _a, _b;
|
|
865
|
+
return (React.createElement("span", { key: index, className: `option${option.disabled ? ' disabled' : ''}${((_a = option.text) === null || _a === void 0 ? void 0 : _a.align) === 'right' ? ' reverse' : ''}`, title: option.title, onClick: option.handler },
|
|
866
|
+
React.createElement("span", null, (_b = option.text) === null || _b === void 0 ? void 0 : _b.content),
|
|
867
|
+
React.createElement("span", { className: `codicon ${option.className}` })));
|
|
868
|
+
}),
|
|
869
|
+
modeSelectorProps.show && modeSelectorProps.modes && (React.createElement(ChatModeSelector, { modes: modeSelectorProps.modes, currentMode: modeSelectorProps.currentMode, onModeChange: modeSelectorProps.onModeChange, disabled: !isEnabled }))),
|
|
870
|
+
React.createElement("div", { className: "theia-ChatInputOptions-right" }, rightOptions.map((option, index) => {
|
|
871
|
+
var _a, _b;
|
|
872
|
+
return (React.createElement("span", { key: index, className: `option${option.disabled ? ' disabled' : ''}${((_a = option.text) === null || _a === void 0 ? void 0 : _a.align) === 'right' ? ' reverse' : ''}`, title: option.title, onClick: option.handler },
|
|
873
|
+
React.createElement("span", null, (_b = option.text) === null || _b === void 0 ? void 0 : _b.content),
|
|
874
|
+
React.createElement("span", { className: `codicon ${option.className}` })));
|
|
875
|
+
}))));
|
|
876
|
+
const ChatModeSelector = React.memo(({ modes, currentMode, onModeChange, disabled }) => {
|
|
877
|
+
var _a, _b, _c;
|
|
878
|
+
return (React.createElement("select", { className: "theia-ChatInput-ModeSelector", value: (_b = currentMode !== null && currentMode !== void 0 ? currentMode : (_a = modes[0]) === null || _a === void 0 ? void 0 : _a.id) !== null && _b !== void 0 ? _b : '', onChange: e => onModeChange(e.target.value), disabled: disabled, title: (_c = modes.find(m => { var _a; return m.id === (currentMode !== null && currentMode !== void 0 ? currentMode : (_a = modes[0]) === null || _a === void 0 ? void 0 : _a.id); })) === null || _c === void 0 ? void 0 : _c.name }, modes.map(mode => (React.createElement("option", { key: mode.id, value: mode.id, title: mode.name }, mode.name)))));
|
|
879
|
+
});
|
|
800
880
|
const noPropagation = (handler) => (e) => {
|
|
801
881
|
handler();
|
|
802
882
|
e.stopPropagation();
|
|
@@ -849,19 +929,6 @@ const ChangeSetElement = element => (React.createElement("li", { key: element.ur
|
|
|
849
929
|
element.revert && (React.createElement("span", { className: 'codicon codicon-discard action', title: core_1.nls.localizeByDefault('Revert'), onClick: noPropagation(() => element.revert()) })),
|
|
850
930
|
element.apply && (React.createElement("span", { className: 'codicon codicon-check action', title: core_1.nls.localizeByDefault('Apply'), onClick: noPropagation(() => element.apply()) })),
|
|
851
931
|
React.createElement("span", { className: 'codicon codicon-close action', title: core_1.nls.localizeByDefault('Delete'), onClick: noPropagation(() => element.delete()) }))));
|
|
852
|
-
const ChatInputOptions = ({ leftOptions, rightOptions }) => (React.createElement("div", { className: "theia-ChatInputOptions" },
|
|
853
|
-
React.createElement("div", { className: "theia-ChatInputOptions-left" }, leftOptions.map((option, index) => {
|
|
854
|
-
var _a, _b;
|
|
855
|
-
return (React.createElement("span", { key: index, className: `option${option.disabled ? ' disabled' : ''}${((_a = option.text) === null || _a === void 0 ? void 0 : _a.align) === 'right' ? ' reverse' : ''}`, title: option.title, onClick: option.handler },
|
|
856
|
-
React.createElement("span", null, (_b = option.text) === null || _b === void 0 ? void 0 : _b.content),
|
|
857
|
-
React.createElement("span", { className: `codicon ${option.className}` })));
|
|
858
|
-
})),
|
|
859
|
-
React.createElement("div", { className: "theia-ChatInputOptions-right" }, rightOptions.map((option, index) => {
|
|
860
|
-
var _a, _b;
|
|
861
|
-
return (React.createElement("span", { key: index, className: `option${option.disabled ? ' disabled' : ''}${((_a = option.text) === null || _a === void 0 ? void 0 : _a.align) === 'right' ? ' reverse' : ''}`, title: option.title, onClick: option.handler },
|
|
862
|
-
React.createElement("span", null, (_b = option.text) === null || _b === void 0 ? void 0 : _b.content),
|
|
863
|
-
React.createElement("span", { className: `codicon ${option.className}` })));
|
|
864
|
-
}))));
|
|
865
932
|
function buildContextUI(context, labelProvider, onDeleteContextElement, onOpen) {
|
|
866
933
|
if (!context) {
|
|
867
934
|
return { context: [] };
|