agent-discover 1.2.5 → 1.3.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.
- package/CHANGELOG.md +19 -0
- package/agent-desk-plugin.json +1 -1
- package/dist/context.d.ts +2 -0
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +4 -0
- package/dist/context.js.map +1 -1
- package/dist/domain/health.js +1 -1
- package/dist/domain/health.js.map +1 -1
- package/dist/domain/log.d.ts +24 -0
- package/dist/domain/log.d.ts.map +1 -0
- package/dist/domain/log.js +54 -0
- package/dist/domain/log.js.map +1 -0
- package/dist/domain/proxy.d.ts +4 -0
- package/dist/domain/proxy.d.ts.map +1 -1
- package/dist/domain/proxy.js +22 -8
- package/dist/domain/proxy.js.map +1 -1
- package/dist/domain/registry.d.ts +1 -0
- package/dist/domain/registry.d.ts.map +1 -1
- package/dist/domain/registry.js +5 -0
- package/dist/domain/registry.js.map +1 -1
- package/dist/transport/rest.d.ts.map +1 -1
- package/dist/transport/rest.js +47 -0
- package/dist/transport/rest.js.map +1 -1
- package/dist/transport/ws.d.ts.map +1 -1
- package/dist/transport/ws.js +10 -1
- package/dist/transport/ws.js.map +1 -1
- package/dist/ui/app.js +328 -5
- package/dist/ui/index.html +89 -0
- package/dist/ui/styles.css +293 -0
- package/dist/ui/template.js +55 -0
- package/package.json +1 -1
package/dist/ui/styles.css
CHANGED
|
@@ -998,3 +998,296 @@ body {
|
|
|
998
998
|
transform: translateY(0);
|
|
999
999
|
}
|
|
1000
1000
|
}
|
|
1001
|
+
|
|
1002
|
+
/* ---------------------------------------------------------------------------
|
|
1003
|
+
Add Server form
|
|
1004
|
+
--------------------------------------------------------------------------- */
|
|
1005
|
+
|
|
1006
|
+
.btn-add-server {
|
|
1007
|
+
display: flex;
|
|
1008
|
+
align-items: center;
|
|
1009
|
+
gap: 4px;
|
|
1010
|
+
background: var(--accent);
|
|
1011
|
+
color: #fff;
|
|
1012
|
+
border: none;
|
|
1013
|
+
border-radius: var(--radius-sm);
|
|
1014
|
+
padding: 6px 14px;
|
|
1015
|
+
font-size: 13px;
|
|
1016
|
+
font-weight: 500;
|
|
1017
|
+
font-family: var(--font-sans);
|
|
1018
|
+
cursor: pointer;
|
|
1019
|
+
transition: background 0.15s;
|
|
1020
|
+
}
|
|
1021
|
+
|
|
1022
|
+
.btn-add-server:hover {
|
|
1023
|
+
background: var(--accent-hover);
|
|
1024
|
+
}
|
|
1025
|
+
|
|
1026
|
+
.add-server-panel {
|
|
1027
|
+
margin-bottom: 16px;
|
|
1028
|
+
background: var(--bg-surface);
|
|
1029
|
+
border: 1px solid var(--border);
|
|
1030
|
+
border-radius: var(--radius);
|
|
1031
|
+
padding: 16px;
|
|
1032
|
+
}
|
|
1033
|
+
|
|
1034
|
+
.add-server-form .form-row {
|
|
1035
|
+
display: flex;
|
|
1036
|
+
gap: 12px;
|
|
1037
|
+
margin-bottom: 10px;
|
|
1038
|
+
}
|
|
1039
|
+
|
|
1040
|
+
.add-server-form .form-field {
|
|
1041
|
+
flex: 1;
|
|
1042
|
+
display: flex;
|
|
1043
|
+
flex-direction: column;
|
|
1044
|
+
gap: 4px;
|
|
1045
|
+
}
|
|
1046
|
+
|
|
1047
|
+
.add-server-form label {
|
|
1048
|
+
font-size: 12px;
|
|
1049
|
+
font-weight: 500;
|
|
1050
|
+
color: var(--text-muted);
|
|
1051
|
+
}
|
|
1052
|
+
|
|
1053
|
+
.add-server-form input,
|
|
1054
|
+
.add-server-form textarea,
|
|
1055
|
+
.add-server-form select {
|
|
1056
|
+
background: var(--bg-elevated);
|
|
1057
|
+
border: 1px solid var(--border);
|
|
1058
|
+
border-radius: 6px;
|
|
1059
|
+
padding: 7px 10px;
|
|
1060
|
+
font-size: 13px;
|
|
1061
|
+
font-family: var(--font-mono);
|
|
1062
|
+
color: var(--text);
|
|
1063
|
+
}
|
|
1064
|
+
|
|
1065
|
+
.add-server-form input:focus,
|
|
1066
|
+
.add-server-form textarea:focus,
|
|
1067
|
+
.add-server-form select:focus {
|
|
1068
|
+
outline: none;
|
|
1069
|
+
border-color: var(--accent);
|
|
1070
|
+
box-shadow: 0 0 0 2px var(--focus-ring);
|
|
1071
|
+
}
|
|
1072
|
+
|
|
1073
|
+
.btn-submit-server {
|
|
1074
|
+
display: flex;
|
|
1075
|
+
align-items: center;
|
|
1076
|
+
gap: 4px;
|
|
1077
|
+
background: var(--accent);
|
|
1078
|
+
color: #fff;
|
|
1079
|
+
border: none;
|
|
1080
|
+
border-radius: 6px;
|
|
1081
|
+
padding: 7px 16px;
|
|
1082
|
+
font-size: 13px;
|
|
1083
|
+
font-weight: 500;
|
|
1084
|
+
font-family: var(--font-sans);
|
|
1085
|
+
cursor: pointer;
|
|
1086
|
+
}
|
|
1087
|
+
|
|
1088
|
+
.btn-submit-server:hover {
|
|
1089
|
+
background: var(--accent-hover);
|
|
1090
|
+
}
|
|
1091
|
+
|
|
1092
|
+
/* ---------------------------------------------------------------------------
|
|
1093
|
+
Clear errors button
|
|
1094
|
+
--------------------------------------------------------------------------- */
|
|
1095
|
+
|
|
1096
|
+
.btn-clear-errors {
|
|
1097
|
+
background: none;
|
|
1098
|
+
border: none;
|
|
1099
|
+
color: var(--text-dim);
|
|
1100
|
+
cursor: pointer;
|
|
1101
|
+
padding: 0 2px;
|
|
1102
|
+
vertical-align: middle;
|
|
1103
|
+
line-height: 1;
|
|
1104
|
+
}
|
|
1105
|
+
|
|
1106
|
+
.btn-clear-errors:hover {
|
|
1107
|
+
color: var(--red);
|
|
1108
|
+
}
|
|
1109
|
+
|
|
1110
|
+
/* ---------------------------------------------------------------------------
|
|
1111
|
+
Logs tab
|
|
1112
|
+
--------------------------------------------------------------------------- */
|
|
1113
|
+
|
|
1114
|
+
.log-filters {
|
|
1115
|
+
display: flex;
|
|
1116
|
+
gap: 8px;
|
|
1117
|
+
align-items: center;
|
|
1118
|
+
}
|
|
1119
|
+
|
|
1120
|
+
.log-filters select {
|
|
1121
|
+
background: var(--bg-elevated);
|
|
1122
|
+
border: 1px solid var(--border);
|
|
1123
|
+
border-radius: 6px;
|
|
1124
|
+
padding: 5px 10px;
|
|
1125
|
+
font-size: 12px;
|
|
1126
|
+
font-family: var(--font-mono);
|
|
1127
|
+
color: var(--text);
|
|
1128
|
+
}
|
|
1129
|
+
|
|
1130
|
+
.logs-table {
|
|
1131
|
+
width: 100%;
|
|
1132
|
+
border-collapse: collapse;
|
|
1133
|
+
font-size: 12px;
|
|
1134
|
+
font-family: var(--font-mono);
|
|
1135
|
+
}
|
|
1136
|
+
|
|
1137
|
+
.logs-table th {
|
|
1138
|
+
text-align: left;
|
|
1139
|
+
padding: 8px 10px;
|
|
1140
|
+
border-bottom: 2px solid var(--border);
|
|
1141
|
+
font-size: 11px;
|
|
1142
|
+
font-weight: 600;
|
|
1143
|
+
color: var(--text-muted);
|
|
1144
|
+
text-transform: uppercase;
|
|
1145
|
+
letter-spacing: 0.5px;
|
|
1146
|
+
position: sticky;
|
|
1147
|
+
top: 0;
|
|
1148
|
+
background: var(--bg);
|
|
1149
|
+
z-index: 1;
|
|
1150
|
+
}
|
|
1151
|
+
|
|
1152
|
+
.logs-table td {
|
|
1153
|
+
padding: 6px 10px;
|
|
1154
|
+
border-bottom: 1px solid var(--border-light);
|
|
1155
|
+
vertical-align: top;
|
|
1156
|
+
max-width: 300px;
|
|
1157
|
+
word-break: break-word;
|
|
1158
|
+
}
|
|
1159
|
+
|
|
1160
|
+
.log-row {
|
|
1161
|
+
cursor: pointer;
|
|
1162
|
+
}
|
|
1163
|
+
|
|
1164
|
+
.log-row:hover {
|
|
1165
|
+
background: var(--bg-hover);
|
|
1166
|
+
}
|
|
1167
|
+
|
|
1168
|
+
.log-ts {
|
|
1169
|
+
white-space: nowrap;
|
|
1170
|
+
color: var(--text-dim);
|
|
1171
|
+
}
|
|
1172
|
+
|
|
1173
|
+
.log-latency {
|
|
1174
|
+
white-space: nowrap;
|
|
1175
|
+
color: var(--text-muted);
|
|
1176
|
+
}
|
|
1177
|
+
|
|
1178
|
+
.log-badge {
|
|
1179
|
+
display: inline-block;
|
|
1180
|
+
padding: 1px 8px;
|
|
1181
|
+
border-radius: 10px;
|
|
1182
|
+
font-size: 10px;
|
|
1183
|
+
font-weight: 600;
|
|
1184
|
+
text-transform: uppercase;
|
|
1185
|
+
}
|
|
1186
|
+
|
|
1187
|
+
.log-success {
|
|
1188
|
+
background: var(--green-dim);
|
|
1189
|
+
color: var(--green);
|
|
1190
|
+
}
|
|
1191
|
+
|
|
1192
|
+
.log-fail {
|
|
1193
|
+
background: var(--red-dim);
|
|
1194
|
+
color: var(--red);
|
|
1195
|
+
}
|
|
1196
|
+
|
|
1197
|
+
.log-expand {
|
|
1198
|
+
background: var(--bg-surface);
|
|
1199
|
+
}
|
|
1200
|
+
|
|
1201
|
+
.log-expand td {
|
|
1202
|
+
padding: 10px 10px 12px;
|
|
1203
|
+
border-bottom: 2px solid var(--border);
|
|
1204
|
+
}
|
|
1205
|
+
|
|
1206
|
+
.log-expand-content {
|
|
1207
|
+
display: flex;
|
|
1208
|
+
flex-direction: column;
|
|
1209
|
+
gap: 12px;
|
|
1210
|
+
}
|
|
1211
|
+
|
|
1212
|
+
.log-expand-section {
|
|
1213
|
+
min-width: 0;
|
|
1214
|
+
}
|
|
1215
|
+
|
|
1216
|
+
.log-expand-label {
|
|
1217
|
+
font-size: 10px;
|
|
1218
|
+
font-weight: 600;
|
|
1219
|
+
text-transform: uppercase;
|
|
1220
|
+
letter-spacing: 0.5px;
|
|
1221
|
+
color: var(--text-muted);
|
|
1222
|
+
margin-bottom: 4px;
|
|
1223
|
+
font-family: var(--font-sans);
|
|
1224
|
+
}
|
|
1225
|
+
|
|
1226
|
+
.log-expand-section pre {
|
|
1227
|
+
padding: 8px 10px;
|
|
1228
|
+
background: var(--bg-elevated);
|
|
1229
|
+
border: 1px solid var(--border-light);
|
|
1230
|
+
border-radius: 6px;
|
|
1231
|
+
font-size: 11px;
|
|
1232
|
+
max-height: 200px;
|
|
1233
|
+
overflow: auto;
|
|
1234
|
+
white-space: pre-wrap;
|
|
1235
|
+
word-break: break-word;
|
|
1236
|
+
margin: 0;
|
|
1237
|
+
scrollbar-width: thin;
|
|
1238
|
+
scrollbar-color: var(--scrollbar-thumb) transparent;
|
|
1239
|
+
}
|
|
1240
|
+
|
|
1241
|
+
.log-expand-section pre::-webkit-scrollbar {
|
|
1242
|
+
width: 6px;
|
|
1243
|
+
height: 6px;
|
|
1244
|
+
}
|
|
1245
|
+
|
|
1246
|
+
.log-expand-section pre::-webkit-scrollbar-track {
|
|
1247
|
+
background: transparent;
|
|
1248
|
+
}
|
|
1249
|
+
|
|
1250
|
+
.log-expand-section pre::-webkit-scrollbar-thumb {
|
|
1251
|
+
background: var(--scrollbar-thumb);
|
|
1252
|
+
border-radius: 3px;
|
|
1253
|
+
}
|
|
1254
|
+
|
|
1255
|
+
.logs-table-wrap {
|
|
1256
|
+
overflow: auto;
|
|
1257
|
+
scrollbar-width: thin;
|
|
1258
|
+
scrollbar-color: var(--scrollbar-thumb) transparent;
|
|
1259
|
+
}
|
|
1260
|
+
|
|
1261
|
+
.logs-table-wrap::-webkit-scrollbar {
|
|
1262
|
+
width: 6px;
|
|
1263
|
+
height: 6px;
|
|
1264
|
+
}
|
|
1265
|
+
|
|
1266
|
+
.logs-table-wrap::-webkit-scrollbar-track {
|
|
1267
|
+
background: transparent;
|
|
1268
|
+
}
|
|
1269
|
+
|
|
1270
|
+
.logs-table-wrap::-webkit-scrollbar-thumb {
|
|
1271
|
+
background: var(--scrollbar-thumb);
|
|
1272
|
+
border-radius: 3px;
|
|
1273
|
+
}
|
|
1274
|
+
|
|
1275
|
+
.btn-clear-logs {
|
|
1276
|
+
display: flex;
|
|
1277
|
+
align-items: center;
|
|
1278
|
+
gap: 4px;
|
|
1279
|
+
background: none;
|
|
1280
|
+
border: 1px solid var(--border);
|
|
1281
|
+
border-radius: 6px;
|
|
1282
|
+
padding: 4px 10px;
|
|
1283
|
+
font-size: 12px;
|
|
1284
|
+
font-family: var(--font-sans);
|
|
1285
|
+
color: var(--text-muted);
|
|
1286
|
+
cursor: pointer;
|
|
1287
|
+
transition: all 0.15s;
|
|
1288
|
+
}
|
|
1289
|
+
|
|
1290
|
+
.btn-clear-logs:hover {
|
|
1291
|
+
border-color: var(--red);
|
|
1292
|
+
color: var(--red);
|
|
1293
|
+
}
|
package/dist/ui/template.js
CHANGED
|
@@ -21,6 +21,11 @@ AD._template = function () {
|
|
|
21
21
|
'<span class="material-symbols-outlined">explore</span>' +
|
|
22
22
|
'<span>Browse</span>' +
|
|
23
23
|
'</button>' +
|
|
24
|
+
'<button class="nav-item" data-tab="logs">' +
|
|
25
|
+
'<span class="material-symbols-outlined">receipt_long</span>' +
|
|
26
|
+
'<span>Logs</span>' +
|
|
27
|
+
'<span class="badge" id="log-count">0</span>' +
|
|
28
|
+
'</button>' +
|
|
24
29
|
'</nav>' +
|
|
25
30
|
'<div class="sidebar-footer">' +
|
|
26
31
|
'<span class="connection-status" id="conn-status">' +
|
|
@@ -36,6 +41,39 @@ AD._template = function () {
|
|
|
36
41
|
'<section class="tab-panel active" id="tab-installed">' +
|
|
37
42
|
'<div class="panel-header">' +
|
|
38
43
|
'<h2 class="section-title">Servers</h2>' +
|
|
44
|
+
'<button class="btn-add-server" id="add-server-toggle">' +
|
|
45
|
+
'<span class="material-symbols-outlined" style="font-size:16px">add</span>' +
|
|
46
|
+
' Add Server' +
|
|
47
|
+
'</button>' +
|
|
48
|
+
'</div>' +
|
|
49
|
+
'<div id="add-server-panel" class="add-server-panel" style="display:none">' +
|
|
50
|
+
'<div class="add-server-form">' +
|
|
51
|
+
'<div class="form-row">' +
|
|
52
|
+
'<div class="form-field"><label>Name</label><input type="text" id="add-name" placeholder="my-server" /></div>' +
|
|
53
|
+
'<div class="form-field"><label>Transport</label>' +
|
|
54
|
+
'<select id="add-transport"><option value="stdio">Local (stdio)</option><option value="streamable-http">Remote URL</option></select>' +
|
|
55
|
+
'</div>' +
|
|
56
|
+
'</div>' +
|
|
57
|
+
'<div class="form-row" id="add-stdio-fields">' +
|
|
58
|
+
'<div class="form-field"><label>Command</label><input type="text" id="add-command" placeholder="npx" /></div>' +
|
|
59
|
+
'<div class="form-field" style="flex:2"><label>Args (comma-separated)</label><input type="text" id="add-args" placeholder="-y, @some/package" /></div>' +
|
|
60
|
+
'</div>' +
|
|
61
|
+
'<div class="form-row" id="add-url-fields" style="display:none">' +
|
|
62
|
+
'<div class="form-field" style="flex:2"><label>URL</label><input type="text" id="add-url" placeholder="https://example.com/mcp" /></div>' +
|
|
63
|
+
'</div>' +
|
|
64
|
+
'<div class="form-row">' +
|
|
65
|
+
'<div class="form-field" style="flex:2"><label>Description</label><input type="text" id="add-desc" placeholder="Optional description" /></div>' +
|
|
66
|
+
'</div>' +
|
|
67
|
+
'<div class="form-row">' +
|
|
68
|
+
'<div class="form-field"><label>Env vars (KEY=VALUE per line)</label><textarea id="add-env" rows="2" placeholder="API_KEY=secret"></textarea></div>' +
|
|
69
|
+
'<div class="form-field"><label>Tags (comma-separated)</label><input type="text" id="add-tags" placeholder="odoo, remote" /></div>' +
|
|
70
|
+
'</div>' +
|
|
71
|
+
'<div class="form-row">' +
|
|
72
|
+
'<button class="btn-submit-server" data-action="submit-add-server">' +
|
|
73
|
+
'<span class="material-symbols-outlined" style="font-size:14px">save</span> Register' +
|
|
74
|
+
'</button>' +
|
|
75
|
+
'</div>' +
|
|
76
|
+
'</div>' +
|
|
39
77
|
'</div>' +
|
|
40
78
|
'<div id="installed-list" class="server-grid">' +
|
|
41
79
|
'<div class="empty-state">' +
|
|
@@ -61,6 +99,23 @@ AD._template = function () {
|
|
|
61
99
|
'</div>' +
|
|
62
100
|
'</div>' +
|
|
63
101
|
'</section>' +
|
|
102
|
+
'<section class="tab-panel" id="tab-logs">' +
|
|
103
|
+
'<div class="panel-header">' +
|
|
104
|
+
'<h2 class="section-title">Call Logs</h2>' +
|
|
105
|
+
'<div class="log-filters">' +
|
|
106
|
+
'<select id="log-filter-server"><option value="">All servers</option></select>' +
|
|
107
|
+
'<select id="log-filter-status"><option value="">All</option><option value="success">Success</option><option value="fail">Failed</option></select>' +
|
|
108
|
+
'<button class="btn-clear-logs" data-action="clear-logs"><span class="material-symbols-outlined" style="font-size:14px">delete_sweep</span> Clear All</button>' +
|
|
109
|
+
'</div>' +
|
|
110
|
+
'</div>' +
|
|
111
|
+
'<div id="logs-list" class="logs-table-wrap">' +
|
|
112
|
+
'<div class="empty-state">' +
|
|
113
|
+
'<span class="material-symbols-outlined empty-icon">receipt_long</span>' +
|
|
114
|
+
'<p>No tool calls logged yet</p>' +
|
|
115
|
+
'<p class="hint">Logs appear when proxied tools are called</p>' +
|
|
116
|
+
'</div>' +
|
|
117
|
+
'</div>' +
|
|
118
|
+
'</section>' +
|
|
64
119
|
'</main>' +
|
|
65
120
|
'</div>'
|
|
66
121
|
);
|
package/package.json
CHANGED