@theia/ai-ide 1.77.0-next.4 → 1.77.0-next.47

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/lib/browser/ai-configuration/categories/agent-capabilities-settings.d.ts +11 -3
  2. package/lib/browser/ai-configuration/categories/agent-capabilities-settings.d.ts.map +1 -1
  3. package/lib/browser/ai-configuration/categories/agent-capabilities-settings.js +62 -28
  4. package/lib/browser/ai-configuration/categories/agent-capabilities-settings.js.map +1 -1
  5. package/lib/browser/ai-configuration/categories/agent-capabilities-settings.spec.js +478 -0
  6. package/lib/browser/ai-configuration/categories/agent-capabilities-settings.spec.js.map +1 -1
  7. package/lib/browser/ai-configuration/categories/agent-detail-model.d.ts +10 -0
  8. package/lib/browser/ai-configuration/categories/agent-detail-model.d.ts.map +1 -1
  9. package/lib/browser/ai-configuration/categories/agent-detail-model.js +8 -0
  10. package/lib/browser/ai-configuration/categories/agent-detail-model.js.map +1 -1
  11. package/lib/browser/ai-configuration/categories/agent-detail-model.spec.d.ts +2 -0
  12. package/lib/browser/ai-configuration/categories/agent-detail-model.spec.d.ts.map +1 -0
  13. package/lib/browser/ai-configuration/categories/agent-detail-model.spec.js +74 -0
  14. package/lib/browser/ai-configuration/categories/agent-detail-model.spec.js.map +1 -0
  15. package/lib/browser/ai-configuration/categories/agent-detail-view.d.ts.map +1 -1
  16. package/lib/browser/ai-configuration/categories/agent-detail-view.js +1 -1
  17. package/lib/browser/ai-configuration/categories/agent-detail-view.js.map +1 -1
  18. package/lib/browser/ai-configuration/categories/agents-configuration-category.d.ts +6 -1
  19. package/lib/browser/ai-configuration/categories/agents-configuration-category.d.ts.map +1 -1
  20. package/lib/browser/ai-configuration/categories/agents-configuration-category.js +20 -2
  21. package/lib/browser/ai-configuration/categories/agents-configuration-category.js.map +1 -1
  22. package/lib/browser/ai-configuration/categories/provider-model-discovery-section.js +3 -3
  23. package/lib/browser/ai-configuration/categories/provider-model-discovery-section.js.map +1 -1
  24. package/lib/browser/ai-configuration/categories/token-usage-configuration-category.js +2 -2
  25. package/lib/browser/ai-configuration/categories/token-usage-configuration-category.js.map +1 -1
  26. package/lib/browser/ai-configuration/language-model-renderer.d.ts.map +1 -1
  27. package/lib/browser/ai-configuration/language-model-renderer.js +6 -14
  28. package/lib/browser/ai-configuration/language-model-renderer.js.map +1 -1
  29. package/lib/browser/ai-configuration/language-model-renderer.spec.js +38 -0
  30. package/lib/browser/ai-configuration/language-model-renderer.spec.js.map +1 -1
  31. package/lib/browser/file-changeset-functions.d.ts +3 -1
  32. package/lib/browser/file-changeset-functions.d.ts.map +1 -1
  33. package/lib/browser/file-changeset-functions.js +60 -6
  34. package/lib/browser/file-changeset-functions.js.map +1 -1
  35. package/lib/browser/file-changeset-functions.spec.js +70 -7
  36. package/lib/browser/file-changeset-functions.spec.js.map +1 -1
  37. package/lib/browser/task-context-file-storage-service.d.ts.map +1 -1
  38. package/lib/browser/task-context-file-storage-service.js +1 -2
  39. package/lib/browser/task-context-file-storage-service.js.map +1 -1
  40. package/lib/browser/task-context-file-storage-service.spec.d.ts +2 -0
  41. package/lib/browser/task-context-file-storage-service.spec.d.ts.map +1 -0
  42. package/lib/browser/task-context-file-storage-service.spec.js +111 -0
  43. package/lib/browser/task-context-file-storage-service.spec.js.map +1 -0
  44. package/lib/common/workspace-preferences.d.ts +1 -0
  45. package/lib/common/workspace-preferences.d.ts.map +1 -1
  46. package/lib/common/workspace-preferences.js +10 -1
  47. package/lib/common/workspace-preferences.js.map +1 -1
  48. package/package.json +26 -28
  49. package/src/browser/ai-configuration/categories/agent-capabilities-settings.spec.ts +508 -2
  50. package/src/browser/ai-configuration/categories/agent-capabilities-settings.tsx +92 -33
  51. package/src/browser/ai-configuration/categories/agent-detail-model.spec.ts +78 -0
  52. package/src/browser/ai-configuration/categories/agent-detail-model.ts +18 -0
  53. package/src/browser/ai-configuration/categories/agent-detail-view.tsx +15 -12
  54. package/src/browser/ai-configuration/categories/agents-configuration-category.tsx +18 -3
  55. package/src/browser/ai-configuration/categories/provider-model-discovery-section.tsx +3 -3
  56. package/src/browser/ai-configuration/categories/token-usage-configuration-category.tsx +2 -2
  57. package/src/browser/ai-configuration/language-model-renderer.spec.ts +38 -0
  58. package/src/browser/ai-configuration/language-model-renderer.tsx +6 -15
  59. package/src/browser/file-changeset-functions.spec.ts +88 -7
  60. package/src/browser/file-changeset-functions.ts +62 -7
  61. package/src/browser/style/index.css +15 -0
  62. package/src/browser/task-context-file-storage-service.spec.ts +125 -0
  63. package/src/browser/task-context-file-storage-service.ts +3 -4
  64. package/src/common/workspace-preferences.ts +10 -0
@@ -20,9 +20,13 @@ let disableJSDOM = (0, jsdom_1.enableJSDOM)();
20
20
  const frontend_application_config_provider_1 = require("@theia/core/lib/browser/frontend-application-config-provider");
21
21
  frontend_application_config_provider_1.FrontendApplicationConfigProvider.set({});
22
22
  const chai_1 = require("chai");
23
+ const sinon = require("sinon");
24
+ const preference_provider_1 = require("@theia/core/lib/common/preferences/preference-provider");
25
+ const promise_util_1 = require("@theia/core/lib/common/promise-util");
23
26
  const React = require("@theia/core/shared/react");
24
27
  const react_dom_1 = require("@theia/core/shared/react-dom");
25
28
  const client_1 = require("@theia/core/shared/react-dom/client");
29
+ const GenericCapabilitiesTreeModule = require("@theia/ai-chat-ui/lib/browser/generic-capabilities-tree");
26
30
  const agent_capabilities_settings_1 = require("./agent-capabilities-settings");
27
31
  disableJSDOM();
28
32
  describe('AgentServerToolsSettings', () => {
@@ -137,4 +141,478 @@ describe('AgentServerToolsSettings', () => {
137
141
  }
138
142
  });
139
143
  });
144
+ describe('AgentGenericCapabilitiesSettings', () => {
145
+ before(() => {
146
+ disableJSDOM = (0, jsdom_1.enableJSDOM)();
147
+ // The tree's root tooltips read the application name; the config lives on the fresh window.
148
+ frontend_application_config_provider_1.FrontendApplicationConfigProvider.set({});
149
+ });
150
+ after(() => disableJSDOM());
151
+ const available = {
152
+ skills: [{ id: 'skill-a', name: 'skill-a' }, { id: 'skill-b', name: 'skill-b' }],
153
+ mcpFunctions: [],
154
+ functions: [{ id: 'fn-used', name: 'fn-used' }, { id: 'fn-a', name: 'fn-a' }],
155
+ promptFragments: [],
156
+ agentDelegation: [],
157
+ variables: []
158
+ };
159
+ function render(savedSelections, availableCapabilities, deferWrites = false) {
160
+ const updates = [];
161
+ let stored = savedSelections;
162
+ const writes = [];
163
+ const reads = [];
164
+ const aiSettingsService = {
165
+ getAgentSettings: async (agentId) => {
166
+ (0, chai_1.expect)(agentId).to.equal('coder');
167
+ const deferred = reads.shift();
168
+ return { genericCapabilitySelections: deferred ? await deferred.promise : stored };
169
+ },
170
+ updateAgentSettings: async (_agent, settings) => {
171
+ updates.push(settings);
172
+ const next = settings.genericCapabilitySelections;
173
+ // PreferenceServiceImpl skips a write if it equals the value currently stored, not a pending value.
174
+ if (preference_provider_1.PreferenceUtils.deepEqual(stored, next)) {
175
+ return;
176
+ }
177
+ if (deferWrites) {
178
+ await new Promise((resolve, reject) => writes.push(result => {
179
+ if (result instanceof Error) {
180
+ reject(result);
181
+ return;
182
+ }
183
+ if (result) {
184
+ stored = next;
185
+ }
186
+ // Like the production service, emit a reload even when a write fails, then resolve.
187
+ reload(stored ? { ...stored } : undefined);
188
+ resolve();
189
+ }));
190
+ }
191
+ else {
192
+ stored = next;
193
+ }
194
+ }
195
+ };
196
+ const container = document.createElement('div');
197
+ document.body.appendChild(container);
198
+ const root = (0, client_1.createRoot)(container);
199
+ const reload = (saved) => (0, react_dom_1.flushSync)(() => root.render(React.createElement(agent_capabilities_settings_1.AgentGenericCapabilitiesSettings, {
200
+ agentId: 'coder',
201
+ savedSelections: saved,
202
+ availableCapabilities,
203
+ usedCapabilities: { functions: ['fn-used'] },
204
+ aiSettingsService,
205
+ settingsRowService: { openResetMenu: () => { } },
206
+ hoverService: { requestHover: () => { } },
207
+ onOpenPromptSnippet: () => { }
208
+ })));
209
+ reload(savedSelections);
210
+ return {
211
+ container, updates, reload,
212
+ setStored: selections => { stored = selections; },
213
+ getStored: () => stored,
214
+ finishWrite: async (index, success = true) => {
215
+ await Promise.resolve();
216
+ writes[index](success);
217
+ },
218
+ rejectWrite: async (index, error) => {
219
+ await Promise.resolve();
220
+ writes[index](error);
221
+ },
222
+ deferRead: () => {
223
+ const deferred = new promise_util_1.Deferred();
224
+ reads.push(deferred);
225
+ return deferred;
226
+ },
227
+ dispose: () => { (0, react_dom_1.flushSync)(() => root.unmount()); container.remove(); }
228
+ };
229
+ }
230
+ function openEditorAndExpand(container, rootName) {
231
+ (0, react_dom_1.flushSync)(() => container.querySelector('button[aria-label="Edit generic capabilities"]').click());
232
+ const header = Array.from(container.querySelectorAll('.theia-GenericCapabilities-TreeNodeHeader'))
233
+ .find(candidate => candidate.textContent === rootName);
234
+ (0, react_dom_1.flushSync)(() => header.click());
235
+ }
236
+ function item(container, name) {
237
+ return Array.from(container.querySelectorAll('.theia-GenericCapabilities-TreeItem')).find(candidate => candidate.textContent === name);
238
+ }
239
+ function isChecked(container, name) {
240
+ return item(container, name).querySelector('input').checked;
241
+ }
242
+ /**
243
+ * Waits until `condition` holds. Rereading the stored selections updates the state outside `flushSync`,
244
+ * so React commits it in a task of its own and a single `setTimeout(0)` does not reliably wait for it.
245
+ */
246
+ async function waitUntil(condition, timeout = 2000) {
247
+ const deadline = Date.now() + timeout;
248
+ while (!condition() && Date.now() < deadline) {
249
+ await new Promise(resolve => setTimeout(resolve, 0));
250
+ }
251
+ }
252
+ it('offers no editor when there is nothing to choose from', () => {
253
+ const { container, dispose } = render({ skills: ['skill-a'] }, undefined);
254
+ try {
255
+ (0, chai_1.expect)(Boolean(container.querySelector('button[aria-label="Edit generic capabilities"]'))).to.equal(false);
256
+ (0, chai_1.expect)(container.textContent).to.include('skill-a');
257
+ }
258
+ finally {
259
+ dispose();
260
+ }
261
+ });
262
+ it('saves a selection made in the editor right away, keeping earlier edits', async () => {
263
+ const { container, updates, dispose } = render(undefined, available);
264
+ try {
265
+ openEditorAndExpand(container, 'Skills');
266
+ (0, react_dom_1.flushSync)(() => item(container, 'skill-a').click());
267
+ (0, react_dom_1.flushSync)(() => item(container, 'skill-b').click());
268
+ await new Promise(resolve => setTimeout(resolve, 0));
269
+ (0, chai_1.expect)(updates).to.deep.equal([
270
+ { genericCapabilitySelections: { skills: ['skill-a'] } },
271
+ { genericCapabilitySelections: { skills: ['skill-a', 'skill-b'] } }
272
+ ]);
273
+ // The summary row reflects the edit without waiting for the saved value to be reloaded.
274
+ (0, chai_1.expect)(container.querySelector('.ai-configuration-item-list').textContent).to.include('skill-a, skill-b');
275
+ }
276
+ finally {
277
+ dispose();
278
+ }
279
+ });
280
+ it('preserves newer edits when an intermediate save is reloaded', async () => {
281
+ const { container, updates, reload, dispose } = render(undefined, available);
282
+ try {
283
+ openEditorAndExpand(container, 'Skills');
284
+ (0, react_dom_1.flushSync)(() => item(container, 'skill-a').click());
285
+ (0, react_dom_1.flushSync)(() => item(container, 'skill-b').click());
286
+ await new Promise(resolve => setTimeout(resolve, 0));
287
+ reload({ skills: ['skill-a'] });
288
+ await new Promise(resolve => setTimeout(resolve, 0));
289
+ (0, chai_1.expect)(item(container, 'skill-b').querySelector('input').checked).to.equal(true);
290
+ (0, react_dom_1.flushSync)(() => item(container, 'skill-a').click());
291
+ await new Promise(resolve => setTimeout(resolve, 0));
292
+ (0, chai_1.expect)(updates[2]).to.deep.equal({ genericCapabilitySelections: { skills: ['skill-b'] } });
293
+ }
294
+ finally {
295
+ dispose();
296
+ }
297
+ });
298
+ it('ignores reversed stale props after all writes settle', async () => {
299
+ const { container, updates, reload, dispose } = render(undefined, available);
300
+ try {
301
+ openEditorAndExpand(container, 'Skills');
302
+ (0, react_dom_1.flushSync)(() => item(container, 'skill-a').click());
303
+ (0, react_dom_1.flushSync)(() => item(container, 'skill-b').click());
304
+ await new Promise(resolve => setTimeout(resolve, 0));
305
+ reload({ skills: ['skill-a', 'skill-b'] });
306
+ await new Promise(resolve => setTimeout(resolve, 0));
307
+ reload({ skills: ['skill-a'] });
308
+ await new Promise(resolve => setTimeout(resolve, 0));
309
+ (0, chai_1.expect)(item(container, 'skill-b').querySelector('input').checked).to.equal(true);
310
+ (0, react_dom_1.flushSync)(() => item(container, 'skill-a').click());
311
+ await new Promise(resolve => setTimeout(resolve, 0));
312
+ (0, chai_1.expect)(updates[2]).to.deep.equal({ genericCapabilitySelections: { skills: ['skill-b'] } });
313
+ }
314
+ finally {
315
+ dispose();
316
+ }
317
+ });
318
+ it('preserves a local reset when an earlier selection is reloaded', async () => {
319
+ const { container, updates, reload, dispose } = render(undefined, available);
320
+ try {
321
+ openEditorAndExpand(container, 'Skills');
322
+ (0, react_dom_1.flushSync)(() => item(container, 'skill-a').click());
323
+ (0, react_dom_1.flushSync)(() => container.querySelector('button[aria-label="Reset all generic capability selections"]').click());
324
+ await new Promise(resolve => setTimeout(resolve, 0));
325
+ reload({ skills: ['skill-a'] });
326
+ await new Promise(resolve => setTimeout(resolve, 0));
327
+ (0, chai_1.expect)(item(container, 'skill-a').querySelector('input').checked).to.equal(false);
328
+ (0, react_dom_1.flushSync)(() => item(container, 'skill-b').click());
329
+ await new Promise(resolve => setTimeout(resolve, 0));
330
+ (0, chai_1.expect)(updates[2]).to.deep.equal({ genericCapabilitySelections: { skills: ['skill-b'] } });
331
+ }
332
+ finally {
333
+ dispose();
334
+ }
335
+ });
336
+ it('starts queued writes in order and keeps optimistic edits until the queue drains', async () => {
337
+ const { container, updates, finishWrite, getStored, dispose } = render(undefined, available, true);
338
+ try {
339
+ openEditorAndExpand(container, 'Skills');
340
+ (0, react_dom_1.flushSync)(() => item(container, 'skill-a').click());
341
+ (0, react_dom_1.flushSync)(() => item(container, 'skill-b').click());
342
+ await new Promise(resolve => setTimeout(resolve, 0));
343
+ (0, chai_1.expect)(updates).to.have.lengthOf(1);
344
+ (0, chai_1.expect)(item(container, 'skill-b').querySelector('input').checked).to.equal(true);
345
+ await finishWrite(0);
346
+ await new Promise(resolve => setTimeout(resolve, 0));
347
+ (0, chai_1.expect)(updates).to.have.lengthOf(2);
348
+ (0, chai_1.expect)(getStored()).to.deep.equal({ skills: ['skill-a'] });
349
+ (0, chai_1.expect)(item(container, 'skill-b').querySelector('input').checked).to.equal(true);
350
+ await finishWrite(1);
351
+ await new Promise(resolve => setTimeout(resolve, 0));
352
+ (0, chai_1.expect)(getStored()).to.deep.equal({ skills: ['skill-a', 'skill-b'] });
353
+ (0, chai_1.expect)(item(container, 'skill-b').querySelector('input').checked).to.equal(true);
354
+ }
355
+ finally {
356
+ dispose();
357
+ }
358
+ });
359
+ it('persists A after rapid A to AB to A edits despite equal-value write suppression', async () => {
360
+ const { container, updates, finishWrite, getStored, dispose } = render({ skills: ['skill-a'] }, available, true);
361
+ try {
362
+ openEditorAndExpand(container, 'Skills');
363
+ (0, react_dom_1.flushSync)(() => item(container, 'skill-b').click());
364
+ (0, react_dom_1.flushSync)(() => item(container, 'skill-b').click());
365
+ (0, chai_1.expect)(item(container, 'skill-b').querySelector('input').checked).to.equal(false);
366
+ await new Promise(resolve => setTimeout(resolve, 0));
367
+ (0, chai_1.expect)(updates).to.have.lengthOf(1);
368
+ await finishWrite(0);
369
+ await new Promise(resolve => setTimeout(resolve, 0));
370
+ (0, chai_1.expect)(getStored()).to.deep.equal({ skills: ['skill-a', 'skill-b'] });
371
+ (0, chai_1.expect)(updates).to.have.lengthOf(2);
372
+ (0, chai_1.expect)(item(container, 'skill-b').querySelector('input').checked).to.equal(false);
373
+ await finishWrite(1);
374
+ await new Promise(resolve => setTimeout(resolve, 0));
375
+ (0, chai_1.expect)(getStored()).to.deep.equal({ skills: ['skill-a'] });
376
+ (0, chai_1.expect)(item(container, 'skill-a').querySelector('input').checked).to.equal(true);
377
+ (0, chai_1.expect)(item(container, 'skill-b').querySelector('input').checked).to.equal(false);
378
+ }
379
+ finally {
380
+ dispose();
381
+ }
382
+ });
383
+ it('preserves a rejected save promise without poisoning later queued writes', async () => {
384
+ let change;
385
+ const tree = sinon.stub(GenericCapabilitiesTreeModule, 'GenericCapabilitiesTree').callsFake(props => {
386
+ change = props.onGenericCapabilityChange;
387
+ return React.createElement('div');
388
+ });
389
+ const { container, updates, rejectWrite, finishWrite, getStored, dispose } = render(undefined, available, true);
390
+ try {
391
+ (0, react_dom_1.flushSync)(() => container.querySelector('button[aria-label="Edit generic capabilities"]').click());
392
+ let failed;
393
+ let queued;
394
+ (0, react_dom_1.flushSync)(() => {
395
+ failed = change('skills', ['skill-a']);
396
+ queued = change('skills', ['skill-a', 'skill-b']);
397
+ });
398
+ const failure = new Error('Write failed');
399
+ const rejection = failed.then(() => chai_1.expect.fail('Expected the save to reject'), error => (0, chai_1.expect)(error).to.equal(failure));
400
+ const queuedResult = queued.then(() => undefined, error => error);
401
+ await rejectWrite(0, failure);
402
+ await rejection;
403
+ await new Promise(resolve => setTimeout(resolve, 0));
404
+ (0, chai_1.expect)(updates).to.have.lengthOf(2);
405
+ await finishWrite(1);
406
+ (0, chai_1.expect)(await queuedResult).to.equal(undefined);
407
+ (0, chai_1.expect)(getStored()).to.deep.equal({ skills: ['skill-a', 'skill-b'] });
408
+ await new Promise(resolve => setTimeout(resolve, 0));
409
+ (0, chai_1.expect)(container.querySelector('.ai-configuration-item-list').textContent).to.include('skill-a, skill-b');
410
+ }
411
+ finally {
412
+ dispose();
413
+ tree.restore();
414
+ }
415
+ });
416
+ it('rolls back a swallowed write failure after its change event and resolving promise', async () => {
417
+ const { container, finishWrite, dispose } = render({ skills: ['skill-a'] }, available, true);
418
+ try {
419
+ openEditorAndExpand(container, 'Skills');
420
+ (0, react_dom_1.flushSync)(() => item(container, 'skill-b').click());
421
+ (0, chai_1.expect)(item(container, 'skill-b').querySelector('input').checked).to.equal(true);
422
+ await finishWrite(0, false);
423
+ await waitUntil(() => !isChecked(container, 'skill-b'));
424
+ (0, chai_1.expect)(item(container, 'skill-b').querySelector('input').checked).to.equal(false);
425
+ (0, chai_1.expect)(item(container, 'skill-a').querySelector('input').checked).to.equal(true);
426
+ }
427
+ finally {
428
+ dispose();
429
+ }
430
+ });
431
+ it('retains a successful first edit when the second write fails without rejecting', async () => {
432
+ const { container, finishWrite, updates, dispose } = render(undefined, available, true);
433
+ try {
434
+ openEditorAndExpand(container, 'Skills');
435
+ (0, react_dom_1.flushSync)(() => item(container, 'skill-a').click());
436
+ (0, react_dom_1.flushSync)(() => item(container, 'skill-b').click());
437
+ await finishWrite(0);
438
+ await new Promise(resolve => setTimeout(resolve, 0));
439
+ (0, chai_1.expect)(item(container, 'skill-b').querySelector('input').checked).to.equal(true);
440
+ await finishWrite(1, false);
441
+ await waitUntil(() => !isChecked(container, 'skill-b'));
442
+ (0, chai_1.expect)(item(container, 'skill-a').querySelector('input').checked).to.equal(true);
443
+ (0, chai_1.expect)(item(container, 'skill-b').querySelector('input').checked).to.equal(false);
444
+ (0, react_dom_1.flushSync)(() => item(container, 'skill-a').click());
445
+ await new Promise(resolve => setTimeout(resolve, 0));
446
+ (0, chai_1.expect)(updates[2]).to.deep.equal({ genericCapabilitySelections: undefined });
447
+ await finishWrite(2);
448
+ }
449
+ finally {
450
+ dispose();
451
+ }
452
+ });
453
+ it('adopts external changes and a reset equal to the original baseline', async () => {
454
+ const { container, reload, setStored, dispose } = render({ skills: ['skill-a'] }, available);
455
+ try {
456
+ openEditorAndExpand(container, 'Skills');
457
+ (0, react_dom_1.flushSync)(() => item(container, 'skill-b').click());
458
+ await new Promise(resolve => setTimeout(resolve, 0));
459
+ setStored({ skills: ['skill-b'] });
460
+ reload({ skills: ['skill-b'] });
461
+ await waitUntil(() => !isChecked(container, 'skill-a'));
462
+ (0, chai_1.expect)(item(container, 'skill-a').querySelector('input').checked).to.equal(false);
463
+ setStored({ skills: ['skill-a'] });
464
+ reload({ skills: ['skill-a'] });
465
+ await waitUntil(() => isChecked(container, 'skill-a') && !isChecked(container, 'skill-b'));
466
+ (0, chai_1.expect)(item(container, 'skill-a').querySelector('input').checked).to.equal(true);
467
+ (0, chai_1.expect)(item(container, 'skill-b').querySelector('input').checked).to.equal(false);
468
+ setStored(undefined);
469
+ reload(undefined);
470
+ await waitUntil(() => !isChecked(container, 'skill-a'));
471
+ (0, chai_1.expect)(item(container, 'skill-a').querySelector('input').checked).to.equal(false);
472
+ }
473
+ finally {
474
+ dispose();
475
+ }
476
+ });
477
+ it('rereads an external reset even when the saved prop is still undefined', async () => {
478
+ const { container, reload, setStored, dispose } = render(undefined, available);
479
+ try {
480
+ openEditorAndExpand(container, 'Skills');
481
+ (0, react_dom_1.flushSync)(() => item(container, 'skill-a').click());
482
+ await new Promise(resolve => setTimeout(resolve, 0));
483
+ setStored(undefined);
484
+ reload(undefined);
485
+ await waitUntil(() => !isChecked(container, 'skill-a'));
486
+ (0, chai_1.expect)(item(container, 'skill-a').querySelector('input').checked).to.equal(false);
487
+ }
488
+ finally {
489
+ dispose();
490
+ }
491
+ });
492
+ it('adopts an external baseline-equivalent reset after a pending write fails', async () => {
493
+ const { container, reload, setStored, finishWrite, dispose } = render(undefined, available, true);
494
+ try {
495
+ openEditorAndExpand(container, 'Skills');
496
+ (0, react_dom_1.flushSync)(() => item(container, 'skill-a').click());
497
+ await finishWrite(0);
498
+ await new Promise(resolve => setTimeout(resolve, 0));
499
+ (0, react_dom_1.flushSync)(() => item(container, 'skill-b').click());
500
+ setStored(undefined);
501
+ reload({});
502
+ await new Promise(resolve => setTimeout(resolve, 0));
503
+ (0, chai_1.expect)(item(container, 'skill-b').querySelector('input').checked).to.equal(true);
504
+ await finishWrite(1, false);
505
+ await waitUntil(() => !isChecked(container, 'skill-a') && !isChecked(container, 'skill-b'));
506
+ (0, chai_1.expect)(item(container, 'skill-a').querySelector('input').checked).to.equal(false);
507
+ (0, chai_1.expect)(item(container, 'skill-b').querySelector('input').checked).to.equal(false);
508
+ }
509
+ finally {
510
+ dispose();
511
+ }
512
+ });
513
+ it('discards a stale asynchronous read after a newer local edit', async () => {
514
+ const { container, updates, reload, deferRead, dispose } = render({ skills: ['skill-a'] }, available);
515
+ try {
516
+ openEditorAndExpand(container, 'Skills');
517
+ await new Promise(resolve => setTimeout(resolve, 0));
518
+ const staleRead = deferRead();
519
+ reload({ skills: ['skill-a'] });
520
+ (0, react_dom_1.flushSync)(() => item(container, 'skill-b').click());
521
+ await new Promise(resolve => setTimeout(resolve, 0));
522
+ staleRead.resolve({ skills: ['skill-a'] });
523
+ await new Promise(resolve => setTimeout(resolve, 0));
524
+ (0, chai_1.expect)(item(container, 'skill-b').querySelector('input').checked).to.equal(true);
525
+ (0, react_dom_1.flushSync)(() => item(container, 'skill-a').click());
526
+ await new Promise(resolve => setTimeout(resolve, 0));
527
+ (0, chai_1.expect)(updates[1]).to.deep.equal({ genericCapabilitySelections: { skills: ['skill-b'] } });
528
+ }
529
+ finally {
530
+ dispose();
531
+ }
532
+ });
533
+ it('discards a write-completion read if another edit starts before it resolves', async () => {
534
+ const { container, finishWrite, deferRead, dispose } = render(undefined, available, true);
535
+ try {
536
+ openEditorAndExpand(container, 'Skills');
537
+ (0, react_dom_1.flushSync)(() => item(container, 'skill-a').click());
538
+ const staleRead = deferRead();
539
+ await finishWrite(0);
540
+ await new Promise(resolve => setTimeout(resolve, 0));
541
+ (0, react_dom_1.flushSync)(() => item(container, 'skill-b').click());
542
+ staleRead.resolve({ skills: ['skill-a'] });
543
+ await new Promise(resolve => setTimeout(resolve, 0));
544
+ (0, chai_1.expect)(item(container, 'skill-b').querySelector('input').checked).to.equal(true);
545
+ await finishWrite(1);
546
+ await new Promise(resolve => setTimeout(resolve, 0));
547
+ (0, chai_1.expect)(item(container, 'skill-b').querySelector('input').checked).to.equal(true);
548
+ }
549
+ finally {
550
+ dispose();
551
+ }
552
+ });
553
+ it('discards an older read when a newer invalidation has already reconciled', async () => {
554
+ const { container, reload, setStored, deferRead, dispose } = render(undefined, available);
555
+ try {
556
+ openEditorAndExpand(container, 'Skills');
557
+ await new Promise(resolve => setTimeout(resolve, 0));
558
+ const staleRead = deferRead();
559
+ reload({ skills: ['skill-a'] });
560
+ setStored({ skills: ['skill-b'] });
561
+ reload({ skills: ['skill-b'] });
562
+ await new Promise(resolve => setTimeout(resolve, 0));
563
+ staleRead.resolve({ skills: ['skill-a'] });
564
+ await waitUntil(() => isChecked(container, 'skill-b'));
565
+ (0, chai_1.expect)(item(container, 'skill-a').querySelector('input').checked).to.equal(false);
566
+ (0, chai_1.expect)(item(container, 'skill-b').querySelector('input').checked).to.equal(true);
567
+ }
568
+ finally {
569
+ dispose();
570
+ }
571
+ });
572
+ it('preserves edits to different types made in the same tick', async () => {
573
+ const { container, updates, dispose } = render(undefined, available);
574
+ try {
575
+ openEditorAndExpand(container, 'Skills');
576
+ const functions = Array.from(container.querySelectorAll('.theia-GenericCapabilities-TreeNodeHeader'))
577
+ .find(candidate => candidate.textContent === 'Functions');
578
+ (0, react_dom_1.flushSync)(() => functions.click());
579
+ (0, react_dom_1.flushSync)(() => {
580
+ item(container, 'skill-a').click();
581
+ item(container, 'fn-a').click();
582
+ });
583
+ await new Promise(resolve => setTimeout(resolve, 0));
584
+ (0, chai_1.expect)(updates[1]).to.deep.equal({ genericCapabilitySelections: { skills: ['skill-a'], functions: ['fn-a'] } });
585
+ }
586
+ finally {
587
+ dispose();
588
+ }
589
+ });
590
+ it('drops the setting instead of storing empty lists when the last selection is removed', async () => {
591
+ const { container, updates, dispose } = render({ skills: ['skill-a'] }, available);
592
+ try {
593
+ openEditorAndExpand(container, 'Skills');
594
+ (0, react_dom_1.flushSync)(() => item(container, 'skill-a').click());
595
+ await new Promise(resolve => setTimeout(resolve, 0));
596
+ (0, chai_1.expect)(updates).to.deep.equal([{ genericCapabilitySelections: undefined }]);
597
+ }
598
+ finally {
599
+ dispose();
600
+ }
601
+ });
602
+ it('shows what the prompt already uses as checked and locked', () => {
603
+ const { container, updates, dispose } = render(undefined, available);
604
+ try {
605
+ openEditorAndExpand(container, 'Functions');
606
+ const used = item(container, 'fn-used');
607
+ const checkbox = used.querySelector('input[type=checkbox]');
608
+ (0, chai_1.expect)(checkbox.checked).to.equal(true);
609
+ (0, chai_1.expect)(checkbox.disabled).to.equal(true);
610
+ (0, react_dom_1.flushSync)(() => used.click());
611
+ (0, chai_1.expect)(updates).to.deep.equal([]);
612
+ }
613
+ finally {
614
+ dispose();
615
+ }
616
+ });
617
+ });
140
618
  //# sourceMappingURL=agent-capabilities-settings.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent-capabilities-settings.spec.js","sourceRoot":"","sources":["../../../../src/browser/ai-configuration/categories/agent-capabilities-settings.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-capabilities-settings.spec.js","sourceRoot":"","sources":["../../../../src/browser/ai-configuration/categories/agent-capabilities-settings.spec.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,9 @@
1
1
  import { Agent, AgentService, AISettingsService, AIVariableService, FrontendLanguageModelRegistry, ParsedCapability, PromptService, NotificationType, GenericCapabilitySelections, ServerToolDescriptor, ToolInvocationRegistry } from '@theia/ai-core/lib/common';
2
+ import { AvailableGenericCapabilities, GenericCapabilitiesService } from '@theia/ai-chat-ui/lib/browser/generic-capabilities-service';
3
+ import { ChatCapabilitiesService } from '@theia/ai-chat-ui/lib/browser/chat-capabilities-service';
2
4
  import { CommandService } from '@theia/core/lib/common/command';
3
5
  import { ILogger } from '@theia/core';
6
+ import { HoverService } from '@theia/core/lib/browser';
4
7
  import { AiSettingsRowService } from '@theia/ai-core-ui/lib/browser/ai-configuration/components/ai-settings-row-service';
5
8
  /** The services the agent detail page needs; injected into the owning category and passed down. */
6
9
  export interface AgentDetailServices {
@@ -13,6 +16,9 @@ export interface AgentDetailServices {
13
16
  readonly commandService: CommandService;
14
17
  readonly settingsRowService: AiSettingsRowService;
15
18
  readonly logger: ILogger;
19
+ readonly genericCapabilitiesService: GenericCapabilitiesService;
20
+ readonly chatCapabilitiesService: ChatCapabilitiesService;
21
+ readonly hoverService: HoverService;
16
22
  }
17
23
  export interface ParsedPrompt {
18
24
  functions: string[];
@@ -26,6 +32,10 @@ export interface AgentDetailState {
26
32
  completionNotification?: NotificationType;
27
33
  capabilityOverrides?: Record<string, boolean>;
28
34
  genericCapabilitySelections?: GenericCapabilitySelections;
35
+ /** What the generic capabilities editor offers; only loaded for chat agents, the only ones that apply selections. */
36
+ availableGenericCapabilities?: AvailableGenericCapabilities;
37
+ /** Functions and variables the agent's prompt already references, shown checked and locked in the editor. */
38
+ usedGenericCapabilities?: GenericCapabilitySelections;
29
39
  /** Server tools the agent's model offers, if it declares any; empty/absent hides that section. */
30
40
  serverTools?: ServerToolDescriptor[];
31
41
  /** Vendor the server tool selections are keyed by, i.e. the vendor of the model offering them. */
@@ -1 +1 @@
1
- {"version":3,"file":"agent-detail-model.d.ts","sourceRoot":"","sources":["../../../../src/browser/ai-configuration/categories/agent-detail-model.ts"],"names":[],"mappings":"AAgBA,OAAO,EACH,KAAK,EACL,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,EACjB,6BAA6B,EAG7B,gBAAgB,EAEhB,aAAa,EACb,gBAAgB,EAChB,2BAA2B,EAC3B,oBAAoB,EACpB,sBAAsB,EACzB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,oBAAoB,EAAE,MAAM,mFAAmF,CAAC;AAEzH,mGAAmG;AACnG,MAAM,WAAW,mBAAmB;IAChC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAC9C,QAAQ,CAAC,eAAe,EAAE,iBAAiB,CAAC;IAC5C,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IACtC,QAAQ,CAAC,qBAAqB,EAAE,6BAA6B,CAAC;IAC9D,QAAQ,CAAC,sBAAsB,EAAE,sBAAsB,CAAC;IACxD,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IACxC,QAAQ,CAAC,kBAAkB,EAAE,oBAAoB,CAAC;IAClD,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,YAAY;IACzB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,sBAAsB,EAAE,MAAM,EAAE,CAAC;IACjC,YAAY,EAAE,gBAAgB,EAAE,CAAC;CACpC;AAED,MAAM,WAAW,gBAAgB;IAC7B,MAAM,EAAE,YAAY,CAAC;IACrB,UAAU,EAAE,OAAO,CAAC;IACpB,sBAAsB,CAAC,EAAE,gBAAgB,CAAC;IAC1C,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9C,2BAA2B,CAAC,EAAE,2BAA2B,CAAC;IAC1D,kGAAkG;IAClG,WAAW,CAAC,EAAE,oBAAoB,EAAE,CAAC;IACrC,kGAAkG;IAClG,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,oEAAoE;IACpE,oBAAoB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CACnD;AAED,wBAAsB,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,mBAAmB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAc5G"}
1
+ {"version":3,"file":"agent-detail-model.d.ts","sourceRoot":"","sources":["../../../../src/browser/ai-configuration/categories/agent-detail-model.ts"],"names":[],"mappings":"AAgBA,OAAO,EACH,KAAK,EACL,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,EACjB,6BAA6B,EAG7B,gBAAgB,EAEhB,aAAa,EACb,gBAAgB,EAChB,2BAA2B,EAC3B,oBAAoB,EACpB,sBAAsB,EACzB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,4BAA4B,EAAE,0BAA0B,EAAE,MAAM,4DAA4D,CAAC;AACtI,OAAO,EAAE,uBAAuB,EAAE,MAAM,yDAAyD,CAAC;AAClG,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mFAAmF,CAAC;AAEzH,mGAAmG;AACnG,MAAM,WAAW,mBAAmB;IAChC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAC9C,QAAQ,CAAC,eAAe,EAAE,iBAAiB,CAAC;IAC5C,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IACtC,QAAQ,CAAC,qBAAqB,EAAE,6BAA6B,CAAC;IAC9D,QAAQ,CAAC,sBAAsB,EAAE,sBAAsB,CAAC;IACxD,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IACxC,QAAQ,CAAC,kBAAkB,EAAE,oBAAoB,CAAC;IAClD,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,0BAA0B,EAAE,0BAA0B,CAAC;IAChE,QAAQ,CAAC,uBAAuB,EAAE,uBAAuB,CAAC;IAC1D,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;CACvC;AAED,MAAM,WAAW,YAAY;IACzB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,sBAAsB,EAAE,MAAM,EAAE,CAAC;IACjC,YAAY,EAAE,gBAAgB,EAAE,CAAC;CACpC;AAED,MAAM,WAAW,gBAAgB;IAC7B,MAAM,EAAE,YAAY,CAAC;IACrB,UAAU,EAAE,OAAO,CAAC;IACpB,sBAAsB,CAAC,EAAE,gBAAgB,CAAC;IAC1C,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9C,2BAA2B,CAAC,EAAE,2BAA2B,CAAC;IAC1D,qHAAqH;IACrH,4BAA4B,CAAC,EAAE,4BAA4B,CAAC;IAC5D,6GAA6G;IAC7G,uBAAuB,CAAC,EAAE,2BAA2B,CAAC;IACtD,kGAAkG;IAClG,WAAW,CAAC,EAAE,oBAAoB,EAAE,CAAC;IACrC,kGAAkG;IAClG,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,oEAAoE;IACpE,oBAAoB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CACnD;AAED,wBAAsB,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,mBAAmB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAqB5G"}
@@ -17,16 +17,24 @@
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
18
  exports.loadAgentDetail = loadAgentDetail;
19
19
  const common_1 = require("@theia/ai-core/lib/common");
20
+ const common_2 = require("@theia/ai-chat/lib/common");
20
21
  async function loadAgentDetail(agent, services) {
21
22
  const parsed = await parsePromptFragments(agent, services);
22
23
  const agentSettings = await services.aiSettingsService.getAgentSettings(agent.id);
23
24
  const serverToolModel = await resolveServerToolModel(agent, services);
25
+ const [availableGenericCapabilities, usedGenericCapabilities] = (0, common_2.isChatAgent)(agent) ? await Promise.all([
26
+ services.genericCapabilitiesService.getAvailableCapabilities(agent.id),
27
+ services.chatCapabilitiesService.getUsedGenericCapabilitiesForAgent(agent.id)
28
+ ]) : [undefined, undefined];
24
29
  return {
25
30
  parsed,
26
31
  showInChat: agentSettings?.showInChat ?? true,
27
32
  completionNotification: agentSettings?.completionNotification,
28
33
  capabilityOverrides: agentSettings?.capabilityOverrides,
29
34
  genericCapabilitySelections: agentSettings?.genericCapabilitySelections,
35
+ // Same items the chat input's capabilities popup offers; the agent itself is not offered for delegation.
36
+ availableGenericCapabilities,
37
+ usedGenericCapabilities,
30
38
  serverTools: serverToolModel?.serverTools,
31
39
  serverToolVendor: serverToolModel?.vendor,
32
40
  serverToolSelections: agentSettings?.serverToolSelections ? { ...agentSettings.serverToolSelections } : undefined