@usex/mikrotik-mcp 3.45.0 → 3.46.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/dist/cli.js +46 -1
- package/dist/index.js +1 -1
- package/dist/ui/observability.html +15 -11
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -1134,7 +1134,7 @@ function computeStats(events, opts) {
|
|
|
1134
1134
|
// package.json
|
|
1135
1135
|
var package_default = {
|
|
1136
1136
|
name: "@usex/mikrotik-mcp",
|
|
1137
|
-
version: "3.
|
|
1137
|
+
version: "3.46.0",
|
|
1138
1138
|
description: "MCP server for MikroTik RouterOS \u2014 660+ tools over SSH for firewall, NAT, routing, DHCP, DNS, WireGuard, wireless, QoS and more.",
|
|
1139
1139
|
keywords: [
|
|
1140
1140
|
"ai",
|
|
@@ -1274,6 +1274,44 @@ var SERVER_NAME = "mcp-mikrotik";
|
|
|
1274
1274
|
|
|
1275
1275
|
// src/observability/dashboard.ts
|
|
1276
1276
|
var SERVER_TAG2 = "mikrotik-mcp";
|
|
1277
|
+
var releaseCache = null;
|
|
1278
|
+
var RELEASE_CACHE_TTL = 15 * 60 * 1000;
|
|
1279
|
+
function compareVersions(a, b) {
|
|
1280
|
+
const pa = a.replace(/^v/, "").split(".").map(Number);
|
|
1281
|
+
const pb = b.replace(/^v/, "").split(".").map(Number);
|
|
1282
|
+
for (let i = 0;i < Math.max(pa.length, pb.length); i++) {
|
|
1283
|
+
const diff = (pa[i] ?? 0) - (pb[i] ?? 0);
|
|
1284
|
+
if (diff !== 0)
|
|
1285
|
+
return diff;
|
|
1286
|
+
}
|
|
1287
|
+
return 0;
|
|
1288
|
+
}
|
|
1289
|
+
async function fetchLatestRelease() {
|
|
1290
|
+
if (releaseCache && Date.now() - releaseCache.fetchedAt < RELEASE_CACHE_TTL) {
|
|
1291
|
+
return releaseCache.data;
|
|
1292
|
+
}
|
|
1293
|
+
const res = await fetch("https://api.github.com/repos/ali-master/mikrotik-mcp/releases/latest", {
|
|
1294
|
+
headers: {
|
|
1295
|
+
accept: "application/vnd.github+json",
|
|
1296
|
+
"user-agent": "mikrotik-mcp-dashboard"
|
|
1297
|
+
}
|
|
1298
|
+
});
|
|
1299
|
+
if (!res.ok)
|
|
1300
|
+
throw new Error(`GitHub API ${res.status}`);
|
|
1301
|
+
const gh = await res.json();
|
|
1302
|
+
const latestVersion = gh.tag_name.replace(/^v/, "");
|
|
1303
|
+
const data = {
|
|
1304
|
+
version: latestVersion,
|
|
1305
|
+
name: gh.name || `v${latestVersion}`,
|
|
1306
|
+
body: gh.body || "",
|
|
1307
|
+
publishedAt: gh.published_at,
|
|
1308
|
+
url: gh.html_url,
|
|
1309
|
+
isNewer: compareVersions(latestVersion, VERSION) > 0,
|
|
1310
|
+
currentVersion: VERSION
|
|
1311
|
+
};
|
|
1312
|
+
releaseCache = { data, fetchedAt: Date.now() };
|
|
1313
|
+
return data;
|
|
1314
|
+
}
|
|
1277
1315
|
var JSON_HEADERS = { "content-type": "application/json; charset=utf-8" };
|
|
1278
1316
|
function json(body, status = 200) {
|
|
1279
1317
|
return new Response(JSON.stringify(body), { status, headers: JSON_HEADERS });
|
|
@@ -2189,6 +2227,13 @@ async function runDashboard(cfg, transportLabel) {
|
|
|
2189
2227
|
headers: { "content-type": "text/html; charset=utf-8" }
|
|
2190
2228
|
});
|
|
2191
2229
|
}
|
|
2230
|
+
if (url.pathname === "/api/releases/latest") {
|
|
2231
|
+
try {
|
|
2232
|
+
return json(await fetchLatestRelease());
|
|
2233
|
+
} catch (e) {
|
|
2234
|
+
return json({ error: e instanceof Error ? e.message : "fetch failed" }, 502);
|
|
2235
|
+
}
|
|
2236
|
+
}
|
|
2192
2237
|
if (url.pathname === "/api/meta") {
|
|
2193
2238
|
const f = facets(db);
|
|
2194
2239
|
return json({
|
package/dist/index.js
CHANGED
|
@@ -131,7 +131,7 @@ function registerPrompts(server) {
|
|
|
131
131
|
// package.json
|
|
132
132
|
var package_default = {
|
|
133
133
|
name: "@usex/mikrotik-mcp",
|
|
134
|
-
version: "3.
|
|
134
|
+
version: "3.46.0",
|
|
135
135
|
description: "MCP server for MikroTik RouterOS \u2014 660+ tools over SSH for firewall, NAT, routing, DHCP, DNS, WireGuard, wireless, QoS and more.",
|
|
136
136
|
keywords: [
|
|
137
137
|
"ai",
|