@theia/ai-chat-ui 1.68.0-next.8 → 1.68.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +33 -0
- package/lib/browser/ai-chat-ui-contribution.d.ts +2 -1
- package/lib/browser/ai-chat-ui-contribution.d.ts.map +1 -1
- package/lib/browser/ai-chat-ui-contribution.js +41 -32
- 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 +15 -6
- package/lib/browser/ai-chat-ui-frontend-module.js.map +1 -1
- package/lib/browser/change-set-actions/change-set-accept-action.d.ts +0 -1
- package/lib/browser/change-set-actions/change-set-accept-action.d.ts.map +1 -1
- package/lib/browser/change-set-actions/change-set-action-service.d.ts +0 -1
- package/lib/browser/change-set-actions/change-set-action-service.d.ts.map +1 -1
- package/lib/browser/change-set-actions/change-set-action-service.js +2 -2
- package/lib/browser/change-set-actions/change-set-action-service.js.map +1 -1
- package/lib/browser/chat-focus-contribution.d.ts +14 -0
- package/lib/browser/chat-focus-contribution.d.ts.map +1 -0
- package/lib/browser/chat-focus-contribution.js +102 -0
- package/lib/browser/chat-focus-contribution.js.map +1 -0
- package/lib/browser/chat-input-agent-suggestions.d.ts +0 -1
- package/lib/browser/chat-input-agent-suggestions.d.ts.map +1 -1
- package/lib/browser/chat-input-agent-suggestions.js +1 -1
- package/lib/browser/chat-input-agent-suggestions.js.map +1 -1
- package/lib/browser/chat-input-history-contribution.js +6 -10
- package/lib/browser/chat-input-history-contribution.js.map +1 -1
- package/lib/browser/chat-input-mode-contribution.js +1 -2
- package/lib/browser/chat-input-mode-contribution.js.map +1 -1
- package/lib/browser/chat-input-widget.d.ts +0 -1
- package/lib/browser/chat-input-widget.d.ts.map +1 -1
- package/lib/browser/chat-input-widget.js +106 -96
- package/lib/browser/chat-input-widget.js.map +1 -1
- package/lib/browser/chat-progress-message.d.ts +0 -1
- package/lib/browser/chat-progress-message.d.ts.map +1 -1
- package/lib/browser/chat-response-part-renderer.d.ts +0 -1
- package/lib/browser/chat-response-part-renderer.d.ts.map +1 -1
- package/lib/browser/chat-response-renderer/ai-selection-resolver.js +4 -5
- package/lib/browser/chat-response-renderer/ai-selection-resolver.js.map +1 -1
- package/lib/browser/chat-response-renderer/code-part-renderer.d.ts +0 -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 +6 -9
- package/lib/browser/chat-response-renderer/code-part-renderer.js.map +1 -1
- package/lib/browser/chat-response-renderer/command-part-renderer.d.ts +0 -1
- package/lib/browser/chat-response-renderer/command-part-renderer.d.ts.map +1 -1
- package/lib/browser/chat-response-renderer/command-part-renderer.js +7 -4
- package/lib/browser/chat-response-renderer/command-part-renderer.js.map +1 -1
- package/lib/browser/chat-response-renderer/delegation-response-renderer.d.ts +0 -1
- package/lib/browser/chat-response-renderer/delegation-response-renderer.d.ts.map +1 -1
- package/lib/browser/chat-response-renderer/delegation-response-renderer.js +3 -4
- package/lib/browser/chat-response-renderer/delegation-response-renderer.js.map +1 -1
- package/lib/browser/chat-response-renderer/error-part-renderer.d.ts +0 -1
- package/lib/browser/chat-response-renderer/error-part-renderer.d.ts.map +1 -1
- package/lib/browser/chat-response-renderer/horizontal-layout-part-renderer.d.ts +0 -1
- package/lib/browser/chat-response-renderer/horizontal-layout-part-renderer.d.ts.map +1 -1
- package/lib/browser/chat-response-renderer/index.d.ts +1 -0
- package/lib/browser/chat-response-renderer/index.d.ts.map +1 -1
- package/lib/browser/chat-response-renderer/index.js +1 -0
- package/lib/browser/chat-response-renderer/index.js.map +1 -1
- package/lib/browser/chat-response-renderer/markdown-part-renderer.d.ts +0 -1
- package/lib/browser/chat-response-renderer/markdown-part-renderer.d.ts.map +1 -1
- package/lib/browser/chat-response-renderer/markdown-part-renderer.js +7 -9
- package/lib/browser/chat-response-renderer/markdown-part-renderer.js.map +1 -1
- package/lib/browser/chat-response-renderer/not-available-toolcall-renderer.d.ts +17 -0
- package/lib/browser/chat-response-renderer/not-available-toolcall-renderer.d.ts.map +1 -0
- package/lib/browser/chat-response-renderer/not-available-toolcall-renderer.js +56 -0
- package/lib/browser/chat-response-renderer/not-available-toolcall-renderer.js.map +1 -0
- package/lib/browser/chat-response-renderer/progress-part-renderer.d.ts +0 -1
- package/lib/browser/chat-response-renderer/progress-part-renderer.d.ts.map +1 -1
- package/lib/browser/chat-response-renderer/question-part-renderer.d.ts +0 -1
- package/lib/browser/chat-response-renderer/question-part-renderer.d.ts.map +1 -1
- package/lib/browser/chat-response-renderer/question-part-renderer.js +6 -9
- package/lib/browser/chat-response-renderer/question-part-renderer.js.map +1 -1
- package/lib/browser/chat-response-renderer/text-part-renderer.d.ts +0 -1
- package/lib/browser/chat-response-renderer/text-part-renderer.d.ts.map +1 -1
- package/lib/browser/chat-response-renderer/thinking-part-renderer.d.ts +0 -1
- package/lib/browser/chat-response-renderer/thinking-part-renderer.d.ts.map +1 -1
- package/lib/browser/chat-response-renderer/tool-confirmation.d.ts +29 -10
- package/lib/browser/chat-response-renderer/tool-confirmation.d.ts.map +1 -1
- package/lib/browser/chat-response-renderer/tool-confirmation.js +219 -65
- package/lib/browser/chat-response-renderer/tool-confirmation.js.map +1 -1
- package/lib/browser/chat-response-renderer/tool-confirmation.spec.d.ts +2 -0
- package/lib/browser/chat-response-renderer/tool-confirmation.spec.d.ts.map +1 -0
- package/lib/browser/chat-response-renderer/tool-confirmation.spec.js +100 -0
- package/lib/browser/chat-response-renderer/tool-confirmation.spec.js.map +1 -0
- package/lib/browser/chat-response-renderer/toolcall-part-renderer.d.ts +5 -3
- package/lib/browser/chat-response-renderer/toolcall-part-renderer.d.ts.map +1 -1
- package/lib/browser/chat-response-renderer/toolcall-part-renderer.js +21 -11
- package/lib/browser/chat-response-renderer/toolcall-part-renderer.js.map +1 -1
- package/lib/browser/chat-response-renderer/unknown-part-renderer.d.ts +0 -1
- package/lib/browser/chat-response-renderer/unknown-part-renderer.d.ts.map +1 -1
- package/lib/browser/chat-response-renderer/unknown-part-renderer.js +1 -2
- package/lib/browser/chat-response-renderer/unknown-part-renderer.js.map +1 -1
- package/lib/browser/chat-tree-view/chat-view-tree-container.js +1 -2
- package/lib/browser/chat-tree-view/chat-view-tree-container.js.map +1 -1
- package/lib/browser/chat-tree-view/chat-view-tree-input-widget.js +2 -3
- package/lib/browser/chat-tree-view/chat-view-tree-input-widget.js.map +1 -1
- package/lib/browser/chat-tree-view/chat-view-tree-widget.d.ts +3 -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 +49 -42
- package/lib/browser/chat-tree-view/chat-view-tree-widget.js.map +1 -1
- package/lib/browser/chat-tree-view/prompt-variant-badge.d.ts +0 -1
- package/lib/browser/chat-tree-view/prompt-variant-badge.d.ts.map +1 -1
- package/lib/browser/chat-tree-view/sub-chat-widget.d.ts +0 -1
- package/lib/browser/chat-tree-view/sub-chat-widget.d.ts.map +1 -1
- package/lib/browser/chat-view-commands.d.ts.map +1 -1
- package/lib/browser/chat-view-commands.js +2 -2
- package/lib/browser/chat-view-commands.js.map +1 -1
- package/lib/browser/chat-view-contribution.js +7 -7
- package/lib/browser/chat-view-contribution.js.map +1 -1
- package/lib/browser/chat-view-language-contribution.js +3 -4
- package/lib/browser/chat-view-language-contribution.js.map +1 -1
- package/lib/browser/chat-view-widget.js +9 -10
- package/lib/browser/chat-view-widget.js.map +1 -1
- package/lib/browser/context-variable-picker.js +9 -13
- package/lib/browser/context-variable-picker.js.map +1 -1
- package/lib/browser/session-storage-preference-renderer.d.ts +127 -0
- package/lib/browser/session-storage-preference-renderer.d.ts.map +1 -0
- package/lib/browser/session-storage-preference-renderer.js +490 -0
- package/lib/browser/session-storage-preference-renderer.js.map +1 -0
- package/package.json +12 -11
- package/src/browser/ai-chat-ui-contribution.ts +19 -7
- package/src/browser/ai-chat-ui-frontend-module.ts +13 -0
- package/src/browser/chat-focus-contribution.ts +102 -0
- package/src/browser/chat-input-widget.tsx +99 -27
- package/src/browser/chat-response-renderer/index.ts +1 -0
- package/src/browser/chat-response-renderer/not-available-toolcall-renderer.tsx +57 -0
- package/src/browser/chat-response-renderer/tool-confirmation.spec.ts +108 -0
- package/src/browser/chat-response-renderer/tool-confirmation.tsx +379 -95
- package/src/browser/chat-response-renderer/toolcall-part-renderer.tsx +27 -13
- package/src/browser/chat-tree-view/chat-view-tree-widget.tsx +33 -5
- package/src/browser/chat-view-commands.ts +2 -2
- package/src/browser/session-storage-preference-renderer.ts +657 -0
- package/src/browser/style/index.css +73 -26
- package/src/browser/style/session-storage-preference.css +134 -0
|
@@ -23,6 +23,7 @@ import {
|
|
|
23
23
|
ChatService,
|
|
24
24
|
EditableChatRequestModel,
|
|
25
25
|
ParsedChatRequestAgentPart,
|
|
26
|
+
ParsedChatRequestFunctionPart,
|
|
26
27
|
ParsedChatRequestVariablePart,
|
|
27
28
|
type ChatRequest,
|
|
28
29
|
type ChatHierarchyBranch,
|
|
@@ -46,6 +47,7 @@ import {
|
|
|
46
47
|
Widget,
|
|
47
48
|
type ReactWidget
|
|
48
49
|
} from '@theia/core/lib/browser';
|
|
50
|
+
import { ContextKey, ContextKeyService } from '@theia/core/lib/browser/context-key-service';
|
|
49
51
|
import { nls } from '@theia/core/lib/common/nls';
|
|
50
52
|
import {
|
|
51
53
|
inject,
|
|
@@ -135,6 +137,11 @@ export class ChatViewTreeWidget extends TreeWidget {
|
|
|
135
137
|
@inject(ChatService)
|
|
136
138
|
protected readonly chatService: ChatService;
|
|
137
139
|
|
|
140
|
+
@inject(ContextKeyService)
|
|
141
|
+
protected readonly contextKeyService: ContextKeyService;
|
|
142
|
+
|
|
143
|
+
protected chatResponseFocusKey: ContextKey<boolean>;
|
|
144
|
+
|
|
138
145
|
protected readonly onDidSubmitEditEmitter = new Emitter<ChatRequest>();
|
|
139
146
|
onDidSubmitEdit = this.onDidSubmitEditEmitter.event;
|
|
140
147
|
|
|
@@ -202,6 +209,12 @@ export class ChatViewTreeWidget extends TreeWidget {
|
|
|
202
209
|
this.id = ChatViewTreeWidget.ID + '-treeContainer';
|
|
203
210
|
this.addClass('treeContainer');
|
|
204
211
|
|
|
212
|
+
this.chatResponseFocusKey = this.contextKeyService.createKey<boolean>('chatResponseFocus', false);
|
|
213
|
+
this.node.setAttribute('tabindex', '0');
|
|
214
|
+
this.node.setAttribute('aria-label', nls.localize('theia/ai/chat-ui/chatResponses', 'Chat responses'));
|
|
215
|
+
this.addEventListener(this.node, 'focusin', () => this.chatResponseFocusKey.set(true));
|
|
216
|
+
this.addEventListener(this.node, 'focusout', () => this.chatResponseFocusKey.set(false));
|
|
217
|
+
|
|
205
218
|
this.toDispose.pushAll([
|
|
206
219
|
this.toDisposeOnChatModelChange,
|
|
207
220
|
this.activationService.onDidChangeActiveStatus(change => {
|
|
@@ -504,8 +517,16 @@ export class ChatViewTreeWidget extends TreeWidget {
|
|
|
504
517
|
if (!(isRequestNode(node) || isResponseNode(node))) {
|
|
505
518
|
return super.renderNode(node, props);
|
|
506
519
|
}
|
|
520
|
+
const ariaLabel = isRequestNode(node)
|
|
521
|
+
? nls.localize('theia/ai/chat-ui/yourMessage', 'Your message')
|
|
522
|
+
: nls.localize('theia/ai/chat-ui/responseFrom', 'Response from {0}', this.getAgentLabel(node));
|
|
507
523
|
return <React.Fragment key={node.id}>
|
|
508
|
-
<div
|
|
524
|
+
<div
|
|
525
|
+
className='theia-ChatNode'
|
|
526
|
+
role='article'
|
|
527
|
+
aria-label={ariaLabel}
|
|
528
|
+
onContextMenu={e => this.handleContextMenu(node, e)}
|
|
529
|
+
>
|
|
509
530
|
{this.renderAgent(node)}
|
|
510
531
|
{this.renderDetail(node)}
|
|
511
532
|
</div>
|
|
@@ -551,11 +572,13 @@ export class ChatViewTreeWidget extends TreeWidget {
|
|
|
551
572
|
/>
|
|
552
573
|
)}
|
|
553
574
|
{inProgress && !waitingForInput &&
|
|
554
|
-
<span className='theia-ChatContentInProgress'>
|
|
575
|
+
<span className='theia-ChatContentInProgress' role='status' aria-live='polite'>
|
|
555
576
|
{nls.localize('theia/ai/chat-ui/chat-view-tree-widget/generating', 'Generating')}
|
|
556
577
|
</span>}
|
|
557
|
-
{inProgress && waitingForInput &&
|
|
558
|
-
|
|
578
|
+
{inProgress && waitingForInput &&
|
|
579
|
+
<span className='theia-ChatContentInProgress' role='status' aria-live='polite'>
|
|
580
|
+
{nls.localize('theia/ai/chat-ui/chat-view-tree-widget/waitingForInput', 'Waiting for input')}
|
|
581
|
+
</span>}
|
|
559
582
|
<div className='theia-ChatNodeToolbar'>
|
|
560
583
|
{!inProgress &&
|
|
561
584
|
toolbarContributions.length > 0 &&
|
|
@@ -564,6 +587,8 @@ export class ChatViewTreeWidget extends TreeWidget {
|
|
|
564
587
|
key={action.commandId}
|
|
565
588
|
className={`theia-ChatNodeToolbarAction ${action.icon}`}
|
|
566
589
|
title={action.tooltip}
|
|
590
|
+
aria-label={action.tooltip}
|
|
591
|
+
tabIndex={0}
|
|
567
592
|
onClick={e => {
|
|
568
593
|
e.stopPropagation();
|
|
569
594
|
this.commandRegistry.executeCommand(action.commandId, node);
|
|
@@ -808,7 +833,7 @@ const ChatRequestRender = (
|
|
|
808
833
|
<div className="theia-RequestNode">
|
|
809
834
|
<p>
|
|
810
835
|
{parts.map((part, index) => {
|
|
811
|
-
if (part instanceof ParsedChatRequestAgentPart || part instanceof ParsedChatRequestVariablePart) {
|
|
836
|
+
if (part instanceof ParsedChatRequestAgentPart || part instanceof ParsedChatRequestVariablePart || part instanceof ParsedChatRequestFunctionPart) {
|
|
812
837
|
let description = undefined;
|
|
813
838
|
let className = '';
|
|
814
839
|
if (part instanceof ParsedChatRequestAgentPart) {
|
|
@@ -817,6 +842,9 @@ const ChatRequestRender = (
|
|
|
817
842
|
} else if (part instanceof ParsedChatRequestVariablePart) {
|
|
818
843
|
description = variableService.getVariable(part.variableName)?.description;
|
|
819
844
|
className = 'theia-RequestNode-VariableLabel';
|
|
845
|
+
} else if (part instanceof ParsedChatRequestFunctionPart) {
|
|
846
|
+
description = part.toolRequest?.description;
|
|
847
|
+
className = 'theia-RequestNode-FunctionLabel';
|
|
820
848
|
}
|
|
821
849
|
return (
|
|
822
850
|
<HoverableLabel
|
|
@@ -74,9 +74,9 @@ export const AI_CHAT_NEW_CHAT_WINDOW_COMMAND = Command.toDefaultLocalizedCommand
|
|
|
74
74
|
label: 'New Chat'
|
|
75
75
|
});
|
|
76
76
|
|
|
77
|
-
export const AI_CHAT_SHOW_CHATS_COMMAND = Command.
|
|
77
|
+
export const AI_CHAT_SHOW_CHATS_COMMAND = Command.toLocalizedCommand({
|
|
78
78
|
id: 'ai-chat-ui.show-chats',
|
|
79
79
|
iconClass: codicon('history'),
|
|
80
80
|
category: ChatCommands.CHAT_CATEGORY,
|
|
81
81
|
label: 'Show Chats...'
|
|
82
|
-
});
|
|
82
|
+
}, 'theia/ai-chat-ui/showChats');
|