@theia/ai-chat-ui 1.65.0-next.28 → 1.65.0-next.47
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/chat-response-renderer/tool-confirmation.d.ts +1 -1
- package/lib/browser/chat-response-renderer/tool-confirmation.d.ts.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 +42 -8
- package/lib/browser/chat-response-renderer/toolcall-part-renderer.js.map +1 -1
- package/package.json +10 -10
- package/src/browser/chat-response-renderer/tool-confirmation.tsx +1 -1
- package/src/browser/chat-response-renderer/toolcall-part-renderer.tsx +50 -11
|
@@ -4,7 +4,7 @@ import { ToolCallChatResponseContent } from '@theia/ai-chat/lib/common';
|
|
|
4
4
|
/**
|
|
5
5
|
* States the tool confirmation component can be in
|
|
6
6
|
*/
|
|
7
|
-
export type ToolConfirmationState = 'waiting' | 'allowed' | 'denied';
|
|
7
|
+
export type ToolConfirmationState = 'waiting' | 'allowed' | 'denied' | 'rejected';
|
|
8
8
|
export interface ToolConfirmationProps {
|
|
9
9
|
response: ToolCallChatResponseContent;
|
|
10
10
|
onAllow: (mode?: 'once' | 'session' | 'forever') => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-confirmation.d.ts","sourceRoot":"","sources":["../../../src/browser/chat-response-renderer/tool-confirmation.tsx"],"names":[],"mappings":";AAgBA,OAAO,KAAK,KAAK,MAAM,0BAA0B,CAAC;AAGlD,OAAO,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AAExE;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"tool-confirmation.d.ts","sourceRoot":"","sources":["../../../src/browser/chat-response-renderer/tool-confirmation.tsx"],"names":[],"mappings":";AAgBA,OAAO,KAAK,KAAK,MAAM,0BAA0B,CAAC;AAGlD,OAAO,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AAExE;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,UAAU,CAAC;AAElF,MAAM,WAAW,qBAAqB;IAClC,QAAQ,EAAE,2BAA2B,CAAC;IACtC,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,KAAK,IAAI,CAAC;IACzD,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,KAAK,IAAI,CAAC;CAC3D;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CAyI5D,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toolcall-part-renderer.d.ts","sourceRoot":"","sources":["../../../src/browser/chat-response-renderer/toolcall-part-renderer.tsx"],"names":[],"mappings":";AAgBA,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAE1E,OAAO,EAAE,mBAAmB,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AAC7F,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAErD,OAAO,EAAW,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAGjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,iDAAiD,CAAC;AACvF,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjD,OAAO,EAAE,uBAAuB,EAAE,MAAM,0DAA0D,CAAC;AAEnG,qBACa,oBAAqB,YAAW,wBAAwB,CAAC,2BAA2B,CAAC;IAG9F,SAAS,CAAC,uBAAuB,EAAE,uBAAuB,CAAC;IAG3D,SAAS,CAAC,aAAa,EAAE,aAAa,CAAC;IAEvC,SAAS,CAAC,QAAQ,EAAE,mBAAmB,GAAG,MAAM;IAOhD,MAAM,CAAC,QAAQ,EAAE,2BAA2B,EAAE,UAAU,EAAE,YAAY,GAAG,SAAS;
|
|
1
|
+
{"version":3,"file":"toolcall-part-renderer.d.ts","sourceRoot":"","sources":["../../../src/browser/chat-response-renderer/toolcall-part-renderer.tsx"],"names":[],"mappings":";AAgBA,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAE1E,OAAO,EAAE,mBAAmB,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AAC7F,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAErD,OAAO,EAAW,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAGjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,iDAAiD,CAAC;AACvF,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjD,OAAO,EAAE,uBAAuB,EAAE,MAAM,0DAA0D,CAAC;AAEnG,qBACa,oBAAqB,YAAW,wBAAwB,CAAC,2BAA2B,CAAC;IAG9F,SAAS,CAAC,uBAAuB,EAAE,uBAAuB,CAAC;IAG3D,SAAS,CAAC,aAAa,EAAE,aAAa,CAAC;IAEvC,SAAS,CAAC,QAAQ,EAAE,mBAAmB,GAAG,MAAM;IAOhD,MAAM,CAAC,QAAQ,EAAE,2BAA2B,EAAE,UAAU,EAAE,YAAY,GAAG,SAAS;IAalF,SAAS,CAAC,YAAY,CAAC,QAAQ,EAAE,2BAA2B,GAAG,SAAS;IAkCxE,OAAO,CAAC,QAAQ;IAWhB,SAAS,CAAC,2BAA2B,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,oBAAoB;IAI/F,SAAS,CAAC,0BAA0B,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAazE,OAAO,CAAC,eAAe;CAQ1B"}
|
|
@@ -36,7 +36,7 @@ let ToolCallPartRenderer = class ToolCallPartRenderer {
|
|
|
36
36
|
render(response, parentNode) {
|
|
37
37
|
const chatId = parentNode.sessionId;
|
|
38
38
|
const confirmationMode = response.name ? this.getToolConfirmationSettings(response.name, chatId) : chat_tool_preferences_1.ToolConfirmationMode.DISABLED;
|
|
39
|
-
return React.createElement(ToolCallContent, { response: response, confirmationMode: confirmationMode, toolConfirmationManager: this.toolConfirmationManager, chatId: chatId, renderCollapsibleArguments: this.renderCollapsibleArguments.bind(this), responseRenderer: this.renderResult.bind(this) });
|
|
39
|
+
return React.createElement(ToolCallContent, { response: response, confirmationMode: confirmationMode, toolConfirmationManager: this.toolConfirmationManager, chatId: chatId, renderCollapsibleArguments: this.renderCollapsibleArguments.bind(this), responseRenderer: this.renderResult.bind(this), requestCanceled: parentNode.response.isCanceled });
|
|
40
40
|
}
|
|
41
41
|
renderResult(response) {
|
|
42
42
|
const result = this.tryParse(response.result);
|
|
@@ -116,8 +116,26 @@ const Spinner = () => (React.createElement("span", { className: `${(0, browser_1
|
|
|
116
116
|
/**
|
|
117
117
|
* A function component to handle tool call rendering and confirmation
|
|
118
118
|
*/
|
|
119
|
-
const ToolCallContent = ({ response, confirmationMode, toolConfirmationManager, chatId, responseRenderer, renderCollapsibleArguments }) => {
|
|
119
|
+
const ToolCallContent = ({ response, confirmationMode, toolConfirmationManager, chatId, responseRenderer, renderCollapsibleArguments, requestCanceled }) => {
|
|
120
120
|
const [confirmationState, setConfirmationState] = React.useState('waiting');
|
|
121
|
+
const [rejectionReason, setRejectionReason] = React.useState(undefined);
|
|
122
|
+
const formatReason = (reason) => {
|
|
123
|
+
if (!reason) {
|
|
124
|
+
return '';
|
|
125
|
+
}
|
|
126
|
+
if (reason instanceof Error) {
|
|
127
|
+
return reason.message;
|
|
128
|
+
}
|
|
129
|
+
if (typeof reason === 'string') {
|
|
130
|
+
return reason;
|
|
131
|
+
}
|
|
132
|
+
try {
|
|
133
|
+
return JSON.stringify(reason);
|
|
134
|
+
}
|
|
135
|
+
catch (e) {
|
|
136
|
+
return String(reason);
|
|
137
|
+
}
|
|
138
|
+
};
|
|
121
139
|
React.useEffect(() => {
|
|
122
140
|
if (confirmationMode === chat_tool_preferences_1.ToolConfirmationMode.ALWAYS_ALLOW) {
|
|
123
141
|
response.confirm();
|
|
@@ -129,7 +147,8 @@ const ToolCallContent = ({ response, confirmationMode, toolConfirmationManager,
|
|
|
129
147
|
setConfirmationState('denied');
|
|
130
148
|
return;
|
|
131
149
|
}
|
|
132
|
-
response.confirmed
|
|
150
|
+
response.confirmed
|
|
151
|
+
.then(confirmed => {
|
|
133
152
|
if (confirmed === true) {
|
|
134
153
|
setConfirmationState('allowed');
|
|
135
154
|
}
|
|
@@ -137,8 +156,9 @@ const ToolCallContent = ({ response, confirmationMode, toolConfirmationManager,
|
|
|
137
156
|
setConfirmationState('denied');
|
|
138
157
|
}
|
|
139
158
|
})
|
|
140
|
-
.catch(
|
|
141
|
-
|
|
159
|
+
.catch(reason => {
|
|
160
|
+
setRejectionReason(reason);
|
|
161
|
+
setConfirmationState('rejected');
|
|
142
162
|
});
|
|
143
163
|
}, [response, confirmationMode]);
|
|
144
164
|
const handleAllow = React.useCallback((mode = 'once') => {
|
|
@@ -159,8 +179,22 @@ const ToolCallContent = ({ response, confirmationMode, toolConfirmationManager,
|
|
|
159
179
|
}
|
|
160
180
|
response.deny();
|
|
161
181
|
}, [response, toolConfirmationManager, chatId]);
|
|
182
|
+
const reasonText = formatReason(rejectionReason);
|
|
162
183
|
return (React.createElement("div", { className: 'theia-toolCall' },
|
|
163
|
-
confirmationState === '
|
|
184
|
+
confirmationState === 'rejected' ? (React.createElement("span", { className: 'theia-toolCall-rejected' },
|
|
185
|
+
React.createElement("span", { className: (0, browser_1.codicon)('error') }),
|
|
186
|
+
" ",
|
|
187
|
+
nls_1.nls.localize('theia/ai/chat-ui/toolcall-part-renderer/rejected', 'Execution canceled'),
|
|
188
|
+
": ",
|
|
189
|
+
response.name,
|
|
190
|
+
reasonText ? React.createElement("span", null,
|
|
191
|
+
" \u2014 ",
|
|
192
|
+
reasonText) : undefined)) : requestCanceled && !response.finished ? (React.createElement("span", { className: 'theia-toolCall-rejected' },
|
|
193
|
+
React.createElement("span", { className: (0, browser_1.codicon)('error') }),
|
|
194
|
+
" ",
|
|
195
|
+
nls_1.nls.localize('theia/ai/chat-ui/toolcall-part-renderer/rejected', 'Execution canceled'),
|
|
196
|
+
": ",
|
|
197
|
+
response.name)) : confirmationState === 'denied' ? (React.createElement("span", { className: 'theia-toolCall-denied' },
|
|
164
198
|
React.createElement("span", { className: (0, browser_1.codicon)('error') }),
|
|
165
199
|
" ",
|
|
166
200
|
nls_1.nls.localize('theia/ai/chat-ui/toolcall-part-renderer/denied', 'Execution denied'),
|
|
@@ -173,13 +207,13 @@ const ToolCallContent = ({ response, confirmationMode, toolConfirmationManager,
|
|
|
173
207
|
"(",
|
|
174
208
|
renderCollapsibleArguments(response.arguments),
|
|
175
209
|
")"),
|
|
176
|
-
React.createElement("div", { className: 'theia-toolCall-response-result' }, responseRenderer(response)))) : (confirmationState === 'allowed' && (React.createElement("span", { className: 'theia-toolCall-allowed' },
|
|
210
|
+
React.createElement("div", { className: 'theia-toolCall-response-result' }, responseRenderer(response)))) : (confirmationState === 'allowed' && !requestCanceled && (React.createElement("span", { className: 'theia-toolCall-allowed' },
|
|
177
211
|
React.createElement(Spinner, null),
|
|
178
212
|
" ",
|
|
179
213
|
nls_1.nls.localizeByDefault('Running'),
|
|
180
214
|
" ",
|
|
181
215
|
response.name))),
|
|
182
|
-
confirmationState === 'waiting' && (React.createElement("span", { className: 'theia-toolCall-waiting' },
|
|
216
|
+
confirmationState === 'waiting' && !requestCanceled && (React.createElement("span", { className: 'theia-toolCall-waiting' },
|
|
183
217
|
React.createElement(tool_confirmation_1.ToolConfirmation, { response: response, onAllow: handleAllow, onDeny: handleDeny })))));
|
|
184
218
|
};
|
|
185
219
|
const MarkdownRender = ({ text, openerService }) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toolcall-part-renderer.js","sourceRoot":"","sources":["../../../src/browser/chat-response-renderer/toolcall-part-renderer.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;;;;AAGhF,4DAAkE;AAClE,sDAA6F;AAE7F,oDAAiD;AACjD,qDAAiE;AACjE,kDAAkD;AAClD,2DAA8E;AAC9E,2FAAuF;AAEvF,qEAAgE;AAEhE,4GAAmG;AAG5F,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IAQ7B,SAAS,CAAC,QAA6B;QACnC,IAAI,oCAA2B,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC3C,OAAO,EAAE,CAAC;QACd,CAAC;QACD,OAAO,CAAC,CAAC,CAAC;IACd,CAAC;IAED,MAAM,CAAC,QAAqC,EAAE,UAAwB;QAClE,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC;QACpC,MAAM,gBAAgB,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,2BAA2B,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,4CAAoB,CAAC,QAAQ,CAAC;QACjI,OAAO,oBAAC,eAAe,IACnB,QAAQ,EAAE,QAAQ,EAClB,gBAAgB,EAAE,gBAAgB,EAClC,uBAAuB,EAAE,IAAI,CAAC,uBAAuB,EACrD,MAAM,EAAE,MAAM,EACd,0BAA0B,EAAE,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,EACtE,gBAAgB,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"toolcall-part-renderer.js","sourceRoot":"","sources":["../../../src/browser/chat-response-renderer/toolcall-part-renderer.tsx"],"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.65.0-next.
|
|
3
|
+
"version": "1.65.0-next.47+58532a637",
|
|
4
4
|
"description": "Theia - AI Chat UI Extension",
|
|
5
5
|
"dependencies": {
|
|
6
|
-
"@theia/ai-chat": "1.65.0-next.
|
|
7
|
-
"@theia/ai-core": "1.65.0-next.
|
|
8
|
-
"@theia/core": "1.65.0-next.
|
|
9
|
-
"@theia/editor": "1.65.0-next.
|
|
10
|
-
"@theia/editor-preview": "1.65.0-next.
|
|
11
|
-
"@theia/filesystem": "1.65.0-next.
|
|
12
|
-
"@theia/monaco": "1.65.0-next.
|
|
6
|
+
"@theia/ai-chat": "1.65.0-next.47+58532a637",
|
|
7
|
+
"@theia/ai-core": "1.65.0-next.47+58532a637",
|
|
8
|
+
"@theia/core": "1.65.0-next.47+58532a637",
|
|
9
|
+
"@theia/editor": "1.65.0-next.47+58532a637",
|
|
10
|
+
"@theia/editor-preview": "1.65.0-next.47+58532a637",
|
|
11
|
+
"@theia/filesystem": "1.65.0-next.47+58532a637",
|
|
12
|
+
"@theia/monaco": "1.65.0-next.47+58532a637",
|
|
13
13
|
"@theia/monaco-editor-core": "1.96.302",
|
|
14
|
-
"@theia/workspace": "1.65.0-next.
|
|
14
|
+
"@theia/workspace": "1.65.0-next.47+58532a637",
|
|
15
15
|
"date-fns": "^4.1.0",
|
|
16
16
|
"minimatch": "^5.1.0",
|
|
17
17
|
"tslib": "^2.6.2",
|
|
@@ -56,5 +56,5 @@
|
|
|
56
56
|
"nyc": {
|
|
57
57
|
"extends": "../../configs/nyc.json"
|
|
58
58
|
},
|
|
59
|
-
"gitHead": "
|
|
59
|
+
"gitHead": "58532a637bf1327ee71bd84c9035b9aa4404180f"
|
|
60
60
|
}
|
|
@@ -22,7 +22,7 @@ import { ToolCallChatResponseContent } from '@theia/ai-chat/lib/common';
|
|
|
22
22
|
/**
|
|
23
23
|
* States the tool confirmation component can be in
|
|
24
24
|
*/
|
|
25
|
-
export type ToolConfirmationState = 'waiting' | 'allowed' | 'denied';
|
|
25
|
+
export type ToolConfirmationState = 'waiting' | 'allowed' | 'denied' | 'rejected';
|
|
26
26
|
|
|
27
27
|
export interface ToolConfirmationProps {
|
|
28
28
|
response: ToolCallChatResponseContent;
|
|
@@ -53,7 +53,8 @@ export class ToolCallPartRenderer implements ChatResponsePartRenderer<ToolCallCh
|
|
|
53
53
|
toolConfirmationManager={this.toolConfirmationManager}
|
|
54
54
|
chatId={chatId}
|
|
55
55
|
renderCollapsibleArguments={this.renderCollapsibleArguments.bind(this)}
|
|
56
|
-
responseRenderer={this.renderResult.bind(this)}
|
|
56
|
+
responseRenderer={this.renderResult.bind(this)}
|
|
57
|
+
requestCanceled={parentNode.response.isCanceled} />;
|
|
57
58
|
}
|
|
58
59
|
|
|
59
60
|
protected renderResult(response: ToolCallChatResponseContent): ReactNode {
|
|
@@ -139,13 +140,40 @@ interface ToolCallContentProps {
|
|
|
139
140
|
chatId: string;
|
|
140
141
|
renderCollapsibleArguments: (args: string | undefined) => ReactNode;
|
|
141
142
|
responseRenderer: (response: ToolCallChatResponseContent) => ReactNode | undefined;
|
|
143
|
+
requestCanceled: boolean;
|
|
142
144
|
}
|
|
143
145
|
|
|
144
146
|
/**
|
|
145
147
|
* A function component to handle tool call rendering and confirmation
|
|
146
148
|
*/
|
|
147
|
-
const ToolCallContent: React.FC<ToolCallContentProps> = ({
|
|
149
|
+
const ToolCallContent: React.FC<ToolCallContentProps> = ({
|
|
150
|
+
response,
|
|
151
|
+
confirmationMode,
|
|
152
|
+
toolConfirmationManager,
|
|
153
|
+
chatId,
|
|
154
|
+
responseRenderer,
|
|
155
|
+
renderCollapsibleArguments,
|
|
156
|
+
requestCanceled
|
|
157
|
+
}) => {
|
|
148
158
|
const [confirmationState, setConfirmationState] = React.useState<ToolConfirmationState>('waiting');
|
|
159
|
+
const [rejectionReason, setRejectionReason] = React.useState<unknown>(undefined);
|
|
160
|
+
|
|
161
|
+
const formatReason = (reason: unknown): string => {
|
|
162
|
+
if (!reason) {
|
|
163
|
+
return '';
|
|
164
|
+
}
|
|
165
|
+
if (reason instanceof Error) {
|
|
166
|
+
return reason.message;
|
|
167
|
+
}
|
|
168
|
+
if (typeof reason === 'string') {
|
|
169
|
+
return reason;
|
|
170
|
+
}
|
|
171
|
+
try {
|
|
172
|
+
return JSON.stringify(reason);
|
|
173
|
+
} catch (e) {
|
|
174
|
+
return String(reason);
|
|
175
|
+
}
|
|
176
|
+
};
|
|
149
177
|
|
|
150
178
|
React.useEffect(() => {
|
|
151
179
|
if (confirmationMode === ToolConfirmationMode.ALWAYS_ALLOW) {
|
|
@@ -157,17 +185,17 @@ const ToolCallContent: React.FC<ToolCallContentProps> = ({ response, confirmatio
|
|
|
157
185
|
setConfirmationState('denied');
|
|
158
186
|
return;
|
|
159
187
|
}
|
|
160
|
-
response.confirmed
|
|
161
|
-
confirmed => {
|
|
188
|
+
response.confirmed
|
|
189
|
+
.then(confirmed => {
|
|
162
190
|
if (confirmed === true) {
|
|
163
191
|
setConfirmationState('allowed');
|
|
164
192
|
} else {
|
|
165
193
|
setConfirmationState('denied');
|
|
166
194
|
}
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
setConfirmationState('
|
|
195
|
+
})
|
|
196
|
+
.catch(reason => {
|
|
197
|
+
setRejectionReason(reason);
|
|
198
|
+
setConfirmationState('rejected');
|
|
171
199
|
});
|
|
172
200
|
}, [response, confirmationMode]);
|
|
173
201
|
|
|
@@ -189,9 +217,20 @@ const ToolCallContent: React.FC<ToolCallContentProps> = ({ response, confirmatio
|
|
|
189
217
|
response.deny();
|
|
190
218
|
}, [response, toolConfirmationManager, chatId]);
|
|
191
219
|
|
|
220
|
+
const reasonText = formatReason(rejectionReason);
|
|
221
|
+
|
|
192
222
|
return (
|
|
193
223
|
<div className='theia-toolCall'>
|
|
194
|
-
{confirmationState === '
|
|
224
|
+
{confirmationState === 'rejected' ? (
|
|
225
|
+
<span className='theia-toolCall-rejected'>
|
|
226
|
+
<span className={codicon('error')}></span> {nls.localize('theia/ai/chat-ui/toolcall-part-renderer/rejected', 'Execution canceled')}: {response.name}
|
|
227
|
+
{reasonText ? <span> — {reasonText}</span> : undefined}
|
|
228
|
+
</span>
|
|
229
|
+
) : requestCanceled && !response.finished ? (
|
|
230
|
+
<span className='theia-toolCall-rejected'>
|
|
231
|
+
<span className={codicon('error')}></span> {nls.localize('theia/ai/chat-ui/toolcall-part-renderer/rejected', 'Execution canceled')}: {response.name}
|
|
232
|
+
</span>
|
|
233
|
+
) : confirmationState === 'denied' ? (
|
|
195
234
|
<span className='theia-toolCall-denied'>
|
|
196
235
|
<span className={codicon('error')}></span> {nls.localize('theia/ai/chat-ui/toolcall-part-renderer/denied', 'Execution denied')}: {response.name}
|
|
197
236
|
</span>
|
|
@@ -206,7 +245,7 @@ const ToolCallContent: React.FC<ToolCallContentProps> = ({ response, confirmatio
|
|
|
206
245
|
</div>
|
|
207
246
|
</details>
|
|
208
247
|
) : (
|
|
209
|
-
confirmationState === 'allowed' && (
|
|
248
|
+
confirmationState === 'allowed' && !requestCanceled && (
|
|
210
249
|
<span className='theia-toolCall-allowed'>
|
|
211
250
|
<Spinner /> {nls.localizeByDefault('Running')} {response.name}
|
|
212
251
|
</span>
|
|
@@ -214,7 +253,7 @@ const ToolCallContent: React.FC<ToolCallContentProps> = ({ response, confirmatio
|
|
|
214
253
|
)}
|
|
215
254
|
|
|
216
255
|
{/* Show confirmation UI when waiting for allow */}
|
|
217
|
-
{confirmationState === 'waiting' && (
|
|
256
|
+
{confirmationState === 'waiting' && !requestCanceled && (
|
|
218
257
|
<span className='theia-toolCall-waiting'>
|
|
219
258
|
<ToolConfirmation
|
|
220
259
|
response={response}
|