imcp 0.0.11 → 0.0.13

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 (57) hide show
  1. package/dist/cli/commands/uninstall.js +14 -6
  2. package/dist/core/ConfigurationProvider.d.ts +3 -1
  3. package/dist/core/ConfigurationProvider.js +85 -25
  4. package/dist/core/InstallationService.d.ts +17 -0
  5. package/dist/core/InstallationService.js +127 -61
  6. package/dist/core/MCPManager.d.ts +1 -0
  7. package/dist/core/MCPManager.js +30 -5
  8. package/dist/core/RequirementService.d.ts +4 -4
  9. package/dist/core/RequirementService.js +11 -7
  10. package/dist/core/ServerSchemaLoader.js +2 -2
  11. package/dist/core/ServerSchemaProvider.d.ts +1 -1
  12. package/dist/core/ServerSchemaProvider.js +15 -10
  13. package/dist/core/constants.d.ts +14 -1
  14. package/dist/core/constants.js +4 -1
  15. package/dist/core/installers/clients/ExtensionInstaller.js +3 -0
  16. package/dist/core/installers/requirements/PipInstaller.js +10 -5
  17. package/dist/core/types.d.ts +10 -0
  18. package/dist/services/ServerService.d.ts +12 -1
  19. package/dist/services/ServerService.js +39 -9
  20. package/dist/utils/githubAuth.js +0 -10
  21. package/dist/utils/githubUtils.d.ts +16 -0
  22. package/dist/utils/githubUtils.js +55 -39
  23. package/dist/utils/osUtils.js +1 -1
  24. package/dist/web/public/css/detailsWidget.css +189 -57
  25. package/dist/web/public/css/modal.css +42 -0
  26. package/dist/web/public/css/serverDetails.css +35 -18
  27. package/dist/web/public/index.html +2 -0
  28. package/dist/web/public/js/detailsWidget.js +175 -60
  29. package/dist/web/public/js/modal.js +93 -29
  30. package/dist/web/public/js/notifications.js +34 -35
  31. package/dist/web/public/js/serverCategoryDetails.js +182 -120
  32. package/dist/web/server.js +38 -2
  33. package/package.json +3 -4
  34. package/src/cli/commands/uninstall.ts +16 -6
  35. package/src/core/ConfigurationProvider.ts +102 -25
  36. package/src/core/InstallationService.ts +176 -62
  37. package/src/core/MCPManager.ts +36 -5
  38. package/src/core/RequirementService.ts +12 -8
  39. package/src/core/ServerSchemaLoader.ts +48 -0
  40. package/src/core/ServerSchemaProvider.ts +137 -0
  41. package/src/core/constants.ts +16 -3
  42. package/src/core/installers/clients/ExtensionInstaller.ts +3 -0
  43. package/src/core/installers/requirements/PipInstaller.ts +10 -5
  44. package/src/core/types.ts +11 -1
  45. package/src/services/ServerService.ts +41 -8
  46. package/src/utils/githubAuth.ts +14 -27
  47. package/src/utils/githubUtils.ts +84 -47
  48. package/src/utils/osUtils.ts +1 -1
  49. package/src/web/public/css/detailsWidget.css +235 -0
  50. package/src/web/public/css/modal.css +42 -0
  51. package/src/web/public/css/serverDetails.css +126 -0
  52. package/src/web/public/index.html +2 -0
  53. package/src/web/public/js/detailsWidget.js +264 -0
  54. package/src/web/public/js/modal.js +93 -29
  55. package/src/web/public/js/notifications.js +34 -35
  56. package/src/web/public/js/serverCategoryDetails.js +182 -120
  57. package/src/web/server.ts +52 -3
@@ -1,103 +1,235 @@
1
1
  .details-widget {
2
- max-height: 0;
2
+ transition: all 0.3s ease-in-out;
3
+ width: 100%;
4
+ max-width: 100%;
5
+ box-sizing: border-box;
6
+ margin: 0;
7
+ padding: 0;
8
+ display: block;
3
9
  overflow: hidden;
4
- transition: max-height 0.3s ease-out;
5
10
  }
6
11
 
7
- .details-widget.expanded {
8
- max-height: 2000px;
9
- transition: max-height 0.5s ease-in;
12
+ .tools-list {
13
+ width: 100%;
14
+ max-width: 100%;
15
+ margin: 0;
16
+ padding: 0.1rem;
17
+ box-sizing: border-box;
18
+ overflow: hidden;
10
19
  }
11
20
 
12
- .details-widget-content {
13
- padding: 1rem;
14
- background-color: #f8fafc;
15
- border-top: 1px solid #e2e8f0;
21
+ .tool-card {
22
+ width: 100%;
23
+ margin-bottom: -1px;
24
+ border-radius: 0;
25
+ box-sizing: border-box;
16
26
  }
17
27
 
18
- /* Schema specific styles */
19
- .schema-content {
20
- font-family: system-ui, -apple-system, sans-serif;
28
+ .tool-card:first-child {
29
+ border-top-left-radius: 6px;
30
+ border-top-right-radius: 6px;
21
31
  }
22
32
 
23
- .tool-section {
33
+ .tool-card:last-child {
34
+ border-bottom-left-radius: 6px;
35
+ border-bottom-right-radius: 6px;
36
+ margin-bottom: 0;
37
+ }
38
+
39
+ .tool-card {
40
+ transition: all 0.3s ease-out;
41
+ border: 1px solid #e5e7eb;
42
+ padding: 0.5rem;
24
43
  background-color: white;
25
- border-radius: 0.5rem;
26
- box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1);
27
- margin-bottom: 1.5rem;
28
- transition: transform 0.2s;
44
+ position: relative;
45
+ z-index: 1;
46
+ font-size: 0.9rem;
47
+ width: 100%;
48
+ box-sizing: border-box;
49
+ }
50
+
51
+ .tool-card .text-gray-600 {
52
+ font-size: 0.75rem;
53
+ line-height: 1.3;
54
+ }
55
+
56
+ .tool-card.active {
57
+ box-shadow: 0 4px 15px rgba(0, 0, 0, 0.12);
58
+ border-color: transparent;
59
+ background-color: #f8fafc;
29
60
  }
30
61
 
31
- .tool-section:hover {
32
- transform: translateY(-2px);
62
+ .tool-card:hover {
63
+ transform: translateY(-1px);
64
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
65
+ }
66
+
67
+ .tool-card-header {
68
+ position: relative;
69
+ padding-right: 2rem;
70
+ width: 100%;
71
+ box-sizing: border-box;
72
+ cursor: pointer;
73
+ }
74
+
75
+ .tool-card-header::after {
76
+ content: '';
77
+ position: absolute;
78
+ right: 1rem;
79
+ top: 50%;
80
+ transform: translateY(-50%);
81
+ width: 12px;
82
+ height: 12px;
83
+ border-right: 2px solid #64748b;
84
+ border-bottom: 2px solid #64748b;
85
+ transform-origin: 75% 75%;
86
+ transition: transform 0.3s ease;
87
+ }
88
+
89
+ .tool-card.active .tool-card-header::after {
90
+ transform: translateY(-50%) rotate(45deg);
91
+ }
92
+
93
+ .tool-details {
94
+ max-height: 0;
95
+ opacity: 0;
96
+ overflow: hidden;
97
+ transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
98
+ background-color: #f9fafb;
99
+ border-radius: 6px;
100
+ width: 100%;
101
+ max-width: 100%;
102
+ box-sizing: border-box;
103
+ }
104
+
105
+ .tool-details.visible {
106
+ max-height: 2000px;
107
+ opacity: 1;
108
+ padding: 0.1rem;
109
+ margin-top: 0.5rem;
110
+ border-top: 1px solid #e5e7eb;
111
+ width: 100%;
112
+ max-width: 100%;
113
+ box-sizing: border-box;
33
114
  }
34
115
 
35
116
  .property-item {
36
- padding: 0.75rem;
37
- margin: 0.5rem 0;
117
+ margin-bottom: 0.15rem;
118
+ padding: 0.5rem;
119
+ border-left: 2px solid #e5e7eb;
120
+ transition: all 0.2s ease;
121
+ font-size: 0.8rem;
38
122
  background-color: white;
39
- border-radius: 0.375rem;
40
- transition: all 0.2s;
123
+ border-radius: 4px;
41
124
  }
42
125
 
43
126
  .property-item:hover {
44
- background-color: #f1f5f9;
127
+ border-left-color: #3b82f6;
128
+ }
129
+
130
+ .property-header {
131
+ margin-bottom: 0.25rem;
45
132
  }
46
133
 
47
- .property-item.required {
48
- border-left: 3px solid #3b82f6;
134
+ .property-title {
135
+ display: flex;
136
+ align-items: center;
137
+ gap: 0.5rem;
138
+ flex-wrap: wrap;
49
139
  }
50
140
 
51
141
  .property-name {
52
- color: #1e40af;
53
142
  font-weight: 600;
143
+ color: #1e293b;
144
+ font-size: 0.85rem;
145
+ background-color: #f8fafc;
146
+ padding: 0.2rem 0.4rem;
147
+ border-radius: 4px;
148
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
149
+ display: inline-block;
54
150
  }
55
151
 
56
152
  .property-type {
57
153
  color: #64748b;
58
- font-size: 0.875rem;
154
+ font-size: 0.65rem;
155
+ padding: 0.1rem 0.3rem;
156
+ background: #f1f5f9;
157
+ border-radius: 3px;
158
+ font-family: 'Courier New', monospace;
159
+ margin-left: 0.3rem;
59
160
  }
60
161
 
61
162
  .property-desc {
62
- color: #475569;
63
- margin-top: 0.375rem;
64
- line-height: 1.4;
163
+ color: #6b7280;
164
+ font-size: 0.7rem;
165
+ margin-left: 0.5rem;
166
+ display: inline-block;
167
+ font-style: italic;
65
168
  }
66
169
 
67
170
  .property-default {
68
- color: #94a3b8;
69
- font-size: 0.875rem;
70
- font-family: monospace;
171
+ font-size: 0.75rem;
172
+ color: #6b7280;
173
+ margin-top: 0.15rem;
71
174
  }
72
175
 
73
- .required-badge {
74
- background-color: #dbeafe;
75
- color: #1e40af;
76
- padding: 0.125rem 0.5rem;
77
- border-radius: 9999px;
78
- font-size: 0.75rem;
79
- font-weight: 500;
176
+ .property-default code {
177
+ background: #f1f5f9;
178
+ padding: 0.2rem 0.4rem;
179
+ border-radius: 4px;
180
+ font-family: 'Courier New', monospace;
181
+ font-size: 0.85rem;
80
182
  }
81
183
 
82
184
  .required-fields {
83
- background-color: #fef3c7;
84
- color: #92400e;
85
- padding: 0.5rem;
86
- border-radius: 0.375rem;
87
- margin-bottom: 1rem;
88
- font-size: 0.875rem;
185
+ border-left: 2px solid #64748b;
186
+ padding: 0.25rem 0.5rem;
187
+ margin-bottom: 0.5rem;
188
+ font-size: 0.8rem;
189
+ border-radius: 2px;
190
+ color: #64748b;
191
+ }
192
+ .required-star {
193
+ color: #dc2626;
194
+ margin-left: 2px;
195
+ font-weight: bold;
89
196
  }
90
197
 
91
- .input-schema {
92
- margin-top: 1rem;
93
- padding: 1rem;
94
- background-color: #f8fafc;
95
- border-radius: 0.5rem;
96
- border: 1px solid #e2e8f0;
198
+
199
+ /* Ensure proper container behavior for the widget */
200
+ .details-widget-container {
201
+ width: 100%;
202
+ max-width: 100%;
203
+ box-sizing: border-box;
204
+ position: relative;
205
+ margin: 0;
206
+ padding: 0;
207
+ overflow: hidden;
97
208
  }
98
209
 
99
- .properties-list {
100
- display: flex;
101
- flex-direction: column;
102
- gap: 0.75rem;
210
+ .nested-properties {
211
+ margin: 0.25rem 0 0.25rem 0.5rem;
212
+ padding-left: 0.5rem;
213
+ border-left: 1px solid #e5e7eb;
214
+ font-size: 0.8rem;
215
+ }
216
+
217
+ .nested-property-item {
218
+ margin-bottom: 0.5rem;
219
+ padding: 0.25rem 0.5rem;
220
+ }
221
+
222
+ .nested-property-item .property-name {
223
+ font-size: 0.85rem;
224
+ }
225
+
226
+ .nested-property-item .property-type {
227
+ font-size: 0.8rem;
228
+ padding: 0.1rem 0.3rem;
229
+ }
230
+
231
+ .nested-property-item .property-desc {
232
+ font-size: 0.8rem;
233
+ margin-top: 0.25rem;
234
+ color: #64748b;
103
235
  }
@@ -160,6 +160,15 @@ body {
160
160
  transition: all 0.2s ease;
161
161
  cursor: pointer;
162
162
  user-select: none;
163
+ gap: 0.5rem;
164
+ }
165
+
166
+ /* Client actions container */
167
+ .client-actions {
168
+ display: flex;
169
+ align-items: center;
170
+ gap: 0.5rem;
171
+ margin-left: auto;
163
172
  }
164
173
 
165
174
  .client-item:hover {
@@ -180,6 +189,14 @@ body {
180
189
  gap: 0.75rem;
181
190
  }
182
191
 
192
+ /* Status container */
193
+ .status-container {
194
+ display: flex;
195
+ align-items: center;
196
+ gap: 0.5rem;
197
+ margin-left: auto;
198
+ }
199
+
183
200
  /* Status badges */
184
201
  .status-badge {
185
202
  display: inline-flex;
@@ -227,6 +244,31 @@ body {
227
244
  background-color: #fef3c7;
228
245
  }
229
246
 
247
+ /* Uninstall button styling */
248
+ .uninstall-btn {
249
+ display: inline-flex;
250
+ align-items: center;
251
+ justify-content: center;
252
+ width: 28px;
253
+ height: 28px;
254
+ border-radius: 6px;
255
+ border: 1px solid transparent;
256
+ background: transparent;
257
+ cursor: pointer;
258
+ transition: all 0.2s ease;
259
+ padding: 0;
260
+ }
261
+
262
+ .uninstall-btn:hover {
263
+ background-color: #fee2e2;
264
+ border-color: #ef4444;
265
+ transform: scale(1.05);
266
+ }
267
+
268
+ .uninstall-btn i {
269
+ font-size: 1.25rem;
270
+ }
271
+
230
272
  /* Environment variables section */
231
273
  #modalEnvInputs input {
232
274
  width: 100%;
@@ -1,24 +1,24 @@
1
1
  /* Server item container */
2
- .server-item {
2
+ .server-item-content {
3
3
  cursor: pointer;
4
4
  position: relative;
5
5
  transition: all 0.2s ease;
6
- }
7
-
8
- .server-item-content {
9
- position: relative;
10
6
  border: 1px solid #e5e7eb;
11
7
  border-radius: 0.5rem;
12
8
  padding: 1rem;
13
9
  padding-right: calc(120px + 3rem); /* Button width + spacing */
14
- margin-bottom: 1rem;
10
+ box-sizing: border-box;
15
11
  background-color: #ffffff;
16
- transition: all 0.2s ease;
12
+ z-index: 1;
13
+ margin-bottom: 1rem;
14
+ width: 100%;
15
+ max-width: 100%;
16
+ overflow: visible;
17
17
  }
18
18
 
19
- .server-item:hover .server-item-content {
20
- border-color: #3b82f6;
21
- box-shadow: 0 2px 4px rgba(59, 130, 246, 0.1);
19
+ .server-item-content:hover {
20
+ border-color: transparent;
21
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
22
22
  transform: translateY(-1px);
23
23
  }
24
24
 
@@ -29,19 +29,33 @@
29
29
  transition: max-height 0.3s ease-out;
30
30
  background-color: #f8fafc;
31
31
  border-radius: 0 0 0.5rem 0.5rem;
32
- margin-top: -1rem;
33
- margin-bottom: 1rem;
32
+ margin: -1px 0 0;
34
33
  border: 1px solid #e5e7eb;
35
34
  border-top: none;
35
+ position: relative;
36
+ z-index: 0;
37
+ width: 100%;
38
+ max-width: 100%;
39
+ box-sizing: border-box;
40
+ left: 0;
41
+ right: 0;
36
42
  }
37
43
 
38
44
  .details-widget.expanded {
39
- max-height: 500px; /* Adjust based on content */
40
- border-color: #3b82f6;
45
+ max-height: 2000px; /* Increased height to accommodate more content */
46
+ border-color: transparent;
47
+ box-shadow: 0 4px 15px rgba(0, 0, 0, 0.1);
48
+ transition: max-height 0.3s ease-in-out, box-shadow 0.2s ease;
49
+ width: 100%;
50
+ margin-left: 0;
51
+ margin-right: 0;
52
+ display: block;
41
53
  }
42
54
 
43
55
  .details-widget-content {
44
56
  padding: 1rem;
57
+ width: 100%;
58
+ box-sizing: border-box;
45
59
  }
46
60
 
47
61
  .description-text {
@@ -52,9 +66,12 @@
52
66
 
53
67
  /* Expand/collapse animation */
54
68
  .server-item-content.expanded {
69
+ border-bottom: none;
55
70
  border-bottom-left-radius: 0;
56
71
  border-bottom-right-radius: 0;
57
- border-color: #3b82f6;
72
+ border-color: transparent;
73
+ box-shadow: 0 -1px 8px rgba(0, 0, 0, 0.08);
74
+ margin-bottom: 0;
58
75
  }
59
76
 
60
77
  /* Server item layout */
@@ -83,13 +100,13 @@
83
100
  .action-buttons {
84
101
  position: absolute;
85
102
  right: 1rem;
86
- top: 50%;
87
- transform: translateY(-50%);
103
+ top: calc(2rem + 0.5rem); /* Align with description text (header height + margin-bottom) */
88
104
  margin: 0;
105
+ z-index: 2; /* Ensure buttons stay on top */
89
106
  }
90
107
 
91
108
  .action-buttons button {
92
- min-width: 120px;
109
+ min-width: 100px;
93
110
  padding: 0.5rem 1.5rem;
94
111
  text-align: center;
95
112
  font-weight: 600;
@@ -12,6 +12,8 @@
12
12
  <link rel="stylesheet" href="styles.css">
13
13
  <link rel="stylesheet" href="css/modal.css">
14
14
  <link rel="stylesheet" href="css/notifications.css">
15
+ <link rel="stylesheet" href="css/serverDetails.css">
16
+ <link rel="stylesheet" href="css/detailsWidget.css">
15
17
  <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
16
18
 
17
19
  <!-- Alert container for notifications -->