@theia/ai-chat-ui 1.71.0-next.8 → 1.71.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-contribution.d.ts.map +1 -1
- package/lib/browser/ai-chat-ui-contribution.js +10 -9
- package/lib/browser/ai-chat-ui-contribution.js.map +1 -1
- package/lib/browser/ai-chat-ui-frontend-module.d.ts +1 -0
- package/lib/browser/ai-chat-ui-frontend-module.d.ts.map +1 -1
- package/lib/browser/ai-chat-ui-frontend-module.js +3 -0
- package/lib/browser/ai-chat-ui-frontend-module.js.map +1 -1
- package/lib/browser/chat-input-mode-contribution.js +1 -1
- package/lib/browser/chat-input-mode-contribution.js.map +1 -1
- package/lib/browser/chat-input-widget.d.ts +57 -3
- package/lib/browser/chat-input-widget.d.ts.map +1 -1
- package/lib/browser/chat-input-widget.js +382 -21
- package/lib/browser/chat-input-widget.js.map +1 -1
- package/lib/browser/chat-response-part-renderer.d.ts +6 -0
- package/lib/browser/chat-response-part-renderer.d.ts.map +1 -1
- package/lib/browser/chat-response-renderer/delegation-tool-renderer.d.ts +2 -0
- package/lib/browser/chat-response-renderer/delegation-tool-renderer.d.ts.map +1 -1
- package/lib/browser/chat-response-renderer/delegation-tool-renderer.js +76 -5
- package/lib/browser/chat-response-renderer/delegation-tool-renderer.js.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/question-part-renderer.d.ts +3 -0
- package/lib/browser/chat-response-renderer/question-part-renderer.d.ts.map +1 -1
- package/lib/browser/chat-response-renderer/question-part-renderer.js +19 -6
- package/lib/browser/chat-response-renderer/question-part-renderer.js.map +1 -1
- package/lib/browser/chat-response-renderer/tool-call-rendering.d.ts +21 -0
- package/lib/browser/chat-response-renderer/tool-call-rendering.d.ts.map +1 -0
- package/lib/browser/chat-response-renderer/tool-call-rendering.js +53 -0
- package/lib/browser/chat-response-renderer/tool-call-rendering.js.map +1 -0
- package/lib/browser/chat-response-renderer/tool-confirmation.d.ts +4 -0
- package/lib/browser/chat-response-renderer/tool-confirmation.d.ts.map +1 -1
- package/lib/browser/chat-response-renderer/tool-confirmation.js +22 -0
- package/lib/browser/chat-response-renderer/tool-confirmation.js.map +1 -1
- package/lib/browser/chat-response-renderer/toolcall-part-renderer.d.ts +1 -0
- 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 -18
- package/lib/browser/chat-response-renderer/toolcall-part-renderer.js.map +1 -1
- package/lib/browser/chat-response-renderer/toolcall-utils.d.ts +1 -0
- package/lib/browser/chat-response-renderer/toolcall-utils.d.ts.map +1 -1
- package/lib/browser/chat-response-renderer/toolcall-utils.js +3 -0
- package/lib/browser/chat-response-renderer/toolcall-utils.js.map +1 -1
- package/lib/browser/chat-token-usage-indicator-util.d.ts +35 -0
- package/lib/browser/chat-token-usage-indicator-util.d.ts.map +1 -0
- package/lib/browser/chat-token-usage-indicator-util.js +138 -0
- package/lib/browser/chat-token-usage-indicator-util.js.map +1 -0
- package/lib/browser/chat-token-usage-indicator-util.spec.d.ts +2 -0
- package/lib/browser/chat-token-usage-indicator-util.spec.d.ts.map +1 -0
- package/lib/browser/chat-token-usage-indicator-util.spec.js +226 -0
- package/lib/browser/chat-token-usage-indicator-util.spec.js.map +1 -0
- package/lib/browser/chat-tree-view/chat-view-tree-input-widget.d.ts +6 -1
- package/lib/browser/chat-tree-view/chat-view-tree-input-widget.d.ts.map +1 -1
- package/lib/browser/chat-tree-view/chat-view-tree-input-widget.js +7 -0
- 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.map +1 -1
- package/lib/browser/chat-tree-view/chat-view-tree-widget.js +20 -3
- package/lib/browser/chat-tree-view/chat-view-tree-widget.js.map +1 -1
- package/lib/browser/chat-view-preferences.d.ts +18 -0
- package/lib/browser/chat-view-preferences.d.ts.map +1 -0
- package/lib/browser/chat-view-preferences.js +69 -0
- package/lib/browser/chat-view-preferences.js.map +1 -0
- package/lib/browser/chat-view-widget-toolbar-contribution.d.ts.map +1 -1
- package/lib/browser/chat-view-widget-toolbar-contribution.js +3 -2
- package/lib/browser/chat-view-widget-toolbar-contribution.js.map +1 -1
- package/lib/browser/chat-view-widget.d.ts +1 -2
- package/lib/browser/chat-view-widget.d.ts.map +1 -1
- package/lib/browser/chat-view-widget.js +3 -7
- package/lib/browser/chat-view-widget.js.map +1 -1
- package/lib/browser/session-settings-dialog.d.ts +2 -5
- package/lib/browser/session-settings-dialog.d.ts.map +1 -1
- package/lib/browser/session-settings-dialog.js +15 -33
- package/lib/browser/session-settings-dialog.js.map +1 -1
- package/lib/common/toolcall-utils.d.ts +6 -0
- package/lib/common/toolcall-utils.d.ts.map +1 -0
- package/lib/common/toolcall-utils.js +40 -0
- package/lib/common/toolcall-utils.js.map +1 -0
- package/lib/common/toolcall-utils.spec.d.ts +2 -0
- package/lib/common/toolcall-utils.spec.d.ts.map +1 -0
- package/lib/common/toolcall-utils.spec.js +102 -0
- package/lib/common/toolcall-utils.spec.js.map +1 -0
- package/package.json +12 -12
- package/src/browser/ai-chat-ui-contribution.ts +10 -9
- package/src/browser/ai-chat-ui-frontend-module.ts +4 -0
- package/src/browser/chat-input-mode-contribution.ts +1 -1
- package/src/browser/chat-input-widget.tsx +481 -14
- package/src/browser/chat-response-part-renderer.ts +6 -0
- package/src/browser/chat-response-renderer/delegation-tool-renderer.tsx +105 -7
- package/src/browser/chat-response-renderer/index.ts +1 -0
- package/src/browser/chat-response-renderer/question-part-renderer.tsx +24 -8
- package/src/browser/chat-response-renderer/tool-call-rendering.tsx +89 -0
- package/src/browser/chat-response-renderer/tool-confirmation.tsx +26 -0
- package/src/browser/chat-response-renderer/toolcall-part-renderer.tsx +21 -18
- package/src/browser/chat-response-renderer/toolcall-utils.ts +2 -0
- package/src/browser/chat-token-usage-indicator-util.spec.ts +262 -0
- package/src/browser/chat-token-usage-indicator-util.ts +151 -0
- package/src/browser/chat-tree-view/chat-view-tree-input-widget.tsx +9 -1
- package/src/browser/chat-tree-view/chat-view-tree-widget.tsx +22 -3
- package/src/browser/chat-view-preferences.ts +87 -0
- package/src/browser/chat-view-widget-toolbar-contribution.tsx +3 -2
- package/src/browser/chat-view-widget.tsx +4 -7
- package/src/browser/session-settings-dialog.tsx +15 -97
- package/src/browser/style/index.css +164 -54
- package/src/browser/style/tool-call-rendering.css +327 -0
- package/src/common/toolcall-utils.spec.ts +118 -0
- package/src/common/toolcall-utils.ts +36 -0
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// *****************************************************************************
|
|
3
|
+
// Copyright (C) 2026 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.CHAT_CONTEXT_WINDOW_SIZE = void 0;
|
|
19
|
+
exports.isAboveTokenUsageWarningThreshold = isAboveTokenUsageWarningThreshold;
|
|
20
|
+
exports.decideTokenUsageWarning = decideTokenUsageWarning;
|
|
21
|
+
exports.formatTokenCount = formatTokenCount;
|
|
22
|
+
exports.getUsageColorClass = getUsageColorClass;
|
|
23
|
+
exports.computeSessionTokenUsage = computeSessionTokenUsage;
|
|
24
|
+
exports.getLatestTokenUsage = getLatestTokenUsage;
|
|
25
|
+
exports.buildBarTooltip = buildBarTooltip;
|
|
26
|
+
const nls_1 = require("@theia/core/lib/common/nls");
|
|
27
|
+
/**
|
|
28
|
+
* Provisional context window size used as the denominator for the indicator bar
|
|
29
|
+
* fill and the tooltip's "Total: X / Y" display until per-model context sizes
|
|
30
|
+
* are available. See issue #17323 comments for context.
|
|
31
|
+
*/
|
|
32
|
+
exports.CHAT_CONTEXT_WINDOW_SIZE = 200000;
|
|
33
|
+
/** Returns true when the given total has crossed (>=) the configured warning threshold. */
|
|
34
|
+
function isAboveTokenUsageWarningThreshold(totalTokens, threshold) {
|
|
35
|
+
return totalTokens > 0 && totalTokens >= threshold;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Pure decision function for whether to show the token usage warning for a session.
|
|
39
|
+
* Callers are expected to short-circuit before invoking this when the warning feature
|
|
40
|
+
* is disabled, so this helper is not concerned with the enabled state.
|
|
41
|
+
* - `reset`: usage is below the threshold; any prior "already notified" state for this session should be cleared.
|
|
42
|
+
* - `skip`: we already notified for this session while still above the threshold.
|
|
43
|
+
* - `notify`: warning should be shown now and the session marked as notified.
|
|
44
|
+
*/
|
|
45
|
+
function decideTokenUsageWarning(args) {
|
|
46
|
+
if (!isAboveTokenUsageWarningThreshold(args.totalTokens, args.threshold)) {
|
|
47
|
+
return 'reset';
|
|
48
|
+
}
|
|
49
|
+
if (args.alreadyNotified) {
|
|
50
|
+
return 'skip';
|
|
51
|
+
}
|
|
52
|
+
return 'notify';
|
|
53
|
+
}
|
|
54
|
+
function formatTokenCount(count) {
|
|
55
|
+
if (count === undefined || count === 0) {
|
|
56
|
+
return '-';
|
|
57
|
+
}
|
|
58
|
+
if (count >= 1000) {
|
|
59
|
+
return `${(count / 1000).toFixed(1)}k`;
|
|
60
|
+
}
|
|
61
|
+
return count.toString();
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Returns the CSS class for the token usage indicator based on the current
|
|
65
|
+
* total, the configured warning threshold, and the assumed context window size.
|
|
66
|
+
* Yellow band: [threshold, contextWindowSize). Red band: [contextWindowSize, ∞).
|
|
67
|
+
*/
|
|
68
|
+
function getUsageColorClass(totalTokens, threshold, contextWindowSize = exports.CHAT_CONTEXT_WINDOW_SIZE) {
|
|
69
|
+
if (totalTokens === 0) {
|
|
70
|
+
return 'token-usage-none';
|
|
71
|
+
}
|
|
72
|
+
if (totalTokens < threshold) {
|
|
73
|
+
return 'token-usage-green';
|
|
74
|
+
}
|
|
75
|
+
if (totalTokens < contextWindowSize) {
|
|
76
|
+
return 'token-usage-yellow';
|
|
77
|
+
}
|
|
78
|
+
return 'token-usage-red';
|
|
79
|
+
}
|
|
80
|
+
function computeSessionTokenUsage(chatModel) {
|
|
81
|
+
if (!chatModel) {
|
|
82
|
+
return 0;
|
|
83
|
+
}
|
|
84
|
+
const requests = chatModel.getRequests();
|
|
85
|
+
for (let i = requests.length - 1; i >= 0; i--) {
|
|
86
|
+
const usage = requests[i].response.tokenUsage;
|
|
87
|
+
if (usage) {
|
|
88
|
+
return usage.inputTokens
|
|
89
|
+
+ usage.outputTokens
|
|
90
|
+
+ (usage.cacheCreationInputTokens ?? 0)
|
|
91
|
+
+ (usage.cacheReadInputTokens ?? 0);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
return 0;
|
|
95
|
+
}
|
|
96
|
+
function getLatestTokenUsage(chatModel) {
|
|
97
|
+
if (!chatModel) {
|
|
98
|
+
return undefined;
|
|
99
|
+
}
|
|
100
|
+
const requests = chatModel.getRequests();
|
|
101
|
+
for (let i = requests.length - 1; i >= 0; i--) {
|
|
102
|
+
const usage = requests[i].response.tokenUsage;
|
|
103
|
+
if (usage) {
|
|
104
|
+
return usage;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
return undefined;
|
|
108
|
+
}
|
|
109
|
+
function buildBarTooltip(usage, totalTokens, threshold) {
|
|
110
|
+
if (!usage) {
|
|
111
|
+
return undefined;
|
|
112
|
+
}
|
|
113
|
+
const lines = [
|
|
114
|
+
`**${nls_1.nls.localize('theia/ai/chat-ui/tokenUsageLabel', 'Token Usage')}**`
|
|
115
|
+
];
|
|
116
|
+
const colorClass = getUsageColorClass(totalTokens, threshold);
|
|
117
|
+
if (colorClass === 'token-usage-yellow') {
|
|
118
|
+
lines.push(`⚠ ${nls_1.nls.localize('theia/ai/chat-ui/tokenUsageWarning', 'Token usage warning threshold reached.')}`, '');
|
|
119
|
+
}
|
|
120
|
+
else if (colorClass === 'token-usage-red') {
|
|
121
|
+
lines.push(`⚠ ${nls_1.nls.localize('theia/ai/chat-ui/tokenUsageOverflow', 'Token usage well past the warning threshold. Consider compacting or starting a new session.')}`, '');
|
|
122
|
+
}
|
|
123
|
+
lines.push(`${nls_1.nls.localizeByDefault('Input: {0}', formatTokenCount(usage.inputTokens))} | ${nls_1.nls.localizeByDefault('Output: {0}', formatTokenCount(usage.outputTokens))}`);
|
|
124
|
+
const cacheParts = [];
|
|
125
|
+
if (usage.cacheReadInputTokens) {
|
|
126
|
+
cacheParts.push(nls_1.nls.localize('theia/ai/chat-ui/tokenUsageTooltipCacheRead', 'Cache read: {0}', formatTokenCount(usage.cacheReadInputTokens)));
|
|
127
|
+
}
|
|
128
|
+
if (usage.cacheCreationInputTokens) {
|
|
129
|
+
cacheParts.push(nls_1.nls.localize('theia/ai/chat-ui/tokenUsageTooltipCacheCreate', 'Cache creation: {0}', formatTokenCount(usage.cacheCreationInputTokens)));
|
|
130
|
+
}
|
|
131
|
+
if (cacheParts.length > 0) {
|
|
132
|
+
lines.push(cacheParts.join(' | '));
|
|
133
|
+
}
|
|
134
|
+
const percentage = Math.round((totalTokens / exports.CHAT_CONTEXT_WINDOW_SIZE) * 100);
|
|
135
|
+
lines.push(nls_1.nls.localize('theia/ai/chat-ui/tokenUsageTooltipTotal', 'Total: {0} / {1} ({2}%)', formatTokenCount(totalTokens), formatTokenCount(exports.CHAT_CONTEXT_WINDOW_SIZE), percentage));
|
|
136
|
+
return { value: lines.join(' \n') };
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=chat-token-usage-indicator-util.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat-token-usage-indicator-util.js","sourceRoot":"","sources":["../../src/browser/chat-token-usage-indicator-util.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat-token-usage-indicator-util.spec.d.ts","sourceRoot":"","sources":["../../src/browser/chat-token-usage-indicator-util.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// *****************************************************************************
|
|
3
|
+
// Copyright (C) 2026 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
|
+
const chai_1 = require("chai");
|
|
19
|
+
const core_1 = require("@theia/core");
|
|
20
|
+
const chat_token_usage_indicator_util_1 = require("./chat-token-usage-indicator-util");
|
|
21
|
+
const THRESHOLD = 100;
|
|
22
|
+
const CONTEXT_WINDOW = 200;
|
|
23
|
+
function createMockRequest(tokenUsage, isComplete = true) {
|
|
24
|
+
return {
|
|
25
|
+
response: {
|
|
26
|
+
tokenUsage,
|
|
27
|
+
isComplete
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
function createMockChatModel(requests) {
|
|
32
|
+
const emitter = new core_1.Emitter();
|
|
33
|
+
return {
|
|
34
|
+
onDidChange: emitter.event,
|
|
35
|
+
id: 'test-model',
|
|
36
|
+
getRequests: () => requests,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
describe('ChatTokenUsageIndicator', () => {
|
|
40
|
+
describe('formatTokenCount', () => {
|
|
41
|
+
it('should return "-" for undefined', () => {
|
|
42
|
+
(0, chai_1.expect)((0, chat_token_usage_indicator_util_1.formatTokenCount)(undefined)).to.equal('-');
|
|
43
|
+
});
|
|
44
|
+
it('should return "-" for 0', () => {
|
|
45
|
+
(0, chai_1.expect)((0, chat_token_usage_indicator_util_1.formatTokenCount)(0)).to.equal('-');
|
|
46
|
+
});
|
|
47
|
+
it('should format numbers below 1000 as-is', () => {
|
|
48
|
+
(0, chai_1.expect)((0, chat_token_usage_indicator_util_1.formatTokenCount)(500)).to.equal('500');
|
|
49
|
+
(0, chai_1.expect)((0, chat_token_usage_indicator_util_1.formatTokenCount)(999)).to.equal('999');
|
|
50
|
+
});
|
|
51
|
+
it('should format numbers >= 1000 with k suffix and one decimal', () => {
|
|
52
|
+
(0, chai_1.expect)((0, chat_token_usage_indicator_util_1.formatTokenCount)(1000)).to.equal('1.0k');
|
|
53
|
+
(0, chai_1.expect)((0, chat_token_usage_indicator_util_1.formatTokenCount)(1500)).to.equal('1.5k');
|
|
54
|
+
(0, chai_1.expect)((0, chat_token_usage_indicator_util_1.formatTokenCount)(125000)).to.equal('125.0k');
|
|
55
|
+
(0, chai_1.expect)((0, chat_token_usage_indicator_util_1.formatTokenCount)(200000)).to.equal('200.0k');
|
|
56
|
+
});
|
|
57
|
+
});
|
|
58
|
+
describe('getUsageColorClass', () => {
|
|
59
|
+
it('returns none for 0 tokens regardless of threshold', () => {
|
|
60
|
+
(0, chai_1.expect)((0, chat_token_usage_indicator_util_1.getUsageColorClass)(0, THRESHOLD, CONTEXT_WINDOW)).to.equal('token-usage-none');
|
|
61
|
+
});
|
|
62
|
+
it('returns green for tokens below the threshold', () => {
|
|
63
|
+
(0, chai_1.expect)((0, chat_token_usage_indicator_util_1.getUsageColorClass)(1, THRESHOLD, CONTEXT_WINDOW)).to.equal('token-usage-green');
|
|
64
|
+
(0, chai_1.expect)((0, chat_token_usage_indicator_util_1.getUsageColorClass)(THRESHOLD - 1, THRESHOLD, CONTEXT_WINDOW)).to.equal('token-usage-green');
|
|
65
|
+
});
|
|
66
|
+
it('returns yellow for tokens at or above the threshold but below the context window size', () => {
|
|
67
|
+
(0, chai_1.expect)((0, chat_token_usage_indicator_util_1.getUsageColorClass)(THRESHOLD, THRESHOLD, CONTEXT_WINDOW)).to.equal('token-usage-yellow');
|
|
68
|
+
(0, chai_1.expect)((0, chat_token_usage_indicator_util_1.getUsageColorClass)(CONTEXT_WINDOW - 1, THRESHOLD, CONTEXT_WINDOW)).to.equal('token-usage-yellow');
|
|
69
|
+
});
|
|
70
|
+
it('returns red for tokens at or above the context window size', () => {
|
|
71
|
+
(0, chai_1.expect)((0, chat_token_usage_indicator_util_1.getUsageColorClass)(CONTEXT_WINDOW, THRESHOLD, CONTEXT_WINDOW)).to.equal('token-usage-red');
|
|
72
|
+
(0, chai_1.expect)((0, chat_token_usage_indicator_util_1.getUsageColorClass)(CONTEXT_WINDOW + 1, THRESHOLD, CONTEXT_WINDOW)).to.equal('token-usage-red');
|
|
73
|
+
});
|
|
74
|
+
});
|
|
75
|
+
describe('computeSessionTokenUsage', () => {
|
|
76
|
+
it('should return 0 when chatModel is undefined', () => {
|
|
77
|
+
(0, chai_1.expect)((0, chat_token_usage_indicator_util_1.computeSessionTokenUsage)(undefined)).to.equal(0);
|
|
78
|
+
});
|
|
79
|
+
it('should return 0 when there are no requests', () => {
|
|
80
|
+
const model = createMockChatModel([]);
|
|
81
|
+
(0, chai_1.expect)((0, chat_token_usage_indicator_util_1.computeSessionTokenUsage)(model)).to.equal(0);
|
|
82
|
+
});
|
|
83
|
+
it('should return 0 when requests have no token usage', () => {
|
|
84
|
+
const model = createMockChatModel([
|
|
85
|
+
createMockRequest(undefined),
|
|
86
|
+
createMockRequest(undefined)
|
|
87
|
+
]);
|
|
88
|
+
(0, chai_1.expect)((0, chat_token_usage_indicator_util_1.computeSessionTokenUsage)(model)).to.equal(0);
|
|
89
|
+
});
|
|
90
|
+
it('should sum all tokens from a single request', () => {
|
|
91
|
+
const model = createMockChatModel([
|
|
92
|
+
createMockRequest({ inputTokens: 1000, outputTokens: 500 })
|
|
93
|
+
]);
|
|
94
|
+
(0, chai_1.expect)((0, chat_token_usage_indicator_util_1.computeSessionTokenUsage)(model)).to.equal(1500);
|
|
95
|
+
});
|
|
96
|
+
it('should return only the last request tokens, not the sum', () => {
|
|
97
|
+
const model = createMockChatModel([
|
|
98
|
+
createMockRequest({ inputTokens: 1000, outputTokens: 500 }),
|
|
99
|
+
createMockRequest({ inputTokens: 2000, outputTokens: 800 })
|
|
100
|
+
]);
|
|
101
|
+
// Only the last request: 2000+800 = 2800
|
|
102
|
+
(0, chai_1.expect)((0, chat_token_usage_indicator_util_1.computeSessionTokenUsage)(model)).to.equal(2800);
|
|
103
|
+
});
|
|
104
|
+
it('should return last request tokens from 3 requests (2 complete, 1 in-progress)', () => {
|
|
105
|
+
const model = createMockChatModel([
|
|
106
|
+
createMockRequest({ inputTokens: 1000, outputTokens: 500 }, true),
|
|
107
|
+
createMockRequest({ inputTokens: 2000, outputTokens: 800 }, true),
|
|
108
|
+
createMockRequest({ inputTokens: 3000, outputTokens: 200 }, false) // in-progress
|
|
109
|
+
]);
|
|
110
|
+
// Only the last request: 3000+200 = 3200
|
|
111
|
+
(0, chai_1.expect)((0, chat_token_usage_indicator_util_1.computeSessionTokenUsage)(model)).to.equal(3200);
|
|
112
|
+
});
|
|
113
|
+
it('should skip requests without token usage and return last with usage', () => {
|
|
114
|
+
const model = createMockChatModel([
|
|
115
|
+
createMockRequest({ inputTokens: 1000, outputTokens: 500 }),
|
|
116
|
+
createMockRequest(undefined),
|
|
117
|
+
createMockRequest({ inputTokens: 3000, outputTokens: 1000 })
|
|
118
|
+
]);
|
|
119
|
+
// Last request with usage: 3000+1000 = 4000
|
|
120
|
+
(0, chai_1.expect)((0, chat_token_usage_indicator_util_1.computeSessionTokenUsage)(model)).to.equal(4000);
|
|
121
|
+
});
|
|
122
|
+
it('should include cache creation and cache read tokens in the total', () => {
|
|
123
|
+
const model = createMockChatModel([
|
|
124
|
+
createMockRequest({
|
|
125
|
+
inputTokens: 1000,
|
|
126
|
+
outputTokens: 500,
|
|
127
|
+
cacheCreationInputTokens: 200,
|
|
128
|
+
cacheReadInputTokens: 300
|
|
129
|
+
})
|
|
130
|
+
]);
|
|
131
|
+
// 1000+500+200+300 = 2000
|
|
132
|
+
(0, chai_1.expect)((0, chat_token_usage_indicator_util_1.computeSessionTokenUsage)(model)).to.equal(2000);
|
|
133
|
+
});
|
|
134
|
+
it('should return only last request cache tokens, not sum across requests', () => {
|
|
135
|
+
const model = createMockChatModel([
|
|
136
|
+
createMockRequest({
|
|
137
|
+
inputTokens: 1000,
|
|
138
|
+
outputTokens: 500,
|
|
139
|
+
cacheCreationInputTokens: 200,
|
|
140
|
+
cacheReadInputTokens: 300
|
|
141
|
+
}),
|
|
142
|
+
createMockRequest({
|
|
143
|
+
inputTokens: 500,
|
|
144
|
+
outputTokens: 100,
|
|
145
|
+
cacheCreationInputTokens: 50,
|
|
146
|
+
cacheReadInputTokens: 50
|
|
147
|
+
})
|
|
148
|
+
]);
|
|
149
|
+
// Only last request: 500+100+50+50 = 700
|
|
150
|
+
(0, chai_1.expect)((0, chat_token_usage_indicator_util_1.computeSessionTokenUsage)(model)).to.equal(700);
|
|
151
|
+
});
|
|
152
|
+
it('should return in-progress request token usage when it is last', () => {
|
|
153
|
+
const model = createMockChatModel([
|
|
154
|
+
createMockRequest({ inputTokens: 1000, outputTokens: 500 }, true),
|
|
155
|
+
createMockRequest({ inputTokens: 5000, outputTokens: 200 }, false) // in-progress
|
|
156
|
+
]);
|
|
157
|
+
// Only last request: 5000+200 = 5200
|
|
158
|
+
(0, chai_1.expect)((0, chat_token_usage_indicator_util_1.computeSessionTokenUsage)(model)).to.equal(5200);
|
|
159
|
+
});
|
|
160
|
+
it('should return total from in-progress request when it is the only request', () => {
|
|
161
|
+
const model = createMockChatModel([
|
|
162
|
+
createMockRequest({ inputTokens: 5000, outputTokens: 200 }, false)
|
|
163
|
+
]);
|
|
164
|
+
(0, chai_1.expect)((0, chat_token_usage_indicator_util_1.computeSessionTokenUsage)(model)).to.equal(5200);
|
|
165
|
+
});
|
|
166
|
+
it('should skip trailing requests without usage and find last with usage', () => {
|
|
167
|
+
const model = createMockChatModel([
|
|
168
|
+
createMockRequest({ inputTokens: 1000, outputTokens: 500 }),
|
|
169
|
+
createMockRequest({ inputTokens: 3000, outputTokens: 1000 }),
|
|
170
|
+
createMockRequest(undefined)
|
|
171
|
+
]);
|
|
172
|
+
// Last request with usage: 3000+1000 = 4000
|
|
173
|
+
(0, chai_1.expect)((0, chat_token_usage_indicator_util_1.computeSessionTokenUsage)(model)).to.equal(4000);
|
|
174
|
+
});
|
|
175
|
+
});
|
|
176
|
+
describe('isAboveTokenUsageWarningThreshold', () => {
|
|
177
|
+
it('is false for 0 tokens', () => {
|
|
178
|
+
(0, chai_1.expect)((0, chat_token_usage_indicator_util_1.isAboveTokenUsageWarningThreshold)(0, THRESHOLD)).to.equal(false);
|
|
179
|
+
});
|
|
180
|
+
it('is false for tokens below the threshold', () => {
|
|
181
|
+
(0, chai_1.expect)((0, chat_token_usage_indicator_util_1.isAboveTokenUsageWarningThreshold)(THRESHOLD - 1, THRESHOLD)).to.equal(false);
|
|
182
|
+
});
|
|
183
|
+
it('is true for tokens at the threshold', () => {
|
|
184
|
+
(0, chai_1.expect)((0, chat_token_usage_indicator_util_1.isAboveTokenUsageWarningThreshold)(THRESHOLD, THRESHOLD)).to.equal(true);
|
|
185
|
+
});
|
|
186
|
+
it('is true for tokens above the threshold', () => {
|
|
187
|
+
(0, chai_1.expect)((0, chat_token_usage_indicator_util_1.isAboveTokenUsageWarningThreshold)(THRESHOLD + 1, THRESHOLD)).to.equal(true);
|
|
188
|
+
});
|
|
189
|
+
});
|
|
190
|
+
describe('decideTokenUsageWarning', () => {
|
|
191
|
+
it('resets when usage is below the threshold', () => {
|
|
192
|
+
(0, chai_1.expect)((0, chat_token_usage_indicator_util_1.decideTokenUsageWarning)({
|
|
193
|
+
totalTokens: 50,
|
|
194
|
+
threshold: THRESHOLD,
|
|
195
|
+
alreadyNotified: true
|
|
196
|
+
})).to.equal('reset');
|
|
197
|
+
});
|
|
198
|
+
it('resets when usage is zero', () => {
|
|
199
|
+
(0, chai_1.expect)((0, chat_token_usage_indicator_util_1.decideTokenUsageWarning)({
|
|
200
|
+
totalTokens: 0,
|
|
201
|
+
threshold: THRESHOLD,
|
|
202
|
+
alreadyNotified: true
|
|
203
|
+
})).to.equal('reset');
|
|
204
|
+
});
|
|
205
|
+
it('skips when the session has already been notified', () => {
|
|
206
|
+
(0, chai_1.expect)((0, chat_token_usage_indicator_util_1.decideTokenUsageWarning)({
|
|
207
|
+
totalTokens: THRESHOLD + 50,
|
|
208
|
+
threshold: THRESHOLD,
|
|
209
|
+
alreadyNotified: true
|
|
210
|
+
})).to.equal('skip');
|
|
211
|
+
});
|
|
212
|
+
it('notifies when usage crosses the threshold and the session has not been notified yet', () => {
|
|
213
|
+
(0, chai_1.expect)((0, chat_token_usage_indicator_util_1.decideTokenUsageWarning)({
|
|
214
|
+
totalTokens: THRESHOLD,
|
|
215
|
+
threshold: THRESHOLD,
|
|
216
|
+
alreadyNotified: false
|
|
217
|
+
})).to.equal('notify');
|
|
218
|
+
(0, chai_1.expect)((0, chat_token_usage_indicator_util_1.decideTokenUsageWarning)({
|
|
219
|
+
totalTokens: THRESHOLD * 2,
|
|
220
|
+
threshold: THRESHOLD,
|
|
221
|
+
alreadyNotified: false
|
|
222
|
+
})).to.equal('notify');
|
|
223
|
+
});
|
|
224
|
+
});
|
|
225
|
+
});
|
|
226
|
+
//# sourceMappingURL=chat-token-usage-indicator-util.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat-token-usage-indicator-util.spec.js","sourceRoot":"","sources":["../../src/browser/chat-token-usage-indicator-util.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { AIChatInputWidget, type AIChatInputConfiguration } from '../chat-input-widget';
|
|
2
2
|
import type { EditableRequestNode } from './chat-view-tree-widget';
|
|
3
3
|
import { URI } from '@theia/core';
|
|
4
|
-
import type { ChatRequestModel, EditableChatRequestModel, ChatHierarchyBranch } from '@theia/ai-chat';
|
|
4
|
+
import type { ChatModel, ChatRequestModel, EditableChatRequestModel, ChatHierarchyBranch } from '@theia/ai-chat';
|
|
5
5
|
import type { AIVariableResolutionRequest } from '@theia/ai-core';
|
|
6
6
|
export declare const AIChatTreeInputConfiguration: unique symbol;
|
|
7
7
|
export interface AIChatTreeInputConfiguration extends AIChatInputConfiguration {
|
|
@@ -42,5 +42,10 @@ export declare class AIChatTreeInputWidget extends AIChatInputWidget {
|
|
|
42
42
|
getAllVariablesForRequest(): AIVariableResolutionRequest[];
|
|
43
43
|
clearPendingImageAttachments(): void;
|
|
44
44
|
protected deleteContextElement(index: number): void;
|
|
45
|
+
/**
|
|
46
|
+
* No-op in edit mode: the token usage warning is owned by the main chat input
|
|
47
|
+
* widget so we avoid double-notifying when an edit widget is open alongside it.
|
|
48
|
+
*/
|
|
49
|
+
protected evaluateTokenUsageWarning(_chatModel: ChatModel): void;
|
|
45
50
|
}
|
|
46
51
|
//# sourceMappingURL=chat-view-tree-input-widget.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-view-tree-input-widget.d.ts","sourceRoot":"","sources":["../../../src/browser/chat-tree-view/chat-view-tree-input-widget.tsx"],"names":[],"mappings":"AAiBA,OAAO,EAAE,iBAAiB,EAAE,KAAK,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AACxF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAElC,OAAO,KAAK,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"chat-view-tree-input-widget.d.ts","sourceRoot":"","sources":["../../../src/browser/chat-tree-view/chat-view-tree-input-widget.tsx"],"names":[],"mappings":"AAiBA,OAAO,EAAE,iBAAiB,EAAE,KAAK,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AACxF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAElC,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACjH,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,gBAAgB,CAAC;AAGlE,eAAO,MAAM,4BAA4B,eAAyC,CAAC;AACnF,MAAM,WAAW,4BAA6B,SAAQ,wBAAwB;CAAI;AAElF,eAAO,MAAM,mBAAmB,eAAgC,CAAC;AACjE,MAAM,WAAW,mBAAmB;IAChC,IAAI,EAAE,mBAAmB,CAAC;IAC1B;;OAEG;IACH,MAAM,CAAC,EAAE,mBAAmB,CAAC;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1C,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,QAAQ,CAAC,EAAE,CAAC,YAAY,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACpD,iBAAiB,CAAC,EAAE,CAAC,YAAY,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC7D,wBAAwB,CAAC,EAAE,CAAC,YAAY,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACtF;AACD,eAAO,MAAM,sBAAsB,eAAmC,CAAC;AACvE,MAAM,MAAM,sBAAsB,GAAG,CAAC,IAAI,EAAE,mBAAmB,KAAK,qBAAqB,CAAC;AAE1F,qBACa,qBAAsB,SAAQ,iBAAiB;IACxD,OAAuB,EAAE,SAA4B;IAGrD,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC;IAE7C,mBAC4B,aAAa,EAAE,4BAA4B,GAAG,SAAS,CAAC;IAEpF,IAAI,WAAW,IAAI,mBAAmB,CAErC;IAED,IAAI,OAAO,IAAI,wBAAwB,CAEtC;cAGkB,IAAI,IAAI,IAAI;IAoB/B,SAAS,CAAC,YAAY,IAAI,IAAI;cAIX,cAAc,IAAI,GAAG;IAI/B,UAAU,CAAC,QAAQ,EAAE,2BAA2B,GAAG,IAAI;IAIhE;;;;OAIG;IACM,oBAAoB,CAAC,QAAQ,EAAE,2BAA2B,GAAG,MAAM;cAMzD,UAAU,IAAI,SAAS,2BAA2B,EAAE;IAI9D,yBAAyB,IAAI,2BAA2B,EAAE;IAI1D,4BAA4B,IAAI,IAAI;cAI1B,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAI5D;;;OAGG;cACgB,yBAAyB,CAAC,UAAU,EAAE,SAAS,GAAG,IAAI;CAG5E"}
|
|
@@ -80,6 +80,13 @@ let AIChatTreeInputWidget = class AIChatTreeInputWidget extends chat_input_widge
|
|
|
80
80
|
deleteContextElement(index) {
|
|
81
81
|
this.request.editContextManager.deleteVariables(index);
|
|
82
82
|
}
|
|
83
|
+
/**
|
|
84
|
+
* No-op in edit mode: the token usage warning is owned by the main chat input
|
|
85
|
+
* widget so we avoid double-notifying when an edit widget is open alongside it.
|
|
86
|
+
*/
|
|
87
|
+
evaluateTokenUsageWarning(_chatModel) {
|
|
88
|
+
// Intentionally empty.
|
|
89
|
+
}
|
|
83
90
|
};
|
|
84
91
|
exports.AIChatTreeInputWidget = AIChatTreeInputWidget;
|
|
85
92
|
tslib_1.__decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-view-tree-input-widget.js","sourceRoot":"","sources":["../../../src/browser/chat-tree-view/chat-view-tree-input-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;;;;AAEhF,4DAA2F;AAC3F,4DAAwF;AAExF,sCAAkC;AAClC,wFAAkF;AAGlF,qDAA8C;AAEjC,QAAA,4BAA4B,GAAG,MAAM,CAAC,8BAA8B,CAAC,CAAC;AAGtE,QAAA,mBAAmB,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC;AAcpD,QAAA,sBAAsB,GAAG,MAAM,CAAC,wBAAwB,CAAC,CAAC;AAIhE,IAAM,qBAAqB,GAA3B,MAAM,qBAAsB,SAAQ,qCAAiB;aACjC,OAAE,GAAG,wBAAwB,AAA3B,CAA4B;IAQrD,IAAI,WAAW;QACX,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IAC1B,CAAC;IAED,IAAI,OAAO;QACP,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;IACpC,CAAC;IAGkB,IAAI;QACnB,KAAK,CAAC,IAAI,EAAE,CAAC;QACb,IAAI,CAAC,YAAY,EAAE,CAAC;QAEpB,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;QACzC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE;YACjD,IAAI,CAAC,YAAY,EAAE,CAAC;QACxB,CAAC,CAAC,CAAC,CAAC;QAEJ,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,aAAG,CAAC,MAAM,EAAE,GAAG,EAAE;YAC5C,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;QAC9B,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE;YAC/B,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;YAC3B,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAES,YAAY;QAClB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;IAC9D,CAAC;IAEkB,cAAc;QAC7B,OAAO,IAAI,UAAG,CAAC,YAAY,IAAI,CAAC,WAAW,CAAC,EAAE,UAAU,8DAA4B,EAAE,CAAC,CAAC;IAC5F,CAAC;IAEQ,UAAU,CAAC,QAAqC;QACrD,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;IAC3D,CAAC;IAED;;;;OAIG;IACM,oBAAoB,CAAC,QAAqC;QAC/D,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QACvD,uFAAuF;QACvF,OAAO,YAAY,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;IACpC,CAAC;IAEkB,UAAU;QACzB,OAAO,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;IAC1D,CAAC;IAEQ,yBAAyB;QAC9B,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC,CAAC;IAC/D,CAAC;IAEQ,4BAA4B;QACjC,oEAAoE;IACxE,CAAC;IAEkB,oBAAoB,CAAC,KAAa;QACjD,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IAC3D,CAAC;;
|
|
1
|
+
{"version":3,"file":"chat-view-tree-input-widget.js","sourceRoot":"","sources":["../../../src/browser/chat-tree-view/chat-view-tree-input-widget.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-view-tree-widget.d.ts","sourceRoot":"","sources":["../../../src/browser/chat-tree-view/chat-view-tree-widget.tsx"],"names":[],"mappings":"AAeA,OAAO,EACH,SAAS,EACT,gBAAgB,EAChB,SAAS,EACT,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,EACjB,WAAW,EACX,wBAAwB,EAIxB,KAAK,WAAW,EAChB,KAAK,mBAAmB,EAC3B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAc,oBAAoB,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACtH,OAAO,EAGH,mBAAmB,EACnB,YAAY,EAGZ,SAAS,EACT,aAAa,EACb,SAAS,EACT,QAAQ,EACR,SAAS,EACT,UAAU,EAGb,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,6CAA6C,CAAC;AAQ5F,OAAO,KAAK,KAAK,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"chat-view-tree-widget.d.ts","sourceRoot":"","sources":["../../../src/browser/chat-tree-view/chat-view-tree-widget.tsx"],"names":[],"mappings":"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"}
|
|
@@ -29,8 +29,10 @@ const nls_1 = require("@theia/core/lib/common/nls");
|
|
|
29
29
|
const inversify_1 = require("@theia/core/shared/inversify");
|
|
30
30
|
const React = require("@theia/core/shared/react");
|
|
31
31
|
const image_context_variable_1 = require("@theia/ai-chat/lib/common/image-context-variable");
|
|
32
|
+
const markdown_rendering_1 = require("@theia/core/lib/common/markdown-rendering");
|
|
32
33
|
const chat_node_toolbar_action_contribution_1 = require("../chat-node-toolbar-action-contribution");
|
|
33
34
|
const chat_response_part_renderer_1 = require("../chat-response-part-renderer");
|
|
35
|
+
const chat_token_usage_indicator_util_1 = require("../chat-token-usage-indicator-util");
|
|
34
36
|
const markdown_part_renderer_1 = require("../chat-response-renderer/markdown-part-renderer");
|
|
35
37
|
const chat_progress_message_1 = require("../chat-progress-message");
|
|
36
38
|
const chat_view_tree_input_widget_1 = require("./chat-view-tree-input-widget");
|
|
@@ -97,7 +99,7 @@ let ChatViewTreeWidget = class ChatViewTreeWidget extends browser_2.TreeWidget {
|
|
|
97
99
|
this.addEventListener(this.node, 'focusout', () => this.chatResponseFocusKey.set(false));
|
|
98
100
|
this.toDispose.pushAll([
|
|
99
101
|
this.toDisposeOnChatModelChange,
|
|
100
|
-
this.activationService.
|
|
102
|
+
this.activationService.onDidChangeCanRun(change => {
|
|
101
103
|
this.chatInputs.forEach(widget => {
|
|
102
104
|
widget.setEnabled(change);
|
|
103
105
|
});
|
|
@@ -420,9 +422,24 @@ let ChatViewTreeWidget = class ChatViewTreeWidget extends browser_2.TreeWidget {
|
|
|
420
422
|
React.createElement("div", { className: 'theia-ChatNodeHeader' },
|
|
421
423
|
React.createElement("div", { className: `theia-AgentAvatar ${this.getAgentIconClassName(node)}` }),
|
|
422
424
|
React.createElement("h3", { ref: agentLabel, className: 'theia-AgentLabel', onMouseEnter: () => {
|
|
423
|
-
|
|
425
|
+
const tokenUsage = (0, exports.isResponseNode)(node) ? node.response.tokenUsage : undefined;
|
|
426
|
+
const hasTokenInfo = tokenUsage && (tokenUsage.inputTokens > 0 || tokenUsage.outputTokens > 0);
|
|
427
|
+
const tokenInfo = hasTokenInfo
|
|
428
|
+
? `${nls_1.nls.localize('theia/ai/chat-ui/tokenUsageLabel', 'Token Usage')}: ${nls_1.nls.localizeByDefault('Input: {0}', (0, chat_token_usage_indicator_util_1.formatTokenCount)(tokenUsage.inputTokens))} | ${nls_1.nls.localizeByDefault('Output: {0}', (0, chat_token_usage_indicator_util_1.formatTokenCount)(tokenUsage.outputTokens))}`
|
|
429
|
+
: undefined;
|
|
430
|
+
if (agentDescription || tokenInfo) {
|
|
431
|
+
const md = new markdown_rendering_1.MarkdownStringImpl();
|
|
432
|
+
if (agentDescription) {
|
|
433
|
+
md.appendMarkdown(agentDescription);
|
|
434
|
+
}
|
|
435
|
+
if (agentDescription && tokenInfo) {
|
|
436
|
+
md.appendMarkdown('\n\n---\n\n');
|
|
437
|
+
}
|
|
438
|
+
if (tokenInfo) {
|
|
439
|
+
md.appendMarkdown(tokenInfo);
|
|
440
|
+
}
|
|
424
441
|
this.hoverService.requestHover({
|
|
425
|
-
content:
|
|
442
|
+
content: md,
|
|
426
443
|
target: agentLabel.current,
|
|
427
444
|
position: 'right'
|
|
428
445
|
});
|