@theia/ai-core-ui 1.75.0-next.8 → 1.75.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 (113) hide show
  1. package/lib/browser/ai-configuration/ai-configuration-category-registry.d.ts +29 -0
  2. package/lib/browser/ai-configuration/ai-configuration-category-registry.d.ts.map +1 -0
  3. package/lib/browser/ai-configuration/ai-configuration-category-registry.js +83 -0
  4. package/lib/browser/ai-configuration/ai-configuration-category-registry.js.map +1 -0
  5. package/lib/browser/ai-configuration/ai-configuration-category-registry.spec.d.ts +2 -0
  6. package/lib/browser/ai-configuration/ai-configuration-category-registry.spec.d.ts.map +1 -0
  7. package/lib/browser/ai-configuration/ai-configuration-category-registry.spec.js +122 -0
  8. package/lib/browser/ai-configuration/ai-configuration-category-registry.spec.js.map +1 -0
  9. package/lib/browser/ai-configuration/ai-configuration-category.d.ts +204 -0
  10. package/lib/browser/ai-configuration/ai-configuration-category.d.ts.map +1 -0
  11. package/lib/browser/ai-configuration/ai-configuration-category.js +86 -0
  12. package/lib/browser/ai-configuration/ai-configuration-category.js.map +1 -0
  13. package/lib/browser/ai-configuration/ai-configuration-selection-model.d.ts +15 -0
  14. package/lib/browser/ai-configuration/ai-configuration-selection-model.d.ts.map +1 -0
  15. package/lib/browser/ai-configuration/ai-configuration-selection-model.js +44 -0
  16. package/lib/browser/ai-configuration/ai-configuration-selection-model.js.map +1 -0
  17. package/lib/browser/ai-configuration/ai-configuration-setting-commands.d.ts +48 -0
  18. package/lib/browser/ai-configuration/ai-configuration-setting-commands.d.ts.map +1 -0
  19. package/lib/browser/ai-configuration/ai-configuration-setting-commands.js +98 -0
  20. package/lib/browser/ai-configuration/ai-configuration-setting-commands.js.map +1 -0
  21. package/lib/browser/ai-configuration/ai-configuration-setting-commands.spec.d.ts +2 -0
  22. package/lib/browser/ai-configuration/ai-configuration-setting-commands.spec.d.ts.map +1 -0
  23. package/lib/browser/ai-configuration/ai-configuration-setting-commands.spec.js +70 -0
  24. package/lib/browser/ai-configuration/ai-configuration-setting-commands.spec.js.map +1 -0
  25. package/lib/browser/ai-configuration/components/ai-configuration-components.spec.d.ts +2 -0
  26. package/lib/browser/ai-configuration/components/ai-configuration-components.spec.d.ts.map +1 -0
  27. package/lib/browser/ai-configuration/components/ai-configuration-components.spec.js +596 -0
  28. package/lib/browser/ai-configuration/components/ai-configuration-components.spec.js.map +1 -0
  29. package/lib/browser/ai-configuration/components/ai-configuration-controls.d.ts +118 -0
  30. package/lib/browser/ai-configuration/components/ai-configuration-controls.d.ts.map +1 -0
  31. package/lib/browser/ai-configuration/components/ai-configuration-controls.js +191 -0
  32. package/lib/browser/ai-configuration/components/ai-configuration-controls.js.map +1 -0
  33. package/lib/browser/ai-configuration/components/ai-configuration-item-row.d.ts +57 -0
  34. package/lib/browser/ai-configuration/components/ai-configuration-item-row.d.ts.map +1 -0
  35. package/lib/browser/ai-configuration/components/ai-configuration-item-row.js +48 -0
  36. package/lib/browser/ai-configuration/components/ai-configuration-item-row.js.map +1 -0
  37. package/lib/browser/ai-configuration/components/ai-configuration-origin-badge.d.ts +49 -0
  38. package/lib/browser/ai-configuration/components/ai-configuration-origin-badge.d.ts.map +1 -0
  39. package/lib/browser/ai-configuration/components/ai-configuration-origin-badge.js +79 -0
  40. package/lib/browser/ai-configuration/components/ai-configuration-origin-badge.js.map +1 -0
  41. package/lib/browser/ai-configuration/components/ai-configuration-primitives.d.ts +161 -0
  42. package/lib/browser/ai-configuration/components/ai-configuration-primitives.d.ts.map +1 -0
  43. package/lib/browser/ai-configuration/components/ai-configuration-primitives.js +131 -0
  44. package/lib/browser/ai-configuration/components/ai-configuration-primitives.js.map +1 -0
  45. package/lib/browser/ai-configuration/components/ai-configuration-setting-row.d.ts +54 -0
  46. package/lib/browser/ai-configuration/components/ai-configuration-setting-row.d.ts.map +1 -0
  47. package/lib/browser/ai-configuration/components/ai-configuration-setting-row.js +77 -0
  48. package/lib/browser/ai-configuration/components/ai-configuration-setting-row.js.map +1 -0
  49. package/lib/browser/ai-configuration/components/ai-settings-row-service.d.ts +194 -0
  50. package/lib/browser/ai-configuration/components/ai-settings-row-service.d.ts.map +1 -0
  51. package/lib/browser/ai-configuration/components/ai-settings-row-service.js +352 -0
  52. package/lib/browser/ai-configuration/components/ai-settings-row-service.js.map +1 -0
  53. package/lib/browser/ai-configuration/components/ai-settings-row-service.spec.d.ts +2 -0
  54. package/lib/browser/ai-configuration/components/ai-settings-row-service.spec.d.ts.map +1 -0
  55. package/lib/browser/ai-configuration/components/ai-settings-row-service.spec.js +233 -0
  56. package/lib/browser/ai-configuration/components/ai-settings-row-service.spec.js.map +1 -0
  57. package/lib/browser/ai-configuration/components/ai-settings-row.d.ts +50 -0
  58. package/lib/browser/ai-configuration/components/ai-settings-row.d.ts.map +1 -0
  59. package/lib/browser/ai-configuration/components/ai-settings-row.js +85 -0
  60. package/lib/browser/ai-configuration/components/ai-settings-row.js.map +1 -0
  61. package/lib/browser/ai-configuration/components/collapsible-list.d.ts +65 -0
  62. package/lib/browser/ai-configuration/components/collapsible-list.d.ts.map +1 -0
  63. package/lib/browser/ai-configuration/components/collapsible-list.js +82 -0
  64. package/lib/browser/ai-configuration/components/collapsible-list.js.map +1 -0
  65. package/lib/browser/ai-configuration/components/prompt-customization-dialogs.d.ts +35 -0
  66. package/lib/browser/ai-configuration/components/prompt-customization-dialogs.d.ts.map +1 -0
  67. package/lib/browser/ai-configuration/components/prompt-customization-dialogs.js +83 -0
  68. package/lib/browser/ai-configuration/components/prompt-customization-dialogs.js.map +1 -0
  69. package/lib/browser/ai-configuration/components/variant-set-card.d.ts +25 -0
  70. package/lib/browser/ai-configuration/components/variant-set-card.d.ts.map +1 -0
  71. package/lib/browser/ai-configuration/components/variant-set-card.js +133 -0
  72. package/lib/browser/ai-configuration/components/variant-set-card.js.map +1 -0
  73. package/lib/browser/ai-configuration/renderers/collection-category-renderer.d.ts +44 -0
  74. package/lib/browser/ai-configuration/renderers/collection-category-renderer.d.ts.map +1 -0
  75. package/lib/browser/ai-configuration/renderers/collection-category-renderer.js +106 -0
  76. package/lib/browser/ai-configuration/renderers/collection-category-renderer.js.map +1 -0
  77. package/lib/browser/ai-configuration/renderers/collection-category-renderer.spec.d.ts +2 -0
  78. package/lib/browser/ai-configuration/renderers/collection-category-renderer.spec.d.ts.map +1 -0
  79. package/lib/browser/ai-configuration/renderers/collection-category-renderer.spec.js +120 -0
  80. package/lib/browser/ai-configuration/renderers/collection-category-renderer.spec.js.map +1 -0
  81. package/lib/browser/ai-configuration/renderers/single-page-category-renderer.d.ts +15 -0
  82. package/lib/browser/ai-configuration/renderers/single-page-category-renderer.d.ts.map +1 -0
  83. package/lib/browser/ai-configuration/renderers/single-page-category-renderer.js +20 -0
  84. package/lib/browser/ai-configuration/renderers/single-page-category-renderer.js.map +1 -0
  85. package/lib/browser/ai-core-ui-frontend-module.d.ts +1 -0
  86. package/lib/browser/ai-core-ui-frontend-module.d.ts.map +1 -1
  87. package/lib/browser/ai-core-ui-frontend-module.js +11 -0
  88. package/lib/browser/ai-core-ui-frontend-module.js.map +1 -1
  89. package/package.json +6 -5
  90. package/src/browser/ai-configuration/ai-configuration-category-registry.spec.ts +137 -0
  91. package/src/browser/ai-configuration/ai-configuration-category-registry.ts +79 -0
  92. package/src/browser/ai-configuration/ai-configuration-category.ts +246 -0
  93. package/src/browser/ai-configuration/ai-configuration-selection-model.ts +42 -0
  94. package/src/browser/ai-configuration/ai-configuration-setting-commands.spec.ts +82 -0
  95. package/src/browser/ai-configuration/ai-configuration-setting-commands.ts +104 -0
  96. package/src/browser/ai-configuration/components/ai-configuration-components.spec.ts +655 -0
  97. package/src/browser/ai-configuration/components/ai-configuration-controls.tsx +382 -0
  98. package/src/browser/ai-configuration/components/ai-configuration-item-row.tsx +127 -0
  99. package/src/browser/ai-configuration/components/ai-configuration-origin-badge.tsx +114 -0
  100. package/src/browser/ai-configuration/components/ai-configuration-primitives.tsx +359 -0
  101. package/src/browser/ai-configuration/components/ai-configuration-setting-row.tsx +154 -0
  102. package/src/browser/ai-configuration/components/ai-settings-row-service.spec.ts +275 -0
  103. package/src/browser/ai-configuration/components/ai-settings-row-service.ts +401 -0
  104. package/src/browser/ai-configuration/components/ai-settings-row.tsx +176 -0
  105. package/src/browser/ai-configuration/components/collapsible-list.tsx +205 -0
  106. package/src/browser/ai-configuration/components/prompt-customization-dialogs.ts +89 -0
  107. package/src/browser/ai-configuration/components/variant-set-card.tsx +200 -0
  108. package/src/browser/ai-configuration/renderers/collection-category-renderer.spec.ts +126 -0
  109. package/src/browser/ai-configuration/renderers/collection-category-renderer.tsx +164 -0
  110. package/src/browser/ai-configuration/renderers/single-page-category-renderer.tsx +41 -0
  111. package/src/browser/ai-core-ui-frontend-module.ts +14 -1
  112. package/src/browser/style/ai-configuration-components.css +1410 -0
  113. package/src/browser/style/index.css +17 -0
@@ -0,0 +1,233 @@
1
+ "use strict";
2
+ // *****************************************************************************
3
+ // Copyright (C) 2026 EclipseSource and others.
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 common_1 = require("@theia/core/lib/common");
21
+ const preference_types_1 = require("@theia/preferences/lib/browser/util/preference-types");
22
+ const chai_1 = require("chai");
23
+ const ai_settings_row_service_1 = require("./ai-settings-row-service");
24
+ disableJSDOM();
25
+ class FakeAiConfigurationService {
26
+ constructor() {
27
+ this.inspection = {};
28
+ this.sets = [];
29
+ }
30
+ inspect() {
31
+ return {
32
+ preferenceName: 'test',
33
+ defaultValue: undefined,
34
+ globalValue: undefined,
35
+ workspaceValue: undefined,
36
+ workspaceFolderValue: undefined,
37
+ value: undefined,
38
+ ...this.inspection
39
+ };
40
+ }
41
+ set(preferenceId, value, scope, resourceUri) {
42
+ this.sets.push({ preferenceId, value, scope, resourceUri });
43
+ return Promise.resolve();
44
+ }
45
+ }
46
+ function createService(inspection) {
47
+ const preferences = new FakeAiConfigurationService();
48
+ preferences.inspection = inspection;
49
+ const service = new ai_settings_row_service_1.AiSettingsRowService();
50
+ service.aiConfigurationService = preferences;
51
+ return { service, preferences };
52
+ }
53
+ function createServiceWithSchema(property) {
54
+ const service = new ai_settings_row_service_1.AiSettingsRowService();
55
+ const schemaService = {
56
+ getSchemaProperty: () => property
57
+ };
58
+ service.schemaService = schemaService;
59
+ return service;
60
+ }
61
+ describe('AiSettingsRowService', () => {
62
+ before(() => disableJSDOM = (0, jsdom_1.enableJSDOM)());
63
+ after(() => disableJSDOM());
64
+ describe('inspect', () => {
65
+ it('resolves the user-scope value falling back to the default', () => {
66
+ const { service } = createService({ defaultValue: 'd', globalValue: undefined });
67
+ const result = service.inspect('pref', 'user');
68
+ (0, chai_1.expect)(result.value).to.equal('d');
69
+ (0, chai_1.expect)(result.scopeValue).to.equal(undefined);
70
+ (0, chai_1.expect)(result.modified).to.equal(false);
71
+ });
72
+ it('reports a user-scope override as modified', () => {
73
+ const { service } = createService({ defaultValue: 'd', globalValue: 'u' });
74
+ const result = service.inspect('pref', 'user');
75
+ (0, chai_1.expect)(result.value).to.equal('u');
76
+ (0, chai_1.expect)(result.scopeValue).to.equal('u');
77
+ (0, chai_1.expect)(result.modified).to.equal(true);
78
+ });
79
+ it('resolves the workspace value falling back through user then default', () => {
80
+ const { service } = createService({ defaultValue: 'd', globalValue: 'u' });
81
+ const workspace = service.inspect('pref', 'workspace');
82
+ (0, chai_1.expect)(workspace.value).to.equal('u');
83
+ (0, chai_1.expect)(workspace.scopeValue).to.equal(undefined);
84
+ (0, chai_1.expect)(workspace.modified).to.equal(false);
85
+ const { service: service2 } = createService({ defaultValue: 'd', globalValue: 'u', workspaceValue: 'w' });
86
+ const workspace2 = service2.inspect('pref', 'workspace');
87
+ (0, chai_1.expect)(workspace2.value).to.equal('w');
88
+ (0, chai_1.expect)(workspace2.modified).to.equal(true);
89
+ });
90
+ it('resolves the folder value falling back through workspace, user then default', () => {
91
+ const { service } = createService({ defaultValue: 'd', globalValue: 'u', workspaceValue: 'w' });
92
+ const folder = service.inspect('pref', 'folder');
93
+ (0, chai_1.expect)(folder.value).to.equal('w');
94
+ (0, chai_1.expect)(folder.modified).to.equal(false);
95
+ const { service: service2 } = createService({ defaultValue: 'd', workspaceFolderValue: 'f' });
96
+ const folder2 = service2.inspect('pref', 'folder');
97
+ (0, chai_1.expect)(folder2.value).to.equal('f');
98
+ (0, chai_1.expect)(folder2.modified).to.equal(true);
99
+ });
100
+ it('treats a value of `false` as an explicit override (not inherited)', () => {
101
+ const { service } = createService({ defaultValue: true, globalValue: false });
102
+ const result = service.inspect('pref', 'user');
103
+ (0, chai_1.expect)(result.value).to.equal(false);
104
+ (0, chai_1.expect)(result.modified).to.equal(true);
105
+ });
106
+ });
107
+ describe('controlFor', () => {
108
+ it('maps primitive schema types to their inline controls', () => {
109
+ (0, chai_1.expect)(createServiceWithSchema({ type: 'boolean' }).controlFor('pref').type).to.equal('boolean');
110
+ (0, chai_1.expect)(createServiceWithSchema({ type: 'number' }).controlFor('pref').type).to.equal('number');
111
+ (0, chai_1.expect)(createServiceWithSchema({ type: 'integer' }).controlFor('pref').type).to.equal('number');
112
+ (0, chai_1.expect)(createServiceWithSchema({ type: 'string' }).controlFor('pref').type).to.equal('string');
113
+ (0, chai_1.expect)(createServiceWithSchema(undefined).controlFor('pref').type).to.equal('string');
114
+ });
115
+ it('marks only an integer schema as whole-number, so a number keeps what the user typed', () => {
116
+ // Both render the stepper; only the integer one may round on commit.
117
+ (0, chai_1.expect)(createServiceWithSchema({ type: 'integer' }).controlFor('pref')).to.deep.include({ type: 'number', integer: true });
118
+ (0, chai_1.expect)(createServiceWithSchema({ type: 'number' }).controlFor('pref')).to.not.have.property('integer');
119
+ });
120
+ it('maps an enum to a select regardless of its base type', () => {
121
+ (0, chai_1.expect)(createServiceWithSchema({ type: 'string', enum: ['a', 'b'] }).controlFor('pref').type).to.equal('select');
122
+ });
123
+ it('masks secret string preferences (API keys/tokens) with a password input', () => {
124
+ const control = createServiceWithSchema({ type: 'string' }).controlFor('ai-features.anthropic.apiKey');
125
+ (0, chai_1.expect)(control).to.deep.include({ type: 'string', password: true });
126
+ (0, chai_1.expect)(createServiceWithSchema({ type: 'string' }).controlFor('ai-features.anthropic.model'))
127
+ .to.deep.include({ type: 'string', password: false });
128
+ });
129
+ it('renders the inline list editor for string arrays', () => {
130
+ (0, chai_1.expect)(createServiceWithSchema({ type: 'array', items: { type: 'string' } }).controlFor('pref').type).to.equal('array');
131
+ });
132
+ it('defers object and non-string-array preferences to the Settings UI via a json control', () => {
133
+ (0, chai_1.expect)(createServiceWithSchema({ type: 'object' }).controlFor('pref').type).to.equal('json');
134
+ (0, chai_1.expect)(createServiceWithSchema({ type: 'array', items: { type: 'object' } }).controlFor('pref').type).to.equal('json');
135
+ (0, chai_1.expect)(createServiceWithSchema({ type: 'array', items: { type: 'number' } }).controlFor('pref').type).to.equal('json');
136
+ });
137
+ });
138
+ describe('enumOptions', () => {
139
+ it('uses the value as the label and enumDescriptions as the option description (never the description as the label)', () => {
140
+ const options = createServiceWithSchema({
141
+ type: 'string',
142
+ enum: ['default', 'enabled'],
143
+ enumDescriptions: ['Use the default', 'Force enabled']
144
+ }).enumOptions('pref');
145
+ (0, chai_1.expect)(options).to.deep.equal([
146
+ { value: 'default', label: 'default', description: 'Use the default' },
147
+ { value: 'enabled', label: 'enabled', description: 'Force enabled' }
148
+ ]);
149
+ });
150
+ it('prefers an explicit enumItemLabels entry for the label', () => {
151
+ const options = createServiceWithSchema({
152
+ type: 'string',
153
+ enum: ['a'],
154
+ enumItemLabels: ['Option A'],
155
+ enumDescriptions: ['desc']
156
+ }).enumOptions('pref');
157
+ (0, chai_1.expect)(options[0]).to.deep.equal({ value: 'a', label: 'Option A', description: 'desc' });
158
+ });
159
+ it('returns an empty list when the property declares no enum', () => {
160
+ (0, chai_1.expect)(createServiceWithSchema({ type: 'string' }).enumOptions('pref')).to.deep.equal([]);
161
+ });
162
+ });
163
+ describe('modelProviderLabel', () => {
164
+ it('returns the provider label declared under the aiModelProvider typeDetails', () => {
165
+ const service = createServiceWithSchema({ type: 'string', typeDetails: { aiModelProvider: { label: 'Anthropic' } } });
166
+ (0, chai_1.expect)(service.modelProviderLabel('pref')).to.equal('Anthropic');
167
+ });
168
+ it('returns undefined when no provider label is declared', () => {
169
+ (0, chai_1.expect)(createServiceWithSchema({ type: 'string' }).modelProviderLabel('pref')).to.equal(undefined);
170
+ (0, chai_1.expect)(createServiceWithSchema({ type: 'string', typeDetails: { other: 'x' } }).modelProviderLabel('pref')).to.equal(undefined);
171
+ // The metadata must be an object carrying a string `label`.
172
+ (0, chai_1.expect)(createServiceWithSchema({ type: 'string', typeDetails: { aiModelProvider: 'Anthropic' } }).modelProviderLabel('pref')).to.equal(undefined);
173
+ (0, chai_1.expect)(createServiceWithSchema({ type: 'string', typeDetails: { aiModelProvider: { label: 42 } } }).modelProviderLabel('pref')).to.equal(undefined);
174
+ (0, chai_1.expect)(createServiceWithSchema(undefined).modelProviderLabel('pref')).to.equal(undefined);
175
+ });
176
+ });
177
+ describe('editInSettings', () => {
178
+ it('opens settings.json focused on the preference via the preferences JSON command', () => {
179
+ const executed = [];
180
+ const service = new ai_settings_row_service_1.AiSettingsRowService();
181
+ service.commandService = {
182
+ executeCommand: (command, ...args) => {
183
+ executed.push({ command, args });
184
+ return Promise.resolve(undefined);
185
+ }
186
+ };
187
+ service.editInSettings('my.pref');
188
+ (0, chai_1.expect)(executed).to.deep.equal([{ command: preference_types_1.PreferencesCommands.OPEN_PREFERENCES_JSON_TOOLBAR.id, args: ['my.pref'] }]);
189
+ });
190
+ });
191
+ describe('normalizeMarkdown', () => {
192
+ const normalize = (markdown) => new ai_settings_row_service_1.AiSettingsRowService().normalizeMarkdown(markdown);
193
+ it('strips the shared indentation of continuation lines so lists render as lists', () => {
194
+ const raw = [
195
+ 'Allows custom settings.',
196
+ ' Each setting consists of:',
197
+ ' - `scope`: when it applies',
198
+ ' - `modelId` (optional)',
199
+ ' - `requestSettings`: values'
200
+ ].join('\n');
201
+ const expected = [
202
+ 'Allows custom settings.',
203
+ 'Each setting consists of:',
204
+ '- `scope`: when it applies',
205
+ ' - `modelId` (optional)',
206
+ '- `requestSettings`: values'
207
+ ].join('\n');
208
+ (0, chai_1.expect)(normalize(raw)).to.equal(expected);
209
+ });
210
+ it('leaves single-line and already-flush descriptions untouched', () => {
211
+ (0, chai_1.expect)(normalize('A short description.')).to.equal('A short description.');
212
+ (0, chai_1.expect)(normalize('First line.\nSecond line.')).to.equal('First line.\nSecond line.');
213
+ });
214
+ it('ignores blank lines when computing the shared indentation', () => {
215
+ (0, chai_1.expect)(normalize('Intro.\n\n - item')).to.equal('Intro.\n\n- item');
216
+ });
217
+ });
218
+ describe('set / reset', () => {
219
+ it('writes to the mapped preference scope', () => {
220
+ const { service, preferences } = createService({});
221
+ return service.set('pref', 42, 'workspace').then(() => {
222
+ (0, chai_1.expect)(preferences.sets).to.deep.equal([{ preferenceId: 'pref', value: 42, scope: common_1.PreferenceScope.Workspace, resourceUri: undefined }]);
223
+ });
224
+ });
225
+ it('resets by writing `undefined` to the mapped scope', () => {
226
+ const { service, preferences } = createService({});
227
+ return service.reset('pref', 'user', 'file:///ws').then(() => {
228
+ (0, chai_1.expect)(preferences.sets).to.deep.equal([{ preferenceId: 'pref', value: undefined, scope: common_1.PreferenceScope.User, resourceUri: 'file:///ws' }]);
229
+ });
230
+ });
231
+ });
232
+ });
233
+ //# sourceMappingURL=ai-settings-row-service.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-settings-row-service.spec.js","sourceRoot":"","sources":["../../../../src/browser/ai-configuration/components/ai-settings-row-service.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ import * as React from '@theia/core/shared/react';
2
+ import { AiConfigurationScope } from '../ai-configuration-category';
3
+ import { AiSettingsControl, AiSettingsRowService } from './ai-settings-row-service';
4
+ export interface AiSettingsRowProps {
5
+ /** Service wrapping preference read/write and markdown rendering (injected by the owning widget). */
6
+ readonly service: AiSettingsRowService;
7
+ /** Preference id read and written by this row. */
8
+ readonly preferenceId: string;
9
+ /** Row label. Falls back to the preference id when omitted. */
10
+ readonly label?: string;
11
+ /** Optional markdown description rendered under the label. */
12
+ readonly description?: string;
13
+ /** Scope the row reads from and writes to (from the render context). */
14
+ readonly scope: AiConfigurationScope;
15
+ /** The control to render for the value. */
16
+ readonly control: AiSettingsControl;
17
+ /** Renders the control read-only, e.g. while the setting's feature gate is turned off. */
18
+ readonly disabled?: boolean;
19
+ /** Resource URI for `folder`-scoped preferences. */
20
+ readonly resourceUri?: string;
21
+ /** Called after a value is written or reset, so the owner can re-render. */
22
+ readonly onDidChange?: () => void;
23
+ /** Stable id used by the shell to scroll-to and flash this row after deep-search navigation. */
24
+ readonly rowId?: string;
25
+ /** Extra action(s) shown top-right (e.g. a "Reset All" button); forwarded to the presentational row. */
26
+ readonly actions?: React.ReactNode;
27
+ }
28
+ /**
29
+ * Service-driven per-setting row: reads/writes a preference id via the injected
30
+ * {@link AiSettingsRowService} and renders through the shared {@link AiConfigurationSettingRow}, so
31
+ * it looks identical to the hand-authored rows on the General and Models pages. The control is chosen
32
+ * from {@link AiSettingsRowProps.control}; compact controls render inline, wide ones (chips, text)
33
+ * render full-width below.
34
+ */
35
+ export declare const AiSettingsRow: React.FC<AiSettingsRowProps>;
36
+ /**
37
+ * Renders the shared control for a schema-derived {@link AiSettingsControl}, so generically-discovered
38
+ * preferences get the same controls as the hand-authored pages. Boolean→toggle, number→stepper,
39
+ * enum→select, array→chip editor, object/array-of-objects→"Edit in settings.json", everything else→text.
40
+ */
41
+ export declare const AiSettingsRowControl: React.FC<{
42
+ control: AiSettingsControl;
43
+ value: unknown;
44
+ label: string;
45
+ disabled?: boolean;
46
+ onCommit: (value: unknown) => void;
47
+ /** Invoked by the `json` control to open `settings.json` focused on the preference. */
48
+ onEditInSettings: () => void;
49
+ }>;
50
+ //# sourceMappingURL=ai-settings-row.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-settings-row.d.ts","sourceRoot":"","sources":["../../../../src/browser/ai-configuration/components/ai-settings-row.tsx"],"names":[],"mappings":"AAiBA,OAAO,KAAK,KAAK,MAAM,0BAA0B,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAIpF,MAAM,WAAW,kBAAkB;IAC/B,qGAAqG;IACrG,QAAQ,CAAC,OAAO,EAAE,oBAAoB,CAAC;IACvC,kDAAkD;IAClD,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,+DAA+D;IAC/D,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,8DAA8D;IAC9D,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,wEAAwE;IACxE,QAAQ,CAAC,KAAK,EAAE,oBAAoB,CAAC;IACrC,2CAA2C;IAC3C,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;IACpC,0FAA0F;IAC1F,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,oDAAoD;IACpD,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,4EAA4E;IAC5E,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IAClC,gGAAgG;IAChG,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,wGAAwG;IACxG,QAAQ,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACtC;AASD;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CA6CtD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CAAC;IACxC,OAAO,EAAE,iBAAiB,CAAC;IAC3B,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACnC,uFAAuF;IACvF,gBAAgB,EAAE,MAAM,IAAI,CAAC;CAChC,CAqDA,CAAC"}
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AiSettingsRowControl = exports.AiSettingsRow = void 0;
4
+ const jsx_runtime_1 = require("@theia/core/shared/react/jsx-runtime");
5
+ // *****************************************************************************
6
+ // Copyright (C) 2026 EclipseSource and others.
7
+ //
8
+ // This program and the accompanying materials are made available under the
9
+ // terms of the Eclipse Public License v. 2.0 which is available at
10
+ // http://www.eclipse.org/legal/epl-2.0.
11
+ //
12
+ // This Source Code may also be made available under the following Secondary
13
+ // Licenses when the conditions for such availability set forth in the Eclipse
14
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
15
+ // with the GNU Classpath Exception which is available at
16
+ // https://www.gnu.org/software/classpath/license.html.
17
+ //
18
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
19
+ // *****************************************************************************
20
+ const core_1 = require("@theia/core");
21
+ const React = require("@theia/core/shared/react");
22
+ const ai_configuration_controls_1 = require("./ai-configuration-controls");
23
+ const ai_configuration_setting_row_1 = require("./ai-configuration-setting-row");
24
+ /**
25
+ * Every control renders full-width below the label/description except the boolean toggle, which stays inline
26
+ * on the right. This gives a single, consistent layout across the pages (mirroring the Settings UI, where the
27
+ * control sits under the description) instead of mixing right-aligned and below controls.
28
+ */
29
+ const INLINE_CONTROL_TYPES = new Set(['boolean']);
30
+ /**
31
+ * Service-driven per-setting row: reads/writes a preference id via the injected
32
+ * {@link AiSettingsRowService} and renders through the shared {@link AiConfigurationSettingRow}, so
33
+ * it looks identical to the hand-authored rows on the General and Models pages. The control is chosen
34
+ * from {@link AiSettingsRowProps.control}; compact controls render inline, wide ones (chips, text)
35
+ * render full-width below.
36
+ */
37
+ const AiSettingsRow = ({ service, preferenceId, label, description, scope, control, disabled, resourceUri, onDidChange, rowId, actions }) => {
38
+ const inspection = service.inspect(preferenceId, scope, resourceUri);
39
+ // Fall back to the (already-localized) label and description from the preference schema.
40
+ const described = service.describe(preferenceId);
41
+ const effectiveLabel = label ?? described.label ?? preferenceId;
42
+ const effectiveDescription = description ?? described.description;
43
+ // Stable identity so the description's effect does not re-render markdown on every render.
44
+ const renderMarkdown = React.useCallback((markdown) => service.renderMarkdown(markdown), [service]);
45
+ const commit = (value) => {
46
+ service.set(preferenceId, value, scope, resourceUri)
47
+ .then(() => onDidChange?.())
48
+ // `console` rather than an `ILogger`: these row components are deliberately DI-free, so there is
49
+ // no injection context here (the service they write through is the injected part).
50
+ .catch(error => console.error(`Failed to set preference '${preferenceId}'`, error));
51
+ };
52
+ const openMenu = React.useCallback((gear) => service.openSettingContextMenu(gear, preferenceId, inspection.value, scope, resourceUri), [service, preferenceId, inspection.value, scope, resourceUri]);
53
+ const controlNode = (0, jsx_runtime_1.jsx)(exports.AiSettingsRowControl, { control: control, value: inspection.value, label: effectiveLabel, disabled: disabled, onCommit: commit, onEditInSettings: () => service.editInSettings(preferenceId) });
54
+ const below = !INLINE_CONTROL_TYPES.has(control.type);
55
+ return (0, jsx_runtime_1.jsx)(ai_configuration_setting_row_1.AiConfigurationSettingRow, { preferenceId: rowId ?? preferenceId, title: effectiveLabel, description: effectiveDescription, renderMarkdown: renderMarkdown, modified: inspection.modified, tags: service.tags(preferenceId), onOpenMenu: openMenu, control: below ? undefined : controlNode, below: below ? controlNode : undefined, actions: actions });
56
+ };
57
+ exports.AiSettingsRow = AiSettingsRow;
58
+ /**
59
+ * Renders the shared control for a schema-derived {@link AiSettingsControl}, so generically-discovered
60
+ * preferences get the same controls as the hand-authored pages. Boolean→toggle, number→stepper,
61
+ * enum→select, array→chip editor, object/array-of-objects→"Edit in settings.json", everything else→text.
62
+ */
63
+ const AiSettingsRowControl = ({ control, value, label, disabled, onCommit, onEditInSettings }) => {
64
+ switch (control.type) {
65
+ case 'boolean':
66
+ return (0, jsx_runtime_1.jsx)(ai_configuration_controls_1.AiToggleSwitch, { checked: value === true, ariaLabel: label, disabled: disabled, onChange: onCommit });
67
+ case 'select':
68
+ return (0, jsx_runtime_1.jsx)(ai_configuration_controls_1.AiEnumSelect, { value: value === undefined ? undefined : String(value), ariaLabel: label, disabled: disabled, options: control.options.map(option => ({
69
+ value: String(option.value ?? ''),
70
+ label: option.label ?? String(option.value ?? ''),
71
+ title: option.description
72
+ })), onCommit: onCommit });
73
+ case 'number':
74
+ return (0, jsx_runtime_1.jsx)(ai_configuration_controls_1.AiNumberStepper, { value: typeof value === 'number' ? value : (control.min ?? 0), ariaLabel: label, integer: control.integer, min: control.min, max: control.max, disabled: disabled, onCommit: onCommit });
75
+ case 'array':
76
+ return (0, jsx_runtime_1.jsx)(ai_configuration_controls_1.AiArrayInput, { values: Array.isArray(value) ? value.map(String) : [], ariaLabel: label, addPlaceholder: control.placeholder ?? core_1.nls.localize('theia/ai/core/aiConfiguration/addValue', 'Add Value...'), validate: control.validate, disabled: disabled, onChange: onCommit });
77
+ case 'json':
78
+ return (0, jsx_runtime_1.jsx)(ai_configuration_controls_1.AiEditInSettingsButton, { label: core_1.nls.localizeByDefault('Edit in settings.json'), ariaLabel: label, disabled: disabled, onClick: onEditInSettings });
79
+ case 'string':
80
+ default:
81
+ return (0, jsx_runtime_1.jsx)(ai_configuration_controls_1.AiTextInput, { value: typeof value === 'string' ? value : '', ariaLabel: label, placeholder: control.type === 'string' ? control.placeholder : undefined, password: control.type === 'string' ? control.password : undefined, disabled: disabled, onCommit: onCommit });
82
+ }
83
+ };
84
+ exports.AiSettingsRowControl = AiSettingsRowControl;
85
+ //# sourceMappingURL=ai-settings-row.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-settings-row.js","sourceRoot":"","sources":["../../../../src/browser/ai-configuration/components/ai-settings-row.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ import * as React from '@theia/core/shared/react';
2
+ import { AiConfigurationOrigin } from './ai-configuration-origin-badge';
3
+ /** One expandable row of a {@link CollapsibleList}. */
4
+ export interface CollapsibleRow {
5
+ readonly id: string;
6
+ /** Header title (e.g. a variable reference, a skill name, a `/command`). */
7
+ readonly title: React.ReactNode;
8
+ /** One-line description; shown inline while collapsed and as a paragraph while expanded. */
9
+ readonly description?: string;
10
+ /** Short badges shown before the actions, e.g. an argument count or the single agent using the row. */
11
+ readonly pills?: string[];
12
+ /**
13
+ * Where the row's entry came from, when that is not the user. Shown after the pills as the same
14
+ * {@link AiConfigurationOriginBadge}s a collection item carries, and reachable while the row is
15
+ * collapsed - provenance is something you scan a list for, not something you expand rows to find.
16
+ */
17
+ readonly origins?: AiConfigurationOrigin[];
18
+ /**
19
+ * Actions rendered at the row's trailing edge, after the pills, and available whether the row is
20
+ * expanded or not. Use {@link CollapsibleRowAction}, which stops the click from toggling the row.
21
+ */
22
+ readonly actions?: React.ReactNode;
23
+ /** Content revealed when the row is expanded (below the description). */
24
+ readonly body?: React.ReactNode;
25
+ /** Lower-cased haystack used by the in-list filter. */
26
+ readonly filterText: string;
27
+ }
28
+ /** A titled group of {@link CollapsibleRow}s. */
29
+ export interface CollapsibleGroup {
30
+ readonly id: string;
31
+ readonly title: string;
32
+ readonly description?: string;
33
+ readonly rows: CollapsibleRow[];
34
+ }
35
+ export interface CollapsibleListProps {
36
+ readonly groups: CollapsibleGroup[];
37
+ readonly filterPlaceholder: string;
38
+ /** Shown when there are no rows at all. */
39
+ readonly emptyMessage: string;
40
+ /** Shown when the filter query matches nothing. */
41
+ readonly filterEmptyMessage: (query: string) => string;
42
+ }
43
+ /**
44
+ * A filterable list of expandable rows grouped under titled sections, available to any
45
+ * {@link AiConfigurationCategory} that presents a long, browsable list (the Variables and the
46
+ * Skills & Slash Commands pages use it). Owns the local filter and per-row expansion state so both
47
+ * reset when the page is navigated away from (the component unmounts).
48
+ *
49
+ * All classes are prefixed `ai-config-collapsible-` and are styled in `ai-configuration-components.css`.
50
+ */
51
+ export declare const CollapsibleList: React.FC<CollapsibleListProps>;
52
+ export interface CollapsibleRowActionProps {
53
+ /** `codicon(...)` class, e.g. `edit` to open the underlying text, `discard` to reset it. */
54
+ readonly iconClass: string;
55
+ /** Tooltip and accessible name; actions are icon-only. */
56
+ readonly label: string;
57
+ readonly disabled?: boolean;
58
+ readonly onActivate: () => void;
59
+ }
60
+ /**
61
+ * One icon action in a {@link CollapsibleRow}'s trailing slot. Stops the click from reaching the header,
62
+ * which would otherwise expand or collapse the row.
63
+ */
64
+ export declare const CollapsibleRowAction: React.FC<CollapsibleRowActionProps>;
65
+ //# sourceMappingURL=collapsible-list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collapsible-list.d.ts","sourceRoot":"","sources":["../../../../src/browser/ai-configuration/components/collapsible-list.tsx"],"names":[],"mappings":"AAiBA,OAAO,KAAK,KAAK,MAAM,0BAA0B,CAAC;AAElD,OAAO,EAAE,qBAAqB,EAA+B,MAAM,iCAAiC,CAAC;AAErG,uDAAuD;AACvD,MAAM,WAAW,cAAc;IAC3B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,4EAA4E;IAC5E,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IAChC,4FAA4F;IAC5F,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,uGAAuG;IACvG,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B;;;;OAIG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,qBAAqB,EAAE,CAAC;IAC3C;;;OAGG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACnC,yEAAyE;IACzE,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAChC,uDAAuD;IACvD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC/B;AAED,iDAAiD;AACjD,MAAM,WAAW,gBAAgB;IAC7B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,IAAI,EAAE,cAAc,EAAE,CAAC;CACnC;AAED,MAAM,WAAW,oBAAoB;IACjC,QAAQ,CAAC,MAAM,EAAE,gBAAgB,EAAE,CAAC;IACpC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,2CAA2C;IAC3C,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,mDAAmD;IACnD,QAAQ,CAAC,kBAAkB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;CAC1D;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CAsC1D,CAAC;AAmBF,MAAM,WAAW,yBAAyB;IACtC,4FAA4F;IAC5F,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,0DAA0D;IAC1D,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,IAAI,CAAC;CACnC;AAED;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CAAC,yBAAyB,CAcpE,CAAC"}
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CollapsibleRowAction = exports.CollapsibleList = void 0;
4
+ const jsx_runtime_1 = require("@theia/core/shared/react/jsx-runtime");
5
+ // *****************************************************************************
6
+ // Copyright (C) 2026 EclipseSource and others.
7
+ //
8
+ // This program and the accompanying materials are made available under the
9
+ // terms of the Eclipse Public License v. 2.0 which is available at
10
+ // http://www.eclipse.org/legal/epl-2.0.
11
+ //
12
+ // This Source Code may also be made available under the following Secondary
13
+ // Licenses when the conditions for such availability set forth in the Eclipse
14
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
15
+ // with the GNU Classpath Exception which is available at
16
+ // https://www.gnu.org/software/classpath/license.html.
17
+ //
18
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
19
+ // *****************************************************************************
20
+ const browser_1 = require("@theia/core/lib/browser");
21
+ const React = require("@theia/core/shared/react");
22
+ const ai_configuration_primitives_1 = require("./ai-configuration-primitives");
23
+ const ai_configuration_origin_badge_1 = require("./ai-configuration-origin-badge");
24
+ /**
25
+ * A filterable list of expandable rows grouped under titled sections, available to any
26
+ * {@link AiConfigurationCategory} that presents a long, browsable list (the Variables and the
27
+ * Skills & Slash Commands pages use it). Owns the local filter and per-row expansion state so both
28
+ * reset when the page is navigated away from (the component unmounts).
29
+ *
30
+ * All classes are prefixed `ai-config-collapsible-` and are styled in `ai-configuration-components.css`.
31
+ */
32
+ const CollapsibleList = ({ groups, filterPlaceholder, emptyMessage, filterEmptyMessage }) => {
33
+ const [filter, setFilter] = React.useState('');
34
+ const [expanded, setExpanded] = React.useState(() => new Set());
35
+ const toggle = React.useCallback((id) => setExpanded(previous => {
36
+ const next = new Set(previous);
37
+ if (next.has(id)) {
38
+ next.delete(id);
39
+ }
40
+ else {
41
+ next.add(id);
42
+ }
43
+ return next;
44
+ }), []);
45
+ const query = filter.trim().toLocaleLowerCase();
46
+ const filtering = query.length > 0;
47
+ const visibleGroups = groups
48
+ .map(group => ({ group, rows: filtering ? group.rows.filter(row => row.filterText.includes(query)) : group.rows }))
49
+ .filter(entry => entry.rows.length > 0);
50
+ return (0, jsx_runtime_1.jsxs)("div", { className: 'ai-config-collapsible-list', children: [(0, jsx_runtime_1.jsx)(ai_configuration_primitives_1.AiConfigurationFilterInput, { value: filter, onChange: setFilter, placeholder: filterPlaceholder }), visibleGroups.length === 0
51
+ ? (0, jsx_runtime_1.jsx)(ai_configuration_primitives_1.AiConfigurationEmptyState, { iconClass: (0, browser_1.codicon)('search'), message: filtering ? filterEmptyMessage(filter.trim()) : emptyMessage })
52
+ : (0, jsx_runtime_1.jsx)("div", { className: 'ai-configuration-sections', children: visibleGroups.map(({ group, rows }) => (0, jsx_runtime_1.jsx)(CollapsibleGroupView, { title: group.title, description: group.description, rows: rows, expanded: expanded, onToggle: toggle, filtering: filtering }, group.id)) })] });
53
+ };
54
+ exports.CollapsibleList = CollapsibleList;
55
+ const CollapsibleGroupView = ({ title, description, rows, expanded, onToggle, filtering }) =>
56
+ // The count is of the rows actually shown, so it tracks the filter rather than promising hidden entries.
57
+ (0, jsx_runtime_1.jsxs)(ai_configuration_primitives_1.AiConfigurationSection, { title: title, count: rows.length, collapsible: true, forceExpanded: filtering, className: 'ai-config-collapsible-group', children: [description && (0, jsx_runtime_1.jsx)("div", { className: 'ai-config-collapsible-group-description', children: description }), rows.map(row => (0, jsx_runtime_1.jsx)(CollapsibleRowView, { row: row, expanded: expanded.has(row.id), onToggle: onToggle }, row.id))] });
58
+ /**
59
+ * One icon action in a {@link CollapsibleRow}'s trailing slot. Stops the click from reaching the header,
60
+ * which would otherwise expand or collapse the row.
61
+ */
62
+ const CollapsibleRowAction = ({ iconClass, label, disabled, onActivate }) => ((0, jsx_runtime_1.jsx)("button", { type: 'button', className: 'ai-config-collapsible-row-action', "aria-label": label, title: label, disabled: disabled, onClick: event => {
63
+ event.stopPropagation();
64
+ onActivate();
65
+ }, children: (0, jsx_runtime_1.jsx)("span", { "aria-hidden": 'true', className: iconClass }) }));
66
+ exports.CollapsibleRowAction = CollapsibleRowAction;
67
+ const CollapsibleRowView = ({ row, expanded, onToggle }) => {
68
+ const bodyId = `ai-collapsible-body-${row.id}`;
69
+ const toggle = React.useCallback(() => onToggle(row.id), [onToggle, row.id]);
70
+ // Only toggle when the header itself has focus; keystrokes on nested controls (the action button)
71
+ // must not bubble up and collapse the row.
72
+ const onHeaderKeyDown = React.useCallback((event) => {
73
+ if (event.target === event.currentTarget && (event.key === 'Enter' || event.key === ' ')) {
74
+ event.preventDefault();
75
+ toggle();
76
+ }
77
+ }, [toggle]);
78
+ return (0, jsx_runtime_1.jsxs)("div", { className: 'ai-config-collapsible-row', "data-ai-config-row-id": row.id, children: [(0, jsx_runtime_1.jsxs)("div", { className: `ai-config-collapsible-row-header ${expanded ? 'expanded' : ''}`, role: 'button', tabIndex: 0, "aria-expanded": expanded, "aria-controls": expanded ? bodyId : undefined, onClick: toggle, onKeyDown: onHeaderKeyDown, children: [(0, jsx_runtime_1.jsx)("span", { "aria-hidden": 'true', className: `ai-config-collapsible-expansion-icon ${(0, browser_1.codicon)(expanded ? 'chevron-down' : 'chevron-right')}` }), (0, jsx_runtime_1.jsx)("span", { className: 'ai-config-collapsible-row-title', children: row.title }), expanded
79
+ ? (0, jsx_runtime_1.jsx)("span", { className: 'ai-config-collapsible-inline-description-spacer', "aria-hidden": 'true' })
80
+ : (0, jsx_runtime_1.jsx)("span", { className: 'ai-config-collapsible-inline-description', title: row.description || undefined, children: row.description }), ((row.pills && row.pills.length > 0) || (row.origins && row.origins.length > 0)) && (0, jsx_runtime_1.jsxs)("div", { className: 'ai-config-collapsible-row-meta', children: [row.pills?.map((pill, index) => (0, jsx_runtime_1.jsx)("span", { className: 'ai-config-collapsible-count-pill', children: pill }, index)), (0, jsx_runtime_1.jsx)(ai_configuration_origin_badge_1.AiConfigurationOriginBadges, { origins: row.origins })] }), row.actions && (0, jsx_runtime_1.jsx)("div", { className: 'ai-config-collapsible-row-actions', children: row.actions })] }), expanded && (0, jsx_runtime_1.jsxs)("div", { className: 'ai-config-collapsible-row-body', id: bodyId, children: [row.description && (0, jsx_runtime_1.jsx)("p", { className: 'ai-config-collapsible-full-description', children: row.description }), row.body] })] });
81
+ };
82
+ //# sourceMappingURL=collapsible-list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collapsible-list.js","sourceRoot":"","sources":["../../../../src/browser/ai-configuration/components/collapsible-list.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ import { PromptService } from '@theia/ai-core/lib/common/prompt-service';
2
+ /**
3
+ * The two ways to undo a customized prompt fragment, shared by every page that offers them (the agent
4
+ * detail's prompt variant sets and the Prompt Snippets list).
5
+ *
6
+ * Which one applies depends on whether a built-in exists: `resetToBuiltIn` deliberately does nothing for a
7
+ * fragment that has none — a user-authored file such as a custom prompt variant — so those must be deleted
8
+ * instead. Offering reset there is a dead button, which is exactly what this namespace exists to prevent.
9
+ */
10
+ export declare namespace PromptCustomizationDialogs {
11
+ /**
12
+ * Whether a built-in fragment stands behind `fragmentId`, i.e. whether resetting has anything to fall
13
+ * back to. `false` for a fragment that only exists as a user or workspace file.
14
+ */
15
+ function hasBuiltIn(promptService: PromptService, fragmentId: string): boolean;
16
+ interface RemoveOptions {
17
+ readonly title: string;
18
+ /**
19
+ * Builds the confirmation text. `type` is where the customization lives (e.g. "Prompt Templates
20
+ * Folder") and `description` identifies it concretely (e.g. the file URI); either can be unavailable.
21
+ */
22
+ readonly message: (details: {
23
+ type?: string;
24
+ description?: string;
25
+ }) => string;
26
+ }
27
+ /**
28
+ * Asks for confirmation — naming where the customization lives, so the user can see which file is about
29
+ * to go — and then deletes it. Resolves to `true` when it was removed.
30
+ */
31
+ function confirmAndRemove(promptService: PromptService, fragmentId: string, options: RemoveOptions): Promise<boolean>;
32
+ /** Asks for confirmation and then drops every customization, so the built-in text applies again. */
33
+ function confirmAndReset(promptService: PromptService, fragmentId: string, title: string, message: string): Promise<boolean>;
34
+ }
35
+ //# sourceMappingURL=prompt-customization-dialogs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-customization-dialogs.d.ts","sourceRoot":"","sources":["../../../../src/browser/ai-configuration/components/prompt-customization-dialogs.ts"],"names":[],"mappings":"AAkBA,OAAO,EAA8B,aAAa,EAAE,MAAM,0CAA0C,CAAC;AAErG;;;;;;;GAOG;AACH,yBAAiB,0BAA0B,CAAC;IAExC;;;OAGG;IACH,SAAgB,UAAU,CAAC,aAAa,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAGpF;IAED,UAAiB,aAAa;QAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QACvB;;;WAGG;QACH,QAAQ,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE;YAAE,IAAI,CAAC,EAAE,MAAM,CAAC;YAAC,WAAW,CAAC,EAAE,MAAM,CAAA;SAAE,KAAK,MAAM,CAAC;KAClF;IAED;;;OAGG;IACH,SAAsB,gBAAgB,CAAC,aAAa,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,CAoBjI;IAED,oGAAoG;IACpG,SAAsB,eAAe,CAAC,aAAa,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAYxI;CACJ"}