@theia/ai-ide 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.
Files changed (96) hide show
  1. package/lib/browser/ai-allow-all-mode-chat-banner.d.ts +68 -0
  2. package/lib/browser/ai-allow-all-mode-chat-banner.d.ts.map +1 -0
  3. package/lib/browser/ai-allow-all-mode-chat-banner.js +184 -0
  4. package/lib/browser/ai-allow-all-mode-chat-banner.js.map +1 -0
  5. package/lib/browser/ai-allow-all-mode-chat-banner.spec.d.ts +2 -0
  6. package/lib/browser/ai-allow-all-mode-chat-banner.spec.d.ts.map +1 -0
  7. package/lib/browser/ai-allow-all-mode-chat-banner.spec.js +170 -0
  8. package/lib/browser/ai-allow-all-mode-chat-banner.spec.js.map +1 -0
  9. package/lib/browser/ai-configuration/tools-configuration-widget.d.ts +3 -4
  10. package/lib/browser/ai-configuration/tools-configuration-widget.d.ts.map +1 -1
  11. package/lib/browser/ai-configuration/tools-configuration-widget.js +17 -10
  12. package/lib/browser/ai-configuration/tools-configuration-widget.js.map +1 -1
  13. package/lib/browser/ai-first-perspective-contribution.d.ts +6 -0
  14. package/lib/browser/ai-first-perspective-contribution.d.ts.map +1 -0
  15. package/lib/browser/ai-first-perspective-contribution.js +50 -0
  16. package/lib/browser/ai-first-perspective-contribution.js.map +1 -0
  17. package/lib/browser/ai-sessions-view-contribution.d.ts +13 -0
  18. package/lib/browser/ai-sessions-view-contribution.d.ts.map +1 -0
  19. package/lib/browser/ai-sessions-view-contribution.js +69 -0
  20. package/lib/browser/ai-sessions-view-contribution.js.map +1 -0
  21. package/lib/browser/ai-sessions-widget.d.ts +27 -0
  22. package/lib/browser/ai-sessions-widget.d.ts.map +1 -0
  23. package/lib/browser/ai-sessions-widget.js +131 -0
  24. package/lib/browser/ai-sessions-widget.js.map +1 -0
  25. package/lib/browser/chat-session-item-action-contribution.js +2 -2
  26. package/lib/browser/chat-session-item-action-contribution.js.map +1 -1
  27. package/lib/browser/chat-session-item.d.ts +15 -0
  28. package/lib/browser/chat-session-item.d.ts.map +1 -1
  29. package/lib/browser/chat-session-item.js +39 -18
  30. package/lib/browser/chat-session-item.js.map +1 -1
  31. package/lib/browser/chat-session-list-components.d.ts +38 -0
  32. package/lib/browser/chat-session-list-components.d.ts.map +1 -0
  33. package/lib/browser/chat-session-list-components.js +87 -0
  34. package/lib/browser/chat-session-list-components.js.map +1 -0
  35. package/lib/browser/chat-session-list-service.d.ts +34 -0
  36. package/lib/browser/chat-session-list-service.d.ts.map +1 -0
  37. package/lib/browser/chat-session-list-service.js +251 -0
  38. package/lib/browser/chat-session-list-service.js.map +1 -0
  39. package/lib/browser/chat-session-list-service.spec.d.ts +2 -0
  40. package/lib/browser/chat-session-list-service.spec.d.ts.map +1 -0
  41. package/lib/browser/{chat-sessions-welcome-message-provider.spec.js → chat-session-list-service.spec.js} +133 -39
  42. package/lib/browser/chat-session-list-service.spec.js.map +1 -0
  43. package/lib/browser/chat-session-tooltip.d.ts +2 -2
  44. package/lib/browser/chat-session-tooltip.d.ts.map +1 -1
  45. package/lib/browser/chat-session-tooltip.js +33 -10
  46. package/lib/browser/chat-session-tooltip.js.map +1 -1
  47. package/lib/browser/chat-sessions-welcome-message-provider.d.ts +9 -35
  48. package/lib/browser/chat-sessions-welcome-message-provider.d.ts.map +1 -1
  49. package/lib/browser/chat-sessions-welcome-message-provider.js +51 -205
  50. package/lib/browser/chat-sessions-welcome-message-provider.js.map +1 -1
  51. package/lib/browser/context-file-validation-service-impl.spec.js +2 -2
  52. package/lib/browser/context-file-validation-service-impl.spec.js.map +1 -1
  53. package/lib/browser/frontend-module.d.ts.map +1 -1
  54. package/lib/browser/frontend-module.js +20 -0
  55. package/lib/browser/frontend-module.js.map +1 -1
  56. package/lib/browser/workspace-functions.d.ts +5 -6
  57. package/lib/browser/workspace-functions.d.ts.map +1 -1
  58. package/lib/browser/workspace-functions.js +24 -9
  59. package/lib/browser/workspace-functions.js.map +1 -1
  60. package/lib/browser/workspace-functions.spec.js +29 -29
  61. package/lib/browser/workspace-functions.spec.js.map +1 -1
  62. package/lib/browser/workspace-launch-provider.spec.js +3 -3
  63. package/lib/browser/workspace-launch-provider.spec.js.map +1 -1
  64. package/lib/browser/workspace-search-provider.d.ts.map +1 -1
  65. package/lib/browser/workspace-search-provider.js +28 -20
  66. package/lib/browser/workspace-search-provider.js.map +1 -1
  67. package/lib/browser/workspace-search-provider.spec.js +68 -0
  68. package/lib/browser/workspace-search-provider.spec.js.map +1 -1
  69. package/lib/browser/workspace-task-provider.spec.js +4 -4
  70. package/lib/browser/workspace-task-provider.spec.js.map +1 -1
  71. package/package.json +25 -25
  72. package/src/browser/ai-allow-all-mode-chat-banner.spec.ts +205 -0
  73. package/src/browser/ai-allow-all-mode-chat-banner.tsx +217 -0
  74. package/src/browser/ai-configuration/tools-configuration-widget.tsx +20 -13
  75. package/src/browser/ai-first-perspective-contribution.ts +48 -0
  76. package/src/browser/ai-sessions-view-contribution.ts +67 -0
  77. package/src/browser/ai-sessions-widget.tsx +151 -0
  78. package/src/browser/chat-session-item-action-contribution.ts +2 -2
  79. package/src/browser/chat-session-item.tsx +82 -27
  80. package/src/browser/chat-session-list-components.tsx +136 -0
  81. package/src/browser/{chat-sessions-welcome-message-provider.spec.ts → chat-session-list-service.spec.ts} +136 -30
  82. package/src/browser/chat-session-list-service.ts +261 -0
  83. package/src/browser/chat-session-tooltip.ts +31 -11
  84. package/src/browser/chat-sessions-welcome-message-provider.tsx +78 -268
  85. package/src/browser/context-file-validation-service-impl.spec.ts +3 -3
  86. package/src/browser/frontend-module.ts +23 -0
  87. package/src/browser/style/index.css +150 -3
  88. package/src/browser/workspace-functions.spec.ts +36 -37
  89. package/src/browser/workspace-functions.ts +8 -9
  90. package/src/browser/workspace-launch-provider.spec.ts +5 -5
  91. package/src/browser/workspace-search-provider.spec.ts +101 -0
  92. package/src/browser/workspace-search-provider.ts +34 -23
  93. package/src/browser/workspace-task-provider.spec.ts +6 -7
  94. package/lib/browser/chat-sessions-welcome-message-provider.spec.d.ts +0 -2
  95. package/lib/browser/chat-sessions-welcome-message-provider.spec.d.ts.map +0 -1
  96. package/lib/browser/chat-sessions-welcome-message-provider.spec.js.map +0 -1
@@ -23,7 +23,8 @@ const chai_1 = require("chai");
23
23
  const core_1 = require("@theia/core");
24
24
  const ai_chat_1 = require("@theia/ai-chat");
25
25
  const chat_view_widget_1 = require("@theia/ai-chat-ui/lib/browser/chat-view-widget");
26
- const chat_sessions_welcome_message_provider_1 = require("./chat-sessions-welcome-message-provider");
26
+ const chat_session_list_service_1 = require("./chat-session-list-service");
27
+ const chat_session_list_components_1 = require("./chat-session-list-components");
27
28
  disableJSDOM();
28
29
  /**
29
30
  * Subclass that exposes the protected watch hook and lets tests inject fake services.
@@ -31,7 +32,7 @@ disableJSDOM();
31
32
  * unread bookkeeping; spinning up the full container would pull in unrelated
32
33
  * services and obscure the assertion.
33
34
  */
34
- class TestableProvider extends chat_sessions_welcome_message_provider_1.ChatSessionsWelcomeMessageProvider {
35
+ class TestableService extends chat_session_list_service_1.ChatSessionListService {
35
36
  constructor(chatService, shell) {
36
37
  super();
37
38
  this.chatService = chatService;
@@ -48,6 +49,7 @@ function createFakeSession(id) {
48
49
  id,
49
50
  isActive: false,
50
51
  model: {
52
+ status: 'idle',
51
53
  getRequests: () => requests,
52
54
  onDidChange: onDidChangeEmitter.event,
53
55
  }
@@ -58,7 +60,7 @@ function createFakeSession(id) {
58
60
  pushRequest: complete => requests.push({ response: { isComplete: complete } })
59
61
  };
60
62
  }
61
- describe('ChatSessionsWelcomeMessageProvider', () => {
63
+ describe('ChatSessionListService', () => {
62
64
  describe('unread state', () => {
63
65
  let activeSessionId;
64
66
  let activeWidget;
@@ -96,27 +98,27 @@ describe('ChatSessionsWelcomeMessageProvider', () => {
96
98
  };
97
99
  });
98
100
  it('marks the session unread when a new request arrives and the chat view is not focused', () => {
99
- const provider = new TestableProvider(chatService, shell);
101
+ const service = new TestableService(chatService, shell);
100
102
  const { session, fire, pushRequest } = createFakeSession('s1');
101
103
  activeSessionId = 's1';
102
104
  activeWidget = otherWidget;
103
- provider.watch(session);
105
+ service.watch(session);
104
106
  pushRequest(true);
105
107
  fire();
106
- (0, chai_1.expect)(provider.isUnread('s1')).to.equal(true);
108
+ (0, chai_1.expect)(service.isUnread('s1')).to.equal(true);
107
109
  });
108
110
  it('does not mark unread when the session is active AND the chat view is focused', () => {
109
- const provider = new TestableProvider(chatService, shell);
111
+ const service = new TestableService(chatService, shell);
110
112
  const { session, fire, pushRequest } = createFakeSession('s1');
111
113
  activeSessionId = 's1';
112
114
  activeWidget = chatViewWidget;
113
- provider.watch(session);
115
+ service.watch(session);
114
116
  pushRequest(true);
115
117
  fire();
116
- (0, chai_1.expect)(provider.isUnread('s1')).to.equal(false);
118
+ (0, chai_1.expect)(service.isUnread('s1')).to.equal(false);
117
119
  });
118
120
  it('does not mark unread when focus is inside a child widget of the chat view', () => {
119
- const provider = new TestableProvider(chatService, shell);
121
+ const service = new TestableService(chatService, shell);
120
122
  const { session, fire, pushRequest } = createFakeSession('s1');
121
123
  activeSessionId = 's1';
122
124
  // Simulate focus inside a descendant (e.g. AIChatInputWidget): the shell's
@@ -124,77 +126,77 @@ describe('ChatSessionsWelcomeMessageProvider', () => {
124
126
  const childWidget = { parent: chatViewWidget };
125
127
  activeWidget = childWidget;
126
128
  widgetForActiveElement = childWidget;
127
- provider.watch(session);
129
+ service.watch(session);
128
130
  pushRequest(true);
129
131
  fire();
130
- (0, chai_1.expect)(provider.isUnread('s1')).to.equal(false);
132
+ (0, chai_1.expect)(service.isUnread('s1')).to.equal(false);
131
133
  });
132
134
  it('marks unread when the session is not the active one, even if the chat view is focused', () => {
133
- const provider = new TestableProvider(chatService, shell);
135
+ const service = new TestableService(chatService, shell);
134
136
  const { session, fire, pushRequest } = createFakeSession('s1');
135
137
  activeSessionId = 'other';
136
138
  activeWidget = chatViewWidget;
137
- provider.watch(session);
139
+ service.watch(session);
138
140
  pushRequest(true);
139
141
  fire();
140
- (0, chai_1.expect)(provider.isUnread('s1')).to.equal(true);
142
+ (0, chai_1.expect)(service.isUnread('s1')).to.equal(true);
141
143
  });
142
144
  it('fires onUnreadChanged once when a session transitions to unread', () => {
143
- const provider = new TestableProvider(chatService, shell);
145
+ const service = new TestableService(chatService, shell);
144
146
  const { session, fire, pushRequest } = createFakeSession('s1');
145
147
  activeSessionId = undefined;
146
148
  activeWidget = otherWidget;
147
149
  let fired = 0;
148
- provider.onUnreadChanged(() => { fired++; });
149
- provider.watch(session);
150
+ service.onUnreadChanged(() => { fired++; });
151
+ service.watch(session);
150
152
  pushRequest(true);
151
153
  fire();
152
154
  pushRequest(true);
153
155
  fire();
154
- (0, chai_1.expect)(provider.isUnread('s1')).to.equal(true);
156
+ (0, chai_1.expect)(service.isUnread('s1')).to.equal(true);
155
157
  (0, chai_1.expect)(fired).to.equal(1);
156
158
  });
157
159
  });
158
160
  describe('computeVisibleSessionSlots', () => {
159
161
  it('hides the inline list when the cap is 0', () => {
160
- (0, chai_1.expect)((0, chat_sessions_welcome_message_provider_1.computeVisibleSessionSlots)(10, 10, 0)).to.deep.equal({ activeCount: 0, restoredCount: 0 });
162
+ (0, chai_1.expect)((0, chat_session_list_components_1.computeVisibleSessionSlots)(10, 10, 0)).to.deep.equal({ activeCount: 0, restoredCount: 0 });
161
163
  });
162
164
  it('clamps a negative cap to 0', () => {
163
- (0, chai_1.expect)((0, chat_sessions_welcome_message_provider_1.computeVisibleSessionSlots)(10, 10, -5)).to.deep.equal({ activeCount: 0, restoredCount: 0 });
165
+ (0, chai_1.expect)((0, chat_session_list_components_1.computeVisibleSessionSlots)(10, 10, -5)).to.deep.equal({ activeCount: 0, restoredCount: 0 });
164
166
  });
165
167
  it('caps active when there are no restored sessions', () => {
166
- (0, chai_1.expect)((0, chat_sessions_welcome_message_provider_1.computeVisibleSessionSlots)(30, 0, 20)).to.deep.equal({ activeCount: 20, restoredCount: 0 });
168
+ (0, chai_1.expect)((0, chat_session_list_components_1.computeVisibleSessionSlots)(30, 0, 20)).to.deep.equal({ activeCount: 20, restoredCount: 0 });
167
169
  });
168
170
  it('shows all active when below the cap and there are no restored sessions', () => {
169
- (0, chai_1.expect)((0, chat_sessions_welcome_message_provider_1.computeVisibleSessionSlots)(5, 0, 20)).to.deep.equal({ activeCount: 5, restoredCount: 0 });
171
+ (0, chai_1.expect)((0, chat_session_list_components_1.computeVisibleSessionSlots)(5, 0, 20)).to.deep.equal({ activeCount: 5, restoredCount: 0 });
170
172
  });
171
173
  it('caps restored when there are no active sessions', () => {
172
- (0, chai_1.expect)((0, chat_sessions_welcome_message_provider_1.computeVisibleSessionSlots)(0, 30, 20)).to.deep.equal({ activeCount: 0, restoredCount: 20 });
174
+ (0, chai_1.expect)((0, chat_session_list_components_1.computeVisibleSessionSlots)(0, 30, 20)).to.deep.equal({ activeCount: 0, restoredCount: 20 });
173
175
  });
174
176
  it('reserves up to 5 restored slots when both sections overflow the cap', () => {
175
177
  // 5 slots reserved for restored, the remaining 15 go to active.
176
- (0, chai_1.expect)((0, chat_sessions_welcome_message_provider_1.computeVisibleSessionSlots)(20, 10, 20)).to.deep.equal({ activeCount: 15, restoredCount: 5 });
178
+ (0, chai_1.expect)((0, chat_session_list_components_1.computeVisibleSessionSlots)(20, 10, 20)).to.deep.equal({ activeCount: 15, restoredCount: 5 });
177
179
  });
178
180
  it('only reserves as many restored slots as there are restored sessions', () => {
179
181
  // Just 3 restored exist, so active gets the other 17.
180
- (0, chai_1.expect)((0, chat_sessions_welcome_message_provider_1.computeVisibleSessionSlots)(20, 3, 20)).to.deep.equal({ activeCount: 17, restoredCount: 3 });
182
+ (0, chai_1.expect)((0, chat_session_list_components_1.computeVisibleSessionSlots)(20, 3, 20)).to.deep.equal({ activeCount: 17, restoredCount: 3 });
181
183
  });
182
184
  it('gives leftover slots to restored when active does not fill its share', () => {
183
185
  // Total (12) fits under the cap, so everything is shown.
184
- (0, chai_1.expect)((0, chat_sessions_welcome_message_provider_1.computeVisibleSessionSlots)(2, 10, 20)).to.deep.equal({ activeCount: 2, restoredCount: 10 });
186
+ (0, chai_1.expect)((0, chat_session_list_components_1.computeVisibleSessionSlots)(2, 10, 20)).to.deep.equal({ activeCount: 2, restoredCount: 10 });
185
187
  });
186
188
  it('shows everything when the cap exceeds the total', () => {
187
- (0, chai_1.expect)((0, chat_sessions_welcome_message_provider_1.computeVisibleSessionSlots)(2, 2, 20)).to.deep.equal({ activeCount: 2, restoredCount: 2 });
189
+ (0, chai_1.expect)((0, chat_session_list_components_1.computeVisibleSessionSlots)(2, 2, 20)).to.deep.equal({ activeCount: 2, restoredCount: 2 });
188
190
  });
189
191
  it('keeps a restored slot even when the cap is 1 and both sections are non-empty', () => {
190
- (0, chai_1.expect)((0, chat_sessions_welcome_message_provider_1.computeVisibleSessionSlots)(10, 10, 1)).to.deep.equal({ activeCount: 0, restoredCount: 1 });
192
+ (0, chai_1.expect)((0, chat_session_list_components_1.computeVisibleSessionSlots)(10, 10, 1)).to.deep.equal({ activeCount: 0, restoredCount: 1 });
191
193
  });
192
194
  it('splits a cap of 2 evenly between both sections', () => {
193
- (0, chai_1.expect)((0, chat_sessions_welcome_message_provider_1.computeVisibleSessionSlots)(10, 10, 2)).to.deep.equal({ activeCount: 1, restoredCount: 1 });
195
+ (0, chai_1.expect)((0, chat_session_list_components_1.computeVisibleSessionSlots)(10, 10, 2)).to.deep.equal({ activeCount: 1, restoredCount: 1 });
194
196
  });
195
197
  });
196
198
  describe('getSections', () => {
197
- class SectionsTestProvider extends chat_sessions_welcome_message_provider_1.ChatSessionsWelcomeMessageProvider {
199
+ class SectionsTestService extends chat_session_list_service_1.ChatSessionListService {
198
200
  constructor(sessions, persistedSessions) {
199
201
  super();
200
202
  this.chatService = { getSessions: () => sessions };
@@ -205,7 +207,6 @@ describe('ChatSessionsWelcomeMessageProvider', () => {
205
207
  }
206
208
  }
207
209
  function makeSession(id, title, opts) {
208
- const requests = opts?.lastRequest ? [{ response: opts.lastRequest }] : [];
209
210
  return {
210
211
  id,
211
212
  title,
@@ -214,7 +215,8 @@ describe('ChatSessionsWelcomeMessageProvider', () => {
214
215
  pinnedAgent: opts?.pinnedAgentId ? { id: opts.pinnedAgentId } : undefined,
215
216
  model: {
216
217
  location: opts?.location ?? ai_chat_1.ChatAgentLocation.Panel,
217
- getRequests: () => requests
218
+ status: opts?.status ?? 'idle',
219
+ getRequests: () => []
218
220
  }
219
221
  };
220
222
  }
@@ -222,7 +224,7 @@ describe('ChatSessionsWelcomeMessageProvider', () => {
222
224
  return { sessionId, title: sessionId, saveDate, location: ai_chat_1.ChatAgentLocation.Panel };
223
225
  }
224
226
  function getSections(sessions, persistedSessions) {
225
- return new SectionsTestProvider(sessions, persistedSessions).sections();
227
+ return new SectionsTestService(sessions, persistedSessions).sections();
226
228
  }
227
229
  it('excludes active sessions without a title', () => {
228
230
  const sections = getSections([
@@ -244,11 +246,11 @@ describe('ChatSessionsWelcomeMessageProvider', () => {
244
246
  (0, chai_1.expect)(sections.active.map(s => s.sessionId)).to.deep.equal(['a']);
245
247
  (0, chai_1.expect)(sections.restored.map(s => s.sessionId)).to.deep.equal(['b']);
246
248
  });
247
- it('flags an active session whose last request completed with an error', () => {
249
+ it('flags an active session whose status is failed', () => {
248
250
  const sections = getSections([
249
- makeSession('ok', 'Ok', { lastRequest: { isComplete: true, isError: false } }),
250
- makeSession('err', 'Err', { lastRequest: { isComplete: true, isError: true } }),
251
- makeSession('running', 'Running', { lastRequest: { isComplete: false, isError: false } })
251
+ makeSession('ok', 'Ok', { status: 'idle' }),
252
+ makeSession('err', 'Err', { status: 'failed' }),
253
+ makeSession('running', 'Running', { status: 'running' })
252
254
  ], []);
253
255
  const byId = new Map(sections.active.map(s => [s.sessionId, s.hasError]));
254
256
  (0, chai_1.expect)(byId.get('ok')).to.equal(false);
@@ -263,5 +265,97 @@ describe('ChatSessionsWelcomeMessageProvider', () => {
263
265
  (0, chai_1.expect)(sections.active[0].location).to.equal(ai_chat_1.ChatAgentLocation.Panel);
264
266
  });
265
267
  });
268
+ describe('session hierarchy', () => {
269
+ class HierarchyTestService extends chat_session_list_service_1.ChatSessionListService {
270
+ constructor(chatService, persistedSessions = []) {
271
+ super();
272
+ this.chatService = chatService;
273
+ this._persistedSessions = persistedSessions;
274
+ }
275
+ rows(sections) {
276
+ return this.buildRows(sections);
277
+ }
278
+ subtreeRequiresAction(row) {
279
+ return this.descendantRequiresAction(row);
280
+ }
281
+ expand(session) {
282
+ this.expandAncestors(session);
283
+ }
284
+ get expanded() {
285
+ return this.expandedRoots;
286
+ }
287
+ }
288
+ function meta(sessionId, opts) {
289
+ return {
290
+ sessionId,
291
+ title: sessionId,
292
+ saveDate: 0,
293
+ location: ai_chat_1.ChatAgentLocation.Panel,
294
+ rootSessionId: opts?.rootSessionId,
295
+ parentSessionId: opts?.parentSessionId
296
+ };
297
+ }
298
+ function loadedSession(id, status, opts) {
299
+ return {
300
+ id,
301
+ rootSessionId: opts?.rootSessionId,
302
+ parentSessionId: opts?.parentSessionId,
303
+ model: { status }
304
+ };
305
+ }
306
+ function findRow(rows, sessionId) {
307
+ const row = rows.find(r => r.session.sessionId === sessionId);
308
+ (0, chai_1.expect)(row, `row ${sessionId}`).to.not.be.undefined;
309
+ return row;
310
+ }
311
+ it('nests a restored A -> B hierarchy with an active C under the root', () => {
312
+ const service = new HierarchyTestService({ getSession: () => undefined });
313
+ const sections = {
314
+ active: [meta('C', { rootSessionId: 'A', parentSessionId: 'B' })],
315
+ restored: [meta('A'), meta('B', { rootSessionId: 'A', parentSessionId: 'A' })]
316
+ };
317
+ const rows = service.rows(sections);
318
+ const rowA = findRow(rows, 'A');
319
+ (0, chai_1.expect)(rowA.isRestored).to.equal(true);
320
+ (0, chai_1.expect)(rowA.childSessions.map(c => c.session.sessionId)).to.deep.equal(['B']);
321
+ const rowB = rowA.childSessions[0];
322
+ (0, chai_1.expect)(rowB.isRestored).to.equal(true);
323
+ (0, chai_1.expect)(rowB.childSessions.map(c => c.session.sessionId)).to.deep.equal(['C']);
324
+ (0, chai_1.expect)(rowB.childSessions[0].isRestored).to.equal(false);
325
+ });
326
+ it('propagates a deep descendant needing action up the tree', () => {
327
+ // Only the leaf C awaits input; both B and the root A must report a descendant needing action.
328
+ const chatService = {
329
+ getSession: (id) => id === 'C' ? loadedSession('C', 'awaitingInput') : loadedSession(id, 'idle')
330
+ };
331
+ const service = new HierarchyTestService(chatService);
332
+ const sections = {
333
+ active: [meta('C', { rootSessionId: 'A', parentSessionId: 'B' })],
334
+ restored: [meta('A'), meta('B', { rootSessionId: 'A', parentSessionId: 'A' })]
335
+ };
336
+ const rows = service.rows(sections);
337
+ const rowA = findRow(rows, 'A');
338
+ const rowB = rowA.childSessions[0];
339
+ const rowC = rowB.childSessions[0];
340
+ (0, chai_1.expect)(service.subtreeRequiresAction(rowA)).to.equal(true);
341
+ (0, chai_1.expect)(service.subtreeRequiresAction(rowB)).to.equal(true);
342
+ (0, chai_1.expect)(service.subtreeRequiresAction(rowC)).to.equal(false);
343
+ });
344
+ it('expands every ancestor of a session that needs action, falling back to persisted-only ancestors', () => {
345
+ // C is loaded and awaiting input; its ancestors B and A exist only in the persisted index
346
+ // (e.g. C was opened directly from "Browse all chats"). The walk must reach the root A, not
347
+ // stop at the first ancestor `getSession` cannot resolve.
348
+ const c = loadedSession('C', 'awaitingInput', { rootSessionId: 'A', parentSessionId: 'B' });
349
+ const chatService = {
350
+ getSession: (id) => id === 'C' ? c : undefined
351
+ };
352
+ const service = new HierarchyTestService(chatService, [
353
+ meta('A'),
354
+ meta('B', { rootSessionId: 'A', parentSessionId: 'A' })
355
+ ]);
356
+ service.expand(c);
357
+ (0, chai_1.expect)([...service.expanded].sort()).to.deep.equal(['A', 'B']);
358
+ });
359
+ });
266
360
  });
267
- //# sourceMappingURL=chat-sessions-welcome-message-provider.spec.js.map
361
+ //# sourceMappingURL=chat-session-list-service.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-session-list-service.spec.js","sourceRoot":"","sources":["../../src/browser/chat-session-list-service.spec.ts"],"names":[],"mappings":"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"}
@@ -8,10 +8,10 @@ import { Disposable } from '@theia/core';
8
8
  export interface SessionTooltip extends Disposable {
9
9
  element: HTMLElement;
10
10
  }
11
- export declare function buildSessionTooltip(session: ChatSession, metadata: ChatSessionMetadata, agentService: ChatAgentService, markdownRenderer: MarkdownRenderer, isUnread: boolean, isRunning: boolean, hasError: boolean, isWaitingForInput: boolean): SessionTooltip;
11
+ export declare function buildSessionTooltip(session: ChatSession, metadata: ChatSessionMetadata, agentService: ChatAgentService, markdownRenderer: MarkdownRenderer, isUnread: boolean, descendantNeedsAttention?: boolean): SessionTooltip;
12
12
  /**
13
13
  * Build a tooltip for a session that hasn't been loaded yet (i.e. a restored / persisted entry
14
14
  * shown on the home view). Avoids any restore I/O so hover does not promote the item to Active.
15
15
  */
16
- export declare function buildRestoredSessionTooltip(metadata: ChatSessionMetadata, agentService: ChatAgentService): SessionTooltip;
16
+ export declare function buildRestoredSessionTooltip(metadata: ChatSessionMetadata, agentService: ChatAgentService, descendantNeedsAttention?: boolean): SessionTooltip;
17
17
  //# sourceMappingURL=chat-session-tooltip.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"chat-session-tooltip.d.ts","sourceRoot":"","sources":["../../src/browser/chat-session-tooltip.ts"],"names":[],"mappings":"AAgBA,OAAO,EACH,gBAAgB,EAAyC,WAAW,EAAE,mBAAmB,EAE5F,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,8DAA8D,CAAC;AAEhG,OAAO,EAAE,UAAU,EAAwB,MAAM,aAAa,CAAC;AAK/D;;;GAGG;AACH,MAAM,WAAW,cAAe,SAAQ,UAAU;IAC9C,OAAO,EAAE,WAAW,CAAC;CACxB;AAuDD,wBAAgB,mBAAmB,CAC/B,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,mBAAmB,EACnD,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,EAClE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,iBAAiB,EAAE,OAAO,GACrF,cAAc,CA4FhB;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CACvC,QAAQ,EAAE,mBAAmB,EAAE,YAAY,EAAE,gBAAgB,GAC9D,cAAc,CAuBhB"}
1
+ {"version":3,"file":"chat-session-tooltip.d.ts","sourceRoot":"","sources":["../../src/browser/chat-session-tooltip.ts"],"names":[],"mappings":"AAgBA,OAAO,EACH,gBAAgB,EAAyC,WAAW,EAAE,mBAAmB,EAE5F,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,8DAA8D,CAAC;AAEhG,OAAO,EAAE,UAAU,EAAwB,MAAM,aAAa,CAAC;AAK/D;;;GAGG;AACH,MAAM,WAAW,cAAe,SAAQ,UAAU;IAC9C,OAAO,EAAE,WAAW,CAAC;CACxB;AAuDD,wBAAgB,mBAAmB,CAC/B,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,mBAAmB,EACnD,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,EAClE,QAAQ,EAAE,OAAO,EAAE,wBAAwB,GAAE,OAAe,GAC7D,cAAc,CA0GhB;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CACvC,QAAQ,EAAE,mBAAmB,EAAE,YAAY,EAAE,gBAAgB,EAAE,wBAAwB,GAAE,OAAe,GACzG,cAAc,CA6BhB"}
@@ -71,26 +71,42 @@ function addDefinitionEntry(definitionList, term, detail) {
71
71
  detailElement.textContent = detail;
72
72
  definitionList.appendChild(detailElement);
73
73
  }
74
- function buildSessionTooltip(session, metadata, agentService, markdownRenderer, isUnread, isRunning, hasError, isWaitingForInput) {
74
+ function buildSessionTooltip(session, metadata, agentService, markdownRenderer, isUnread, descendantNeedsAttention = false) {
75
75
  const toDispose = new core_1.DisposableCollection();
76
76
  const requests = session.model.getRequests();
77
77
  const lastRequest = requests.at(-1);
78
+ const status = session.model.status;
78
79
  const container = document.createElement('div');
79
80
  container.className = 'theia-chat-session-tooltip';
80
- // A session waiting for input is also "running", so check it first to give it precedence.
81
- if (isWaitingForInput) {
81
+ // Waiting on the user takes precedence over the generic running badge: it signals that the
82
+ // user, not the agent, needs to act.
83
+ if (status === 'awaitingApproval') {
84
+ const badge = document.createElement('div');
85
+ badge.className = 'theia-chat-session-badge-attention-tooltip';
86
+ badge.textContent = nls_1.nls.localize('theia/ai/ide/requiresApproval', 'Requires your approval');
87
+ container.appendChild(badge);
88
+ }
89
+ else if (status === 'awaitingInput') {
82
90
  const badge = document.createElement('div');
83
91
  badge.className = 'theia-chat-session-badge-attention-tooltip';
84
92
  badge.textContent = nls_1.nls.localize('theia/ai/ide/waitingForInput', 'Waiting for your input');
85
93
  container.appendChild(badge);
86
94
  }
87
- else if (isRunning) {
95
+ else if (descendantNeedsAttention) {
96
+ // The session itself is not awaiting the user, but one of its delegated children is;
97
+ // surface that instead of the generic running badge so the reason is clear.
98
+ const badge = document.createElement('div');
99
+ badge.className = 'theia-chat-session-badge-attention-tooltip';
100
+ badge.textContent = nls_1.nls.localize('theia/ai/ide/childInteractionNeeded', 'A delegated session needs your attention');
101
+ container.appendChild(badge);
102
+ }
103
+ else if (ai_chat_1.ChatSessionStatus.isInProgress(status)) {
88
104
  const badge = document.createElement('div');
89
105
  badge.className = 'theia-chat-session-badge-running-tooltip';
90
106
  badge.textContent = nls_1.nls.localizeByDefault('Running');
91
107
  container.appendChild(badge);
92
108
  }
93
- else if (hasError) {
109
+ else if (status === 'failed') {
94
110
  const badge = document.createElement('div');
95
111
  badge.className = 'theia-chat-session-badge-error-tooltip';
96
112
  badge.textContent = nls_1.nls.localizeByDefault('Error');
@@ -104,7 +120,7 @@ function buildSessionTooltip(session, metadata, agentService, markdownRenderer,
104
120
  }
105
121
  if (lastRequest) {
106
122
  const lastResponse = lastRequest.response;
107
- const errorText = hasError ? getResponseErrorMessage(lastResponse) : undefined;
123
+ const errorText = status === 'failed' ? getResponseErrorMessage(lastResponse) : undefined;
108
124
  if (errorText) {
109
125
  const label = document.createElement('div');
110
126
  label.className = 'theia-chat-session-tooltip-label';
@@ -149,7 +165,7 @@ function buildSessionTooltip(session, metadata, agentService, markdownRenderer,
149
165
  const exchangeLabel = count === 1
150
166
  ? nls_1.nls.localize('theia/ai/ide/tooltip/oneExchange', '1 exchange')
151
167
  : nls_1.nls.localize('theia/ai/ide/tooltip/multipleExchanges', '{0} exchanges', count);
152
- addDefinitionEntry(definitionList, nls_1.nls.localize('theia/ai/ide/tooltip/messages', 'Messages'), exchangeLabel);
168
+ addDefinitionEntry(definitionList, nls_1.nls.localizeByDefault('Messages'), exchangeLabel);
153
169
  const date = session.lastInteraction ?? new Date(metadata.saveDate);
154
170
  addDefinitionEntry(definitionList, nls_1.nls.localize('theia/ai/ide/tooltip/lastActivity', 'Last activity'), date.toLocaleString());
155
171
  container.appendChild(definitionList);
@@ -159,12 +175,19 @@ function buildSessionTooltip(session, metadata, agentService, markdownRenderer,
159
175
  * Build a tooltip for a session that hasn't been loaded yet (i.e. a restored / persisted entry
160
176
  * shown on the home view). Avoids any restore I/O so hover does not promote the item to Active.
161
177
  */
162
- function buildRestoredSessionTooltip(metadata, agentService) {
178
+ function buildRestoredSessionTooltip(metadata, agentService, descendantNeedsAttention = false) {
163
179
  const container = document.createElement('div');
164
180
  container.className = 'theia-chat-session-tooltip';
165
181
  const badge = document.createElement('div');
166
- badge.className = 'theia-chat-session-badge-restored-tooltip';
167
- badge.textContent = nls_1.nls.localize('theia/ai/ide/restoredSession', 'Restored session');
182
+ if (descendantNeedsAttention) {
183
+ // A persisted parent whose delegated child needs the user; show that rather than "Restored".
184
+ badge.className = 'theia-chat-session-badge-attention-tooltip';
185
+ badge.textContent = nls_1.nls.localize('theia/ai/ide/childInteractionNeeded', 'A delegated session needs your attention');
186
+ }
187
+ else {
188
+ badge.className = 'theia-chat-session-badge-restored-tooltip';
189
+ badge.textContent = nls_1.nls.localize('theia/ai/ide/restoredSession', 'Restored session');
190
+ }
168
191
  container.appendChild(badge);
169
192
  const definitionList = document.createElement('dl');
170
193
  if (metadata.pinnedAgentId) {
@@ -1 +1 @@
1
- {"version":3,"file":"chat-session-tooltip.js","sourceRoot":"","sources":["../../src/browser/chat-session-tooltip.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chat-session-tooltip.js","sourceRoot":"","sources":["../../src/browser/chat-session-tooltip.ts"],"names":[],"mappings":"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"}
@@ -1,26 +1,13 @@
1
1
  import { ChatWelcomeMessageProvider } from '@theia/ai-chat-ui/lib/browser/chat-tree-view';
2
- import { ChatAgentService, ChatService, ChatSession, ChatSessionMetadata } from '@theia/ai-chat';
2
+ import { ChatAgentService, ChatService, ChatSessionMetadata } from '@theia/ai-chat';
3
3
  import { ChatSessionItemAction, ChatSessionItemActionContribution } from './chat-session-item-action-contribution';
4
+ import { ChatSessionListService } from './chat-session-list-service';
5
+ import { SectionedSessions, SessionRow } from './chat-session-list-components';
4
6
  import { FrontendLanguageModelRegistry } from '@theia/ai-core/lib/common';
5
7
  import { CommandRegistry, ContributionProvider, Emitter, Event, PreferenceService } from '@theia/core';
6
8
  import { ApplicationShell, HoverService } from '@theia/core/lib/browser';
7
9
  import { MarkdownRenderer, MarkdownRendererFactory } from '@theia/core/lib/browser/markdown-rendering/markdown-renderer';
8
10
  import * as React from '@theia/core/shared/react';
9
- export interface SectionedSessions {
10
- active: ChatSessionMetadata[];
11
- restored: ChatSessionMetadata[];
12
- }
13
- export interface VisibleSessionSlots {
14
- activeCount: number;
15
- restoredCount: number;
16
- }
17
- /**
18
- * Allocates the capped number of visible items between the Active and Restored sections of the
19
- * overview. When both sections are non-empty, up to {@link RESTORED_MIN_RESERVATION} slots are
20
- * reserved for Restored so active sessions cannot crowd it out entirely. A cap of 0 hides the
21
- * inline list (every session stays reachable via the "Browse all chats..." link).
22
- */
23
- export declare function computeVisibleSessionSlots(activeTotal: number, restoredTotal: number, maxSessions: number): VisibleSessionSlots;
24
11
  export declare class ChatSessionsWelcomeMessageProvider implements ChatWelcomeMessageProvider {
25
12
  readonly priority = 50;
26
13
  protected readonly chatService: ChatService;
@@ -32,34 +19,21 @@ export declare class ChatSessionsWelcomeMessageProvider implements ChatWelcomeMe
32
19
  protected readonly chatSessionItemActionContributions: ContributionProvider<ChatSessionItemActionContribution>;
33
20
  protected readonly languageModelRegistry: FrontendLanguageModelRegistry;
34
21
  protected readonly shell: ApplicationShell;
22
+ protected readonly sessionListService: ChatSessionListService;
35
23
  protected _inputEnabled: boolean;
36
- private readonly unreadSessions;
37
- private readonly onUnreadChangedEmitter;
38
- readonly onUnreadChanged: Event<string>;
24
+ protected _sessionsWidgetAttached: boolean;
39
25
  protected _markdownRenderer: MarkdownRenderer | undefined;
40
26
  protected get markdownRenderer(): MarkdownRenderer;
41
- /** Persisted sessions index sorted newest first. May include duplicates of active sessions. */
42
- protected _persistedSessions: ChatSessionMetadata[];
43
27
  protected readonly onStateChangedEmitter: Emitter<void>;
44
28
  readonly onStateChanged: Event<void>;
45
29
  protected init(): void;
30
+ protected isSessionsWidgetAttached(): boolean;
46
31
  protected updateInputEnabled(): Promise<void>;
47
- protected loadSessions(): Promise<void>;
48
- protected isPersistenceEnabled(): boolean;
49
- isUnread(sessionId: string): boolean;
50
- protected watchSession(session: ChatSession): void;
51
- protected markSessionRead(sessionId: string): void;
52
- protected unwatchSession(sessionId: string): void;
53
- private countCompleted;
54
- /**
55
- * Splits sessions into active vs. restored. Active sessions are sourced from
56
- * `chatService.getSessions()` (in-memory). Restored sessions are the persisted index entries
57
- * that aren't already loaded as an active session.
58
- */
59
- protected getSections(): SectionedSessions;
60
32
  renderWelcomeMessage(): React.ReactNode;
61
33
  protected renderSessionsSection(sections: SectionedSessions): React.ReactNode;
62
- protected renderSessionItem: (session: ChatSessionMetadata, isRestored: boolean) => React.ReactNode;
34
+ protected getSessionActions(session: ChatSessionMetadata): ChatSessionItemAction[];
35
+ protected renderSessionRow: (row: SessionRow) => React.ReactNode;
36
+ protected renderSessionRowAtDepth(row: SessionRow, depth: number): React.ReactNode;
63
37
  protected handleSessionItemAction: (action: ChatSessionItemAction, session: ChatSessionMetadata) => void;
64
38
  protected handleSessionItemClick: (sessionId: string) => Promise<void>;
65
39
  protected handleBrowseAllChats: () => void;
@@ -1 +1 @@
1
- {"version":3,"file":"chat-sessions-welcome-message-provider.d.ts","sourceRoot":"","sources":["../../src/browser/chat-sessions-welcome-message-provider.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chat-sessions-welcome-message-provider.d.ts","sourceRoot":"","sources":["../../src/browser/chat-sessions-welcome-message-provider.tsx"],"names":[],"mappings":"AAgBA,OAAO,EAAE,0BAA0B,EAAE,MAAM,8CAA8C,CAAC;AAE1F,OAAO,EACH,gBAAgB,EAAE,WAAW,EAAE,mBAAmB,EACrD,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,qBAAqB,EAAE,iCAAiC,EAAE,MAAM,yCAAyC,CAAC;AACnH,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAgB,MAAM,gCAAgC,CAAC;AAE7F,OAAO,EAAE,6BAA6B,EAAE,MAAM,2BAA2B,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,OAAO,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACvG,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEzE,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,8DAA8D,CAAC;AAEzH,OAAO,KAAK,KAAK,MAAM,0BAA0B,CAAC;AAElD,qBACa,kCAAmC,YAAW,0BAA0B;IAEjF,QAAQ,CAAC,QAAQ,MAAM;IAGvB,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAG5C,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAC;IAGpD,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAGxD,SAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IAGtD,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IAG9C,SAAS,CAAC,QAAQ,CAAC,uBAAuB,EAAE,uBAAuB,CAAC;IAGpE,SAAS,CAAC,QAAQ,CAAC,kCAAkC,EAAE,oBAAoB,CAAC,iCAAiC,CAAC,CAAC;IAG/G,SAAS,CAAC,QAAQ,CAAC,qBAAqB,EAAE,6BAA6B,CAAC;IAGxE,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,gBAAgB,CAAC;IAG3C,SAAS,CAAC,QAAQ,CAAC,kBAAkB,EAAE,sBAAsB,CAAC;IAE9D,SAAS,CAAC,aAAa,UAAS;IAEhC,SAAS,CAAC,uBAAuB,UAAS;IAE1C,SAAS,CAAC,iBAAiB,EAAE,gBAAgB,GAAG,SAAS,CAAC;IAC1D,SAAS,KAAK,gBAAgB,IAAI,gBAAgB,CAKjD;IAED,SAAS,CAAC,QAAQ,CAAC,qBAAqB,gBAAuB;IAC/D,QAAQ,CAAC,cAAc,EAAE,KAAK,CAAC,IAAI,CAAC,CAAoC;IAGxE,SAAS,CAAC,IAAI,IAAI,IAAI;IAgCtB,SAAS,CAAC,wBAAwB,IAAI,OAAO;cAO7B,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;IAWnD,oBAAoB,IAAI,KAAK,CAAC,SAAS;IAevC,SAAS,CAAC,qBAAqB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,KAAK,CAAC,SAAS;IAkB7E,SAAS,CAAC,iBAAiB,CAAC,OAAO,EAAE,mBAAmB,GAAG,qBAAqB,EAAE;IAQlF,SAAS,CAAC,gBAAgB,GAAI,KAAK,UAAU,KAAG,KAAK,CAAC,SAAS,CAAyC;IAExG,SAAS,CAAC,uBAAuB,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,KAAK,CAAC,SAAS;IA+BlF,SAAS,CAAC,uBAAuB,GAAI,QAAQ,qBAAqB,EAAE,SAAS,mBAAmB,KAAG,IAAI,CAErG;IAEF,SAAS,CAAC,sBAAsB,GAAU,WAAW,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC,CAGzE;IAEF,SAAS,CAAC,oBAAoB,QAAO,IAAI,CAEvC;CACL"}