@mcp-z/cli 1.0.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/LICENSE +21 -0
- package/README.md +166 -0
- package/bin/cli.js +5 -0
- package/dist/cjs/cli.d.cts +1 -0
- package/dist/cjs/cli.d.ts +1 -0
- package/dist/cjs/cli.js +576 -0
- package/dist/cjs/cli.js.map +1 -0
- package/dist/cjs/commands/call-tool.d.cts +26 -0
- package/dist/cjs/commands/call-tool.d.ts +26 -0
- package/dist/cjs/commands/call-tool.js +362 -0
- package/dist/cjs/commands/call-tool.js.map +1 -0
- package/dist/cjs/commands/get-prompt.d.cts +26 -0
- package/dist/cjs/commands/get-prompt.d.ts +26 -0
- package/dist/cjs/commands/get-prompt.js +335 -0
- package/dist/cjs/commands/get-prompt.js.map +1 -0
- package/dist/cjs/commands/inspect.d.cts +35 -0
- package/dist/cjs/commands/inspect.d.ts +35 -0
- package/dist/cjs/commands/inspect.js +896 -0
- package/dist/cjs/commands/inspect.js.map +1 -0
- package/dist/cjs/commands/manifest/env-prompting.d.cts +21 -0
- package/dist/cjs/commands/manifest/env-prompting.d.ts +21 -0
- package/dist/cjs/commands/manifest/env-prompting.js +657 -0
- package/dist/cjs/commands/manifest/env-prompting.js.map +1 -0
- package/dist/cjs/commands/manifest/generate.d.cts +124 -0
- package/dist/cjs/commands/manifest/generate.d.ts +124 -0
- package/dist/cjs/commands/manifest/generate.js +2541 -0
- package/dist/cjs/commands/manifest/generate.js.map +1 -0
- package/dist/cjs/commands/manifest/index.d.cts +2 -0
- package/dist/cjs/commands/manifest/index.d.ts +2 -0
- package/dist/cjs/commands/manifest/index.js +229 -0
- package/dist/cjs/commands/manifest/index.js.map +1 -0
- package/dist/cjs/commands/manifest/metadata-reader.d.cts +71 -0
- package/dist/cjs/commands/manifest/metadata-reader.d.ts +71 -0
- package/dist/cjs/commands/manifest/metadata-reader.js +441 -0
- package/dist/cjs/commands/manifest/metadata-reader.js.map +1 -0
- package/dist/cjs/commands/manifest/validate.d.cts +1 -0
- package/dist/cjs/commands/manifest/validate.d.ts +1 -0
- package/dist/cjs/commands/manifest/validate.js +525 -0
- package/dist/cjs/commands/manifest/validate.js.map +1 -0
- package/dist/cjs/commands/read-resource.d.cts +24 -0
- package/dist/cjs/commands/read-resource.d.ts +24 -0
- package/dist/cjs/commands/read-resource.js +311 -0
- package/dist/cjs/commands/read-resource.js.map +1 -0
- package/dist/cjs/commands/search.d.cts +31 -0
- package/dist/cjs/commands/search.d.ts +31 -0
- package/dist/cjs/commands/search.js +464 -0
- package/dist/cjs/commands/search.js.map +1 -0
- package/dist/cjs/commands/up.d.cts +49 -0
- package/dist/cjs/commands/up.d.ts +49 -0
- package/dist/cjs/commands/up.js +235 -0
- package/dist/cjs/commands/up.js.map +1 -0
- package/dist/cjs/index.d.cts +7 -0
- package/dist/cjs/index.d.ts +7 -0
- package/dist/cjs/index.js +85 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/lib/find-config.d.cts +14 -0
- package/dist/cjs/lib/find-config.d.ts +14 -0
- package/dist/cjs/lib/find-config.js +93 -0
- package/dist/cjs/lib/find-config.js.map +1 -0
- package/dist/cjs/lib/json-schema.d.cts +18 -0
- package/dist/cjs/lib/json-schema.d.ts +18 -0
- package/dist/cjs/lib/json-schema.js +306 -0
- package/dist/cjs/lib/json-schema.js.map +1 -0
- package/dist/cjs/lib/resolve-server-config.d.cts +50 -0
- package/dist/cjs/lib/resolve-server-config.d.ts +50 -0
- package/dist/cjs/lib/resolve-server-config.js +214 -0
- package/dist/cjs/lib/resolve-server-config.js.map +1 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/types.d.cts +21 -0
- package/dist/cjs/types.d.ts +21 -0
- package/dist/cjs/types.js +32 -0
- package/dist/cjs/types.js.map +1 -0
- package/dist/esm/cli.d.ts +1 -0
- package/dist/esm/cli.js +129 -0
- package/dist/esm/cli.js.map +1 -0
- package/dist/esm/commands/call-tool.d.ts +26 -0
- package/dist/esm/commands/call-tool.js +151 -0
- package/dist/esm/commands/call-tool.js.map +1 -0
- package/dist/esm/commands/get-prompt.d.ts +26 -0
- package/dist/esm/commands/get-prompt.js +118 -0
- package/dist/esm/commands/get-prompt.js.map +1 -0
- package/dist/esm/commands/inspect.d.ts +35 -0
- package/dist/esm/commands/inspect.js +438 -0
- package/dist/esm/commands/inspect.js.map +1 -0
- package/dist/esm/commands/manifest/env-prompting.d.ts +21 -0
- package/dist/esm/commands/manifest/env-prompting.js +213 -0
- package/dist/esm/commands/manifest/env-prompting.js.map +1 -0
- package/dist/esm/commands/manifest/generate.d.ts +124 -0
- package/dist/esm/commands/manifest/generate.js +1087 -0
- package/dist/esm/commands/manifest/generate.js.map +1 -0
- package/dist/esm/commands/manifest/index.d.ts +2 -0
- package/dist/esm/commands/manifest/index.js +23 -0
- package/dist/esm/commands/manifest/index.js.map +1 -0
- package/dist/esm/commands/manifest/metadata-reader.d.ts +71 -0
- package/dist/esm/commands/manifest/metadata-reader.js +143 -0
- package/dist/esm/commands/manifest/metadata-reader.js.map +1 -0
- package/dist/esm/commands/manifest/validate.d.ts +1 -0
- package/dist/esm/commands/manifest/validate.js +167 -0
- package/dist/esm/commands/manifest/validate.js.map +1 -0
- package/dist/esm/commands/read-resource.d.ts +24 -0
- package/dist/esm/commands/read-resource.js +95 -0
- package/dist/esm/commands/read-resource.js.map +1 -0
- package/dist/esm/commands/search.d.ts +31 -0
- package/dist/esm/commands/search.js +145 -0
- package/dist/esm/commands/search.js.map +1 -0
- package/dist/esm/commands/up.d.ts +49 -0
- package/dist/esm/commands/up.js +74 -0
- package/dist/esm/commands/up.js.map +1 -0
- package/dist/esm/index.d.ts +7 -0
- package/dist/esm/index.js +11 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/lib/find-config.d.ts +14 -0
- package/dist/esm/lib/find-config.js +42 -0
- package/dist/esm/lib/find-config.js.map +1 -0
- package/dist/esm/lib/json-schema.d.ts +18 -0
- package/dist/esm/lib/json-schema.js +66 -0
- package/dist/esm/lib/json-schema.js.map +1 -0
- package/dist/esm/lib/resolve-server-config.d.ts +50 -0
- package/dist/esm/lib/resolve-server-config.js +154 -0
- package/dist/esm/lib/resolve-server-config.js.map +1 -0
- package/dist/esm/package.json +1 -0
- package/dist/esm/types.d.ts +21 -0
- package/dist/esm/types.js +11 -0
- package/dist/esm/types.js.map +1 -0
- package/package.json +99 -0
- package/schemas/server.schema.json +489 -0
|
@@ -0,0 +1,896 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* inspect.ts
|
|
3
|
+
*
|
|
4
|
+
* Inspect MCP servers: explore tools, resources, prompts, and health status.
|
|
5
|
+
* Supports stdio (spawned) and http (remote) servers per MCP spec.
|
|
6
|
+
*/ "use strict";
|
|
7
|
+
Object.defineProperty(exports, "__esModule", {
|
|
8
|
+
value: true
|
|
9
|
+
});
|
|
10
|
+
Object.defineProperty(exports, "inspectCommand", {
|
|
11
|
+
enumerable: true,
|
|
12
|
+
get: function() {
|
|
13
|
+
return inspectCommand;
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
var _client = require("@mcp-z/client");
|
|
17
|
+
var _fs = /*#__PURE__*/ _interop_require_wildcard(require("fs"));
|
|
18
|
+
var _path = /*#__PURE__*/ _interop_require_wildcard(require("path"));
|
|
19
|
+
var _findconfigts = require("../lib/find-config.js");
|
|
20
|
+
var _typests = require("../types.js");
|
|
21
|
+
function _array_like_to_array(arr, len) {
|
|
22
|
+
if (len == null || len > arr.length) len = arr.length;
|
|
23
|
+
for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
|
|
24
|
+
return arr2;
|
|
25
|
+
}
|
|
26
|
+
function _array_with_holes(arr) {
|
|
27
|
+
if (Array.isArray(arr)) return arr;
|
|
28
|
+
}
|
|
29
|
+
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
|
|
30
|
+
try {
|
|
31
|
+
var info = gen[key](arg);
|
|
32
|
+
var value = info.value;
|
|
33
|
+
} catch (error) {
|
|
34
|
+
reject(error);
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
if (info.done) {
|
|
38
|
+
resolve(value);
|
|
39
|
+
} else {
|
|
40
|
+
Promise.resolve(value).then(_next, _throw);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
function _async_to_generator(fn) {
|
|
44
|
+
return function() {
|
|
45
|
+
var self = this, args = arguments;
|
|
46
|
+
return new Promise(function(resolve, reject) {
|
|
47
|
+
var gen = fn.apply(self, args);
|
|
48
|
+
function _next(value) {
|
|
49
|
+
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
|
|
50
|
+
}
|
|
51
|
+
function _throw(err) {
|
|
52
|
+
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
|
|
53
|
+
}
|
|
54
|
+
_next(undefined);
|
|
55
|
+
});
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
function _instanceof(left, right) {
|
|
59
|
+
if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) {
|
|
60
|
+
return !!right[Symbol.hasInstance](left);
|
|
61
|
+
} else {
|
|
62
|
+
return left instanceof right;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
function _getRequireWildcardCache(nodeInterop) {
|
|
66
|
+
if (typeof WeakMap !== "function") return null;
|
|
67
|
+
var cacheBabelInterop = new WeakMap();
|
|
68
|
+
var cacheNodeInterop = new WeakMap();
|
|
69
|
+
return (_getRequireWildcardCache = function(nodeInterop) {
|
|
70
|
+
return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
|
|
71
|
+
})(nodeInterop);
|
|
72
|
+
}
|
|
73
|
+
function _interop_require_wildcard(obj, nodeInterop) {
|
|
74
|
+
if (!nodeInterop && obj && obj.__esModule) {
|
|
75
|
+
return obj;
|
|
76
|
+
}
|
|
77
|
+
if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
|
|
78
|
+
return {
|
|
79
|
+
default: obj
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
var cache = _getRequireWildcardCache(nodeInterop);
|
|
83
|
+
if (cache && cache.has(obj)) {
|
|
84
|
+
return cache.get(obj);
|
|
85
|
+
}
|
|
86
|
+
var newObj = {
|
|
87
|
+
__proto__: null
|
|
88
|
+
};
|
|
89
|
+
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
90
|
+
for(var key in obj){
|
|
91
|
+
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
92
|
+
var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
|
|
93
|
+
if (desc && (desc.get || desc.set)) {
|
|
94
|
+
Object.defineProperty(newObj, key, desc);
|
|
95
|
+
} else {
|
|
96
|
+
newObj[key] = obj[key];
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
newObj.default = obj;
|
|
101
|
+
if (cache) {
|
|
102
|
+
cache.set(obj, newObj);
|
|
103
|
+
}
|
|
104
|
+
return newObj;
|
|
105
|
+
}
|
|
106
|
+
function _iterable_to_array_limit(arr, i) {
|
|
107
|
+
var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
|
|
108
|
+
if (_i == null) return;
|
|
109
|
+
var _arr = [];
|
|
110
|
+
var _n = true;
|
|
111
|
+
var _d = false;
|
|
112
|
+
var _s, _e;
|
|
113
|
+
try {
|
|
114
|
+
for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){
|
|
115
|
+
_arr.push(_s.value);
|
|
116
|
+
if (i && _arr.length === i) break;
|
|
117
|
+
}
|
|
118
|
+
} catch (err) {
|
|
119
|
+
_d = true;
|
|
120
|
+
_e = err;
|
|
121
|
+
} finally{
|
|
122
|
+
try {
|
|
123
|
+
if (!_n && _i["return"] != null) _i["return"]();
|
|
124
|
+
} finally{
|
|
125
|
+
if (_d) throw _e;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
return _arr;
|
|
129
|
+
}
|
|
130
|
+
function _non_iterable_rest() {
|
|
131
|
+
throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
132
|
+
}
|
|
133
|
+
function _sliced_to_array(arr, i) {
|
|
134
|
+
return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();
|
|
135
|
+
}
|
|
136
|
+
function _unsupported_iterable_to_array(o, minLen) {
|
|
137
|
+
if (!o) return;
|
|
138
|
+
if (typeof o === "string") return _array_like_to_array(o, minLen);
|
|
139
|
+
var n = Object.prototype.toString.call(o).slice(8, -1);
|
|
140
|
+
if (n === "Object" && o.constructor) n = o.constructor.name;
|
|
141
|
+
if (n === "Map" || n === "Set") return Array.from(n);
|
|
142
|
+
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
|
|
143
|
+
}
|
|
144
|
+
function _ts_generator(thisArg, body) {
|
|
145
|
+
var f, y, t, _ = {
|
|
146
|
+
label: 0,
|
|
147
|
+
sent: function() {
|
|
148
|
+
if (t[0] & 1) throw t[1];
|
|
149
|
+
return t[1];
|
|
150
|
+
},
|
|
151
|
+
trys: [],
|
|
152
|
+
ops: []
|
|
153
|
+
}, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype), d = Object.defineProperty;
|
|
154
|
+
return d(g, "next", {
|
|
155
|
+
value: verb(0)
|
|
156
|
+
}), d(g, "throw", {
|
|
157
|
+
value: verb(1)
|
|
158
|
+
}), d(g, "return", {
|
|
159
|
+
value: verb(2)
|
|
160
|
+
}), typeof Symbol === "function" && d(g, Symbol.iterator, {
|
|
161
|
+
value: function() {
|
|
162
|
+
return this;
|
|
163
|
+
}
|
|
164
|
+
}), g;
|
|
165
|
+
function verb(n) {
|
|
166
|
+
return function(v) {
|
|
167
|
+
return step([
|
|
168
|
+
n,
|
|
169
|
+
v
|
|
170
|
+
]);
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
function step(op) {
|
|
174
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
175
|
+
while(g && (g = 0, op[0] && (_ = 0)), _)try {
|
|
176
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
177
|
+
if (y = 0, t) op = [
|
|
178
|
+
op[0] & 2,
|
|
179
|
+
t.value
|
|
180
|
+
];
|
|
181
|
+
switch(op[0]){
|
|
182
|
+
case 0:
|
|
183
|
+
case 1:
|
|
184
|
+
t = op;
|
|
185
|
+
break;
|
|
186
|
+
case 4:
|
|
187
|
+
_.label++;
|
|
188
|
+
return {
|
|
189
|
+
value: op[1],
|
|
190
|
+
done: false
|
|
191
|
+
};
|
|
192
|
+
case 5:
|
|
193
|
+
_.label++;
|
|
194
|
+
y = op[1];
|
|
195
|
+
op = [
|
|
196
|
+
0
|
|
197
|
+
];
|
|
198
|
+
continue;
|
|
199
|
+
case 7:
|
|
200
|
+
op = _.ops.pop();
|
|
201
|
+
_.trys.pop();
|
|
202
|
+
continue;
|
|
203
|
+
default:
|
|
204
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
|
|
205
|
+
_ = 0;
|
|
206
|
+
continue;
|
|
207
|
+
}
|
|
208
|
+
if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
|
|
209
|
+
_.label = op[1];
|
|
210
|
+
break;
|
|
211
|
+
}
|
|
212
|
+
if (op[0] === 6 && _.label < t[1]) {
|
|
213
|
+
_.label = t[1];
|
|
214
|
+
t = op;
|
|
215
|
+
break;
|
|
216
|
+
}
|
|
217
|
+
if (t && _.label < t[2]) {
|
|
218
|
+
_.label = t[2];
|
|
219
|
+
_.ops.push(op);
|
|
220
|
+
break;
|
|
221
|
+
}
|
|
222
|
+
if (t[2]) _.ops.pop();
|
|
223
|
+
_.trys.pop();
|
|
224
|
+
continue;
|
|
225
|
+
}
|
|
226
|
+
op = body.call(thisArg, _);
|
|
227
|
+
} catch (e) {
|
|
228
|
+
op = [
|
|
229
|
+
6,
|
|
230
|
+
e
|
|
231
|
+
];
|
|
232
|
+
y = 0;
|
|
233
|
+
} finally{
|
|
234
|
+
f = t = 0;
|
|
235
|
+
}
|
|
236
|
+
if (op[0] & 5) throw op[1];
|
|
237
|
+
return {
|
|
238
|
+
value: op[0] ? op[1] : void 0,
|
|
239
|
+
done: true
|
|
240
|
+
};
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
var MAX_DESCRIPTION = 100;
|
|
244
|
+
function inspectCommand() {
|
|
245
|
+
return _async_to_generator(function() {
|
|
246
|
+
var opts, registry, _ref, _raw_mcpServers, configPath, raw, servers, configDir, serverNames, serversToInspect, serverInfos, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, serverName, info, err, _;
|
|
247
|
+
var _arguments = arguments;
|
|
248
|
+
return _ts_generator(this, function(_state) {
|
|
249
|
+
switch(_state.label){
|
|
250
|
+
case 0:
|
|
251
|
+
opts = _arguments.length > 0 && _arguments[0] !== void 0 ? _arguments[0] : {};
|
|
252
|
+
_state.label = 1;
|
|
253
|
+
case 1:
|
|
254
|
+
_state.trys.push([
|
|
255
|
+
1,
|
|
256
|
+
,
|
|
257
|
+
10,
|
|
258
|
+
15
|
|
259
|
+
]);
|
|
260
|
+
configPath = (0, _findconfigts.findConfigPath)(opts.config);
|
|
261
|
+
raw = JSON.parse(_fs.readFileSync(configPath, 'utf8'));
|
|
262
|
+
servers = (_ref = (_raw_mcpServers = raw.mcpServers) !== null && _raw_mcpServers !== void 0 ? _raw_mcpServers : raw.servers) !== null && _ref !== void 0 ? _ref : raw;
|
|
263
|
+
configDir = _path.dirname(configPath);
|
|
264
|
+
serverNames = Object.keys(servers || {});
|
|
265
|
+
serversToInspect = filterServers(serverNames, opts.servers);
|
|
266
|
+
// Create registry (spawns stdio servers, registers HTTP servers)
|
|
267
|
+
// In attach mode, don't spawn - just register for connection
|
|
268
|
+
registry = (0, _client.createServerRegistry)(servers, {
|
|
269
|
+
cwd: configDir,
|
|
270
|
+
dialects: opts.attach ? [] : [
|
|
271
|
+
'servers',
|
|
272
|
+
'start'
|
|
273
|
+
]
|
|
274
|
+
});
|
|
275
|
+
serverInfos = [];
|
|
276
|
+
_iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
|
|
277
|
+
_state.label = 2;
|
|
278
|
+
case 2:
|
|
279
|
+
_state.trys.push([
|
|
280
|
+
2,
|
|
281
|
+
7,
|
|
282
|
+
8,
|
|
283
|
+
9
|
|
284
|
+
]);
|
|
285
|
+
_iterator = serversToInspect[Symbol.iterator]();
|
|
286
|
+
_state.label = 3;
|
|
287
|
+
case 3:
|
|
288
|
+
if (!!(_iteratorNormalCompletion = (_step = _iterator.next()).done)) return [
|
|
289
|
+
3,
|
|
290
|
+
6
|
|
291
|
+
];
|
|
292
|
+
serverName = _step.value;
|
|
293
|
+
return [
|
|
294
|
+
4,
|
|
295
|
+
inspectServer(serverName, servers, registry, opts)
|
|
296
|
+
];
|
|
297
|
+
case 4:
|
|
298
|
+
info = _state.sent();
|
|
299
|
+
serverInfos.push(info);
|
|
300
|
+
_state.label = 5;
|
|
301
|
+
case 5:
|
|
302
|
+
_iteratorNormalCompletion = true;
|
|
303
|
+
return [
|
|
304
|
+
3,
|
|
305
|
+
3
|
|
306
|
+
];
|
|
307
|
+
case 6:
|
|
308
|
+
return [
|
|
309
|
+
3,
|
|
310
|
+
9
|
|
311
|
+
];
|
|
312
|
+
case 7:
|
|
313
|
+
err = _state.sent();
|
|
314
|
+
_didIteratorError = true;
|
|
315
|
+
_iteratorError = err;
|
|
316
|
+
return [
|
|
317
|
+
3,
|
|
318
|
+
9
|
|
319
|
+
];
|
|
320
|
+
case 8:
|
|
321
|
+
try {
|
|
322
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
323
|
+
_iterator.return();
|
|
324
|
+
}
|
|
325
|
+
} finally{
|
|
326
|
+
if (_didIteratorError) {
|
|
327
|
+
throw _iteratorError;
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
return [
|
|
331
|
+
7
|
|
332
|
+
];
|
|
333
|
+
case 9:
|
|
334
|
+
// 5. Output results
|
|
335
|
+
if (opts.json) {
|
|
336
|
+
outputJSON(serverInfos);
|
|
337
|
+
} else {
|
|
338
|
+
outputPretty(serverInfos, opts);
|
|
339
|
+
}
|
|
340
|
+
return [
|
|
341
|
+
3,
|
|
342
|
+
15
|
|
343
|
+
];
|
|
344
|
+
case 10:
|
|
345
|
+
if (!registry) return [
|
|
346
|
+
3,
|
|
347
|
+
14
|
|
348
|
+
];
|
|
349
|
+
_state.label = 11;
|
|
350
|
+
case 11:
|
|
351
|
+
_state.trys.push([
|
|
352
|
+
11,
|
|
353
|
+
13,
|
|
354
|
+
,
|
|
355
|
+
14
|
|
356
|
+
]);
|
|
357
|
+
return [
|
|
358
|
+
4,
|
|
359
|
+
registry.close()
|
|
360
|
+
];
|
|
361
|
+
case 12:
|
|
362
|
+
_state.sent();
|
|
363
|
+
return [
|
|
364
|
+
3,
|
|
365
|
+
14
|
|
366
|
+
];
|
|
367
|
+
case 13:
|
|
368
|
+
_ = _state.sent();
|
|
369
|
+
return [
|
|
370
|
+
3,
|
|
371
|
+
14
|
|
372
|
+
];
|
|
373
|
+
case 14:
|
|
374
|
+
return [
|
|
375
|
+
7
|
|
376
|
+
];
|
|
377
|
+
case 15:
|
|
378
|
+
return [
|
|
379
|
+
2
|
|
380
|
+
];
|
|
381
|
+
}
|
|
382
|
+
});
|
|
383
|
+
}).apply(this, arguments);
|
|
384
|
+
}
|
|
385
|
+
/**
|
|
386
|
+
* Filter servers based on --servers flag.
|
|
387
|
+
*/ function filterServers(allServers, serversFlag) {
|
|
388
|
+
if (!serversFlag) {
|
|
389
|
+
return allServers;
|
|
390
|
+
}
|
|
391
|
+
var requested = serversFlag.split(',').map(function(s) {
|
|
392
|
+
return s.trim();
|
|
393
|
+
});
|
|
394
|
+
var missing = requested.filter(function(s) {
|
|
395
|
+
return !allServers.includes(s);
|
|
396
|
+
});
|
|
397
|
+
if (missing.length > 0) {
|
|
398
|
+
throw new Error("Server(s) not found in config: ".concat(missing.join(', '), "\n\nAvailable servers: ").concat(allServers.join(', ')));
|
|
399
|
+
}
|
|
400
|
+
return requested;
|
|
401
|
+
}
|
|
402
|
+
/**
|
|
403
|
+
* Inspect a single server: collect tools, resources, prompts, health.
|
|
404
|
+
*/ function inspectServer(serverName, servers, registry, opts) {
|
|
405
|
+
return _async_to_generator(function() {
|
|
406
|
+
var start, serverConfig, client, needsTools, needsResources, needsPrompts, _ref, toolsResult, resourcesResult, promptsResult, startupTime, error, errorMessage, cause, serverConfig1, url;
|
|
407
|
+
return _ts_generator(this, function(_state) {
|
|
408
|
+
switch(_state.label){
|
|
409
|
+
case 0:
|
|
410
|
+
start = Date.now();
|
|
411
|
+
_state.label = 1;
|
|
412
|
+
case 1:
|
|
413
|
+
_state.trys.push([
|
|
414
|
+
1,
|
|
415
|
+
4,
|
|
416
|
+
,
|
|
417
|
+
5
|
|
418
|
+
]);
|
|
419
|
+
// Connect to server via registry
|
|
420
|
+
serverConfig = servers === null || servers === void 0 ? void 0 : servers[serverName];
|
|
421
|
+
if (!serverConfig) {
|
|
422
|
+
throw new Error("Server ".concat(serverName, " not found in config"));
|
|
423
|
+
}
|
|
424
|
+
if (!(0, _typests.isHttpServer)(serverConfig) && !serverConfig.command) {
|
|
425
|
+
throw new Error("Stdio server ".concat(serverName, ' missing required "command" field'));
|
|
426
|
+
}
|
|
427
|
+
return [
|
|
428
|
+
4,
|
|
429
|
+
registry.connect(serverName)
|
|
430
|
+
];
|
|
431
|
+
case 2:
|
|
432
|
+
client = _state.sent();
|
|
433
|
+
// Collect content based on flags
|
|
434
|
+
needsTools = opts.tools || shouldShowSummary(opts);
|
|
435
|
+
needsResources = opts.resources || shouldShowSummary(opts);
|
|
436
|
+
needsPrompts = opts.prompts || shouldShowSummary(opts);
|
|
437
|
+
return [
|
|
438
|
+
4,
|
|
439
|
+
Promise.all([
|
|
440
|
+
needsTools ? client.listTools().catch(function() {
|
|
441
|
+
return null;
|
|
442
|
+
}) : Promise.resolve(null),
|
|
443
|
+
needsResources ? client.listResources().catch(function() {
|
|
444
|
+
return null;
|
|
445
|
+
}) : Promise.resolve(null),
|
|
446
|
+
needsPrompts ? client.listPrompts().catch(function() {
|
|
447
|
+
return null;
|
|
448
|
+
}) : Promise.resolve(null)
|
|
449
|
+
])
|
|
450
|
+
];
|
|
451
|
+
case 3:
|
|
452
|
+
_ref = _sliced_to_array.apply(void 0, [
|
|
453
|
+
_state.sent(),
|
|
454
|
+
3
|
|
455
|
+
]), toolsResult = _ref[0], resourcesResult = _ref[1], promptsResult = _ref[2];
|
|
456
|
+
startupTime = Date.now() - start;
|
|
457
|
+
return [
|
|
458
|
+
2,
|
|
459
|
+
{
|
|
460
|
+
name: serverName,
|
|
461
|
+
status: 'ready',
|
|
462
|
+
startupTime: startupTime,
|
|
463
|
+
error: undefined,
|
|
464
|
+
tools: (toolsResult === null || toolsResult === void 0 ? void 0 : toolsResult.tools) ? toolsResult.tools.map(function(t) {
|
|
465
|
+
return {
|
|
466
|
+
name: t.name,
|
|
467
|
+
description: t.description,
|
|
468
|
+
inputSchema: t.inputSchema
|
|
469
|
+
};
|
|
470
|
+
}) : undefined,
|
|
471
|
+
resources: (resourcesResult === null || resourcesResult === void 0 ? void 0 : resourcesResult.resources) ? resourcesResult.resources.map(function(r) {
|
|
472
|
+
return {
|
|
473
|
+
uri: r.uri,
|
|
474
|
+
name: r.name,
|
|
475
|
+
description: r.description,
|
|
476
|
+
mimeType: r.mimeType
|
|
477
|
+
};
|
|
478
|
+
}) : undefined,
|
|
479
|
+
prompts: (promptsResult === null || promptsResult === void 0 ? void 0 : promptsResult.prompts) ? promptsResult.prompts.map(function(p) {
|
|
480
|
+
return {
|
|
481
|
+
name: p.name,
|
|
482
|
+
description: p.description,
|
|
483
|
+
arguments: p.arguments
|
|
484
|
+
};
|
|
485
|
+
}) : undefined
|
|
486
|
+
}
|
|
487
|
+
];
|
|
488
|
+
case 4:
|
|
489
|
+
error = _state.sent();
|
|
490
|
+
// Format error message with context
|
|
491
|
+
errorMessage = _instanceof(error, Error) ? error.message : String(error);
|
|
492
|
+
// For fetch errors, dig into the cause for more details
|
|
493
|
+
if (_instanceof(error, Error) && error.message === 'fetch failed' && 'cause' in error) {
|
|
494
|
+
cause = error.cause;
|
|
495
|
+
if ((cause === null || cause === void 0 ? void 0 : cause.code) === 'ECONNREFUSED') {
|
|
496
|
+
serverConfig1 = servers === null || servers === void 0 ? void 0 : servers[serverName];
|
|
497
|
+
url = serverConfig1 && 'url' in serverConfig1 ? serverConfig1.url : undefined;
|
|
498
|
+
errorMessage = url ? "Connection refused (server not running at ".concat(url, ")") : 'Connection refused (server not running)';
|
|
499
|
+
} else if (cause === null || cause === void 0 ? void 0 : cause.message) {
|
|
500
|
+
errorMessage = "".concat(error.message, ": ").concat(cause.message);
|
|
501
|
+
}
|
|
502
|
+
}
|
|
503
|
+
return [
|
|
504
|
+
2,
|
|
505
|
+
{
|
|
506
|
+
name: serverName,
|
|
507
|
+
status: 'failed',
|
|
508
|
+
startupTime: undefined,
|
|
509
|
+
error: errorMessage,
|
|
510
|
+
tools: undefined,
|
|
511
|
+
resources: undefined,
|
|
512
|
+
prompts: undefined
|
|
513
|
+
}
|
|
514
|
+
];
|
|
515
|
+
case 5:
|
|
516
|
+
return [
|
|
517
|
+
2
|
|
518
|
+
];
|
|
519
|
+
}
|
|
520
|
+
});
|
|
521
|
+
})();
|
|
522
|
+
}
|
|
523
|
+
/**
|
|
524
|
+
* Determine if we should show summary (no specific content flags).
|
|
525
|
+
*/ function shouldShowSummary(opts) {
|
|
526
|
+
return !opts.tools && !opts.resources && !opts.prompts && !opts.health;
|
|
527
|
+
}
|
|
528
|
+
/**
|
|
529
|
+
* Truncate description to max length with ellipsis.
|
|
530
|
+
*/ function truncateDescription(desc) {
|
|
531
|
+
var _maxLength = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : MAX_DESCRIPTION;
|
|
532
|
+
return desc;
|
|
533
|
+
// if (!desc || desc.length <= maxLength) {
|
|
534
|
+
// return desc;
|
|
535
|
+
// }
|
|
536
|
+
// return `${desc.slice(0, maxLength - 3)}...`;
|
|
537
|
+
}
|
|
538
|
+
/**
|
|
539
|
+
* Render verbose details for a tool (parameters with types and descriptions)
|
|
540
|
+
*/ function renderToolVerbose(tool, indent) {
|
|
541
|
+
// Description is already shown inline, so skip it here
|
|
542
|
+
var schema = tool.inputSchema;
|
|
543
|
+
if (!schema || !schema.properties) {
|
|
544
|
+
return;
|
|
545
|
+
}
|
|
546
|
+
var properties = schema.properties;
|
|
547
|
+
var required = schema.required || [];
|
|
548
|
+
// Separate required and optional parameters
|
|
549
|
+
var requiredParams = [];
|
|
550
|
+
var optionalParams = [];
|
|
551
|
+
var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
|
|
552
|
+
try {
|
|
553
|
+
for(var _iterator = Object.entries(properties)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
|
|
554
|
+
var _step_value = _sliced_to_array(_step.value, 2), name = _step_value[0], _prop = _step_value[1];
|
|
555
|
+
if (required.includes(name)) {
|
|
556
|
+
requiredParams.push(name);
|
|
557
|
+
} else {
|
|
558
|
+
optionalParams.push(name);
|
|
559
|
+
}
|
|
560
|
+
}
|
|
561
|
+
} catch (err) {
|
|
562
|
+
_didIteratorError = true;
|
|
563
|
+
_iteratorError = err;
|
|
564
|
+
} finally{
|
|
565
|
+
try {
|
|
566
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
567
|
+
_iterator.return();
|
|
568
|
+
}
|
|
569
|
+
} finally{
|
|
570
|
+
if (_didIteratorError) {
|
|
571
|
+
throw _iteratorError;
|
|
572
|
+
}
|
|
573
|
+
}
|
|
574
|
+
}
|
|
575
|
+
// Show required parameters
|
|
576
|
+
if (requiredParams.length > 0) {
|
|
577
|
+
console.log("".concat(indent, "Required Parameters:"));
|
|
578
|
+
var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined;
|
|
579
|
+
try {
|
|
580
|
+
for(var _iterator1 = requiredParams[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true){
|
|
581
|
+
var name1 = _step1.value;
|
|
582
|
+
renderParameter(name1, properties[name1], "".concat(indent, " "));
|
|
583
|
+
}
|
|
584
|
+
} catch (err) {
|
|
585
|
+
_didIteratorError1 = true;
|
|
586
|
+
_iteratorError1 = err;
|
|
587
|
+
} finally{
|
|
588
|
+
try {
|
|
589
|
+
if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
|
|
590
|
+
_iterator1.return();
|
|
591
|
+
}
|
|
592
|
+
} finally{
|
|
593
|
+
if (_didIteratorError1) {
|
|
594
|
+
throw _iteratorError1;
|
|
595
|
+
}
|
|
596
|
+
}
|
|
597
|
+
}
|
|
598
|
+
console.log('');
|
|
599
|
+
}
|
|
600
|
+
// Show optional parameters
|
|
601
|
+
if (optionalParams.length > 0) {
|
|
602
|
+
console.log("".concat(indent, "Optional Parameters:"));
|
|
603
|
+
var _iteratorNormalCompletion2 = true, _didIteratorError2 = false, _iteratorError2 = undefined;
|
|
604
|
+
try {
|
|
605
|
+
for(var _iterator2 = optionalParams[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true){
|
|
606
|
+
var name2 = _step2.value;
|
|
607
|
+
renderParameter(name2, properties[name2], "".concat(indent, " "));
|
|
608
|
+
}
|
|
609
|
+
} catch (err) {
|
|
610
|
+
_didIteratorError2 = true;
|
|
611
|
+
_iteratorError2 = err;
|
|
612
|
+
} finally{
|
|
613
|
+
try {
|
|
614
|
+
if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
|
|
615
|
+
_iterator2.return();
|
|
616
|
+
}
|
|
617
|
+
} finally{
|
|
618
|
+
if (_didIteratorError2) {
|
|
619
|
+
throw _iteratorError2;
|
|
620
|
+
}
|
|
621
|
+
}
|
|
622
|
+
}
|
|
623
|
+
console.log('');
|
|
624
|
+
}
|
|
625
|
+
}
|
|
626
|
+
/**
|
|
627
|
+
* Render verbose details for a resource
|
|
628
|
+
*/ function renderResourceVerbose(resource, indent) {
|
|
629
|
+
// Description is already shown inline, so only show URI and MIME type
|
|
630
|
+
if (resource.uri) {
|
|
631
|
+
console.log("".concat(indent, "URI: ").concat(resource.uri));
|
|
632
|
+
}
|
|
633
|
+
if (resource.mimeType) {
|
|
634
|
+
console.log("".concat(indent, "MIME Type: ").concat(resource.mimeType));
|
|
635
|
+
}
|
|
636
|
+
if (resource.uri || resource.mimeType) {
|
|
637
|
+
console.log('');
|
|
638
|
+
}
|
|
639
|
+
}
|
|
640
|
+
/**
|
|
641
|
+
* Render verbose details for a prompt
|
|
642
|
+
*/ function renderPromptVerbose(prompt, indent) {
|
|
643
|
+
// Description is already shown inline, so only show arguments
|
|
644
|
+
if (prompt.arguments && Array.isArray(prompt.arguments) && prompt.arguments.length > 0) {
|
|
645
|
+
console.log("".concat(indent, "Arguments:"));
|
|
646
|
+
var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
|
|
647
|
+
try {
|
|
648
|
+
for(var _iterator = prompt.arguments[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
|
|
649
|
+
var arg = _step.value;
|
|
650
|
+
var argObj = arg;
|
|
651
|
+
var name = argObj.name || 'unknown';
|
|
652
|
+
var description = argObj.description || '';
|
|
653
|
+
var required = argObj.required ? ' (required)' : ' (optional)';
|
|
654
|
+
var desc = description ? " - ".concat(description) : '';
|
|
655
|
+
console.log("".concat(indent, " ").concat(name).concat(required).concat(desc));
|
|
656
|
+
}
|
|
657
|
+
} catch (err) {
|
|
658
|
+
_didIteratorError = true;
|
|
659
|
+
_iteratorError = err;
|
|
660
|
+
} finally{
|
|
661
|
+
try {
|
|
662
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
663
|
+
_iterator.return();
|
|
664
|
+
}
|
|
665
|
+
} finally{
|
|
666
|
+
if (_didIteratorError) {
|
|
667
|
+
throw _iteratorError;
|
|
668
|
+
}
|
|
669
|
+
}
|
|
670
|
+
}
|
|
671
|
+
console.log('');
|
|
672
|
+
}
|
|
673
|
+
}
|
|
674
|
+
/**
|
|
675
|
+
* Render a single parameter with type and description
|
|
676
|
+
*/ function renderParameter(name, prop, indent) {
|
|
677
|
+
var p = prop;
|
|
678
|
+
var type = getParameterType(prop);
|
|
679
|
+
var constraints = getParameterConstraints(prop);
|
|
680
|
+
var typeInfo = constraints ? "(".concat(type, ") ").concat(constraints) : "(".concat(type, ")");
|
|
681
|
+
var desc = p.description ? " - ".concat(p.description) : '';
|
|
682
|
+
console.log("".concat(indent).concat(name, " ").concat(typeInfo).concat(desc));
|
|
683
|
+
// Show enum options on separate line if present
|
|
684
|
+
if (p.enum && Array.isArray(p.enum)) {
|
|
685
|
+
console.log("".concat(indent, " Options: ").concat(p.enum.join(', ')));
|
|
686
|
+
}
|
|
687
|
+
}
|
|
688
|
+
/**
|
|
689
|
+
* Get human-readable type from JSON Schema property
|
|
690
|
+
*/ function getParameterType(prop) {
|
|
691
|
+
var p = prop;
|
|
692
|
+
if (p.type) {
|
|
693
|
+
if (Array.isArray(p.type)) {
|
|
694
|
+
return p.type.join(' | ');
|
|
695
|
+
}
|
|
696
|
+
if (p.type === 'array' && p.items) {
|
|
697
|
+
var itemType = p.items.type || 'any';
|
|
698
|
+
return "array of ".concat(itemType);
|
|
699
|
+
}
|
|
700
|
+
return p.type;
|
|
701
|
+
}
|
|
702
|
+
if (p.anyOf) {
|
|
703
|
+
return p.anyOf.map(function(s) {
|
|
704
|
+
return s.type || 'any';
|
|
705
|
+
}).join(' | ');
|
|
706
|
+
}
|
|
707
|
+
if (p.enum) {
|
|
708
|
+
return 'enum';
|
|
709
|
+
}
|
|
710
|
+
return 'any';
|
|
711
|
+
}
|
|
712
|
+
/**
|
|
713
|
+
* Get parameter constraints (default, min, max, etc.)
|
|
714
|
+
*/ function getParameterConstraints(prop) {
|
|
715
|
+
var p = prop;
|
|
716
|
+
var constraints = [];
|
|
717
|
+
if (p.default !== undefined) {
|
|
718
|
+
var defaultValue = typeof p.default === 'string' ? '"'.concat(p.default, '"') : String(p.default);
|
|
719
|
+
constraints.push("default: ".concat(defaultValue));
|
|
720
|
+
}
|
|
721
|
+
if (p.minimum !== undefined) {
|
|
722
|
+
constraints.push("min: ".concat(p.minimum));
|
|
723
|
+
}
|
|
724
|
+
if (p.maximum !== undefined) {
|
|
725
|
+
constraints.push("max: ".concat(p.maximum));
|
|
726
|
+
}
|
|
727
|
+
if (p.minLength !== undefined) {
|
|
728
|
+
constraints.push("minLength: ".concat(p.minLength));
|
|
729
|
+
}
|
|
730
|
+
if (p.maxLength !== undefined) {
|
|
731
|
+
constraints.push("maxLength: ".concat(p.maxLength));
|
|
732
|
+
}
|
|
733
|
+
if (p.minItems !== undefined) {
|
|
734
|
+
constraints.push("minItems: ".concat(p.minItems));
|
|
735
|
+
}
|
|
736
|
+
if (p.maxItems !== undefined) {
|
|
737
|
+
constraints.push("maxItems: ".concat(p.maxItems));
|
|
738
|
+
}
|
|
739
|
+
return constraints.length > 0 ? "[".concat(constraints.join(', '), "]") : '';
|
|
740
|
+
}
|
|
741
|
+
/**
|
|
742
|
+
* Output results as JSON.
|
|
743
|
+
*/ function outputJSON(serverInfos) {
|
|
744
|
+
var output = {
|
|
745
|
+
servers: serverInfos.reduce(function(acc, info) {
|
|
746
|
+
acc[info.name] = {
|
|
747
|
+
status: info.status,
|
|
748
|
+
startupTime: info.startupTime ? "".concat((info.startupTime / 1000).toFixed(1), "s") : undefined,
|
|
749
|
+
error: info.error,
|
|
750
|
+
tools: info.tools,
|
|
751
|
+
resources: info.resources,
|
|
752
|
+
prompts: info.prompts
|
|
753
|
+
};
|
|
754
|
+
return acc;
|
|
755
|
+
}, {})
|
|
756
|
+
};
|
|
757
|
+
console.log(JSON.stringify(output, null, 2));
|
|
758
|
+
}
|
|
759
|
+
/**
|
|
760
|
+
* Output results in human-readable format.
|
|
761
|
+
*/ function outputPretty(serverInfos, opts) {
|
|
762
|
+
var showSummary = shouldShowSummary(opts);
|
|
763
|
+
var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
|
|
764
|
+
try {
|
|
765
|
+
for(var _iterator = serverInfos[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
|
|
766
|
+
var info = _step.value;
|
|
767
|
+
// Summary mode
|
|
768
|
+
if (showSummary) {
|
|
769
|
+
if (info.status === 'ready') {
|
|
770
|
+
var _info_tools, _info_resources, _info_prompts;
|
|
771
|
+
var toolCount = ((_info_tools = info.tools) === null || _info_tools === void 0 ? void 0 : _info_tools.length) || 0;
|
|
772
|
+
var resourceCount = ((_info_resources = info.resources) === null || _info_resources === void 0 ? void 0 : _info_resources.length) || 0;
|
|
773
|
+
var promptCount = ((_info_prompts = info.prompts) === null || _info_prompts === void 0 ? void 0 : _info_prompts.length) || 0;
|
|
774
|
+
var time = info.startupTime ? "(".concat((info.startupTime / 1000).toFixed(1), "s)") : '';
|
|
775
|
+
console.log("\uD83D\uDCE6 ".concat(info.name, ": ").concat(time));
|
|
776
|
+
// Show detailed list of tools
|
|
777
|
+
console.log("tools: ".concat(toolCount));
|
|
778
|
+
if (info.tools && info.tools.length > 0) {
|
|
779
|
+
for(var i = 0; i < info.tools.length; i++){
|
|
780
|
+
var tool = info.tools[i];
|
|
781
|
+
if (!tool) continue; // Array indexing can return undefined with noUncheckedIndexedAccess
|
|
782
|
+
var desc = tool.description ? " - ".concat(opts.verbose ? tool.description : truncateDescription(tool.description)) : '';
|
|
783
|
+
console.log("".concat(i + 1, ". ").concat(tool.name).concat(desc));
|
|
784
|
+
if (opts.verbose) {
|
|
785
|
+
renderToolVerbose(tool, ' ');
|
|
786
|
+
}
|
|
787
|
+
}
|
|
788
|
+
}
|
|
789
|
+
// Show detailed list of resources
|
|
790
|
+
console.log("resources: ".concat(resourceCount));
|
|
791
|
+
if (info.resources && info.resources.length > 0) {
|
|
792
|
+
for(var i1 = 0; i1 < info.resources.length; i1++){
|
|
793
|
+
var resource = info.resources[i1];
|
|
794
|
+
if (!resource) continue; // Array indexing can return undefined with noUncheckedIndexedAccess
|
|
795
|
+
var desc1 = resource.description ? " - ".concat(opts.verbose ? resource.description : truncateDescription(resource.description)) : '';
|
|
796
|
+
console.log("".concat(i1 + 1, ". ").concat(resource.name).concat(desc1));
|
|
797
|
+
if (opts.verbose) {
|
|
798
|
+
renderResourceVerbose(resource, ' ');
|
|
799
|
+
}
|
|
800
|
+
}
|
|
801
|
+
}
|
|
802
|
+
// Show detailed list of prompts
|
|
803
|
+
console.log("prompts: ".concat(promptCount));
|
|
804
|
+
if (info.prompts && info.prompts.length > 0) {
|
|
805
|
+
for(var i2 = 0; i2 < info.prompts.length; i2++){
|
|
806
|
+
var prompt = info.prompts[i2];
|
|
807
|
+
if (!prompt) continue; // Array indexing can return undefined with noUncheckedIndexedAccess
|
|
808
|
+
var desc2 = prompt.description ? " - ".concat(opts.verbose ? prompt.description : truncateDescription(prompt.description)) : '';
|
|
809
|
+
console.log("".concat(i2 + 1, ". ").concat(prompt.name).concat(desc2));
|
|
810
|
+
if (opts.verbose) {
|
|
811
|
+
renderPromptVerbose(prompt, ' ');
|
|
812
|
+
}
|
|
813
|
+
}
|
|
814
|
+
}
|
|
815
|
+
} else {
|
|
816
|
+
console.log("\uD83D\uDCE6 ".concat(info.name, ": ✗ failed - ").concat(info.error));
|
|
817
|
+
}
|
|
818
|
+
continue;
|
|
819
|
+
}
|
|
820
|
+
// Health mode
|
|
821
|
+
if (opts.health) {
|
|
822
|
+
if (info.status === 'ready') {
|
|
823
|
+
var time1 = info.startupTime ? "(".concat((info.startupTime / 1000).toFixed(1), "s)") : '';
|
|
824
|
+
console.log("✓ ".concat(info.name, " - ready ").concat(time1));
|
|
825
|
+
} else {
|
|
826
|
+
console.log("✗ ".concat(info.name, " - failed"));
|
|
827
|
+
console.log(" Error: ".concat(info.error));
|
|
828
|
+
}
|
|
829
|
+
continue;
|
|
830
|
+
}
|
|
831
|
+
// Tools mode
|
|
832
|
+
if (opts.tools) {
|
|
833
|
+
var _info_tools1;
|
|
834
|
+
console.log("\n\uD83D\uDCE6 ".concat(info.name, " (").concat(((_info_tools1 = info.tools) === null || _info_tools1 === void 0 ? void 0 : _info_tools1.length) || 0, " tools)"));
|
|
835
|
+
if (info.tools && info.tools.length > 0) {
|
|
836
|
+
for(var i3 = 0; i3 < info.tools.length; i3++){
|
|
837
|
+
var tool1 = info.tools[i3];
|
|
838
|
+
if (!tool1) continue; // Array indexing can return undefined with noUncheckedIndexedAccess
|
|
839
|
+
var desc3 = tool1.description ? " - ".concat(opts.verbose ? tool1.description : truncateDescription(tool1.description)) : '';
|
|
840
|
+
console.log(" ".concat(i3 + 1, ". ").concat(tool1.name).concat(desc3));
|
|
841
|
+
if (opts.verbose) {
|
|
842
|
+
renderToolVerbose(tool1, ' ');
|
|
843
|
+
}
|
|
844
|
+
}
|
|
845
|
+
}
|
|
846
|
+
}
|
|
847
|
+
// Resources mode
|
|
848
|
+
if (opts.resources) {
|
|
849
|
+
var _info_resources1;
|
|
850
|
+
console.log("\n\uD83D\uDCE6 ".concat(info.name, " (").concat(((_info_resources1 = info.resources) === null || _info_resources1 === void 0 ? void 0 : _info_resources1.length) || 0, " resources)"));
|
|
851
|
+
if (info.resources && info.resources.length > 0) {
|
|
852
|
+
for(var i4 = 0; i4 < info.resources.length; i4++){
|
|
853
|
+
var resource1 = info.resources[i4];
|
|
854
|
+
if (!resource1) continue; // Array indexing can return undefined with noUncheckedIndexedAccess
|
|
855
|
+
var desc4 = resource1.description ? " - ".concat(opts.verbose ? resource1.description : truncateDescription(resource1.description)) : '';
|
|
856
|
+
console.log(" ".concat(i4 + 1, ". ").concat(resource1.name).concat(desc4));
|
|
857
|
+
if (opts.verbose) {
|
|
858
|
+
renderResourceVerbose(resource1, ' ');
|
|
859
|
+
}
|
|
860
|
+
}
|
|
861
|
+
}
|
|
862
|
+
}
|
|
863
|
+
// Prompts mode
|
|
864
|
+
if (opts.prompts) {
|
|
865
|
+
var _info_prompts1;
|
|
866
|
+
console.log("\n\uD83D\uDCE6 ".concat(info.name, " (").concat(((_info_prompts1 = info.prompts) === null || _info_prompts1 === void 0 ? void 0 : _info_prompts1.length) || 0, " prompts)"));
|
|
867
|
+
if (info.prompts && info.prompts.length > 0) {
|
|
868
|
+
for(var i5 = 0; i5 < info.prompts.length; i5++){
|
|
869
|
+
var prompt1 = info.prompts[i5];
|
|
870
|
+
if (!prompt1) continue; // Array indexing can return undefined with noUncheckedIndexedAccess
|
|
871
|
+
var desc5 = prompt1.description ? " - ".concat(opts.verbose ? prompt1.description : truncateDescription(prompt1.description)) : '';
|
|
872
|
+
console.log(" ".concat(i5 + 1, ". ").concat(prompt1.name).concat(desc5));
|
|
873
|
+
if (opts.verbose) {
|
|
874
|
+
renderPromptVerbose(prompt1, ' ');
|
|
875
|
+
}
|
|
876
|
+
}
|
|
877
|
+
}
|
|
878
|
+
}
|
|
879
|
+
}
|
|
880
|
+
} catch (err) {
|
|
881
|
+
_didIteratorError = true;
|
|
882
|
+
_iteratorError = err;
|
|
883
|
+
} finally{
|
|
884
|
+
try {
|
|
885
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
886
|
+
_iterator.return();
|
|
887
|
+
}
|
|
888
|
+
} finally{
|
|
889
|
+
if (_didIteratorError) {
|
|
890
|
+
throw _iteratorError;
|
|
891
|
+
}
|
|
892
|
+
}
|
|
893
|
+
}
|
|
894
|
+
console.log('');
|
|
895
|
+
}
|
|
896
|
+
/* CJS INTEROP */ if (exports.__esModule && exports.default) { try { Object.defineProperty(exports.default, '__esModule', { value: true }); for (var key in exports) { exports.default[key] = exports[key]; } } catch (_) {}; module.exports = exports.default; }
|