@theia/ai-ide 1.67.0-next.59 → 1.67.0-next.86

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (106) hide show
  1. package/lib/browser/address-pr-review-command-contribution.d.ts +9 -0
  2. package/lib/browser/address-pr-review-command-contribution.d.ts.map +1 -0
  3. package/lib/browser/address-pr-review-command-contribution.js +176 -0
  4. package/lib/browser/address-pr-review-command-contribution.js.map +1 -0
  5. package/lib/browser/ai-configuration/agent-configuration-widget.d.ts +12 -6
  6. package/lib/browser/ai-configuration/agent-configuration-widget.d.ts.map +1 -1
  7. package/lib/browser/ai-configuration/agent-configuration-widget.js +156 -104
  8. package/lib/browser/ai-configuration/agent-configuration-widget.js.map +1 -1
  9. package/lib/browser/ai-configuration/base/ai-card-grid-configuration-widget.d.ts +32 -0
  10. package/lib/browser/ai-configuration/base/ai-card-grid-configuration-widget.d.ts.map +1 -0
  11. package/lib/browser/ai-configuration/base/ai-card-grid-configuration-widget.js +55 -0
  12. package/lib/browser/ai-configuration/base/ai-card-grid-configuration-widget.js.map +1 -0
  13. package/lib/browser/ai-configuration/base/ai-configuration-base-widget.d.ts +14 -0
  14. package/lib/browser/ai-configuration/base/ai-configuration-base-widget.d.ts.map +1 -0
  15. package/lib/browser/ai-configuration/base/ai-configuration-base-widget.js +35 -0
  16. package/lib/browser/ai-configuration/base/ai-configuration-base-widget.js.map +1 -0
  17. package/lib/browser/ai-configuration/base/ai-hierarchical-configuration-widget.d.ts +23 -0
  18. package/lib/browser/ai-configuration/base/ai-hierarchical-configuration-widget.d.ts.map +1 -0
  19. package/lib/browser/ai-configuration/base/ai-hierarchical-configuration-widget.js +60 -0
  20. package/lib/browser/ai-configuration/base/ai-hierarchical-configuration-widget.js.map +1 -0
  21. package/lib/browser/ai-configuration/base/ai-list-detail-configuration-widget.d.ts +56 -0
  22. package/lib/browser/ai-configuration/base/ai-list-detail-configuration-widget.d.ts.map +1 -0
  23. package/lib/browser/ai-configuration/base/ai-list-detail-configuration-widget.js +96 -0
  24. package/lib/browser/ai-configuration/base/ai-list-detail-configuration-widget.js.map +1 -0
  25. package/lib/browser/ai-configuration/base/ai-table-configuration-widget.d.ts +45 -0
  26. package/lib/browser/ai-configuration/base/ai-table-configuration-widget.d.ts.map +1 -0
  27. package/lib/browser/ai-configuration/base/ai-table-configuration-widget.js +66 -0
  28. package/lib/browser/ai-configuration/base/ai-table-configuration-widget.js.map +1 -0
  29. package/lib/browser/ai-configuration/components/configuration-section.d.ts +13 -0
  30. package/lib/browser/ai-configuration/components/configuration-section.d.ts.map +1 -0
  31. package/lib/browser/ai-configuration/components/configuration-section.js +28 -0
  32. package/lib/browser/ai-configuration/components/configuration-section.js.map +1 -0
  33. package/lib/browser/ai-configuration/components/empty-state.d.ts +11 -0
  34. package/lib/browser/ai-configuration/components/empty-state.d.ts.map +1 -0
  35. package/lib/browser/ai-configuration/components/empty-state.js +26 -0
  36. package/lib/browser/ai-configuration/components/empty-state.js.map +1 -0
  37. package/lib/browser/ai-configuration/components/expandable-section.d.ts +14 -0
  38. package/lib/browser/ai-configuration/components/expandable-section.d.ts.map +1 -0
  39. package/lib/browser/ai-configuration/components/expandable-section.js +31 -0
  40. package/lib/browser/ai-configuration/components/expandable-section.js.map +1 -0
  41. package/lib/browser/ai-configuration/language-model-renderer.d.ts.map +1 -1
  42. package/lib/browser/ai-configuration/language-model-renderer.js +23 -22
  43. package/lib/browser/ai-configuration/language-model-renderer.js.map +1 -1
  44. package/lib/browser/ai-configuration/mcp-configuration-widget.d.ts +0 -1
  45. package/lib/browser/ai-configuration/mcp-configuration-widget.d.ts.map +1 -1
  46. package/lib/browser/ai-configuration/mcp-configuration-widget.js +86 -80
  47. package/lib/browser/ai-configuration/mcp-configuration-widget.js.map +1 -1
  48. package/lib/browser/ai-configuration/model-aliases-configuration-widget.d.ts +8 -22
  49. package/lib/browser/ai-configuration/model-aliases-configuration-widget.d.ts.map +1 -1
  50. package/lib/browser/ai-configuration/model-aliases-configuration-widget.js +49 -78
  51. package/lib/browser/ai-configuration/model-aliases-configuration-widget.js.map +1 -1
  52. package/lib/browser/ai-configuration/template-settings-renderer.d.ts.map +1 -1
  53. package/lib/browser/ai-configuration/template-settings-renderer.js +11 -11
  54. package/lib/browser/ai-configuration/template-settings-renderer.js.map +1 -1
  55. package/lib/browser/ai-configuration/token-usage-configuration-widget.d.ts +7 -8
  56. package/lib/browser/ai-configuration/token-usage-configuration-widget.d.ts.map +1 -1
  57. package/lib/browser/ai-configuration/token-usage-configuration-widget.js +92 -78
  58. package/lib/browser/ai-configuration/token-usage-configuration-widget.js.map +1 -1
  59. package/lib/browser/ai-configuration/tools-configuration-widget.d.ts +12 -7
  60. package/lib/browser/ai-configuration/tools-configuration-widget.d.ts.map +1 -1
  61. package/lib/browser/ai-configuration/tools-configuration-widget.js +43 -35
  62. package/lib/browser/ai-configuration/tools-configuration-widget.js.map +1 -1
  63. package/lib/browser/ai-configuration/variable-configuration-widget.d.ts +8 -4
  64. package/lib/browser/ai-configuration/variable-configuration-widget.d.ts.map +1 -1
  65. package/lib/browser/ai-configuration/variable-configuration-widget.js +61 -28
  66. package/lib/browser/ai-configuration/variable-configuration-widget.js.map +1 -1
  67. package/lib/browser/analyze-gh-ticket-command-contribution.d.ts +9 -0
  68. package/lib/browser/analyze-gh-ticket-command-contribution.d.ts.map +1 -0
  69. package/lib/browser/analyze-gh-ticket-command-contribution.js +172 -0
  70. package/lib/browser/analyze-gh-ticket-command-contribution.js.map +1 -0
  71. package/lib/browser/frontend-module.d.ts.map +1 -1
  72. package/lib/browser/frontend-module.js +6 -0
  73. package/lib/browser/frontend-module.js.map +1 -1
  74. package/lib/browser/implement-gh-ticket-command-contribution.d.ts +9 -0
  75. package/lib/browser/implement-gh-ticket-command-contribution.d.ts.map +1 -0
  76. package/lib/browser/implement-gh-ticket-command-contribution.js +156 -0
  77. package/lib/browser/implement-gh-ticket-command-contribution.js.map +1 -0
  78. package/package.json +21 -21
  79. package/src/browser/address-pr-review-command-contribution.ts +180 -0
  80. package/src/browser/ai-configuration/agent-configuration-widget.tsx +256 -135
  81. package/src/browser/ai-configuration/base/ai-card-grid-configuration-widget.tsx +72 -0
  82. package/src/browser/ai-configuration/base/ai-configuration-base-widget.tsx +37 -0
  83. package/src/browser/ai-configuration/base/ai-hierarchical-configuration-widget.tsx +51 -0
  84. package/src/browser/ai-configuration/base/ai-list-detail-configuration-widget.tsx +140 -0
  85. package/src/browser/ai-configuration/base/ai-table-configuration-widget.tsx +107 -0
  86. package/src/browser/ai-configuration/components/configuration-section.tsx +37 -0
  87. package/src/browser/ai-configuration/components/empty-state.tsx +30 -0
  88. package/src/browser/ai-configuration/components/expandable-section.tsx +51 -0
  89. package/src/browser/ai-configuration/language-model-renderer.tsx +68 -63
  90. package/src/browser/ai-configuration/mcp-configuration-widget.tsx +80 -85
  91. package/src/browser/ai-configuration/model-aliases-configuration-widget.tsx +93 -107
  92. package/src/browser/ai-configuration/template-settings-renderer.tsx +25 -29
  93. package/src/browser/ai-configuration/token-usage-configuration-widget.tsx +130 -130
  94. package/src/browser/ai-configuration/tools-configuration-widget.tsx +68 -59
  95. package/src/browser/ai-configuration/variable-configuration-widget.tsx +95 -45
  96. package/src/browser/analyze-gh-ticket-command-contribution.ts +176 -0
  97. package/src/browser/frontend-module.ts +6 -0
  98. package/src/browser/implement-gh-ticket-command-contribution.ts +160 -0
  99. package/src/browser/style/ai-configuration-base.css +90 -0
  100. package/src/browser/style/ai-configuration-cards.css +60 -0
  101. package/src/browser/style/ai-configuration-hierarchical.css +61 -0
  102. package/src/browser/style/ai-configuration-list-detail.css +88 -0
  103. package/src/browser/style/ai-configuration-table.css +73 -0
  104. package/src/browser/style/index.css +458 -288
  105. package/src/browser/style/widgets/mcp-configuration.css +253 -0
  106. package/src/browser/style/widgets/model-aliases-configuration.css +74 -0
@@ -1,9 +1,66 @@
1
+ /********************************************************************************
2
+ * Copyright (C) 2025 EclipseSource GmbH.
3
+ *
4
+ * This program and the accompanying materials are made available under the
5
+ * terms of the Eclipse Public License v. 2.0 which is available at
6
+ * http://www.eclipse.org/legal/epl-2.0.
7
+ *
8
+ * This Source Code may also be made available under the following Secondary
9
+ * Licenses when the conditions for such availability set forth in the Eclipse
10
+ * Public License v. 2.0 are satisfied: GNU General Public License, version 2
11
+ * with the GNU Classpath Exception which is available at
12
+ * https://www.gnu.org/software/classpath/license.html.
13
+ *
14
+ * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
15
+ ********************************************************************************/
16
+
17
+ /* Import base configuration styles */
18
+ @import url("./ai-configuration-base.css");
19
+ @import url("./ai-configuration-list-detail.css");
20
+ @import url("./ai-configuration-cards.css");
21
+ @import url("./ai-configuration-table.css");
22
+ @import url("./ai-configuration-hierarchical.css");
23
+
24
+ /* Import widget-specific styles */
25
+ @import url("./widgets/model-aliases-configuration.css");
26
+ @import url("./widgets/mcp-configuration.css");
27
+
28
+ /* Override preferences grid layout for AI Configuration widgets */
29
+ .ai-configuration-widget.theia-settings-container {
30
+ display: block;
31
+ grid-template-columns: none;
32
+ grid-template-rows: none;
33
+ grid-template-areas: none;
34
+ max-width: none;
35
+ padding: 0;
36
+ }
37
+
38
+ /* Override max-width constraint from preferences CSS */
39
+ .theia-settings-container:has(.ai-configuration-widget),
40
+ .ai-configuration-widget.theia-settings-container {
41
+ max-width: none;
42
+ width: 100%;
43
+ }
44
+
45
+ /* Override grid-area assignments from preferences CSS */
46
+ .ai-configuration-widget .preferences-tree-widget,
47
+ .ai-configuration-widget .preferences-editor-widget {
48
+ grid-area: auto;
49
+ overflow: auto;
50
+ }
51
+
1
52
  .ai-configuration-widget {
2
- padding: var(--theia-ui-padding);
53
+ max-width: 1000px;
54
+ padding: 0;
55
+ height: 100%;
56
+ display: flex;
57
+ flex-direction: column;
3
58
  }
4
59
 
5
60
  .ai-configuration-widget [role="tablist"] {
6
61
  overflow: scroll;
62
+ background-color: var(--theia-editor-background);
63
+ border-bottom: var(--theia-border-width) solid var(--theia-widget-border);
7
64
  }
8
65
 
9
66
  .ai-configuration-widget [role="tablist"]::-webkit-scrollbar {
@@ -14,14 +71,6 @@
14
71
  padding: var(--theia-ui-padding);
15
72
  }
16
73
 
17
- .language-model-container {
18
- padding-top: calc(2 * var(--theia-ui-padding));
19
- }
20
-
21
- .language-model-container .theia-select {
22
- margin-left: var(--theia-ui-padding);
23
- }
24
-
25
74
  .theia-settings-container
26
75
  .settings-section-subcategory-title.ai-settings-section-subcategory-title {
27
76
  padding-left: 0;
@@ -30,27 +79,84 @@
30
79
  .ai-templates {
31
80
  display: flex;
32
81
  flex-direction: column;
33
- gap: 5px;
82
+ gap: calc(var(--theia-ui-padding) / 2);
83
+ margin-bottom: calc(var(--theia-ui-padding) * 2);
84
+ }
85
+
86
+ .ai-templates-table {
87
+ width: 100%;
88
+ border-collapse: collapse;
89
+ border: var(--theia-border-width) solid var(--theia-widget-border);
90
+ border-radius: 3px;
91
+ }
92
+
93
+ .ai-templates-table thead th {
94
+ text-align: left;
95
+ padding: var(--theia-ui-padding);
96
+ background-color: var(--theia-editorWidget-background);
97
+ color: var(--theia-descriptionForeground);
98
+ font-weight: 600;
99
+ border-bottom: var(--theia-border-width) solid var(--theia-widget-border);
100
+ }
101
+
102
+ .ai-templates-table tbody td {
103
+ padding: var(--theia-ui-padding);
104
+ border-bottom: var(--theia-border-width) solid var(--theia-widget-border);
105
+ }
106
+
107
+ .ai-templates-table tbody tr:last-child td {
108
+ border-bottom: none;
109
+ }
110
+
111
+ .template-name-cell {
112
+ font-weight: 500;
113
+ }
114
+
115
+ .template-variant-cell {
116
+ width: 200px;
117
+ }
118
+
119
+ .template-actions-cell,
120
+ .ai-templates-table thead th.template-actions-header {
121
+ width: 100px;
122
+ text-align: right;
123
+ }
124
+
125
+ .template-action-icon-button {
126
+ background: transparent;
127
+ border: none;
128
+ cursor: pointer;
129
+ padding: calc(var(--theia-ui-padding) / 2);
130
+ color: var(--theia-icon-foreground);
131
+ display: inline-flex;
132
+ align-items: center;
133
+ justify-content: center;
134
+ border-radius: 3px;
135
+ transition: background-color 0.2s;
136
+ }
137
+
138
+ .template-action-icon-button:hover {
139
+ background-color: var(--theia-list-hoverBackground);
34
140
  }
35
141
 
36
142
  .template-renderer {
37
143
  display: flex;
38
144
  flex-direction: column;
39
- padding: 10px;
145
+ padding: var(--theia-ui-padding);
40
146
  }
41
147
 
42
148
  .template-header {
43
- margin-bottom: 8px;
149
+ margin-bottom: calc(var(--theia-ui-padding) / 2);
44
150
  }
45
151
 
46
152
  .template-controls {
47
153
  display: flex;
48
154
  align-items: center;
49
- gap: 10px;
155
+ gap: var(--theia-ui-padding);
50
156
  }
51
157
 
52
158
  .template-select-label {
53
- margin-right: 5px;
159
+ margin-right: calc(var(--theia-ui-padding) / 2);
54
160
  }
55
161
 
56
162
  .template-variant-selector {
@@ -66,76 +172,241 @@
66
172
  #ai-variable-configuration-container-widget,
67
173
  #ai-agent-configuration-container-widget,
68
174
  #ai-model-aliases-configuration-widget {
69
- margin-top: 5px;
175
+ flex: 1;
176
+ overflow: hidden;
70
177
  }
71
178
 
72
- /* Variable Settings */
73
- #ai-variable-configuration-container-widget ul {
74
- list-style: none;
75
- padding: 0;
76
- margin: 0;
179
+ /* Section headers and spacing */
180
+ .settings-section-title {
181
+ font-size: var(--theia-ui-font-size3);
182
+ font-weight: 600;
183
+ margin: 0 0 calc(var(--theia-ui-padding) * 1.5) 0;
184
+ padding: 0 0 calc(var(--theia-ui-padding) / 2) 0;
185
+ border-bottom: var(--theia-border-width) solid var(--theia-widget-border);
186
+ }
187
+
188
+ .settings-section-title pre {
189
+ font-size: calc(var(--theia-ui-font-size0) * 0.9);
190
+ color: var(--theia-descriptionForeground);
191
+ margin-top: calc(var(--theia-ui-padding) / 2);
192
+ }
193
+
194
+ /* Agent title with toggle */
195
+ .agent-title-with-toggle {
196
+ display: block;
77
197
  }
78
198
 
79
- #ai-variable-configuration-container-widget .variable-item {
199
+ .agent-title-content {
80
200
  display: flex;
81
- flex-direction: column;
82
- margin-bottom: 1rem;
201
+ justify-content: space-between;
202
+ align-items: flex-start;
203
+ gap: calc(var(--theia-ui-padding) * 2);
204
+ }
205
+
206
+ .ai-id-label {
207
+ display: inline-block;
208
+ margin-left: var(--theia-ui-padding);
209
+ }
210
+
211
+ .agent-enable-toggle {
212
+ display: flex;
213
+ align-items: center;
214
+ gap: calc(var(--theia-ui-padding));
215
+ cursor: pointer;
216
+ user-select: none;
217
+ flex-shrink: 0;
218
+ }
219
+
220
+ /* Toggle switch */
221
+ .toggle-switch {
222
+ position: relative;
223
+ display: inline-block;
224
+ width: 36px;
225
+ height: 20px;
226
+ }
227
+
228
+ .toggle-switch input[type="checkbox"] {
229
+ opacity: 0;
230
+ width: 0;
231
+ height: 0;
83
232
  }
84
233
 
85
- #ai-variable-configuration-container-widget .variable-args {
234
+ .toggle-slider {
235
+ position: absolute;
236
+ cursor: pointer;
237
+ top: 0;
238
+ left: 0;
239
+ right: 0;
240
+ bottom: 0;
241
+ background-color: var(--theia-radio-inactiveHoverBackground);
242
+ transition: 0.2s;
243
+ border-radius: 20px;
244
+ }
245
+
246
+ .toggle-slider:before {
247
+ position: absolute;
248
+ content: "";
249
+ height: 14px;
250
+ width: 14px;
251
+ left: calc(var(--theia-ui-padding) / 2);
252
+ bottom: calc(var(--theia-ui-padding) / 2);
253
+ background-color: var(--theia-icon-foreground);
254
+ transition: 0.2s;
255
+ border-radius: 50%;
256
+ }
257
+
258
+ .toggle-switch input:checked + .toggle-slider {
259
+ background-color: var(--theia-button-background);
260
+ }
261
+
262
+ .toggle-switch input:checked + .toggle-slider:before {
263
+ transform: translateX(16px);
264
+ background-color: var(--theia-button-foreground);
265
+ }
266
+
267
+ .toggle-switch:hover .toggle-slider {
268
+ opacity: 0.9;
269
+ }
270
+
271
+ /* Agent status indicator in tree */
272
+ .agent-status-indicator {
273
+ font-size: var(--theia-ui-font-size3);
274
+ margin-right: var(--theia-ui-padding);
275
+ display: inline-block;
276
+ line-height: var(--theia-content-line-height);
277
+ align-content: center;
278
+ }
279
+
280
+ .agent-status-indicator.agent-enabled {
281
+ color: var(--theia-charts-green);
282
+ }
283
+
284
+ .agent-status-indicator.agent-disabled {
285
+ color: var(--theia-descriptionForeground);
286
+ opacity: 0.5;
287
+ }
288
+
289
+ /* LLM Requirements and Agent-Specific Variables - Table-like layout */
290
+ .ai-llm-requirement-item,
291
+ .ai-agent-specific-variable-item {
292
+ border-top: var(--theia-border-width) solid var(--theia-widget-border);
293
+ border-bottom: var(--theia-border-width) solid var(--theia-widget-border);
294
+ padding: calc(var(--theia-ui-padding) * 1.5) 0;
295
+ margin-bottom: calc(var(--theia-ui-padding) * 2);
296
+ }
297
+
298
+ .ai-llm-requirement-item:first-of-type,
299
+ .ai-agent-specific-variable-item:first-of-type {
300
+ margin-top: calc(var(--theia-ui-padding));
301
+ }
302
+
303
+ .ai-configuration-value-row {
86
304
  display: grid;
87
- grid-template-columns: 1fr 2fr;
305
+ grid-template-columns: 10em 1fr;
306
+ gap: calc(var(--theia-ui-padding) * 2);
307
+ align-items: start;
308
+ padding: calc(var(--theia-ui-padding) / 2) 0;
309
+ }
310
+
311
+ .ai-configuration-value-row-label {
312
+ font-weight: 500;
313
+ color: var(--theia-foreground);
314
+ text-align: left;
315
+ padding-right: var(--theia-ui-padding);
88
316
  }
89
317
 
90
- /* Agent and Model Alias Settings */
91
- #ai-agent-configuration-container-widget ul,
92
- #ai-model-aliases-configuration-widget .model-alias-configuration-list ul {
318
+ .ai-configuration-value-row-value {
319
+ color: var(--theia-foreground);
320
+ word-break: break-word;
321
+ }
322
+
323
+ .ai-configuration-value-row-value.ai-alias-evaluates-to-unresolved {
324
+ color: var(--theia-descriptionForeground);
325
+ }
326
+
327
+ .settings-section-subcategory-title {
328
+ font-size: var(--theia-ui-font-size2);
329
+ font-weight: 600;
330
+ margin: calc(var(--theia-ui-padding) * 3) 0
331
+ calc(var(--theia-ui-padding) * 1.5) 0;
332
+ padding: 0;
333
+ color: var(--theia-foreground);
334
+ }
335
+
336
+ /* Detail pane content sections */
337
+ .ai-configuration-detail > div {
338
+ margin-bottom: calc(var(--theia-ui-padding) * 2);
339
+ }
340
+
341
+ .ai-configuration-detail > div:last-child {
342
+ margin-bottom: 0;
343
+ }
344
+
345
+ /* Agent description and enable checkbox */
346
+ .ai-configuration-detail label {
347
+ display: inline-flex;
348
+ align-items: center;
349
+ gap: calc(var(--theia-ui-padding) / 2);
350
+ cursor: pointer;
351
+ user-select: none;
352
+ }
353
+
354
+ .ai-configuration-detail label input[type="checkbox"] {
355
+ margin: 0;
356
+ }
357
+
358
+ /* Variable and Agent reference lists */
359
+ .variable-references,
360
+ .function-references {
93
361
  list-style: none;
94
362
  padding: 0;
95
363
  margin: 0;
96
364
  }
97
365
 
98
- .ai-agent-configuration-main,
99
- .model-alias-configuration-main {
366
+ .variable-reference,
367
+ .function-reference {
100
368
  display: flex;
101
- flex-direction: row;
369
+ align-items: center;
370
+ gap: var(--theia-ui-padding);
371
+ padding: calc(var(--theia-ui-padding) / 2);
102
372
  }
103
373
 
104
- #ai-agent-configuration-container-widget
105
- .ai-agent-configuration-main
106
- .configuration-agents-list,
107
- #ai-model-aliases-configuration-widget .model-alias-configuration-list {
108
- min-width: 160px;
374
+ /* Variable agent list */
375
+ .variable-agent-list {
376
+ list-style: none;
377
+ padding: 0;
378
+ margin: 0;
379
+ display: flex;
380
+ flex-direction: column;
381
+ gap: 1px;
382
+ background-color: var(--theia-widget-border);
383
+ border: var(--theia-border-width) solid var(--theia-widget-border);
384
+ border-radius: 3px;
109
385
  overflow: hidden;
110
- white-space: nowrap;
111
- text-overflow: ellipsis;
112
- padding-left: 0;
113
- padding: var(--theia-ui-padding);
114
386
  }
115
387
 
116
- .configuration-agent-panel,
117
- .model-alias-configuration-panel {
118
- flex: 1;
388
+ .variable-agent-item {
389
+ display: flex;
390
+ align-items: center;
391
+ justify-content: space-between;
392
+ padding: calc(var(--theia-ui-padding) / 1.5) var(--theia-ui-padding);
393
+ background-color: var(--theia-editor-background);
394
+ cursor: pointer;
395
+ transition: background-color 0.1s;
119
396
  }
120
397
 
121
- #ai-variable-configuration-container-widget .variable-references,
122
- #ai-agent-configuration-container-widget .variable-references,
123
- #ai-agent-configuration-container-widget .function-references {
124
- margin-left: 0.5rem;
125
- padding: 0.5rem;
126
- border-left: solid 1px var(--theia-tree-indentGuidesStroke);
398
+ .variable-agent-item:hover {
399
+ background-color: var(--theia-list-hoverBackground);
127
400
  }
128
401
 
129
- #ai-variable-configuration-container-widget .variable-reference,
130
- #ai-agent-configuration-container-widget .variable-reference,
131
- #ai-agent-configuration-container-widget .function-reference {
132
- display: flex;
133
- flex-direction: row;
134
- align-items: center;
402
+ .variable-agent-item i {
403
+ color: var(--theia-descriptionForeground);
404
+ opacity: 0.7;
135
405
  }
136
406
 
137
407
  .agent-tag {
138
408
  padding: calc(var(--theia-ui-padding) * 2 / 3);
409
+ margin-left: var(--theia-ui-padding);
139
410
  padding-top: 0px;
140
411
  padding-bottom: 0px;
141
412
  border-radius: calc(var(--theia-ui-padding) * 2 / 3);
@@ -143,7 +414,11 @@
143
414
  }
144
415
 
145
416
  .configuration-agents-add {
146
- margin-top: 3em;
417
+ margin: calc(var(--theia-ui-padding) * 2) var(--theia-ui-padding);
418
+ }
419
+
420
+ .configuration-agents-add button {
421
+ width: 100%;
147
422
  margin-left: 0;
148
423
  }
149
424
 
@@ -153,8 +428,7 @@
153
428
  .ai-tools-configuration-container,
154
429
  .ai-prompt-fragments-configuration {
155
430
  padding: var(--theia-ui-padding);
156
- max-width: 600px;
157
- margin: 0 auto;
431
+ max-width: 1200px;
158
432
  }
159
433
 
160
434
  .prompt-fragments-header {
@@ -378,7 +652,6 @@
378
652
  display: flex;
379
653
  align-items: center;
380
654
  cursor: pointer;
381
- padding: 5px;
382
655
  border-radius: 4px;
383
656
  transition: background-color 0.2s;
384
657
  }
@@ -451,7 +724,7 @@
451
724
  display: flex;
452
725
  justify-content: space-between;
453
726
  align-items: center;
454
- padding: 10px 15px;
727
+ padding: var(--theia-ui-padding) var(--theia-ui-padding);
455
728
  cursor: pointer;
456
729
  background-color: var(--theia-editor-background);
457
730
  transition: background-color 0.2s;
@@ -468,219 +741,49 @@
468
741
  .prompt-fragment-title {
469
742
  display: flex;
470
743
  align-items: center;
471
- gap: 8px;
744
+ gap: var(--theia-ui-padding);
472
745
  }
473
746
 
474
747
  .prompt-fragment-title h2,
475
- h4 {
476
- margin-right: 8px;
748
+ .prompt-fragment-title h4 {
749
+ margin-right: var(--theia-ui-padding);
477
750
  margin: 0;
478
751
  }
479
752
 
753
+ .prompt-fragment-title h2 {
754
+ font-size: var(--theia-ui-font-size2);
755
+ }
756
+
757
+ .prompt-fragment-title h4 {
758
+ font-size: var(--theia-ui-font-size1);
759
+ }
760
+
480
761
  .prompt-fragment-title .active-indicator {
481
- margin-right: 4px;
762
+ margin-right: calc(var(--theia-ui-padding) / 2);
482
763
  }
483
764
 
484
765
  .prompt-fragment-body {
485
- padding: 15px;
766
+ padding: var(--theia-ui-padding) var(--theia-ui-padding) 0
767
+ var(--theia-ui-padding);
486
768
  }
487
769
 
488
- .prompt-fragment-description {
770
+ .prompt-fragment-description p {
489
771
  margin-top: 0;
490
- margin-bottom: 10px;
772
+ margin-bottom: var(--theia-ui-padding);
491
773
  color: var(--theia-descriptionForeground);
492
774
  }
493
775
 
494
776
  .section-header {
495
- margin: 10px 0;
777
+ margin: var(--theia-ui-padding) 0;
496
778
  color: var(--theia-foreground);
497
- font-size: 14px;
498
- }
499
-
500
- /* MCP Configuration Styles */
501
- .mcp-configuration-title {
502
- margin: 0 0 16px 0;
503
- border-bottom: 1px solid var(--theia-panelTitle-activeBorder);
504
- padding-bottom: 8px;
505
- }
506
-
507
- .mcp-server-card {
508
- border: 1px solid var(--theia-panelTitle-activeBorder);
509
- border-radius: 6px;
510
- padding: 12px;
511
- margin-bottom: 16px;
512
- background-color: var(--theia-editorWidget-background);
513
- }
514
-
515
- .mcp-server-header {
516
- display: flex;
517
- justify-content: space-between;
518
- align-items: center;
519
- margin-bottom: 12px;
520
- }
521
-
522
- .mcp-server-name {
523
- font-weight: bold;
524
- font-size: var(--theia-ui-font-size3);
525
- }
526
-
527
- .mcp-status-badge {
528
- padding: 3px 8px;
529
- border-radius: 12px;
530
- font-size: 12px;
531
- font-weight: bold;
532
- display: inline-block;
533
- }
534
-
535
- .mcp-error-indicator {
536
- display: inline-flex;
537
- align-items: center;
538
- justify-content: center;
539
- width: 18px;
540
- height: 18px;
541
- border-radius: 50%;
542
- background-color: var(--theia-errorBackground);
543
- color: var(--theia-errorForeground);
544
- font-size: 12px;
545
- font-weight: bold;
546
- cursor: pointer;
547
- margin-left: 8px;
548
- }
549
-
550
- .mcp-server-section {
551
- margin-bottom: 6px;
552
- }
553
-
554
- .mcp-section-label {
555
- font-weight: bold;
556
- color: var(--theia-descriptionForeground);
557
- }
558
-
559
- .mcp-code-block {
560
- background-color: var(--theia-editor-background);
561
- padding: 2px 4px;
562
- border-radius: 3px;
563
- font-family: monospace;
564
- }
565
-
566
- .mcp-env-block {
567
- margin-left: 10px;
568
- background-color: var(--theia-editor-background);
569
- padding: 4px 8px;
570
- border-radius: 3px;
571
- font-family: monospace;
572
- font-size: 12px;
573
- }
574
-
575
- .mcp-toggle-indicator {
576
- width: 16px;
577
- height: 16px;
578
- display: flex;
579
- align-items: center;
580
- justify-content: center;
581
- margin-right: 6px;
582
- transition: transform 0.2s ease;
583
- }
584
-
585
- .mcp-tools-section {
586
- margin-top: 12px;
587
- cursor: pointer;
588
- user-select: none;
589
- }
590
-
591
- .mcp-tools-list {
592
- margin-left: 24px;
593
- margin-top: 4px;
594
- background-color: var(--theia-editor-background);
595
- border-radius: 3px;
596
- font-family: monospace;
597
- font-size: 12px;
598
- }
599
-
600
- .mcp-autostart-badge {
601
- padding: 2px 6px;
602
- border-radius: 3px;
603
- font-size: 12px;
604
- font-weight: bold;
605
- }
606
-
607
- .mcp-no-servers {
608
- padding: 20px;
609
- text-align: center;
610
- color: var(--theia-descriptionForeground);
611
- }
612
-
613
- .mcp-status-container {
614
- display: flex;
615
- align-items: center;
616
- }
617
-
618
- .mcp-server-controls {
619
- display: flex;
620
- align-items: center;
621
- margin-top: 12px;
622
- border-top: 1px solid var(--theia-panelTitle-inactiveForeground);
623
- padding-top: 12px;
624
- }
625
-
626
- .mcp-server-button {
627
- display: inline-flex;
628
- align-items: center;
629
- justify-content: center;
630
- background-color: var(--theia-button-background);
631
- color: var(--theia-button-foreground);
632
- border: none;
633
- border-radius: 4px;
634
- padding: 6px 8px;
635
- font-size: 12px;
636
- cursor: pointer;
637
- transition: background-color 0.2s;
638
- margin-right: 10px;
639
- }
640
-
641
- .mcp-server-button:hover {
642
- background-color: var(--theia-button-hoverBackground);
643
- }
644
-
645
- .mcp-server-button.play-button {
646
- background-color: var(--theia-successBackground);
647
- color: var(--theia-successForeground);
648
- }
649
-
650
- .mcp-server-button.play-button:hover {
651
- background-color: var(--theia-successBackground);
652
- filter: brightness(1.1);
653
- }
654
-
655
- .mcp-server-button.stop-button {
656
- background-color: var(--theia-errorBackground);
657
- color: var(--theia-errorForeground);
658
- }
659
-
660
- .mcp-server-button.stop-button:hover {
661
- background-color: var(--theia-errorBackground);
662
- filter: brightness(1.1);
663
- }
664
-
665
- .mcp-server-button-icon {
666
- margin-right: 6px;
667
- font-size: 14px;
668
- }
669
-
670
- .mcp-copy-tool-button {
671
- background: transparent;
672
- border: none;
673
- padding: 0;
674
- cursor: pointer;
675
- font-size: 12px;
676
- color: var(--theia-descriptionForeground);
677
- white-space: nowrap;
779
+ font-size: var(--theia-ui-font-size2);
678
780
  }
679
781
 
782
+ /* AI Chat View Styles */
680
783
  .theia-ResponseNode-Content .disable-message {
681
- font-size: 12px;
784
+ font-size: var(--theia-ui-font-size1);
682
785
  line-height: 1.6;
683
- padding: 15px;
786
+ padding: calc(var(--theia-ui-padding) * 2);
684
787
  }
685
788
 
686
789
  .theia-WelcomeMessage {
@@ -693,7 +796,7 @@ h4 {
693
796
 
694
797
  .theia-WelcomeMessage-Content {
695
798
  text-align: center;
696
- padding: 0 18px;
799
+ padding: 0 calc(var(--theia-ui-padding) * 2);
697
800
  max-width: 350px;
698
801
  }
699
802
 
@@ -719,23 +822,43 @@ h4 {
719
822
  * AI Tools Configuration Widget Styles
720
823
  * Only touch styles in this section for the tools configuration widget
721
824
  */
825
+ .ai-tools-configuration-header {
826
+ display: flex;
827
+ align-items: center;
828
+ gap: var(--theia-ui-padding);
829
+ margin-bottom: calc(var(--theia-ui-padding) * 2);
830
+ padding: var(--theia-ui-padding);
831
+ background-color: var(--theia-editor-background);
832
+ border: var(--theia-border-width) solid var(--theia-widget-border);
833
+ border-radius: 3px;
834
+ }
835
+
836
+ .theia-button.secondary.ai-tools-reset-button {
837
+ background-color: var(--theia-radio-inactiveHoverBackground);
838
+ }
839
+
840
+ .theia-button.secondary.ai-tools-reset-button:hover {
841
+ background-color: var(--theia-button-background);
842
+ color: var(--theia-button-foreground);
843
+ }
844
+
722
845
  .ai-tools-configuration-default-section {
723
- margin-bottom: 24px;
846
+ margin-bottom: calc(var(--theia-ui-padding) * 2);
724
847
  }
725
848
 
726
849
  .ai-tools-configuration-default-label {
727
850
  font-weight: bold;
728
- margin-bottom: 4px;
851
+ margin-bottom: var(--theia-ui-padding);
729
852
  }
730
853
 
731
854
  .ai-tools-configuration-default-select {
732
855
  font-size: 14px;
733
- padding: 4px;
856
+ padding: var(--theia-ui-padding);
734
857
  }
735
858
 
736
859
  .ai-tools-configuration-tools-label {
737
860
  font-weight: bold;
738
- margin-bottom: 8px;
861
+ margin-bottom: var(--theia-ui-padding);
739
862
  }
740
863
 
741
864
  .ai-tools-configuration-tools-list {
@@ -747,9 +870,9 @@ h4 {
747
870
  .ai-tools-configuration-tool-item {
748
871
  display: flex;
749
872
  align-items: center;
750
- margin-bottom: 12px;
873
+ margin-bottom: calc(var(--theia-ui-padding) * 2);
751
874
  border-radius: 4px;
752
- padding: 4px;
875
+ padding: var(--theia-ui-padding);
753
876
  transition: background 0.2s, opacity 0.2s;
754
877
  }
755
878
 
@@ -768,7 +891,7 @@ h4 {
768
891
  }
769
892
 
770
893
  .ai-tools-configuration-tool-select {
771
- margin-right: 8px;
894
+ margin-right: var(--theia-ui-padding);
772
895
  }
773
896
 
774
897
  .ai-tools-configuration-tool-icon {
@@ -783,13 +906,13 @@ h4 {
783
906
  }
784
907
  .ai-alias-detail-title {
785
908
  padding-left: 0;
786
- padding-bottom: 10px;
909
+ padding-bottom: var(--theia-ui-padding);
787
910
  }
788
911
  .ai-alias-detail-description {
789
- padding-bottom: 10px;
912
+ padding-bottom: var(--theia-ui-padding);
790
913
  }
791
914
  .ai-alias-detail-selected-model {
792
- margin-bottom: 20px;
915
+ margin-bottom: calc(var(--theia-ui-padding) * 2);
793
916
  }
794
917
  .ai-language-model-item-ready {
795
918
  font-style: normal;
@@ -807,7 +930,7 @@ h4 {
807
930
  font-style: italic;
808
931
  }
809
932
  .ai-alias-detail-defaults {
810
- margin-bottom: 10px;
933
+ margin-bottom: var(--theia-ui-padding);
811
934
  }
812
935
  .ai-model-default-not-ready {
813
936
  font-style: italic;
@@ -815,36 +938,33 @@ h4 {
815
938
  }
816
939
  .ai-alias-defaults-hint {
817
940
  color: var(--theia-descriptionForeground);
818
- margin-top: 8px;
941
+ margin-top: var(--theia-ui-padding);
819
942
  }
820
943
  .ai-alias-evaluates-to-container {
821
- margin-top: 8px;
822
- margin-bottom: 8px;
944
+ margin-top: var(--theia-ui-padding);
945
+ margin-bottom: var(--theia-ui-padding);
823
946
  }
824
947
  .ai-alias-evaluates-to-label {
825
948
  font-weight: 600;
826
949
  }
827
- .ai-alias-evaluates-to-value {
828
- margin-left: 8px;
829
- }
830
950
  .ai-model-status-ready {
831
- color: green;
832
- margin-left: 6px;
951
+ color: var(--theia-ansi-green-color);
952
+ margin-left: var(--theia-ui-padding);
833
953
  }
834
954
  .ai-model-status-not-ready {
835
- color: red;
836
- margin-left: 6px;
955
+ color: var(--theia-ansi-red-color);
956
+ margin-left: var(--theia-ui-padding);
837
957
  }
838
958
  .ai-alias-evaluates-to-unresolved {
839
- margin-left: 8px;
959
+ margin-left: var(--theia-ui-padding);
840
960
  color: var(--theia-descriptionForeground);
841
961
  }
842
962
  .ai-alias-detail-agents {
843
- margin-bottom: 10px;
963
+ margin-bottom: var(--theia-ui-padding);
844
964
  }
845
965
  .ai-alias-agent-id {
846
966
  color: var(--theia-descriptionForeground);
847
- margin-left: 8px;
967
+ margin-left: var(--theia-ui-padding);
848
968
  }
849
969
  .ai-alias-no-agents {
850
970
  color: var(--theia-descriptionForeground);
@@ -853,15 +973,15 @@ h4 {
853
973
 
854
974
  /* Token Usage Configuration Styles */
855
975
  .token-usage-configuration-title {
856
- margin: 0 0 16px 0;
976
+ margin: 0 0 calc(var(--theia-ui-padding) * 2) 0;
857
977
  border-bottom: 1px solid var(--theia-widget-border);
858
- padding-bottom: 8px;
978
+ padding-bottom: var(--theia-ui-padding);
859
979
  }
860
980
 
861
981
  .token-usage-controls {
862
982
  display: flex;
863
983
  justify-content: flex-end;
864
- margin-bottom: 16px;
984
+ margin-bottom: calc(var(--theia-ui-padding) * 2);
865
985
  }
866
986
 
867
987
  .token-usage-refresh-button {
@@ -871,8 +991,8 @@ h4 {
871
991
  color: var(--theia-button-foreground);
872
992
  border: none;
873
993
  border-radius: 4px;
874
- padding: 6px 12px;
875
- font-size: 12px;
994
+ padding: var(--theia-ui-padding) calc(var(--theia-ui-padding) * 2);
995
+ font-size: var(--theia-ui-font-size1);
876
996
  cursor: pointer;
877
997
  transition: background-color 0.2s;
878
998
  }
@@ -882,12 +1002,12 @@ h4 {
882
1002
  }
883
1003
 
884
1004
  .token-usage-refresh-button i {
885
- margin-right: 6px;
1005
+ margin-right: var(--theia-ui-padding);
886
1006
  }
887
1007
 
888
1008
  .token-usage-table-container {
889
1009
  overflow-x: auto;
890
- border-radius: 6px;
1010
+ border-radius: var(--theia-ui-padding);
891
1011
  background-color: var(--theia-editorWidget-background);
892
1012
  }
893
1013
 
@@ -913,7 +1033,7 @@ h4 {
913
1033
  }
914
1034
 
915
1035
  .token-usage-row td {
916
- padding: 10px;
1036
+ padding: var(--theia-ui-padding);
917
1037
  }
918
1038
 
919
1039
  .token-usage-row:hover {
@@ -921,7 +1041,7 @@ h4 {
921
1041
  }
922
1042
 
923
1043
  .token-usage-summary-row td {
924
- padding: 10px;
1044
+ padding: var(--theia-ui-padding);
925
1045
  background-color: var(--theia-editor-background);
926
1046
  color: var(--theia-foreground);
927
1047
  }
@@ -931,16 +1051,66 @@ h4 {
931
1051
  }
932
1052
 
933
1053
  .token-usage-notes {
934
- margin-top: 16px;
1054
+ margin-top: calc(var(--theia-ui-padding) * 2);
935
1055
  color: var(--theia-descriptionForeground);
936
1056
  }
937
1057
 
938
1058
  .token-usage-note {
939
1059
  display: flex;
940
1060
  align-items: center;
941
- font-size: 12px;
1061
+ font-size: var(--theia-ui-font-size1);
942
1062
  }
943
1063
 
944
1064
  .token-usage-note i {
945
- margin-right: 8px;
1065
+ margin-right: var(--theia-ui-padding);
1066
+ }
1067
+
1068
+ /* Common utility classes for configuration widgets */
1069
+ .ai-empty-state-content {
1070
+ padding: var(--theia-ui-padding);
1071
+ text-align: center;
1072
+ color: var(--theia-descriptionForeground);
1073
+ }
1074
+
1075
+ .ai-configuration-footer-total {
1076
+ margin-top: var(--theia-ui-padding);
1077
+ }
1078
+
1079
+ .ai-configuration-footer-total-row {
1080
+ font-weight: 600;
1081
+ border-top: 2px solid var(--theia-widget-border);
1082
+ }
1083
+
1084
+ .ai-configuration-info-box {
1085
+ margin-top: var(--theia-ui-padding);
1086
+ padding: var(--theia-ui-padding);
1087
+ background-color: var(--theia-editor-background);
1088
+ border-radius: 3px;
1089
+ }
1090
+
1091
+ .ai-configuration-info-text {
1092
+ margin: 0;
1093
+ color: var(--theia-descriptionForeground);
1094
+ }
1095
+
1096
+ .ai-configuration-info-icon {
1097
+ margin-right: calc(var(--theia-ui-padding) / 2);
1098
+ }
1099
+
1100
+ .ai-variable-name-cell {
1101
+ font-weight: 500;
1102
+ }
1103
+
1104
+ .ai-variable-description-cell {
1105
+ color: var(--theia-descriptionForeground);
1106
+ }
1107
+
1108
+ .ai-configuration-warning-text {
1109
+ color: var(--theia-warningForeground);
1110
+ }
1111
+
1112
+ .ai-agent-description {
1113
+ margin-bottom: calc(var(--theia-ui-padding) * 2);
1114
+ color: var(--theia-descriptionForeground);
1115
+ line-height: 1.5;
946
1116
  }