@theia/ai-chat-ui 1.58.2 → 1.59.0-next.62
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.map +1 -1
- package/lib/browser/ai-chat-ui-contribution.js +7 -7
- package/lib/browser/ai-chat-ui-contribution.js.map +1 -1
- package/lib/browser/ai-chat-ui-frontend-module.d.ts.map +1 -1
- package/lib/browser/ai-chat-ui-frontend-module.js +7 -4
- package/lib/browser/ai-chat-ui-frontend-module.js.map +1 -1
- package/lib/browser/chat-input-widget.d.ts +21 -4
- package/lib/browser/chat-input-widget.d.ts.map +1 -1
- package/lib/browser/chat-input-widget.js +177 -37
- package/lib/browser/chat-input-widget.js.map +1 -1
- package/lib/browser/chat-response-renderer/code-part-renderer.d.ts.map +1 -1
- package/lib/browser/chat-response-renderer/code-part-renderer.js +4 -3
- package/lib/browser/chat-response-renderer/code-part-renderer.js.map +1 -1
- package/lib/browser/chat-response-renderer/text-part-renderer.d.ts.map +1 -1
- package/lib/browser/chat-response-renderer/text-part-renderer.js +3 -1
- package/lib/browser/chat-response-renderer/text-part-renderer.js.map +1 -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 +7 -3
- package/lib/browser/chat-response-renderer/toolcall-part-renderer.js.map +1 -1
- package/lib/browser/chat-tree-view/chat-view-tree-widget.d.ts.map +1 -1
- package/lib/browser/chat-tree-view/chat-view-tree-widget.js +25 -16
- package/lib/browser/chat-tree-view/chat-view-tree-widget.js.map +1 -1
- package/lib/browser/chat-view-contribution.d.ts +2 -2
- package/lib/browser/chat-view-contribution.d.ts.map +1 -1
- package/lib/browser/chat-view-contribution.js +6 -6
- package/lib/browser/chat-view-contribution.js.map +1 -1
- package/lib/browser/chat-view-language-contribution.d.ts +10 -5
- package/lib/browser/chat-view-language-contribution.d.ts.map +1 -1
- package/lib/browser/chat-view-language-contribution.js +94 -14
- package/lib/browser/chat-view-language-contribution.js.map +1 -1
- package/lib/browser/chat-view-widget.d.ts +4 -1
- package/lib/browser/chat-view-widget.d.ts.map +1 -1
- package/lib/browser/chat-view-widget.js +18 -7
- package/lib/browser/chat-view-widget.js.map +1 -1
- 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/package.json +11 -11
- package/src/browser/ai-chat-ui-contribution.ts +8 -8
- package/src/browser/ai-chat-ui-frontend-module.ts +8 -4
- package/src/browser/chat-input-widget.tsx +255 -49
- package/src/browser/chat-response-renderer/code-part-renderer.tsx +4 -3
- package/src/browser/chat-response-renderer/text-part-renderer.tsx +4 -1
- package/src/browser/chat-response-renderer/toolcall-part-renderer.tsx +9 -3
- package/src/browser/chat-tree-view/chat-view-tree-widget.tsx +26 -16
- package/src/browser/chat-view-contribution.ts +6 -6
- package/src/browser/chat-view-language-contribution.ts +103 -19
- package/src/browser/chat-view-widget.tsx +22 -8
- package/src/browser/context-variable-picker.ts +85 -0
- package/src/browser/style/index.css +95 -9
|
@@ -17,29 +17,41 @@ const tslib_1 = require("tslib");
|
|
|
17
17
|
//
|
|
18
18
|
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
19
19
|
// *****************************************************************************
|
|
20
|
-
const inversify_1 = require("@theia/core/shared/inversify");
|
|
21
|
-
const monaco = require("@theia/monaco-editor-core");
|
|
22
|
-
const core_1 = require("@theia/core");
|
|
23
20
|
const ai_chat_1 = require("@theia/ai-chat");
|
|
24
21
|
const common_1 = require("@theia/ai-core/lib/common");
|
|
22
|
+
const prompt_text_1 = require("@theia/ai-core/lib/common/prompt-text");
|
|
25
23
|
const tool_invocation_registry_1 = require("@theia/ai-core/lib/common/tool-invocation-registry");
|
|
24
|
+
const core_1 = require("@theia/core");
|
|
25
|
+
const browser_1 = require("@theia/core/lib/browser");
|
|
26
|
+
const inversify_1 = require("@theia/core/shared/inversify");
|
|
27
|
+
const monaco = require("@theia/monaco-editor-core");
|
|
28
|
+
const chat_view_widget_1 = require("./chat-view-widget");
|
|
26
29
|
exports.CHAT_VIEW_LANGUAGE_ID = 'theia-ai-chat-view-language';
|
|
27
30
|
exports.CHAT_VIEW_LANGUAGE_EXTENSION = 'aichatviewlanguage';
|
|
31
|
+
const VARIABLE_RESOLUTION_CONTEXT = { context: 'chat-input-autocomplete' };
|
|
32
|
+
const VARIABLE_ARGUMENT_PICKER_COMMAND = 'trigger-variable-argument-picker';
|
|
33
|
+
const VARIABLE_ADD_CONTEXT_COMMAND = 'add-context-variable';
|
|
28
34
|
let ChatViewLanguageContribution = class ChatViewLanguageContribution {
|
|
29
35
|
onStart(_app) {
|
|
30
36
|
monaco.languages.register({ id: exports.CHAT_VIEW_LANGUAGE_ID, extensions: [exports.CHAT_VIEW_LANGUAGE_EXTENSION] });
|
|
31
37
|
monaco.languages.registerCompletionItemProvider(exports.CHAT_VIEW_LANGUAGE_ID, {
|
|
32
|
-
triggerCharacters: [
|
|
38
|
+
triggerCharacters: [prompt_text_1.PromptText.AGENT_CHAR],
|
|
33
39
|
provideCompletionItems: (model, position, _context, _token) => this.provideAgentCompletions(model, position),
|
|
34
40
|
});
|
|
35
41
|
monaco.languages.registerCompletionItemProvider(exports.CHAT_VIEW_LANGUAGE_ID, {
|
|
36
|
-
triggerCharacters: [
|
|
42
|
+
triggerCharacters: [prompt_text_1.PromptText.VARIABLE_CHAR],
|
|
37
43
|
provideCompletionItems: (model, position, _context, _token) => this.provideVariableCompletions(model, position),
|
|
38
44
|
});
|
|
39
45
|
monaco.languages.registerCompletionItemProvider(exports.CHAT_VIEW_LANGUAGE_ID, {
|
|
40
|
-
triggerCharacters: [
|
|
46
|
+
triggerCharacters: [prompt_text_1.PromptText.VARIABLE_CHAR, prompt_text_1.PromptText.VARIABLE_SEPARATOR_CHAR],
|
|
47
|
+
provideCompletionItems: (model, position, _context, _token) => this.provideVariableWithArgCompletions(model, position),
|
|
48
|
+
});
|
|
49
|
+
monaco.languages.registerCompletionItemProvider(exports.CHAT_VIEW_LANGUAGE_ID, {
|
|
50
|
+
triggerCharacters: [prompt_text_1.PromptText.FUNCTION_CHAR],
|
|
41
51
|
provideCompletionItems: (model, position, _context, _token) => this.provideToolCompletions(model, position),
|
|
42
52
|
});
|
|
53
|
+
monaco.editor.registerCommand(VARIABLE_ARGUMENT_PICKER_COMMAND, this.triggerVariableArgumentPicker.bind(this));
|
|
54
|
+
monaco.editor.registerCommand(VARIABLE_ADD_CONTEXT_COMMAND, (_, ...args) => args.length > 1 ? this.addContextVariable(args[0], args[1]) : undefined);
|
|
43
55
|
}
|
|
44
56
|
getCompletionRange(model, position, triggerCharacter) {
|
|
45
57
|
// Check if the character before the current position is the trigger character
|
|
@@ -49,11 +61,11 @@ let ChatViewLanguageContribution = class ChatViewLanguageContribution {
|
|
|
49
61
|
// Do not return agent suggestions if the user didn't just type the trigger character
|
|
50
62
|
return undefined;
|
|
51
63
|
}
|
|
52
|
-
// Calculate the range from the position of the
|
|
64
|
+
// Calculate the range from the position of the trigger character
|
|
53
65
|
const wordInfo = model.getWordUntilPosition(position);
|
|
54
66
|
return new monaco.Range(position.lineNumber, wordInfo.startColumn, position.lineNumber, position.column);
|
|
55
67
|
}
|
|
56
|
-
getSuggestions(model, position, triggerChar, items, kind, getId, getName, getDescription) {
|
|
68
|
+
getSuggestions(model, position, triggerChar, items, kind, getId, getName, getDescription, command) {
|
|
57
69
|
const completionRange = this.getCompletionRange(model, position, triggerChar);
|
|
58
70
|
if (completionRange === undefined) {
|
|
59
71
|
return { suggestions: [] };
|
|
@@ -64,17 +76,82 @@ let ChatViewLanguageContribution = class ChatViewLanguageContribution {
|
|
|
64
76
|
label: getName(item),
|
|
65
77
|
range: completionRange,
|
|
66
78
|
detail: getDescription(item),
|
|
79
|
+
command
|
|
67
80
|
}));
|
|
68
81
|
return { suggestions };
|
|
69
82
|
}
|
|
70
83
|
provideAgentCompletions(model, position) {
|
|
71
|
-
return this.getSuggestions(model, position,
|
|
84
|
+
return this.getSuggestions(model, position, prompt_text_1.PromptText.AGENT_CHAR, this.agentService.getAgents(), monaco.languages.CompletionItemKind.Value, agent => agent.id, agent => agent.name, agent => agent.description);
|
|
72
85
|
}
|
|
73
86
|
provideVariableCompletions(model, position) {
|
|
74
|
-
return this.getSuggestions(model, position,
|
|
87
|
+
return this.getSuggestions(model, position, prompt_text_1.PromptText.VARIABLE_CHAR, this.variableService.getVariables(), monaco.languages.CompletionItemKind.Variable, variable => variable.name, variable => variable.name, variable => variable.description, {
|
|
88
|
+
title: core_1.nls.localize('theia/ai/chat-ui/selectVariableArguments', 'Select variable arguments'),
|
|
89
|
+
id: VARIABLE_ARGUMENT_PICKER_COMMAND,
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
async provideVariableWithArgCompletions(model, position) {
|
|
93
|
+
const variables = this.variableService.getVariables();
|
|
94
|
+
const suggestions = [];
|
|
95
|
+
for (const variable of variables) {
|
|
96
|
+
const provider = await this.variableService.getArgumentCompletionProvider(variable.name);
|
|
97
|
+
if (provider) {
|
|
98
|
+
const items = await provider(model, position);
|
|
99
|
+
if (items) {
|
|
100
|
+
suggestions.push(...items.map(item => ({
|
|
101
|
+
...item,
|
|
102
|
+
// trigger command to check if we should add a context variable
|
|
103
|
+
command: {
|
|
104
|
+
title: core_1.nls.localize('theia/ai/chat-ui/addContextVariable', 'Add context variable'),
|
|
105
|
+
id: VARIABLE_ADD_CONTEXT_COMMAND,
|
|
106
|
+
arguments: [variable.name, item.insertText]
|
|
107
|
+
}
|
|
108
|
+
})));
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
return { suggestions };
|
|
75
113
|
}
|
|
76
114
|
provideToolCompletions(model, position) {
|
|
77
|
-
return this.getSuggestions(model, position,
|
|
115
|
+
return this.getSuggestions(model, position, prompt_text_1.PromptText.FUNCTION_CHAR, this.toolInvocationRegistry.getAllFunctions(), monaco.languages.CompletionItemKind.Function, tool => tool.id, tool => tool.name, tool => { var _a; return (_a = tool.description) !== null && _a !== void 0 ? _a : ''; });
|
|
116
|
+
}
|
|
117
|
+
async triggerVariableArgumentPicker() {
|
|
118
|
+
var _a;
|
|
119
|
+
const inputEditor = monaco.editor.getEditors().find(editor => editor.hasTextFocus());
|
|
120
|
+
if (!inputEditor) {
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
const model = inputEditor.getModel();
|
|
124
|
+
const position = inputEditor.getPosition();
|
|
125
|
+
if (!model || !position) {
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
const variableName = (_a = model.getWordAtPosition(position)) === null || _a === void 0 ? void 0 : _a.word;
|
|
129
|
+
if (!variableName) {
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
const provider = await this.variableService.getArgumentPicker(variableName, VARIABLE_RESOLUTION_CONTEXT);
|
|
133
|
+
if (!provider) {
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
const arg = await provider(VARIABLE_RESOLUTION_CONTEXT);
|
|
137
|
+
if (!arg) {
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
inputEditor.executeEdits('variable-argument-picker', [{
|
|
141
|
+
range: new monaco.Range(position.lineNumber, position.column, position.lineNumber, position.column),
|
|
142
|
+
text: prompt_text_1.PromptText.VARIABLE_SEPARATOR_CHAR + arg
|
|
143
|
+
}]);
|
|
144
|
+
await this.addContextVariable(variableName, arg);
|
|
145
|
+
}
|
|
146
|
+
async addContextVariable(variableName, arg) {
|
|
147
|
+
const variable = this.variableService.getVariable(variableName);
|
|
148
|
+
if (!variable || !common_1.AIContextVariable.is(variable)) {
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
const widget = this.shell.getWidgetById(chat_view_widget_1.ChatViewWidget.ID);
|
|
152
|
+
if (widget instanceof chat_view_widget_1.ChatViewWidget) {
|
|
153
|
+
widget.addContext({ variable, arg });
|
|
154
|
+
}
|
|
78
155
|
}
|
|
79
156
|
};
|
|
80
157
|
exports.ChatViewLanguageContribution = ChatViewLanguageContribution;
|
|
@@ -87,10 +164,13 @@ tslib_1.__decorate([
|
|
|
87
164
|
tslib_1.__metadata("design:type", Object)
|
|
88
165
|
], ChatViewLanguageContribution.prototype, "variableService", void 0);
|
|
89
166
|
tslib_1.__decorate([
|
|
90
|
-
(0, inversify_1.inject)(
|
|
91
|
-
(0, inversify_1.named)(tool_invocation_registry_1.ToolProvider),
|
|
167
|
+
(0, inversify_1.inject)(tool_invocation_registry_1.ToolInvocationRegistry),
|
|
92
168
|
tslib_1.__metadata("design:type", Object)
|
|
93
|
-
], ChatViewLanguageContribution.prototype, "
|
|
169
|
+
], ChatViewLanguageContribution.prototype, "toolInvocationRegistry", void 0);
|
|
170
|
+
tslib_1.__decorate([
|
|
171
|
+
(0, inversify_1.inject)(browser_1.ApplicationShell),
|
|
172
|
+
tslib_1.__metadata("design:type", browser_1.ApplicationShell)
|
|
173
|
+
], ChatViewLanguageContribution.prototype, "shell", void 0);
|
|
94
174
|
exports.ChatViewLanguageContribution = ChatViewLanguageContribution = tslib_1.__decorate([
|
|
95
175
|
(0, inversify_1.injectable)()
|
|
96
176
|
], ChatViewLanguageContribution);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-view-language-contribution.js","sourceRoot":"","sources":["../../src/browser/chat-view-language-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;AAChF,
|
|
1
|
+
{"version":3,"file":"chat-view-language-contribution.js","sourceRoot":"","sources":["../../src/browser/chat-view-language-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;AAChF,4CAAkD;AAClD,sDAAiF;AACjF,uEAAmE;AACnE,iGAA4F;AAC5F,sCAAgD;AAChD,qDAAiH;AACjH,4DAAkE;AAClE,oDAAoD;AAEpD,yDAAoD;AAEvC,QAAA,qBAAqB,GAAG,6BAA6B,CAAC;AACtD,QAAA,4BAA4B,GAAG,oBAAoB,CAAC;AAEjE,MAAM,2BAA2B,GAAG,EAAE,OAAO,EAAE,yBAAyB,EAAE,CAAC;AAC3E,MAAM,gCAAgC,GAAG,kCAAkC,CAAC;AAC5E,MAAM,4BAA4B,GAAG,sBAAsB,CAAC;AAGrD,IAAM,4BAA4B,GAAlC,MAAM,4BAA4B;IAcrC,OAAO,CAAC,IAAyB;QAC7B,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,6BAAqB,EAAE,UAAU,EAAE,CAAC,oCAA4B,CAAC,EAAE,CAAC,CAAC;QAErG,MAAM,CAAC,SAAS,CAAC,8BAA8B,CAAC,6BAAqB,EAAE;YACnE,iBAAiB,EAAE,CAAC,wBAAU,CAAC,UAAU,CAAC;YAC1C,sBAAsB,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAmD,EAAE,CAAC,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,QAAQ,CAAC;SAChK,CAAC,CAAC;QACH,MAAM,CAAC,SAAS,CAAC,8BAA8B,CAAC,6BAAqB,EAAE;YACnE,iBAAiB,EAAE,CAAC,wBAAU,CAAC,aAAa,CAAC;YAC7C,sBAAsB,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAmD,EAAE,CAAC,IAAI,CAAC,0BAA0B,CAAC,KAAK,EAAE,QAAQ,CAAC;SACnK,CAAC,CAAC;QACH,MAAM,CAAC,SAAS,CAAC,8BAA8B,CAAC,6BAAqB,EAAE;YACnE,iBAAiB,EAAE,CAAC,wBAAU,CAAC,aAAa,EAAE,wBAAU,CAAC,uBAAuB,CAAC;YACjF,sBAAsB,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAmD,EAAE,CAAC,IAAI,CAAC,iCAAiC,CAAC,KAAK,EAAE,QAAQ,CAAC;SAC1K,CAAC,CAAC;QACH,MAAM,CAAC,SAAS,CAAC,8BAA8B,CAAC,6BAAqB,EAAE;YACnE,iBAAiB,EAAE,CAAC,wBAAU,CAAC,aAAa,CAAC;YAC7C,sBAAsB,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAmD,EAAE,CAAC,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,QAAQ,CAAC;SAC/J,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,gCAAgC,EAAE,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/G,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,4BAA4B,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACzJ,CAAC;IAED,kBAAkB,CAAC,KAA+B,EAAE,QAAyB,EAAE,gBAAwB;QACnG,8EAA8E;QAC9E,MAAM,WAAW,GAAG,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAC9D,MAAM,eAAe,GAAG,WAAW,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,gDAAgD;QAE1G,IAAI,eAAe,KAAK,gBAAgB,EAAE,CAAC;YACvC,qFAAqF;YACrF,OAAO,SAAS,CAAC;QACrB,CAAC;QAED,iEAAiE;QACjE,MAAM,QAAQ,GAAG,KAAK,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;QACtD,OAAO,IAAI,MAAM,CAAC,KAAK,CACnB,QAAQ,CAAC,UAAU,EACnB,QAAQ,CAAC,WAAW,EACpB,QAAQ,CAAC,UAAU,EACnB,QAAQ,CAAC,MAAM,CAClB,CAAC;IACN,CAAC;IAEO,cAAc,CAClB,KAA+B,EAC/B,QAAyB,EACzB,WAAmB,EACnB,KAAU,EACV,IAAyC,EACzC,KAA0B,EAC1B,OAA4B,EAC5B,cAAmC,EACnC,OAAkC;QAElC,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;QAC9E,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;YAChC,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;QAC/B,CAAC;QACD,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACnC,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC;YACvB,IAAI,EAAE,IAAI;YACV,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC;YACpB,KAAK,EAAE,eAAe;YACtB,MAAM,EAAE,cAAc,CAAC,IAAI,CAAC;YAC5B,OAAO;SACV,CAAC,CAAC,CAAC;QACJ,OAAO,EAAE,WAAW,EAAE,CAAC;IAC3B,CAAC;IAED,uBAAuB,CAAC,KAA+B,EAAE,QAAyB;QAC9E,OAAO,IAAI,CAAC,cAAc,CACtB,KAAK,EACL,QAAQ,EACR,wBAAU,CAAC,UAAU,EACrB,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,EAC7B,MAAM,CAAC,SAAS,CAAC,kBAAkB,CAAC,KAAK,EACzC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EACjB,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,EACnB,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAC7B,CAAC;IACN,CAAC;IAED,0BAA0B,CAAC,KAA+B,EAAE,QAAyB;QACjF,OAAO,IAAI,CAAC,cAAc,CACtB,KAAK,EACL,QAAQ,EACR,wBAAU,CAAC,aAAa,EACxB,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,EACnC,MAAM,CAAC,SAAS,CAAC,kBAAkB,CAAC,QAAQ,EAC5C,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,EACzB,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,EACzB,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,EAChC;YACI,KAAK,EAAE,UAAG,CAAC,QAAQ,CAAC,0CAA0C,EAAE,2BAA2B,CAAC;YAC5F,EAAE,EAAE,gCAAgC;SACvC,CACJ,CAAC;IACN,CAAC;IAED,KAAK,CAAC,iCAAiC,CAAC,KAA+B,EAAE,QAAyB;QAC9F,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC;QACtD,MAAM,WAAW,GAAsC,EAAE,CAAC;QAC1D,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YAC/B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,6BAA6B,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACzF,IAAI,QAAQ,EAAE,CAAC;gBACX,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;gBAC9C,IAAI,KAAK,EAAE,CAAC;oBACR,WAAW,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;wBACnC,GAAG,IAAI;wBACP,+DAA+D;wBAC/D,OAAO,EAAE;4BACL,KAAK,EAAE,UAAG,CAAC,QAAQ,CAAC,qCAAqC,EAAE,sBAAsB,CAAC;4BAClF,EAAE,EAAE,4BAA4B;4BAChC,SAAS,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC;yBAC9C;qBACJ,CAAC,CAAC,CAAC,CAAC;gBACT,CAAC;YACL,CAAC;QACL,CAAC;QACD,OAAO,EAAE,WAAW,EAAE,CAAC;IAC3B,CAAC;IAED,sBAAsB,CAAC,KAA+B,EAAE,QAAyB;QAC7E,OAAO,IAAI,CAAC,cAAc,CACtB,KAAK,EACL,QAAQ,EACR,wBAAU,CAAC,aAAa,EACxB,IAAI,CAAC,sBAAsB,CAAC,eAAe,EAAE,EAC7C,MAAM,CAAC,SAAS,CAAC,kBAAkB,CAAC,QAAQ,EAC5C,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,EACf,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EACjB,IAAI,CAAC,EAAE,WAAC,OAAA,MAAA,IAAI,CAAC,WAAW,mCAAI,EAAE,CAAA,EAAA,CACjC,CAAC;IACN,CAAC;IAES,KAAK,CAAC,6BAA6B;;QACzC,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;QACrF,IAAI,CAAC,WAAW,EAAE,CAAC;YACf,OAAO;QACX,CAAC;QACD,MAAM,KAAK,GAAG,WAAW,CAAC,QAAQ,EAAE,CAAC;QACrC,MAAM,QAAQ,GAAG,WAAW,CAAC,WAAW,EAAE,CAAC;QAC3C,IAAI,CAAC,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;YACtB,OAAO;QACX,CAAC;QACD,MAAM,YAAY,GAAG,MAAA,KAAK,CAAC,iBAAiB,CAAC,QAAQ,CAAC,0CAAE,IAAI,CAAC;QAC7D,IAAI,CAAC,YAAY,EAAE,CAAC;YAChB,OAAO;QACX,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,YAAY,EAAE,2BAA2B,CAAC,CAAC;QACzG,IAAI,CAAC,QAAQ,EAAE,CAAC;YACZ,OAAO;QACX,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,2BAA2B,CAAC,CAAC;QACxD,IAAI,CAAC,GAAG,EAAE,CAAC;YACP,OAAO;QACX,CAAC;QACD,WAAW,CAAC,YAAY,CAAC,0BAA0B,EAAE,CAAC;gBAClD,KAAK,EAAE,IAAI,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC;gBACnG,IAAI,EAAE,wBAAU,CAAC,uBAAuB,GAAG,GAAG;aACjD,CAAC,CAAC,CAAC;QACJ,MAAM,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;IACrD,CAAC;IAES,KAAK,CAAC,kBAAkB,CAAC,YAAoB,EAAE,GAAuB;QAC5E,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;QAChE,IAAI,CAAC,QAAQ,IAAI,CAAC,0BAAiB,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC/C,OAAO;QACX,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,iCAAc,CAAC,EAAE,CAAC,CAAC;QAC3D,IAAI,MAAM,YAAY,iCAAc,EAAE,CAAC;YACnC,MAAM,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;QACzC,CAAC;IACL,CAAC;CACJ,CAAA;AA7LY,oEAA4B;AAGlB;IADlB,IAAA,kBAAM,EAAC,0BAAgB,CAAC;;kEACyB;AAG/B;IADlB,IAAA,kBAAM,EAAC,0BAAiB,CAAC;;qEAC4B;AAGnC;IADlB,IAAA,kBAAM,EAAC,iDAAsB,CAAC;;4EACmC;AAG/C;IADlB,IAAA,kBAAM,EAAC,0BAAgB,CAAC;sCACC,0BAAgB;2DAAC;uCAZlC,4BAA4B;IADxC,IAAA,sBAAU,GAAE;GACA,4BAA4B,CA6LxC"}
|
|
@@ -4,6 +4,7 @@ import { BaseWidget, ExtractableWidget, Message, PreferenceService, StatefulWidg
|
|
|
4
4
|
import { AIChatInputWidget } from './chat-input-widget';
|
|
5
5
|
import { ChatViewTreeWidget } from './chat-tree-view/chat-view-tree-widget';
|
|
6
6
|
import { AIActivationService } from '@theia/ai-core/lib/browser/ai-activation-service';
|
|
7
|
+
import { AIVariableResolutionRequest } from '@theia/ai-core';
|
|
7
8
|
export declare namespace ChatViewWidget {
|
|
8
9
|
interface State {
|
|
9
10
|
locked?: boolean;
|
|
@@ -32,7 +33,8 @@ export declare class ChatViewWidget extends BaseWidget implements ExtractableWid
|
|
|
32
33
|
protected get state(): ChatViewWidget.State;
|
|
33
34
|
protected set state(state: ChatViewWidget.State);
|
|
34
35
|
get onStateChanged(): Event<ChatViewWidget.State>;
|
|
35
|
-
protected onQuery(query: string): Promise<void>;
|
|
36
|
+
protected onQuery(query: string, contextVariableRequests?: AIVariableResolutionRequest[]): Promise<void>;
|
|
37
|
+
protected onUnpin(): void;
|
|
36
38
|
protected onCancel(requestModel: ChatRequestModel): void;
|
|
37
39
|
protected onDeleteChangeSet(sessionId: string): void;
|
|
38
40
|
protected onDeleteChangeSetElement(sessionId: string, index: number): void;
|
|
@@ -40,5 +42,6 @@ export declare class ChatViewWidget extends BaseWidget implements ExtractableWid
|
|
|
40
42
|
unlock(): void;
|
|
41
43
|
get isLocked(): boolean;
|
|
42
44
|
get isExtractable(): boolean;
|
|
45
|
+
addContext(variable: AIVariableResolutionRequest): void;
|
|
43
46
|
}
|
|
44
47
|
//# sourceMappingURL=chat-view-widget.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-view-widget.d.ts","sourceRoot":"","sources":["../../src/browser/chat-view-widget.tsx"],"names":[],"mappings":"AAeA,OAAO,EAAE,cAAc,EAAa,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACxF,OAAO,EAAe,gBAAgB,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACzF,OAAO,EAAE,UAAU,EAAW,iBAAiB,EAAE,OAAO,EAAe,iBAAiB,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAG1I,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAC5E,OAAO,EAAE,mBAAmB,EAAE,MAAM,kDAAkD,CAAC;
|
|
1
|
+
{"version":3,"file":"chat-view-widget.d.ts","sourceRoot":"","sources":["../../src/browser/chat-view-widget.tsx"],"names":[],"mappings":"AAeA,OAAO,EAAE,cAAc,EAAa,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACxF,OAAO,EAAe,gBAAgB,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACzF,OAAO,EAAE,UAAU,EAAW,iBAAiB,EAAE,OAAO,EAAe,iBAAiB,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAG1I,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAC5E,OAAO,EAAE,mBAAmB,EAAE,MAAM,kDAAkD,CAAC;AACvF,OAAO,EAAE,2BAA2B,EAAE,MAAM,gBAAgB,CAAC;AAE7D,yBAAiB,cAAc,CAAC;IAC5B,UAAiB,KAAK;QAClB,MAAM,CAAC,EAAE,OAAO,CAAC;KACpB;CACJ;AAED,qBACa,cAAe,SAAQ,UAAW,YAAW,iBAAiB,EAAE,cAAc;IA6BnF,QAAQ,CAAC,UAAU,EAAE,kBAAkB;IAEvC,QAAQ,CAAC,WAAW,EAAE,iBAAiB;IA7B3C,OAAc,EAAE,SAAsB;IACtC,MAAM,CAAC,KAAK,SAAsC;IAGlD,SAAS,CAAC,WAAW,EAAE,WAAW,CAAC;IAGnC,SAAS,CAAC,cAAc,EAAE,cAAc,CAAC;IAGzC,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAGxD,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IAGlD,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,mBAAmB,CAAC;IAE1D,SAAS,CAAC,WAAW,EAAE,WAAW,CAAC;IAEnC,SAAS,CAAC,MAAM,EAAE,cAAc,CAAC,KAAK,CAAqB;IAC3D,SAAS,CAAC,QAAQ,CAAC,qBAAqB,gCAAuC;IAE/E,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;gBAIvB,UAAU,EAAE,kBAAkB,EAE9B,WAAW,EAAE,iBAAiB;IAa3C,SAAS,CAAC,IAAI,IAAI,IAAI;IAsCtB,SAAS,CAAC,aAAa,IAAI,IAAI;cAmBZ,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI;IAKxD,UAAU,IAAI,MAAM;IAIpB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,IAAI;IAQpE,SAAS,KAAK,KAAK,IAAI,cAAc,CAAC,KAAK,CAE1C;IAED,SAAS,KAAK,KAAK,CAAC,KAAK,EAAE,cAAc,CAAC,KAAK,EAG9C;IAED,IAAI,cAAc,IAAI,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,CAEhD;cAEe,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,uBAAuB,CAAC,EAAE,2BAA2B,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAqB9G,SAAS,CAAC,OAAO,IAAI,IAAI;IAKzB,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,gBAAgB,GAAG,IAAI;IAIxD,SAAS,CAAC,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAIpD,SAAS,CAAC,wBAAwB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAI1E,IAAI,IAAI,IAAI;IAIZ,MAAM,IAAI,IAAI;IAId,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED,IAAI,aAAa,IAAI,OAAO,CAE3B;IAED,UAAU,CAAC,QAAQ,EAAE,2BAA2B,GAAG,IAAI;CAG1D"}
|
|
@@ -57,8 +57,10 @@ let ChatViewWidget = ChatViewWidget_1 = class ChatViewWidget extends browser_1.B
|
|
|
57
57
|
layout.addWidget(this.inputWidget);
|
|
58
58
|
this.chatSession = this.chatService.createSession();
|
|
59
59
|
this.inputWidget.onQuery = this.onQuery.bind(this);
|
|
60
|
+
this.inputWidget.onUnpin = this.onUnpin.bind(this);
|
|
60
61
|
this.inputWidget.onCancel = this.onCancel.bind(this);
|
|
61
62
|
this.inputWidget.chatModel = this.chatSession.model;
|
|
63
|
+
this.inputWidget.pinnedAgent = this.chatSession.pinnedAgent;
|
|
62
64
|
this.inputWidget.onDeleteChangeSet = this.onDeleteChangeSet.bind(this);
|
|
63
65
|
this.inputWidget.onDeleteChangeSetElement = this.onDeleteChangeSetElement.bind(this);
|
|
64
66
|
this.treeWidget.trackChatModel(this.chatSession.model);
|
|
@@ -78,6 +80,7 @@ let ChatViewWidget = ChatViewWidget_1 = class ChatViewWidget extends browser_1.B
|
|
|
78
80
|
this.chatSession = session;
|
|
79
81
|
this.treeWidget.trackChatModel(this.chatSession.model);
|
|
80
82
|
this.inputWidget.chatModel = this.chatSession.model;
|
|
83
|
+
this.inputWidget.pinnedAgent = this.chatSession.pinnedAgent;
|
|
81
84
|
if (event.focus) {
|
|
82
85
|
this.show();
|
|
83
86
|
}
|
|
@@ -111,19 +114,20 @@ let ChatViewWidget = ChatViewWidget_1 = class ChatViewWidget extends browser_1.B
|
|
|
111
114
|
get onStateChanged() {
|
|
112
115
|
return this.onStateChangedEmitter.event;
|
|
113
116
|
}
|
|
114
|
-
async onQuery(query) {
|
|
117
|
+
async onQuery(query, contextVariableRequests) {
|
|
115
118
|
if (query.length === 0) {
|
|
116
119
|
return;
|
|
117
120
|
}
|
|
118
|
-
const chatRequest = {
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
const requestProgress = await this.chatService.sendRequest(this.chatSession.id, chatRequest);
|
|
121
|
+
const chatRequest = { text: query };
|
|
122
|
+
const context = { variableRequests: contextVariableRequests !== null && contextVariableRequests !== void 0 ? contextVariableRequests : [] };
|
|
123
|
+
const requestProgress = await this.chatService.sendRequest(this.chatSession.id, chatRequest, context);
|
|
122
124
|
requestProgress === null || requestProgress === void 0 ? void 0 : requestProgress.responseCompleted.then(responseModel => {
|
|
123
125
|
var _a, _b;
|
|
124
126
|
if (responseModel.isError) {
|
|
125
|
-
this.messageService.error((_b = (_a = responseModel.errorObject) === null || _a === void 0 ? void 0 : _a.message) !== null && _b !== void 0 ? _b : 'An error occurred during chat service invocation.');
|
|
127
|
+
this.messageService.error((_b = (_a = responseModel.errorObject) === null || _a === void 0 ? void 0 : _a.message) !== null && _b !== void 0 ? _b : nls_1.nls.localize('theia/ai/chat-ui/errorChatInvocation', 'An error occurred during chat service invocation.'));
|
|
126
128
|
}
|
|
129
|
+
}).finally(() => {
|
|
130
|
+
this.inputWidget.pinnedAgent = this.chatSession.pinnedAgent;
|
|
127
131
|
});
|
|
128
132
|
if (!requestProgress) {
|
|
129
133
|
this.messageService.error(`Was not able to send request "${chatRequest.text}" to session ${this.chatSession.id}`);
|
|
@@ -131,6 +135,10 @@ let ChatViewWidget = ChatViewWidget_1 = class ChatViewWidget extends browser_1.B
|
|
|
131
135
|
}
|
|
132
136
|
// Tree Widget currently tracks the ChatModel itself. Therefore no notification necessary.
|
|
133
137
|
}
|
|
138
|
+
onUnpin() {
|
|
139
|
+
this.chatSession.pinnedAgent = undefined;
|
|
140
|
+
this.inputWidget.pinnedAgent = this.chatSession.pinnedAgent;
|
|
141
|
+
}
|
|
134
142
|
onCancel(requestModel) {
|
|
135
143
|
this.chatService.cancelRequest(requestModel.session.id, requestModel.id);
|
|
136
144
|
}
|
|
@@ -152,10 +160,13 @@ let ChatViewWidget = ChatViewWidget_1 = class ChatViewWidget extends browser_1.B
|
|
|
152
160
|
get isExtractable() {
|
|
153
161
|
return this.secondaryWindow === undefined;
|
|
154
162
|
}
|
|
163
|
+
addContext(variable) {
|
|
164
|
+
this.inputWidget.addContext(variable);
|
|
165
|
+
}
|
|
155
166
|
};
|
|
156
167
|
exports.ChatViewWidget = ChatViewWidget;
|
|
157
168
|
ChatViewWidget.ID = 'chat-view-widget';
|
|
158
|
-
ChatViewWidget.LABEL =
|
|
169
|
+
ChatViewWidget.LABEL = `${nls_1.nls.localizeByDefault('Chat')}`;
|
|
159
170
|
tslib_1.__decorate([
|
|
160
171
|
(0, inversify_1.inject)(ai_chat_1.ChatService),
|
|
161
172
|
tslib_1.__metadata("design:type", Object)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-view-widget.js","sourceRoot":"","sources":["../../src/browser/chat-view-widget.tsx"],"names":[],"mappings":";;;;;AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;AAChF,sCAAwF;AACxF,4CAAyF;AACzF,qDAA0I;AAC1I,oDAAiD;AACjD,4DAAiF;AACjF,2DAAwD;AACxD,kFAA4E;AAC5E,4FAAuF;
|
|
1
|
+
{"version":3,"file":"chat-view-widget.js","sourceRoot":"","sources":["../../src/browser/chat-view-widget.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { AIContextVariable, AIVariableResolutionRequest, AIVariableService } from '@theia/ai-core';
|
|
2
|
+
import { QuickInputService } from '@theia/core';
|
|
3
|
+
export declare class ContextVariablePicker {
|
|
4
|
+
protected readonly variableService: AIVariableService;
|
|
5
|
+
protected readonly quickInputService: QuickInputService;
|
|
6
|
+
pickContextVariable(): Promise<AIVariableResolutionRequest | undefined>;
|
|
7
|
+
protected useGenericArgumentPicker(variable: AIContextVariable): Promise<AIVariableResolutionRequest | undefined>;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=context-variable-picker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-variable-picker.d.ts","sourceRoot":"","sources":["../../src/browser/context-variable-picker.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,iBAAiB,EAAE,2BAA2B,EAAE,iBAAiB,EAAc,MAAM,gBAAgB,CAAC;AAC/G,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAKhD,qBACa,qBAAqB;IAG9B,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,iBAAiB,CAAC;IAGtD,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAElD,mBAAmB,IAAI,OAAO,CAAC,2BAA2B,GAAG,SAAS,CAAC;cAgC7D,wBAAwB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,OAAO,CAAC,2BAA2B,GAAG,SAAS,CAAC;CAqB1H"}
|
|
@@ -0,0 +1,86 @@
|
|
|
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.ContextVariablePicker = void 0;
|
|
19
|
+
const tslib_1 = require("tslib");
|
|
20
|
+
const ai_core_1 = require("@theia/ai-core");
|
|
21
|
+
const core_1 = require("@theia/core");
|
|
22
|
+
const inversify_1 = require("@theia/core/shared/inversify");
|
|
23
|
+
const QUERY_CONTEXT = { type: 'context-variable-picker' };
|
|
24
|
+
let ContextVariablePicker = class ContextVariablePicker {
|
|
25
|
+
async pickContextVariable() {
|
|
26
|
+
const variables = this.variableService.getContextVariables();
|
|
27
|
+
const selection = await this.quickInputService.showQuickPick(variables.map(v => {
|
|
28
|
+
var _a;
|
|
29
|
+
return ({
|
|
30
|
+
id: v.id,
|
|
31
|
+
label: (_a = v.label) !== null && _a !== void 0 ? _a : v.name,
|
|
32
|
+
variable: v,
|
|
33
|
+
iconClasses: v.iconClasses,
|
|
34
|
+
});
|
|
35
|
+
}), { placeholder: 'Select a context variable to be attached to the message', });
|
|
36
|
+
if (!selection) {
|
|
37
|
+
return undefined;
|
|
38
|
+
}
|
|
39
|
+
const variable = selection.variable;
|
|
40
|
+
if (!variable.args || variable.args.length === 0) {
|
|
41
|
+
return { variable };
|
|
42
|
+
}
|
|
43
|
+
const argumentPicker = await this.variableService.getArgumentPicker(variable.name, QUERY_CONTEXT);
|
|
44
|
+
if (!argumentPicker) {
|
|
45
|
+
return this.useGenericArgumentPicker(variable);
|
|
46
|
+
}
|
|
47
|
+
const arg = await argumentPicker(QUERY_CONTEXT);
|
|
48
|
+
if (!arg) {
|
|
49
|
+
return undefined;
|
|
50
|
+
}
|
|
51
|
+
return { variable, arg };
|
|
52
|
+
}
|
|
53
|
+
async useGenericArgumentPicker(variable) {
|
|
54
|
+
var _a;
|
|
55
|
+
const args = [];
|
|
56
|
+
for (const argument of (_a = variable.args) !== null && _a !== void 0 ? _a : []) {
|
|
57
|
+
const placeHolder = argument.description;
|
|
58
|
+
let input;
|
|
59
|
+
if (argument.enum) {
|
|
60
|
+
const picked = await this.quickInputService.pick(argument.enum.map(enumItem => ({ label: enumItem })), { placeHolder, canPickMany: false });
|
|
61
|
+
input = picked === null || picked === void 0 ? void 0 : picked.label;
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
input = await this.quickInputService.input({ placeHolder });
|
|
65
|
+
}
|
|
66
|
+
if (!input && !argument.isOptional) {
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
args.push(input !== null && input !== void 0 ? input : '');
|
|
70
|
+
}
|
|
71
|
+
return { variable, arg: args.join(ai_core_1.PromptText.VARIABLE_SEPARATOR_CHAR) };
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
exports.ContextVariablePicker = ContextVariablePicker;
|
|
75
|
+
tslib_1.__decorate([
|
|
76
|
+
(0, inversify_1.inject)(ai_core_1.AIVariableService),
|
|
77
|
+
tslib_1.__metadata("design:type", Object)
|
|
78
|
+
], ContextVariablePicker.prototype, "variableService", void 0);
|
|
79
|
+
tslib_1.__decorate([
|
|
80
|
+
(0, inversify_1.inject)(core_1.QuickInputService),
|
|
81
|
+
tslib_1.__metadata("design:type", Object)
|
|
82
|
+
], ContextVariablePicker.prototype, "quickInputService", void 0);
|
|
83
|
+
exports.ContextVariablePicker = ContextVariablePicker = tslib_1.__decorate([
|
|
84
|
+
(0, inversify_1.injectable)()
|
|
85
|
+
], ContextVariablePicker);
|
|
86
|
+
//# sourceMappingURL=context-variable-picker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-variable-picker.js","sourceRoot":"","sources":["../../src/browser/context-variable-picker.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@theia/ai-chat-ui",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.59.0-next.62+9e43c93ad",
|
|
4
4
|
"description": "Theia - AI Chat UI Extension",
|
|
5
5
|
"dependencies": {
|
|
6
|
-
"@theia/ai-chat": "1.
|
|
7
|
-
"@theia/ai-core": "1.
|
|
8
|
-
"@theia/core": "1.
|
|
9
|
-
"@theia/editor": "1.
|
|
10
|
-
"@theia/editor-preview": "1.
|
|
11
|
-
"@theia/filesystem": "1.
|
|
12
|
-
"@theia/monaco": "1.
|
|
6
|
+
"@theia/ai-chat": "1.59.0-next.62+9e43c93ad",
|
|
7
|
+
"@theia/ai-core": "1.59.0-next.62+9e43c93ad",
|
|
8
|
+
"@theia/core": "1.59.0-next.62+9e43c93ad",
|
|
9
|
+
"@theia/editor": "1.59.0-next.62+9e43c93ad",
|
|
10
|
+
"@theia/editor-preview": "1.59.0-next.62+9e43c93ad",
|
|
11
|
+
"@theia/filesystem": "1.59.0-next.62+9e43c93ad",
|
|
12
|
+
"@theia/monaco": "1.59.0-next.62+9e43c93ad",
|
|
13
13
|
"@theia/monaco-editor-core": "1.96.302",
|
|
14
|
-
"@theia/workspace": "1.
|
|
14
|
+
"@theia/workspace": "1.59.0-next.62+9e43c93ad",
|
|
15
15
|
"minimatch": "^5.1.0",
|
|
16
16
|
"tslib": "^2.6.2",
|
|
17
17
|
"uuid": "^9.0.1"
|
|
@@ -50,10 +50,10 @@
|
|
|
50
50
|
"watch": "theiaext watch"
|
|
51
51
|
},
|
|
52
52
|
"devDependencies": {
|
|
53
|
-
"@theia/ext-scripts": "1.58.
|
|
53
|
+
"@theia/ext-scripts": "1.58.0"
|
|
54
54
|
},
|
|
55
55
|
"nyc": {
|
|
56
56
|
"extends": "../../configs/nyc.json"
|
|
57
57
|
},
|
|
58
|
-
"gitHead": "
|
|
58
|
+
"gitHead": "9e43c93ad61ea977db3974207bac5d7c1fd3ccd6"
|
|
59
59
|
}
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
// *****************************************************************************
|
|
16
16
|
|
|
17
17
|
import { inject, injectable } from '@theia/core/shared/inversify';
|
|
18
|
-
import { CommandRegistry, QuickInputButton, QuickInputService, QuickPickItem } from '@theia/core';
|
|
18
|
+
import { CommandRegistry, isOSX, nls, QuickInputButton, QuickInputService, QuickPickItem } from '@theia/core';
|
|
19
19
|
import { Widget } from '@theia/core/lib/browser';
|
|
20
20
|
import { AI_CHAT_NEW_CHAT_WINDOW_COMMAND, AI_CHAT_SHOW_CHATS_COMMAND, ChatCommands } from './chat-view-commands';
|
|
21
21
|
import { ChatAgentLocation, ChatService } from '@theia/ai-chat';
|
|
@@ -37,7 +37,7 @@ export class AIChatContribution extends AbstractViewContribution<ChatViewWidget>
|
|
|
37
37
|
|
|
38
38
|
protected static readonly REMOVE_CHAT_BUTTON: QuickInputButton = {
|
|
39
39
|
iconClass: 'codicon-remove-close',
|
|
40
|
-
tooltip: 'Remove Chat',
|
|
40
|
+
tooltip: nls.localize('theia/ai/chat-ui/removeChat', 'Remove Chat'),
|
|
41
41
|
};
|
|
42
42
|
|
|
43
43
|
@inject(SecondaryWindowHandler)
|
|
@@ -48,11 +48,11 @@ export class AIChatContribution extends AbstractViewContribution<ChatViewWidget>
|
|
|
48
48
|
widgetId: ChatViewWidget.ID,
|
|
49
49
|
widgetName: ChatViewWidget.LABEL,
|
|
50
50
|
defaultWidgetOptions: {
|
|
51
|
-
area: '
|
|
51
|
+
area: 'right',
|
|
52
52
|
rank: 100
|
|
53
53
|
},
|
|
54
54
|
toggleCommandId: AI_CHAT_TOGGLE_COMMAND_ID,
|
|
55
|
-
toggleKeybinding: '
|
|
55
|
+
toggleKeybinding: isOSX ? 'ctrl+cmd+i' : 'ctrl+alt+i'
|
|
56
56
|
});
|
|
57
57
|
}
|
|
58
58
|
|
|
@@ -90,13 +90,13 @@ export class AIChatContribution extends AbstractViewContribution<ChatViewWidget>
|
|
|
90
90
|
registry.registerItem({
|
|
91
91
|
id: AI_CHAT_NEW_CHAT_WINDOW_COMMAND.id,
|
|
92
92
|
command: AI_CHAT_NEW_CHAT_WINDOW_COMMAND.id,
|
|
93
|
-
tooltip: 'New Chat',
|
|
93
|
+
tooltip: nls.localizeByDefault('New Chat'),
|
|
94
94
|
isVisible: widget => this.isChatViewWidget(widget)
|
|
95
95
|
});
|
|
96
96
|
registry.registerItem({
|
|
97
97
|
id: AI_CHAT_SHOW_CHATS_COMMAND.id,
|
|
98
98
|
command: AI_CHAT_SHOW_CHATS_COMMAND.id,
|
|
99
|
-
tooltip: 'Show Chats...',
|
|
99
|
+
tooltip: nls.localizeByDefault('Show Chats...'),
|
|
100
100
|
isVisible: widget => this.isChatViewWidget(widget),
|
|
101
101
|
});
|
|
102
102
|
}
|
|
@@ -122,14 +122,14 @@ export class AIChatContribution extends AbstractViewContribution<ChatViewWidget>
|
|
|
122
122
|
protected askForChatSession(): Promise<QuickPickItem | undefined> {
|
|
123
123
|
const getItems = () =>
|
|
124
124
|
this.chatService.getSessions().filter(session => !session.isActive).map(session => <QuickPickItem>({
|
|
125
|
-
label: session.title ?? 'New Chat',
|
|
125
|
+
label: session.title ?? nls.localizeByDefault('New Chat'),
|
|
126
126
|
id: session.id,
|
|
127
127
|
buttons: [AIChatContribution.REMOVE_CHAT_BUTTON]
|
|
128
128
|
})).reverse();
|
|
129
129
|
|
|
130
130
|
const defer = new Deferred<QuickPickItem | undefined>();
|
|
131
131
|
const quickPick = this.quickInputService.createQuickPick();
|
|
132
|
-
quickPick.placeholder = 'Select chat';
|
|
132
|
+
quickPick.placeholder = nls.localize('theia/ai/chat-ui/selectChat', 'Select chat');
|
|
133
133
|
quickPick.canSelectMany = false;
|
|
134
134
|
quickPick.items = getItems();
|
|
135
135
|
|
|
@@ -18,7 +18,9 @@ import { bindContributionProvider, CommandContribution, MenuContribution } from
|
|
|
18
18
|
import { bindViewContribution, FrontendApplicationContribution, WidgetFactory } from '@theia/core/lib/browser';
|
|
19
19
|
import { TabBarToolbarContribution } from '@theia/core/lib/browser/shell/tab-bar-toolbar';
|
|
20
20
|
import { ContainerModule, interfaces } from '@theia/core/shared/inversify';
|
|
21
|
+
import { EditorPreviewManager } from '@theia/editor-preview/lib/browser/editor-preview-manager';
|
|
21
22
|
import { EditorManager } from '@theia/editor/lib/browser';
|
|
23
|
+
import '../../src/browser/style/index.css';
|
|
22
24
|
import { AIChatContribution } from './ai-chat-ui-contribution';
|
|
23
25
|
import { AIChatInputConfiguration, AIChatInputWidget } from './chat-input-widget';
|
|
24
26
|
import { ChatNodeToolbarActionContribution } from './chat-node-toolbar-action-contribution';
|
|
@@ -41,15 +43,14 @@ import {
|
|
|
41
43
|
TextFragmentSelectionResolver,
|
|
42
44
|
TypeDocSymbolSelectionResolver,
|
|
43
45
|
} from './chat-response-renderer/ai-editor-manager';
|
|
46
|
+
import { QuestionPartRenderer } from './chat-response-renderer/question-part-renderer';
|
|
44
47
|
import { createChatViewTreeWidget } from './chat-tree-view';
|
|
45
48
|
import { ChatViewTreeWidget } from './chat-tree-view/chat-view-tree-widget';
|
|
46
49
|
import { ChatViewMenuContribution } from './chat-view-contribution';
|
|
47
50
|
import { ChatViewLanguageContribution } from './chat-view-language-contribution';
|
|
48
51
|
import { ChatViewWidget } from './chat-view-widget';
|
|
49
52
|
import { ChatViewWidgetToolbarContribution } from './chat-view-widget-toolbar-contribution';
|
|
50
|
-
import {
|
|
51
|
-
import { QuestionPartRenderer } from './chat-response-renderer/question-part-renderer';
|
|
52
|
-
import '../../src/browser/style/index.css';
|
|
53
|
+
import { ContextVariablePicker } from './context-variable-picker';
|
|
53
54
|
|
|
54
55
|
export default new ContainerModule((bind, _unbind, _isBound, rebind) => {
|
|
55
56
|
bindViewContribution(bind, AIChatContribution);
|
|
@@ -61,7 +62,8 @@ export default new ContainerModule((bind, _unbind, _isBound, rebind) => {
|
|
|
61
62
|
|
|
62
63
|
bind(AIChatInputWidget).toSelf();
|
|
63
64
|
bind(AIChatInputConfiguration).toConstantValue({
|
|
64
|
-
showContext:
|
|
65
|
+
showContext: true,
|
|
66
|
+
showPinnedAgent: true
|
|
65
67
|
});
|
|
66
68
|
bind(WidgetFactory).toDynamicValue(({ container }) => ({
|
|
67
69
|
id: AIChatInputWidget.ID,
|
|
@@ -76,6 +78,8 @@ export default new ContainerModule((bind, _unbind, _isBound, rebind) => {
|
|
|
76
78
|
createWidget: () => container.get(ChatViewTreeWidget)
|
|
77
79
|
})).inSingletonScope();
|
|
78
80
|
|
|
81
|
+
bind(ContextVariablePicker).toSelf().inSingletonScope();
|
|
82
|
+
|
|
79
83
|
bind(ChatResponsePartRenderer).to(HorizontalLayoutPartRenderer).inSingletonScope();
|
|
80
84
|
bind(ChatResponsePartRenderer).to(ErrorPartRenderer).inSingletonScope();
|
|
81
85
|
bind(ChatResponsePartRenderer).to(MarkdownPartRenderer).inSingletonScope();
|