@theia/ai-chat-ui 1.74.0-next.8 → 1.74.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/browser/ai-chat-ui-contribution.d.ts.map +1 -1
- package/lib/browser/ai-chat-ui-contribution.js +54 -31
- package/lib/browser/ai-chat-ui-contribution.js.map +1 -1
- package/lib/browser/ai-chat-ui-frontend-module.d.ts.map +1 -1
- package/lib/browser/ai-chat-ui-frontend-module.js +11 -3
- package/lib/browser/ai-chat-ui-frontend-module.js.map +1 -1
- package/lib/browser/chat-banner-provider.d.ts +20 -0
- package/lib/browser/chat-banner-provider.d.ts.map +1 -0
- package/lib/browser/chat-banner-provider.js +28 -0
- package/lib/browser/chat-banner-provider.js.map +1 -0
- package/lib/browser/chat-banner-widget.d.ts +20 -0
- package/lib/browser/chat-banner-widget.d.ts.map +1 -0
- package/lib/browser/chat-banner-widget.js +81 -0
- package/lib/browser/chat-banner-widget.js.map +1 -0
- package/lib/browser/chat-input-widget.d.ts +34 -15
- package/lib/browser/chat-input-widget.d.ts.map +1 -1
- package/lib/browser/chat-input-widget.js +166 -60
- package/lib/browser/chat-input-widget.js.map +1 -1
- package/lib/browser/chat-response-renderer/block-external-resources.d.ts +22 -0
- package/lib/browser/chat-response-renderer/block-external-resources.d.ts.map +1 -0
- package/lib/browser/chat-response-renderer/block-external-resources.js +331 -0
- package/lib/browser/chat-response-renderer/block-external-resources.js.map +1 -0
- package/lib/browser/chat-response-renderer/block-external-resources.spec.d.ts +2 -0
- package/lib/browser/chat-response-renderer/block-external-resources.spec.d.ts.map +1 -0
- package/lib/browser/chat-response-renderer/block-external-resources.spec.js +351 -0
- package/lib/browser/chat-response-renderer/block-external-resources.spec.js.map +1 -0
- package/lib/browser/chat-response-renderer/blocked-resource-placeholder.d.ts +7 -0
- package/lib/browser/chat-response-renderer/blocked-resource-placeholder.d.ts.map +1 -0
- package/lib/browser/chat-response-renderer/blocked-resource-placeholder.js +39 -0
- package/lib/browser/chat-response-renderer/blocked-resource-placeholder.js.map +1 -0
- package/lib/browser/chat-response-renderer/compaction-part-renderer.d.ts +8 -0
- package/lib/browser/chat-response-renderer/compaction-part-renderer.d.ts.map +1 -0
- package/lib/browser/chat-response-renderer/compaction-part-renderer.js +47 -0
- package/lib/browser/chat-response-renderer/compaction-part-renderer.js.map +1 -0
- package/lib/browser/chat-response-renderer/delegation-tool-renderer.js +1 -1
- package/lib/browser/chat-response-renderer/delegation-tool-renderer.js.map +1 -1
- package/lib/browser/chat-response-renderer/external-resource-allowlist-contribution.d.ts +11 -0
- package/lib/browser/chat-response-renderer/external-resource-allowlist-contribution.d.ts.map +1 -0
- package/lib/browser/chat-response-renderer/external-resource-allowlist-contribution.js +47 -0
- package/lib/browser/chat-response-renderer/external-resource-allowlist-contribution.js.map +1 -0
- package/lib/browser/chat-response-renderer/index.d.ts +1 -0
- package/lib/browser/chat-response-renderer/index.d.ts.map +1 -1
- package/lib/browser/chat-response-renderer/index.js +1 -0
- package/lib/browser/chat-response-renderer/index.js.map +1 -1
- package/lib/browser/chat-response-renderer/markdown-part-renderer.d.ts +4 -1
- package/lib/browser/chat-response-renderer/markdown-part-renderer.d.ts.map +1 -1
- package/lib/browser/chat-response-renderer/markdown-part-renderer.js +41 -10
- package/lib/browser/chat-response-renderer/markdown-part-renderer.js.map +1 -1
- package/lib/browser/chat-response-renderer/markdown-part-renderer.spec.d.ts +2 -0
- package/lib/browser/chat-response-renderer/markdown-part-renderer.spec.d.ts.map +1 -0
- package/lib/browser/chat-response-renderer/markdown-part-renderer.spec.js +167 -0
- package/lib/browser/chat-response-renderer/markdown-part-renderer.spec.js.map +1 -0
- package/lib/browser/chat-session-notification-contribution.d.ts +36 -0
- package/lib/browser/chat-session-notification-contribution.d.ts.map +1 -0
- package/lib/browser/chat-session-notification-contribution.js +128 -0
- package/lib/browser/chat-session-notification-contribution.js.map +1 -0
- package/lib/browser/chat-session-notification-contribution.spec.d.ts +2 -0
- package/lib/browser/chat-session-notification-contribution.spec.d.ts.map +1 -0
- package/lib/browser/chat-session-notification-contribution.spec.js +233 -0
- package/lib/browser/chat-session-notification-contribution.spec.js.map +1 -0
- package/lib/browser/chat-token-usage-indicator-util.d.ts +8 -1
- package/lib/browser/chat-token-usage-indicator-util.d.ts.map +1 -1
- package/lib/browser/chat-token-usage-indicator-util.js +50 -5
- package/lib/browser/chat-token-usage-indicator-util.js.map +1 -1
- package/lib/browser/chat-token-usage-indicator-util.spec.js +86 -2
- package/lib/browser/chat-token-usage-indicator-util.spec.js.map +1 -1
- package/lib/browser/chat-tree-view/chat-view-tree-widget.d.ts +12 -27
- 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 +39 -127
- package/lib/browser/chat-tree-view/chat-view-tree-widget.js.map +1 -1
- package/lib/browser/chat-tree-view/chat-view-tree-widget.spec.d.ts +2 -0
- package/lib/browser/chat-tree-view/chat-view-tree-widget.spec.d.ts.map +1 -0
- package/lib/browser/chat-tree-view/chat-view-tree-widget.spec.js +83 -0
- package/lib/browser/chat-tree-view/chat-view-tree-widget.spec.js.map +1 -0
- package/lib/browser/chat-tree-view/model-badge.d.ts +13 -0
- package/lib/browser/chat-tree-view/model-badge.d.ts.map +1 -0
- package/lib/browser/chat-tree-view/model-badge.js +41 -0
- package/lib/browser/chat-tree-view/model-badge.js.map +1 -0
- package/lib/browser/chat-view-commands.d.ts +1 -0
- package/lib/browser/chat-view-commands.d.ts.map +1 -1
- package/lib/browser/chat-view-commands.js +6 -1
- package/lib/browser/chat-view-commands.js.map +1 -1
- package/lib/browser/chat-view-preferences.d.ts +2 -0
- package/lib/browser/chat-view-preferences.d.ts.map +1 -1
- package/lib/browser/chat-view-preferences.js +13 -1
- package/lib/browser/chat-view-preferences.js.map +1 -1
- package/lib/browser/chat-view-widget.d.ts +3 -1
- package/lib/browser/chat-view-widget.d.ts.map +1 -1
- package/lib/browser/chat-view-widget.js +8 -2
- package/lib/browser/chat-view-widget.js.map +1 -1
- package/lib/browser/session-settings-dialog.d.ts +5 -0
- package/lib/browser/session-settings-dialog.d.ts.map +1 -1
- package/lib/browser/session-settings-dialog.js +61 -2
- package/lib/browser/session-settings-dialog.js.map +1 -1
- package/package.json +13 -13
- package/src/browser/ai-chat-ui-contribution.ts +64 -36
- package/src/browser/ai-chat-ui-frontend-module.ts +12 -3
- package/src/browser/chat-banner-provider.ts +36 -0
- package/src/browser/chat-banner-widget.tsx +69 -0
- package/src/browser/chat-input-widget.tsx +222 -62
- package/src/browser/chat-response-renderer/block-external-resources.spec.ts +449 -0
- package/src/browser/chat-response-renderer/block-external-resources.ts +370 -0
- package/src/browser/chat-response-renderer/blocked-resource-placeholder.tsx +44 -0
- package/src/browser/chat-response-renderer/compaction-part-renderer.tsx +52 -0
- package/src/browser/chat-response-renderer/delegation-tool-renderer.tsx +1 -1
- package/src/browser/chat-response-renderer/external-resource-allowlist-contribution.ts +42 -0
- package/src/browser/chat-response-renderer/index.ts +1 -0
- package/src/browser/chat-response-renderer/markdown-part-renderer.spec.tsx +203 -0
- package/src/browser/chat-response-renderer/markdown-part-renderer.tsx +47 -10
- package/src/browser/chat-session-notification-contribution.spec.ts +314 -0
- package/src/browser/chat-session-notification-contribution.ts +132 -0
- package/src/browser/chat-token-usage-indicator-util.spec.ts +100 -2
- package/src/browser/chat-token-usage-indicator-util.ts +52 -5
- package/src/browser/chat-tree-view/chat-view-tree-widget.spec.tsx +117 -0
- package/src/browser/chat-tree-view/chat-view-tree-widget.tsx +53 -153
- package/src/browser/chat-tree-view/model-badge.tsx +52 -0
- package/src/browser/chat-view-commands.ts +6 -0
- package/src/browser/chat-view-preferences.ts +16 -0
- package/src/browser/chat-view-widget.tsx +6 -1
- package/src/browser/session-settings-dialog.tsx +140 -1
- package/src/browser/style/index.css +195 -34
- package/lib/browser/chat-input-needed-notification-contribution.d.ts +0 -28
- package/lib/browser/chat-input-needed-notification-contribution.d.ts.map +0 -1
- package/lib/browser/chat-input-needed-notification-contribution.js +0 -104
- package/lib/browser/chat-input-needed-notification-contribution.js.map +0 -1
- package/lib/browser/chat-input-needed-notification-contribution.spec.d.ts +0 -2
- package/lib/browser/chat-input-needed-notification-contribution.spec.d.ts.map +0 -1
- package/lib/browser/chat-input-needed-notification-contribution.spec.js +0 -171
- package/lib/browser/chat-input-needed-notification-contribution.spec.js.map +0 -1
- package/src/browser/chat-input-needed-notification-contribution.spec.ts +0 -223
- package/src/browser/chat-input-needed-notification-contribution.ts +0 -103
|
@@ -0,0 +1,233 @@
|
|
|
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 jsdom_1 = require("@theia/core/lib/browser/test/jsdom");
|
|
19
|
+
let disableJSDOM = (0, jsdom_1.enableJSDOM)();
|
|
20
|
+
const frontend_application_config_provider_1 = require("@theia/core/lib/browser/frontend-application-config-provider");
|
|
21
|
+
frontend_application_config_provider_1.FrontendApplicationConfigProvider.set({});
|
|
22
|
+
require("reflect-metadata");
|
|
23
|
+
const chai_1 = require("chai");
|
|
24
|
+
const core_1 = require("@theia/core");
|
|
25
|
+
const ai_core_1 = require("@theia/ai-core");
|
|
26
|
+
const chat_session_notification_contribution_1 = require("./chat-session-notification-contribution");
|
|
27
|
+
disableJSDOM();
|
|
28
|
+
class FakeChatModel {
|
|
29
|
+
constructor() {
|
|
30
|
+
this.id = 'test-model';
|
|
31
|
+
this.emitter = new core_1.Emitter();
|
|
32
|
+
this.onDidChange = this.emitter.event;
|
|
33
|
+
this.status = 'idle';
|
|
34
|
+
this.requests = [];
|
|
35
|
+
}
|
|
36
|
+
getRequests() {
|
|
37
|
+
return this.requests;
|
|
38
|
+
}
|
|
39
|
+
setStatus(status) {
|
|
40
|
+
this.status = status;
|
|
41
|
+
this.emitter.fire({ kind: 'statusChanged', status });
|
|
42
|
+
}
|
|
43
|
+
fireResponseChanged() {
|
|
44
|
+
this.emitter.fire({ kind: 'responseChanged' });
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
function createSession(id, model, title = 'Session ' + id) {
|
|
48
|
+
return {
|
|
49
|
+
id,
|
|
50
|
+
title,
|
|
51
|
+
model: model,
|
|
52
|
+
isActive: false
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
class TestableContribution extends chat_session_notification_contribution_1.ChatSessionNotificationContribution {
|
|
56
|
+
// Expose protected hooks so we can drive the contribution from tests without going through DI.
|
|
57
|
+
setChatService(service) {
|
|
58
|
+
this.chatService = service;
|
|
59
|
+
}
|
|
60
|
+
setNotificationService(service) {
|
|
61
|
+
this.notificationService = service;
|
|
62
|
+
}
|
|
63
|
+
setShell(shell) {
|
|
64
|
+
this.shell = shell;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
describe('ChatSessionNotificationContribution', () => {
|
|
68
|
+
before(() => disableJSDOM = (0, jsdom_1.enableJSDOM)());
|
|
69
|
+
after(() => disableJSDOM());
|
|
70
|
+
let contribution;
|
|
71
|
+
let chatModel;
|
|
72
|
+
let session;
|
|
73
|
+
let notifications;
|
|
74
|
+
let chatService;
|
|
75
|
+
let sessionEventEmitter;
|
|
76
|
+
beforeEach(() => {
|
|
77
|
+
chatModel = new FakeChatModel();
|
|
78
|
+
session = createSession('session-1', chatModel);
|
|
79
|
+
notifications = [];
|
|
80
|
+
const notificationService = {
|
|
81
|
+
async showNotification(agentId, kind, options) {
|
|
82
|
+
notifications.push({ agentId, kind, options });
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
sessionEventEmitter = new core_1.Emitter();
|
|
86
|
+
chatService = {
|
|
87
|
+
getSessions: () => [session],
|
|
88
|
+
getSession: (id) => (id === session.id ? session : undefined),
|
|
89
|
+
onSessionEvent: sessionEventEmitter.event,
|
|
90
|
+
setActiveSession: () => { }
|
|
91
|
+
};
|
|
92
|
+
const shell = { currentWidget: undefined };
|
|
93
|
+
contribution = new TestableContribution();
|
|
94
|
+
contribution.setChatService(chatService);
|
|
95
|
+
contribution.setNotificationService(notificationService);
|
|
96
|
+
contribution.setShell(shell);
|
|
97
|
+
contribution.onStart();
|
|
98
|
+
chatModel.requests = [{
|
|
99
|
+
agentId: 'agent-a',
|
|
100
|
+
response: {}
|
|
101
|
+
}];
|
|
102
|
+
});
|
|
103
|
+
describe('input needed', () => {
|
|
104
|
+
it('fires a notification on the transition into a waiting status', () => {
|
|
105
|
+
chatModel.setStatus('awaitingInput');
|
|
106
|
+
(0, chai_1.expect)(notifications).to.have.lengthOf(1);
|
|
107
|
+
(0, chai_1.expect)(notifications[0].agentId).to.equal('agent-a');
|
|
108
|
+
(0, chai_1.expect)(notifications[0].kind).to.equal(ai_core_1.AGENT_NOTIFICATION_KIND_INPUT_NEEDED);
|
|
109
|
+
(0, chai_1.expect)(notifications[0].options?.sessionTitle).to.equal(session.title);
|
|
110
|
+
});
|
|
111
|
+
it('fires a notification when a tool approval is needed', () => {
|
|
112
|
+
chatModel.setStatus('awaitingApproval');
|
|
113
|
+
(0, chai_1.expect)(notifications).to.have.lengthOf(1);
|
|
114
|
+
(0, chai_1.expect)(notifications[0].kind).to.equal(ai_core_1.AGENT_NOTIFICATION_KIND_INPUT_NEEDED);
|
|
115
|
+
});
|
|
116
|
+
it('does not re-fire when switching between waiting statuses', () => {
|
|
117
|
+
chatModel.setStatus('awaitingApproval');
|
|
118
|
+
chatModel.setStatus('awaitingInput');
|
|
119
|
+
(0, chai_1.expect)(notifications).to.have.lengthOf(1);
|
|
120
|
+
});
|
|
121
|
+
it('fires again after the waiting state cleared and then started again', () => {
|
|
122
|
+
chatModel.setStatus('awaitingInput');
|
|
123
|
+
// The waiting state clears — e.g. the question was answered.
|
|
124
|
+
chatModel.setStatus('running');
|
|
125
|
+
// The agent asks for a tool approval next.
|
|
126
|
+
chatModel.setStatus('awaitingApproval');
|
|
127
|
+
(0, chai_1.expect)(notifications).to.have.lengthOf(2);
|
|
128
|
+
(0, chai_1.expect)(notifications.every(n => n.kind === ai_core_1.AGENT_NOTIFICATION_KIND_INPUT_NEEDED)).to.be.true;
|
|
129
|
+
});
|
|
130
|
+
it('does not fire for in-progress statuses that do not require user action', () => {
|
|
131
|
+
chatModel.setStatus('running');
|
|
132
|
+
chatModel.setStatus('awaitingToolCall');
|
|
133
|
+
(0, chai_1.expect)(notifications).to.have.lengthOf(0);
|
|
134
|
+
});
|
|
135
|
+
it('ignores model changes that are not status changes', () => {
|
|
136
|
+
chatModel.status = 'awaitingInput';
|
|
137
|
+
chatModel.fireResponseChanged();
|
|
138
|
+
(0, chai_1.expect)(notifications).to.have.lengthOf(0);
|
|
139
|
+
});
|
|
140
|
+
});
|
|
141
|
+
describe('completed', () => {
|
|
142
|
+
it('fires a completion notification when a running session becomes idle', () => {
|
|
143
|
+
chatModel.setStatus('running');
|
|
144
|
+
chatModel.setStatus('idle');
|
|
145
|
+
(0, chai_1.expect)(notifications).to.have.lengthOf(1);
|
|
146
|
+
(0, chai_1.expect)(notifications[0].agentId).to.equal('agent-a');
|
|
147
|
+
(0, chai_1.expect)(notifications[0].kind).to.equal(ai_core_1.AGENT_NOTIFICATION_KIND_COMPLETED);
|
|
148
|
+
(0, chai_1.expect)(notifications[0].options?.sessionTitle).to.equal(session.title);
|
|
149
|
+
});
|
|
150
|
+
it('fires a completion notification when a running session fails', () => {
|
|
151
|
+
chatModel.setStatus('running');
|
|
152
|
+
chatModel.setStatus('failed');
|
|
153
|
+
(0, chai_1.expect)(notifications).to.have.lengthOf(1);
|
|
154
|
+
(0, chai_1.expect)(notifications[0].kind).to.equal(ai_core_1.AGENT_NOTIFICATION_KIND_COMPLETED);
|
|
155
|
+
});
|
|
156
|
+
it('fires a completion notification when a waiting session completes directly', () => {
|
|
157
|
+
chatModel.setStatus('awaitingInput');
|
|
158
|
+
chatModel.setStatus('idle');
|
|
159
|
+
(0, chai_1.expect)(notifications).to.have.lengthOf(2);
|
|
160
|
+
(0, chai_1.expect)(notifications[0].kind).to.equal(ai_core_1.AGENT_NOTIFICATION_KIND_INPUT_NEEDED);
|
|
161
|
+
(0, chai_1.expect)(notifications[1].kind).to.equal(ai_core_1.AGENT_NOTIFICATION_KIND_COMPLETED);
|
|
162
|
+
});
|
|
163
|
+
it('does not fire when switching between in-progress statuses', () => {
|
|
164
|
+
chatModel.setStatus('running');
|
|
165
|
+
chatModel.setStatus('awaitingToolCall');
|
|
166
|
+
chatModel.setStatus('running');
|
|
167
|
+
(0, chai_1.expect)(notifications).to.have.lengthOf(0);
|
|
168
|
+
});
|
|
169
|
+
it('does not fire when a new request starts', () => {
|
|
170
|
+
chatModel.setStatus('running');
|
|
171
|
+
chatModel.setStatus('idle');
|
|
172
|
+
chatModel.setStatus('running');
|
|
173
|
+
(0, chai_1.expect)(notifications).to.have.lengthOf(1);
|
|
174
|
+
});
|
|
175
|
+
it('fires once per request cycle', () => {
|
|
176
|
+
chatModel.setStatus('running');
|
|
177
|
+
chatModel.setStatus('idle');
|
|
178
|
+
chatModel.setStatus('running');
|
|
179
|
+
chatModel.setStatus('idle');
|
|
180
|
+
(0, chai_1.expect)(notifications).to.have.lengthOf(2);
|
|
181
|
+
(0, chai_1.expect)(notifications.every(n => n.kind === ai_core_1.AGENT_NOTIFICATION_KIND_COMPLETED)).to.be.true;
|
|
182
|
+
});
|
|
183
|
+
});
|
|
184
|
+
describe('delegated sessions', () => {
|
|
185
|
+
it('does not fire input-needed notifications for delegated sessions', () => {
|
|
186
|
+
chatModel.rootSessionId = 'parent-session';
|
|
187
|
+
chatModel.setStatus('awaitingInput');
|
|
188
|
+
(0, chai_1.expect)(notifications).to.have.lengthOf(0);
|
|
189
|
+
});
|
|
190
|
+
it('does not fire completion notifications for delegated sessions', () => {
|
|
191
|
+
chatModel.rootSessionId = 'parent-session';
|
|
192
|
+
chatModel.setStatus('running');
|
|
193
|
+
chatModel.setStatus('idle');
|
|
194
|
+
(0, chai_1.expect)(notifications).to.have.lengthOf(0);
|
|
195
|
+
});
|
|
196
|
+
it('excludes sessions marked as delegated only after watching began', () => {
|
|
197
|
+
// The delegation tool assigns rootSessionId after createSession has returned, i.e.
|
|
198
|
+
// after the session-created event has been observed by this contribution.
|
|
199
|
+
sessionEventEmitter.fire({ type: 'created', sessionId: session.id });
|
|
200
|
+
chatModel.rootSessionId = 'parent-session';
|
|
201
|
+
chatModel.setStatus('running');
|
|
202
|
+
chatModel.setStatus('awaitingApproval');
|
|
203
|
+
chatModel.setStatus('idle');
|
|
204
|
+
(0, chai_1.expect)(notifications).to.have.lengthOf(0);
|
|
205
|
+
});
|
|
206
|
+
});
|
|
207
|
+
describe('agent resolution', () => {
|
|
208
|
+
it('falls back to the response.agentId when the request has no agentId', () => {
|
|
209
|
+
chatModel.requests = [{
|
|
210
|
+
response: { agentId: 'response-agent' }
|
|
211
|
+
}];
|
|
212
|
+
chatModel.setStatus('awaitingInput');
|
|
213
|
+
(0, chai_1.expect)(notifications).to.have.lengthOf(1);
|
|
214
|
+
(0, chai_1.expect)(notifications[0].agentId).to.equal('response-agent');
|
|
215
|
+
});
|
|
216
|
+
it('does not fire when no agent id is available on the last request', () => {
|
|
217
|
+
chatModel.requests = [{
|
|
218
|
+
response: {}
|
|
219
|
+
}];
|
|
220
|
+
chatModel.setStatus('awaitingInput');
|
|
221
|
+
(0, chai_1.expect)(notifications).to.have.lengthOf(0);
|
|
222
|
+
});
|
|
223
|
+
});
|
|
224
|
+
it('does not double-watch a session when a created event arrives after onStart', () => {
|
|
225
|
+
// The session was already returned from getSessions() in onStart, so re-watching it via
|
|
226
|
+
// the 'created' event must not install a second listener that would fire duplicate
|
|
227
|
+
// notifications.
|
|
228
|
+
sessionEventEmitter.fire({ type: 'created', sessionId: session.id });
|
|
229
|
+
chatModel.setStatus('awaitingInput');
|
|
230
|
+
(0, chai_1.expect)(notifications).to.have.lengthOf(1);
|
|
231
|
+
});
|
|
232
|
+
});
|
|
233
|
+
//# sourceMappingURL=chat-session-notification-contribution.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat-session-notification-contribution.spec.js","sourceRoot":"","sources":["../../src/browser/chat-session-notification-contribution.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -26,6 +26,13 @@ export declare function formatTokenCount(count: number | undefined): string;
|
|
|
26
26
|
*/
|
|
27
27
|
export declare function getUsageColorClass(totalTokens: number, threshold: number, contextWindowSize?: number): string;
|
|
28
28
|
export declare function computeSessionTokenUsage(chatModel?: ChatModel): number;
|
|
29
|
+
/** Sum of input + output (+ cache) tokens across every response in the session. Represents cumulative billed usage. */
|
|
30
|
+
export declare function computeCumulativeTokenUsage(chatModel?: ChatModel): number;
|
|
31
|
+
/**
|
|
32
|
+
* Number of provider compaction events recorded across the session.
|
|
33
|
+
* Counts every `compaction` content part; a single response may contain more than one.
|
|
34
|
+
*/
|
|
35
|
+
export declare function countCompactions(chatModel?: ChatModel): number;
|
|
29
36
|
export declare function getLatestTokenUsage(chatModel?: ChatModel): ResponseTokenUsage | undefined;
|
|
30
|
-
export declare function buildBarTooltip(usage: ResponseTokenUsage | undefined, totalTokens: number, threshold: number, contextWindowSize?: number): MarkdownString | undefined;
|
|
37
|
+
export declare function buildBarTooltip(usage: ResponseTokenUsage | undefined, totalTokens: number, threshold: number, contextWindowSize?: number, chatModel?: ChatModel): MarkdownString | undefined;
|
|
31
38
|
//# sourceMappingURL=chat-token-usage-indicator-util.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-token-usage-indicator-util.d.ts","sourceRoot":"","sources":["../../src/browser/chat-token-usage-indicator-util.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAE/D,OAAO,EAAE,cAAc,EAAE,MAAM,2CAA2C,CAAC;AAE3E,oHAAoH;AACpH,eAAO,MAAM,iCAAiC,SAAS,CAAC;AAExD,MAAM,MAAM,yBAAyB,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;AAEpE,2FAA2F;AAC3F,wBAAgB,iCAAiC,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAEjG;AAED;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE;IAC1C,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,OAAO,CAAC;CAC5B,GAAG,yBAAyB,CAQ5B;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAQlE;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,iBAAiB,GAAE,MAA0C,GAAG,MAAM,CAWhJ;
|
|
1
|
+
{"version":3,"file":"chat-token-usage-indicator-util.d.ts","sourceRoot":"","sources":["../../src/browser/chat-token-usage-indicator-util.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAE/D,OAAO,EAAE,cAAc,EAAE,MAAM,2CAA2C,CAAC;AAE3E,oHAAoH;AACpH,eAAO,MAAM,iCAAiC,SAAS,CAAC;AAExD,MAAM,MAAM,yBAAyB,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;AAEpE,2FAA2F;AAC3F,wBAAgB,iCAAiC,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAEjG;AAED;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE;IAC1C,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,OAAO,CAAC;CAC5B,GAAG,yBAAyB,CAQ5B;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAQlE;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,iBAAiB,GAAE,MAA0C,GAAG,MAAM,CAWhJ;AASD,wBAAgB,wBAAwB,CAAC,SAAS,CAAC,EAAE,SAAS,GAAG,MAAM,CAYtE;AAED,uHAAuH;AACvH,wBAAgB,2BAA2B,CAAC,SAAS,CAAC,EAAE,SAAS,GAAG,MAAM,CAYzE;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,CAAC,EAAE,SAAS,GAAG,MAAM,CAa9D;AAED,wBAAgB,mBAAmB,CAAC,SAAS,CAAC,EAAE,SAAS,GAAG,kBAAkB,GAAG,SAAS,CAYzF;AAED,wBAAgB,eAAe,CAC3B,KAAK,EAAE,kBAAkB,GAAG,SAAS,EACrC,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,iBAAiB,GAAE,MAA0C,EAC7D,SAAS,CAAC,EAAE,SAAS,GACtB,cAAc,GAAG,SAAS,CA2C5B"}
|
|
@@ -21,6 +21,8 @@ exports.decideTokenUsageWarning = decideTokenUsageWarning;
|
|
|
21
21
|
exports.formatTokenCount = formatTokenCount;
|
|
22
22
|
exports.getUsageColorClass = getUsageColorClass;
|
|
23
23
|
exports.computeSessionTokenUsage = computeSessionTokenUsage;
|
|
24
|
+
exports.computeCumulativeTokenUsage = computeCumulativeTokenUsage;
|
|
25
|
+
exports.countCompactions = countCompactions;
|
|
24
26
|
exports.getLatestTokenUsage = getLatestTokenUsage;
|
|
25
27
|
exports.buildBarTooltip = buildBarTooltip;
|
|
26
28
|
const nls_1 = require("@theia/core/lib/common/nls");
|
|
@@ -73,6 +75,12 @@ function getUsageColorClass(totalTokens, threshold, contextWindowSize = exports.
|
|
|
73
75
|
}
|
|
74
76
|
return 'token-usage-red';
|
|
75
77
|
}
|
|
78
|
+
function sumUsageTokens(usage) {
|
|
79
|
+
return usage.inputTokens
|
|
80
|
+
+ usage.outputTokens
|
|
81
|
+
+ (usage.cacheCreationInputTokens ?? 0)
|
|
82
|
+
+ (usage.cacheReadInputTokens ?? 0);
|
|
83
|
+
}
|
|
76
84
|
function computeSessionTokenUsage(chatModel) {
|
|
77
85
|
if (!chatModel) {
|
|
78
86
|
return 0;
|
|
@@ -81,14 +89,43 @@ function computeSessionTokenUsage(chatModel) {
|
|
|
81
89
|
for (let i = requests.length - 1; i >= 0; i--) {
|
|
82
90
|
const usage = requests[i].response.tokenUsage;
|
|
83
91
|
if (usage) {
|
|
84
|
-
return usage
|
|
85
|
-
+ usage.outputTokens
|
|
86
|
-
+ (usage.cacheCreationInputTokens ?? 0)
|
|
87
|
-
+ (usage.cacheReadInputTokens ?? 0);
|
|
92
|
+
return sumUsageTokens(usage);
|
|
88
93
|
}
|
|
89
94
|
}
|
|
90
95
|
return 0;
|
|
91
96
|
}
|
|
97
|
+
/** Sum of input + output (+ cache) tokens across every response in the session. Represents cumulative billed usage. */
|
|
98
|
+
function computeCumulativeTokenUsage(chatModel) {
|
|
99
|
+
if (!chatModel) {
|
|
100
|
+
return 0;
|
|
101
|
+
}
|
|
102
|
+
let total = 0;
|
|
103
|
+
for (const request of chatModel.getRequests()) {
|
|
104
|
+
const usage = request.response.tokenUsage;
|
|
105
|
+
if (usage) {
|
|
106
|
+
total += sumUsageTokens(usage);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
return total;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Number of provider compaction events recorded across the session.
|
|
113
|
+
* Counts every `compaction` content part; a single response may contain more than one.
|
|
114
|
+
*/
|
|
115
|
+
function countCompactions(chatModel) {
|
|
116
|
+
if (!chatModel) {
|
|
117
|
+
return 0;
|
|
118
|
+
}
|
|
119
|
+
let count = 0;
|
|
120
|
+
for (const request of chatModel.getRequests()) {
|
|
121
|
+
for (const content of request.response.response.content) {
|
|
122
|
+
if (content.kind === 'compaction') {
|
|
123
|
+
count++;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
return count;
|
|
128
|
+
}
|
|
92
129
|
function getLatestTokenUsage(chatModel) {
|
|
93
130
|
if (!chatModel) {
|
|
94
131
|
return undefined;
|
|
@@ -102,7 +139,7 @@ function getLatestTokenUsage(chatModel) {
|
|
|
102
139
|
}
|
|
103
140
|
return undefined;
|
|
104
141
|
}
|
|
105
|
-
function buildBarTooltip(usage, totalTokens, threshold, contextWindowSize = exports.CHAT_CONTEXT_WINDOW_SIZE_FALLBACK) {
|
|
142
|
+
function buildBarTooltip(usage, totalTokens, threshold, contextWindowSize = exports.CHAT_CONTEXT_WINDOW_SIZE_FALLBACK, chatModel) {
|
|
106
143
|
if (!usage) {
|
|
107
144
|
return undefined;
|
|
108
145
|
}
|
|
@@ -129,6 +166,14 @@ function buildBarTooltip(usage, totalTokens, threshold, contextWindowSize = expo
|
|
|
129
166
|
}
|
|
130
167
|
const percentage = Math.round((totalTokens / contextWindowSize) * 100);
|
|
131
168
|
lines.push(nls_1.nls.localize('theia/ai/chat-ui/tokenUsageTooltipTotal', 'Total: {0} / {1} ({2}%)', formatTokenCount(totalTokens), formatTokenCount(contextWindowSize), percentage));
|
|
169
|
+
const cumulative = computeCumulativeTokenUsage(chatModel);
|
|
170
|
+
if (cumulative > 0) {
|
|
171
|
+
lines.push(nls_1.nls.localize('theia/ai/chat-ui/tokenUsageTooltipCumulative', 'Cumulative: {0}', formatTokenCount(cumulative)));
|
|
172
|
+
}
|
|
173
|
+
const compactions = countCompactions(chatModel);
|
|
174
|
+
if (compactions > 0) {
|
|
175
|
+
lines.push(nls_1.nls.localize('theia/ai/chat-ui/tokenUsageTooltipCompactions', 'Compacted {0}x', compactions));
|
|
176
|
+
}
|
|
132
177
|
return { value: lines.join(' \n') };
|
|
133
178
|
}
|
|
134
179
|
//# sourceMappingURL=chat-token-usage-indicator-util.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-token-usage-indicator-util.js","sourceRoot":"","sources":["../../src/browser/chat-token-usage-indicator-util.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;AAYhF,8EAEC;AAUD,0DAYC;AAED,4CAQC;AAOD,gDAWC;
|
|
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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"}
|
|
@@ -20,11 +20,16 @@ const core_1 = require("@theia/core");
|
|
|
20
20
|
const chat_token_usage_indicator_util_1 = require("./chat-token-usage-indicator-util");
|
|
21
21
|
const THRESHOLD = 100;
|
|
22
22
|
const CONTEXT_WINDOW = 200;
|
|
23
|
-
function createMockRequest(tokenUsage, isComplete = true) {
|
|
23
|
+
function createMockRequest(tokenUsage, isComplete = true, contentKinds) {
|
|
24
24
|
return {
|
|
25
25
|
response: {
|
|
26
26
|
tokenUsage,
|
|
27
|
-
isComplete
|
|
27
|
+
isComplete,
|
|
28
|
+
response: {
|
|
29
|
+
content: (contentKinds ?? []).map(kind => ({ kind })),
|
|
30
|
+
asString: () => '',
|
|
31
|
+
asDisplayString: () => ''
|
|
32
|
+
}
|
|
28
33
|
}
|
|
29
34
|
};
|
|
30
35
|
}
|
|
@@ -204,6 +209,85 @@ describe('ChatTokenUsageIndicator', () => {
|
|
|
204
209
|
// The fallback (200k) should appear in the total line.
|
|
205
210
|
(0, chai_1.expect)(tooltip.value).to.contain('200.0k');
|
|
206
211
|
});
|
|
212
|
+
it('includes cumulative usage line when model has token usage', () => {
|
|
213
|
+
const model = createMockChatModel([
|
|
214
|
+
createMockRequest({ inputTokens: 50, outputTokens: 50 }),
|
|
215
|
+
createMockRequest({ inputTokens: 30, outputTokens: 20 })
|
|
216
|
+
]);
|
|
217
|
+
const usage = { inputTokens: 30, outputTokens: 20 };
|
|
218
|
+
const tooltip = (0, chat_token_usage_indicator_util_1.buildBarTooltip)(usage, 50, THRESHOLD, CONTEXT_WINDOW, model);
|
|
219
|
+
(0, chai_1.expect)(tooltip).to.not.equal(undefined);
|
|
220
|
+
(0, chai_1.expect)(tooltip.value).to.contain('Cumulative:');
|
|
221
|
+
});
|
|
222
|
+
it('includes compaction line when model has a compaction content part', () => {
|
|
223
|
+
const model = createMockChatModel([
|
|
224
|
+
createMockRequest({ inputTokens: 50, outputTokens: 50 }, true, ['compaction'])
|
|
225
|
+
]);
|
|
226
|
+
const usage = { inputTokens: 50, outputTokens: 50 };
|
|
227
|
+
const tooltip = (0, chat_token_usage_indicator_util_1.buildBarTooltip)(usage, 100, THRESHOLD, CONTEXT_WINDOW, model);
|
|
228
|
+
(0, chai_1.expect)(tooltip).to.not.equal(undefined);
|
|
229
|
+
(0, chai_1.expect)(tooltip.value).to.contain('Compacted');
|
|
230
|
+
});
|
|
231
|
+
});
|
|
232
|
+
describe('computeCumulativeTokenUsage', () => {
|
|
233
|
+
it('returns 0 for an undefined model', () => {
|
|
234
|
+
(0, chai_1.expect)((0, chat_token_usage_indicator_util_1.computeCumulativeTokenUsage)(undefined)).to.equal(0);
|
|
235
|
+
});
|
|
236
|
+
it('returns 0 for a model with no requests', () => {
|
|
237
|
+
const model = createMockChatModel([]);
|
|
238
|
+
(0, chai_1.expect)((0, chat_token_usage_indicator_util_1.computeCumulativeTokenUsage)(model)).to.equal(0);
|
|
239
|
+
});
|
|
240
|
+
it('sums cumulative usage across all responses', () => {
|
|
241
|
+
const model = createMockChatModel([
|
|
242
|
+
createMockRequest({ inputTokens: 100, outputTokens: 50 }),
|
|
243
|
+
createMockRequest({ inputTokens: 200, outputTokens: 60, cacheReadInputTokens: 10 })
|
|
244
|
+
]);
|
|
245
|
+
(0, chai_1.expect)((0, chat_token_usage_indicator_util_1.computeCumulativeTokenUsage)(model)).to.equal(420);
|
|
246
|
+
});
|
|
247
|
+
it('includes cache creation and read tokens in the cumulative total', () => {
|
|
248
|
+
const model = createMockChatModel([
|
|
249
|
+
createMockRequest({ inputTokens: 100, outputTokens: 50, cacheCreationInputTokens: 20, cacheReadInputTokens: 30 }),
|
|
250
|
+
createMockRequest({ inputTokens: 200, outputTokens: 60 })
|
|
251
|
+
]);
|
|
252
|
+
(0, chai_1.expect)((0, chat_token_usage_indicator_util_1.computeCumulativeTokenUsage)(model)).to.equal(460);
|
|
253
|
+
});
|
|
254
|
+
it('skips requests with no token usage', () => {
|
|
255
|
+
const model = createMockChatModel([
|
|
256
|
+
createMockRequest(undefined),
|
|
257
|
+
createMockRequest({ inputTokens: 100, outputTokens: 50 })
|
|
258
|
+
]);
|
|
259
|
+
(0, chai_1.expect)((0, chat_token_usage_indicator_util_1.computeCumulativeTokenUsage)(model)).to.equal(150);
|
|
260
|
+
});
|
|
261
|
+
});
|
|
262
|
+
describe('countCompactions', () => {
|
|
263
|
+
it('returns 0 for an undefined model', () => {
|
|
264
|
+
(0, chai_1.expect)((0, chat_token_usage_indicator_util_1.countCompactions)(undefined)).to.equal(0);
|
|
265
|
+
});
|
|
266
|
+
it('returns 0 for a model with no requests', () => {
|
|
267
|
+
const model = createMockChatModel([]);
|
|
268
|
+
(0, chai_1.expect)((0, chat_token_usage_indicator_util_1.countCompactions)(model)).to.equal(0);
|
|
269
|
+
});
|
|
270
|
+
it('counts compaction markers across the session', () => {
|
|
271
|
+
const model = createMockChatModel([
|
|
272
|
+
createMockRequest(undefined, true, ['text', 'compaction']),
|
|
273
|
+
createMockRequest(undefined, true, ['text']),
|
|
274
|
+
createMockRequest(undefined, true, ['compaction', 'text'])
|
|
275
|
+
]);
|
|
276
|
+
(0, chai_1.expect)((0, chat_token_usage_indicator_util_1.countCompactions)(model)).to.equal(2);
|
|
277
|
+
});
|
|
278
|
+
it('returns 0 when no compaction markers are present', () => {
|
|
279
|
+
const model = createMockChatModel([
|
|
280
|
+
createMockRequest(undefined, true, ['text']),
|
|
281
|
+
createMockRequest(undefined, true, ['toolCall'])
|
|
282
|
+
]);
|
|
283
|
+
(0, chai_1.expect)((0, chat_token_usage_indicator_util_1.countCompactions)(model)).to.equal(0);
|
|
284
|
+
});
|
|
285
|
+
it('counts multiple compaction markers within a single response', () => {
|
|
286
|
+
const model = createMockChatModel([
|
|
287
|
+
createMockRequest(undefined, true, ['compaction', 'compaction', 'text'])
|
|
288
|
+
]);
|
|
289
|
+
(0, chai_1.expect)((0, chat_token_usage_indicator_util_1.countCompactions)(model)).to.equal(2);
|
|
290
|
+
});
|
|
207
291
|
});
|
|
208
292
|
describe('decideTokenUsageWarning', () => {
|
|
209
293
|
it('resets when usage is below the threshold', () => {
|
|
@@ -1 +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
|
+
{"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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"}
|
|
@@ -2,7 +2,7 @@ import { ChatAgent, ChatAgentService, ChatModel, ChatRequestModel, ChatResponseC
|
|
|
2
2
|
import { AIVariableService } from '@theia/ai-core';
|
|
3
3
|
import { AIActivationService } from '@theia/ai-core/lib/browser';
|
|
4
4
|
import { CommandRegistry, ContributionProvider, DisposableCollection, Emitter, Event, ILogger } from '@theia/core';
|
|
5
|
-
import { ContextMenuRenderer, HoverService, NodeProps, OpenerService, TreeModel, TreeNode, TreeProps, TreeWidget } from '@theia/core/lib/browser';
|
|
5
|
+
import { ContextMenuRenderer, HoverService, NodeProps, OpenerService, TreeModel, TreeNode, TreeProps, TreeWidget, type ReactWidget } from '@theia/core/lib/browser';
|
|
6
6
|
import { ContextKey, ContextKeyService } from '@theia/core/lib/browser/context-key-service';
|
|
7
7
|
import * as React from '@theia/core/shared/react';
|
|
8
8
|
import { ChatNodeToolbarActionContribution } from '../chat-node-toolbar-action-contribution';
|
|
@@ -61,37 +61,18 @@ export declare class ChatViewTreeWidget extends TreeWidget {
|
|
|
61
61
|
/** Tracks if we are at the bottom for showing the scroll-to-bottom button. */
|
|
62
62
|
protected atBottom: boolean;
|
|
63
63
|
/**
|
|
64
|
-
* Track the visibility of the scroll button
|
|
64
|
+
* Track the visibility of the scroll button.
|
|
65
65
|
*/
|
|
66
66
|
protected _showScrollButton: boolean;
|
|
67
|
-
/**
|
|
68
|
-
* Timer for debouncing the scroll button activation (prevents flicker on auto-scroll).
|
|
69
|
-
* If user scrolls up, this delays showing the button in case auto-scroll-to-bottom kicks in.
|
|
70
|
-
*/
|
|
71
|
-
protected _scrollButtonDebounceTimer?: number;
|
|
72
|
-
/**
|
|
73
|
-
* Debounce period in ms before showing scroll-to-bottom button after scrolling up.
|
|
74
|
-
* Avoids flickering of the button during LLM token streaming.
|
|
75
|
-
*/
|
|
76
|
-
protected static readonly SCROLL_BUTTON_GRACE_PERIOD = 100;
|
|
77
67
|
onScrollLockChange?: (temporaryLocked: boolean) => void;
|
|
78
|
-
protected lastScrollTop: number;
|
|
79
68
|
set shouldScrollToEnd(shouldScrollToEnd: boolean);
|
|
80
69
|
get shouldScrollToEnd(): boolean;
|
|
81
70
|
constructor(props: TreeProps, model: TreeModel, contextMenuRenderer: ContextMenuRenderer);
|
|
82
71
|
protected init(): void;
|
|
83
72
|
setEnabled(enabled: boolean): void;
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
protected updateScrollToBottomButtonState(isAtBottom: boolean): void;
|
|
73
|
+
/** Toggles auto-scroll and the scroll-to-bottom button based on whether the viewport includes the bottom of the list. */
|
|
74
|
+
protected handleAtBottomStateChange(isAtBottom: boolean): void;
|
|
87
75
|
protected setTemporaryScrollLock(enabled: boolean): void;
|
|
88
|
-
protected getCurrentScrollTop(scrollEvent: unknown): number;
|
|
89
|
-
/**
|
|
90
|
-
* Returns true if the scroll position is at the absolute (1px tolerance) bottom of the scroll container.
|
|
91
|
-
* Handles both virtualized and non-virtualized scroll containers.
|
|
92
|
-
* Allows for a tiny floating point epsilon (1px).
|
|
93
|
-
*/
|
|
94
|
-
protected isAtAbsoluteBottom(): boolean;
|
|
95
76
|
protected renderTree(model: TreeModel): React.ReactNode;
|
|
96
77
|
/** Shows the scroll to bottom button if not at the bottom (debounced). */
|
|
97
78
|
protected renderScrollToBottomButton(): React.ReactNode;
|
|
@@ -130,9 +111,13 @@ export declare class ChatViewTreeWidget extends TreeWidget {
|
|
|
130
111
|
protected getChatResponsePartRenderer(content: ChatResponseContent, node: ResponseNode): React.ReactNode;
|
|
131
112
|
protected handleContextMenu(node: TreeNode | undefined, event: React.MouseEvent<HTMLElement>): void;
|
|
132
113
|
protected handleSpace(event: KeyboardEvent): boolean;
|
|
133
|
-
/**
|
|
134
|
-
* Ensure atBottom state is correct when content grows (e.g., LLM streaming while scroll lock is enabled).
|
|
135
|
-
*/
|
|
136
|
-
protected updateScrollToRow(): void;
|
|
137
114
|
}
|
|
115
|
+
export declare const ChatRequestRender: ({ node, hoverService, chatAgentService, variableService, openerService, provideChatInputWidget }: {
|
|
116
|
+
node: RequestNode;
|
|
117
|
+
hoverService: HoverService;
|
|
118
|
+
chatAgentService: ChatAgentService;
|
|
119
|
+
variableService: AIVariableService;
|
|
120
|
+
openerService: OpenerService;
|
|
121
|
+
provideChatInputWidget: () => ReactWidget | undefined;
|
|
122
|
+
}) => React.JSX.Element;
|
|
138
123
|
//# sourceMappingURL=chat-view-tree-widget.d.ts.map
|