@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.
Files changed (106) hide show
  1. package/lib/browser/ai-chat-ui-contribution.d.ts.map +1 -1
  2. package/lib/browser/ai-chat-ui-contribution.js +10 -9
  3. package/lib/browser/ai-chat-ui-contribution.js.map +1 -1
  4. package/lib/browser/ai-chat-ui-frontend-module.d.ts +1 -0
  5. package/lib/browser/ai-chat-ui-frontend-module.d.ts.map +1 -1
  6. package/lib/browser/ai-chat-ui-frontend-module.js +3 -0
  7. package/lib/browser/ai-chat-ui-frontend-module.js.map +1 -1
  8. package/lib/browser/chat-input-mode-contribution.js +1 -1
  9. package/lib/browser/chat-input-mode-contribution.js.map +1 -1
  10. package/lib/browser/chat-input-widget.d.ts +57 -3
  11. package/lib/browser/chat-input-widget.d.ts.map +1 -1
  12. package/lib/browser/chat-input-widget.js +382 -21
  13. package/lib/browser/chat-input-widget.js.map +1 -1
  14. package/lib/browser/chat-response-part-renderer.d.ts +6 -0
  15. package/lib/browser/chat-response-part-renderer.d.ts.map +1 -1
  16. package/lib/browser/chat-response-renderer/delegation-tool-renderer.d.ts +2 -0
  17. package/lib/browser/chat-response-renderer/delegation-tool-renderer.d.ts.map +1 -1
  18. package/lib/browser/chat-response-renderer/delegation-tool-renderer.js +76 -5
  19. package/lib/browser/chat-response-renderer/delegation-tool-renderer.js.map +1 -1
  20. package/lib/browser/chat-response-renderer/index.d.ts +1 -0
  21. package/lib/browser/chat-response-renderer/index.d.ts.map +1 -1
  22. package/lib/browser/chat-response-renderer/index.js +1 -0
  23. package/lib/browser/chat-response-renderer/index.js.map +1 -1
  24. package/lib/browser/chat-response-renderer/question-part-renderer.d.ts +3 -0
  25. package/lib/browser/chat-response-renderer/question-part-renderer.d.ts.map +1 -1
  26. package/lib/browser/chat-response-renderer/question-part-renderer.js +19 -6
  27. package/lib/browser/chat-response-renderer/question-part-renderer.js.map +1 -1
  28. package/lib/browser/chat-response-renderer/tool-call-rendering.d.ts +21 -0
  29. package/lib/browser/chat-response-renderer/tool-call-rendering.d.ts.map +1 -0
  30. package/lib/browser/chat-response-renderer/tool-call-rendering.js +53 -0
  31. package/lib/browser/chat-response-renderer/tool-call-rendering.js.map +1 -0
  32. package/lib/browser/chat-response-renderer/tool-confirmation.d.ts +4 -0
  33. package/lib/browser/chat-response-renderer/tool-confirmation.d.ts.map +1 -1
  34. package/lib/browser/chat-response-renderer/tool-confirmation.js +22 -0
  35. package/lib/browser/chat-response-renderer/tool-confirmation.js.map +1 -1
  36. package/lib/browser/chat-response-renderer/toolcall-part-renderer.d.ts +1 -0
  37. package/lib/browser/chat-response-renderer/toolcall-part-renderer.d.ts.map +1 -1
  38. package/lib/browser/chat-response-renderer/toolcall-part-renderer.js +7 -18
  39. package/lib/browser/chat-response-renderer/toolcall-part-renderer.js.map +1 -1
  40. package/lib/browser/chat-response-renderer/toolcall-utils.d.ts +1 -0
  41. package/lib/browser/chat-response-renderer/toolcall-utils.d.ts.map +1 -1
  42. package/lib/browser/chat-response-renderer/toolcall-utils.js +3 -0
  43. package/lib/browser/chat-response-renderer/toolcall-utils.js.map +1 -1
  44. package/lib/browser/chat-token-usage-indicator-util.d.ts +35 -0
  45. package/lib/browser/chat-token-usage-indicator-util.d.ts.map +1 -0
  46. package/lib/browser/chat-token-usage-indicator-util.js +138 -0
  47. package/lib/browser/chat-token-usage-indicator-util.js.map +1 -0
  48. package/lib/browser/chat-token-usage-indicator-util.spec.d.ts +2 -0
  49. package/lib/browser/chat-token-usage-indicator-util.spec.d.ts.map +1 -0
  50. package/lib/browser/chat-token-usage-indicator-util.spec.js +226 -0
  51. package/lib/browser/chat-token-usage-indicator-util.spec.js.map +1 -0
  52. package/lib/browser/chat-tree-view/chat-view-tree-input-widget.d.ts +6 -1
  53. package/lib/browser/chat-tree-view/chat-view-tree-input-widget.d.ts.map +1 -1
  54. package/lib/browser/chat-tree-view/chat-view-tree-input-widget.js +7 -0
  55. package/lib/browser/chat-tree-view/chat-view-tree-input-widget.js.map +1 -1
  56. package/lib/browser/chat-tree-view/chat-view-tree-widget.d.ts.map +1 -1
  57. package/lib/browser/chat-tree-view/chat-view-tree-widget.js +20 -3
  58. package/lib/browser/chat-tree-view/chat-view-tree-widget.js.map +1 -1
  59. package/lib/browser/chat-view-preferences.d.ts +18 -0
  60. package/lib/browser/chat-view-preferences.d.ts.map +1 -0
  61. package/lib/browser/chat-view-preferences.js +69 -0
  62. package/lib/browser/chat-view-preferences.js.map +1 -0
  63. package/lib/browser/chat-view-widget-toolbar-contribution.d.ts.map +1 -1
  64. package/lib/browser/chat-view-widget-toolbar-contribution.js +3 -2
  65. package/lib/browser/chat-view-widget-toolbar-contribution.js.map +1 -1
  66. package/lib/browser/chat-view-widget.d.ts +1 -2
  67. package/lib/browser/chat-view-widget.d.ts.map +1 -1
  68. package/lib/browser/chat-view-widget.js +3 -7
  69. package/lib/browser/chat-view-widget.js.map +1 -1
  70. package/lib/browser/session-settings-dialog.d.ts +2 -5
  71. package/lib/browser/session-settings-dialog.d.ts.map +1 -1
  72. package/lib/browser/session-settings-dialog.js +15 -33
  73. package/lib/browser/session-settings-dialog.js.map +1 -1
  74. package/lib/common/toolcall-utils.d.ts +6 -0
  75. package/lib/common/toolcall-utils.d.ts.map +1 -0
  76. package/lib/common/toolcall-utils.js +40 -0
  77. package/lib/common/toolcall-utils.js.map +1 -0
  78. package/lib/common/toolcall-utils.spec.d.ts +2 -0
  79. package/lib/common/toolcall-utils.spec.d.ts.map +1 -0
  80. package/lib/common/toolcall-utils.spec.js +102 -0
  81. package/lib/common/toolcall-utils.spec.js.map +1 -0
  82. package/package.json +12 -12
  83. package/src/browser/ai-chat-ui-contribution.ts +10 -9
  84. package/src/browser/ai-chat-ui-frontend-module.ts +4 -0
  85. package/src/browser/chat-input-mode-contribution.ts +1 -1
  86. package/src/browser/chat-input-widget.tsx +481 -14
  87. package/src/browser/chat-response-part-renderer.ts +6 -0
  88. package/src/browser/chat-response-renderer/delegation-tool-renderer.tsx +105 -7
  89. package/src/browser/chat-response-renderer/index.ts +1 -0
  90. package/src/browser/chat-response-renderer/question-part-renderer.tsx +24 -8
  91. package/src/browser/chat-response-renderer/tool-call-rendering.tsx +89 -0
  92. package/src/browser/chat-response-renderer/tool-confirmation.tsx +26 -0
  93. package/src/browser/chat-response-renderer/toolcall-part-renderer.tsx +21 -18
  94. package/src/browser/chat-response-renderer/toolcall-utils.ts +2 -0
  95. package/src/browser/chat-token-usage-indicator-util.spec.ts +262 -0
  96. package/src/browser/chat-token-usage-indicator-util.ts +151 -0
  97. package/src/browser/chat-tree-view/chat-view-tree-input-widget.tsx +9 -1
  98. package/src/browser/chat-tree-view/chat-view-tree-widget.tsx +22 -3
  99. package/src/browser/chat-view-preferences.ts +87 -0
  100. package/src/browser/chat-view-widget-toolbar-contribution.tsx +3 -2
  101. package/src/browser/chat-view-widget.tsx +4 -7
  102. package/src/browser/session-settings-dialog.tsx +15 -97
  103. package/src/browser/style/index.css +164 -54
  104. package/src/browser/style/tool-call-rendering.css +327 -0
  105. package/src/common/toolcall-utils.spec.ts +118 -0
  106. 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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=chat-token-usage-indicator-util.spec.d.ts.map
@@ -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;AACtG,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;CAG/D"}
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":"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"}
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":"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"}
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.onDidChangeActiveStatus(change => {
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
- if (agentDescription) {
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: agentDescription,
442
+ content: md,
426
443
  target: agentLabel.current,
427
444
  position: 'right'
428
445
  });