@frontmcp/plugin-dashboard 1.8.0 → 1.8.2
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/esm/index.mjs +84 -0
- package/esm/package.json +3 -3
- package/index.js +84 -0
- package/package.json +3 -3
package/esm/index.mjs
CHANGED
|
@@ -3681,6 +3681,90 @@ var init_cloudflare_kv = __esm({
|
|
|
3681
3681
|
}
|
|
3682
3682
|
});
|
|
3683
3683
|
init_runtime();
|
|
3684
|
+
var IPV4_OCTET_PATTERN = /^(0|[1-9]\d{0,2})$/;
|
|
3685
|
+
var IPV6_GROUP_PATTERN = /^[0-9a-f]{1,4}$/;
|
|
3686
|
+
var IPV4_BLOCKS = compileBlocks(
|
|
3687
|
+
[
|
|
3688
|
+
["0.0.0.0/8", "this-network"],
|
|
3689
|
+
["10.0.0.0/8", "private"],
|
|
3690
|
+
["100.64.0.0/10", "carrier-grade-nat"],
|
|
3691
|
+
["127.0.0.0/8", "loopback"],
|
|
3692
|
+
["169.254.0.0/16", "link-local"],
|
|
3693
|
+
["172.16.0.0/12", "private"],
|
|
3694
|
+
["192.0.0.0/24", "ietf-protocol"],
|
|
3695
|
+
["192.168.0.0/16", "private"],
|
|
3696
|
+
["198.18.0.0/15", "benchmarking"],
|
|
3697
|
+
["224.0.0.0/4", "multicast"],
|
|
3698
|
+
["255.255.255.255/32", "reserved"],
|
|
3699
|
+
["240.0.0.0/4", "reserved"]
|
|
3700
|
+
],
|
|
3701
|
+
parseIpv4
|
|
3702
|
+
);
|
|
3703
|
+
var IPV6_BLOCKS = compileBlocks(
|
|
3704
|
+
[
|
|
3705
|
+
["::/128", "unspecified"],
|
|
3706
|
+
["::1/128", "loopback"],
|
|
3707
|
+
["fd00:ec2::254/128", "cloud-metadata"],
|
|
3708
|
+
["fc00::/7", "private"],
|
|
3709
|
+
["fe80::/10", "link-local"],
|
|
3710
|
+
["fec0::/10", "site-local"],
|
|
3711
|
+
// RFC 8215 local-use NAT64: where the IPv4 address sits depends on the operator's prefix length.
|
|
3712
|
+
["64:ff9b:1::/48", "local-use-nat64"],
|
|
3713
|
+
["ff00::/8", "multicast"]
|
|
3714
|
+
],
|
|
3715
|
+
expandIpv6
|
|
3716
|
+
);
|
|
3717
|
+
var IPV4_EMBEDDINGS = compileBlocks(
|
|
3718
|
+
[
|
|
3719
|
+
["::ffff:0:0/96", 6],
|
|
3720
|
+
["::ffff:0:0:0/96", 6],
|
|
3721
|
+
["::/96", 6],
|
|
3722
|
+
["64:ff9b::/96", 6],
|
|
3723
|
+
["2002::/16", 1]
|
|
3724
|
+
],
|
|
3725
|
+
expandIpv6
|
|
3726
|
+
);
|
|
3727
|
+
function parseIpv4(address) {
|
|
3728
|
+
const parts = address.split(".");
|
|
3729
|
+
if (parts.length !== 4 || !parts.every((part) => IPV4_OCTET_PATTERN.test(part))) return void 0;
|
|
3730
|
+
const octets = parts.map(Number);
|
|
3731
|
+
return octets.every((octet) => octet <= 255) ? octets : void 0;
|
|
3732
|
+
}
|
|
3733
|
+
function expandIpv6(address) {
|
|
3734
|
+
const zoneIndex = address.indexOf("%");
|
|
3735
|
+
let text = (zoneIndex === -1 ? address : address.slice(0, zoneIndex)).toLowerCase();
|
|
3736
|
+
const lastColonIndex = text.lastIndexOf(":");
|
|
3737
|
+
const trailingSegment = text.slice(lastColonIndex + 1);
|
|
3738
|
+
if (lastColonIndex !== -1 && trailingSegment.includes(".")) {
|
|
3739
|
+
const octets = parseIpv4(trailingSegment);
|
|
3740
|
+
if (!octets) return void 0;
|
|
3741
|
+
const highGroup = (octets[0] << 8 | octets[1]).toString(16);
|
|
3742
|
+
const lowGroup = (octets[2] << 8 | octets[3]).toString(16);
|
|
3743
|
+
text = `${text.slice(0, lastColonIndex + 1)}${highGroup}:${lowGroup}`;
|
|
3744
|
+
}
|
|
3745
|
+
const halves = text.split("::");
|
|
3746
|
+
if (halves.length > 2) return void 0;
|
|
3747
|
+
const head = parseIpv6Groups(halves[0]);
|
|
3748
|
+
if (!head) return void 0;
|
|
3749
|
+
if (halves.length === 1) return head.length === 8 ? head : void 0;
|
|
3750
|
+
const tail = parseIpv6Groups(halves[1]);
|
|
3751
|
+
if (!tail || head.length + tail.length > 7) return void 0;
|
|
3752
|
+
return [...head, ...new Array(8 - head.length - tail.length).fill(0), ...tail];
|
|
3753
|
+
}
|
|
3754
|
+
function parseIpv6Groups(part) {
|
|
3755
|
+
if (part === "") return [];
|
|
3756
|
+
const groups = part.split(":");
|
|
3757
|
+
if (!groups.every((group) => IPV6_GROUP_PATTERN.test(group))) return void 0;
|
|
3758
|
+
return groups.map((group) => parseInt(group, 16));
|
|
3759
|
+
}
|
|
3760
|
+
function compileBlocks(entries, parseNetwork) {
|
|
3761
|
+
return entries.map(([cidr, value]) => {
|
|
3762
|
+
const [networkText, prefixText] = cidr.split("/");
|
|
3763
|
+
const network = parseNetwork(networkText);
|
|
3764
|
+
if (!network) throw new Error(`Invalid network in address block "${cidr}"`);
|
|
3765
|
+
return { cidr, network, prefixLength: Number(prefixText), value };
|
|
3766
|
+
});
|
|
3767
|
+
}
|
|
3684
3768
|
init_fs2();
|
|
3685
3769
|
init_crypto();
|
|
3686
3770
|
var entryAvailabilitySchema = z3.object({
|
package/esm/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@frontmcp/plugin-dashboard",
|
|
3
|
-
"version": "1.8.
|
|
3
|
+
"version": "1.8.2",
|
|
4
4
|
"description": "Dashboard plugin for FrontMCP - visual monitoring and introspection of MCP servers",
|
|
5
5
|
"author": "AgentFront <info@agentfront.dev>",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -47,12 +47,12 @@
|
|
|
47
47
|
}
|
|
48
48
|
},
|
|
49
49
|
"dependencies": {
|
|
50
|
-
"@frontmcp/sdk": "1.8.
|
|
50
|
+
"@frontmcp/sdk": "1.8.2"
|
|
51
51
|
},
|
|
52
52
|
"devDependencies": {
|
|
53
53
|
"reflect-metadata": "^0.2.2"
|
|
54
54
|
},
|
|
55
55
|
"peerDependencies": {
|
|
56
|
-
"@frontmcp/lazy-zod": "1.8.
|
|
56
|
+
"@frontmcp/lazy-zod": "1.8.2"
|
|
57
57
|
}
|
|
58
58
|
}
|
package/index.js
CHANGED
|
@@ -3695,6 +3695,90 @@ var init_cloudflare_kv = __esm({
|
|
|
3695
3695
|
}
|
|
3696
3696
|
});
|
|
3697
3697
|
init_runtime();
|
|
3698
|
+
var IPV4_OCTET_PATTERN = /^(0|[1-9]\d{0,2})$/;
|
|
3699
|
+
var IPV6_GROUP_PATTERN = /^[0-9a-f]{1,4}$/;
|
|
3700
|
+
var IPV4_BLOCKS = compileBlocks(
|
|
3701
|
+
[
|
|
3702
|
+
["0.0.0.0/8", "this-network"],
|
|
3703
|
+
["10.0.0.0/8", "private"],
|
|
3704
|
+
["100.64.0.0/10", "carrier-grade-nat"],
|
|
3705
|
+
["127.0.0.0/8", "loopback"],
|
|
3706
|
+
["169.254.0.0/16", "link-local"],
|
|
3707
|
+
["172.16.0.0/12", "private"],
|
|
3708
|
+
["192.0.0.0/24", "ietf-protocol"],
|
|
3709
|
+
["192.168.0.0/16", "private"],
|
|
3710
|
+
["198.18.0.0/15", "benchmarking"],
|
|
3711
|
+
["224.0.0.0/4", "multicast"],
|
|
3712
|
+
["255.255.255.255/32", "reserved"],
|
|
3713
|
+
["240.0.0.0/4", "reserved"]
|
|
3714
|
+
],
|
|
3715
|
+
parseIpv4
|
|
3716
|
+
);
|
|
3717
|
+
var IPV6_BLOCKS = compileBlocks(
|
|
3718
|
+
[
|
|
3719
|
+
["::/128", "unspecified"],
|
|
3720
|
+
["::1/128", "loopback"],
|
|
3721
|
+
["fd00:ec2::254/128", "cloud-metadata"],
|
|
3722
|
+
["fc00::/7", "private"],
|
|
3723
|
+
["fe80::/10", "link-local"],
|
|
3724
|
+
["fec0::/10", "site-local"],
|
|
3725
|
+
// RFC 8215 local-use NAT64: where the IPv4 address sits depends on the operator's prefix length.
|
|
3726
|
+
["64:ff9b:1::/48", "local-use-nat64"],
|
|
3727
|
+
["ff00::/8", "multicast"]
|
|
3728
|
+
],
|
|
3729
|
+
expandIpv6
|
|
3730
|
+
);
|
|
3731
|
+
var IPV4_EMBEDDINGS = compileBlocks(
|
|
3732
|
+
[
|
|
3733
|
+
["::ffff:0:0/96", 6],
|
|
3734
|
+
["::ffff:0:0:0/96", 6],
|
|
3735
|
+
["::/96", 6],
|
|
3736
|
+
["64:ff9b::/96", 6],
|
|
3737
|
+
["2002::/16", 1]
|
|
3738
|
+
],
|
|
3739
|
+
expandIpv6
|
|
3740
|
+
);
|
|
3741
|
+
function parseIpv4(address) {
|
|
3742
|
+
const parts = address.split(".");
|
|
3743
|
+
if (parts.length !== 4 || !parts.every((part) => IPV4_OCTET_PATTERN.test(part))) return void 0;
|
|
3744
|
+
const octets = parts.map(Number);
|
|
3745
|
+
return octets.every((octet) => octet <= 255) ? octets : void 0;
|
|
3746
|
+
}
|
|
3747
|
+
function expandIpv6(address) {
|
|
3748
|
+
const zoneIndex = address.indexOf("%");
|
|
3749
|
+
let text = (zoneIndex === -1 ? address : address.slice(0, zoneIndex)).toLowerCase();
|
|
3750
|
+
const lastColonIndex = text.lastIndexOf(":");
|
|
3751
|
+
const trailingSegment = text.slice(lastColonIndex + 1);
|
|
3752
|
+
if (lastColonIndex !== -1 && trailingSegment.includes(".")) {
|
|
3753
|
+
const octets = parseIpv4(trailingSegment);
|
|
3754
|
+
if (!octets) return void 0;
|
|
3755
|
+
const highGroup = (octets[0] << 8 | octets[1]).toString(16);
|
|
3756
|
+
const lowGroup = (octets[2] << 8 | octets[3]).toString(16);
|
|
3757
|
+
text = `${text.slice(0, lastColonIndex + 1)}${highGroup}:${lowGroup}`;
|
|
3758
|
+
}
|
|
3759
|
+
const halves = text.split("::");
|
|
3760
|
+
if (halves.length > 2) return void 0;
|
|
3761
|
+
const head = parseIpv6Groups(halves[0]);
|
|
3762
|
+
if (!head) return void 0;
|
|
3763
|
+
if (halves.length === 1) return head.length === 8 ? head : void 0;
|
|
3764
|
+
const tail = parseIpv6Groups(halves[1]);
|
|
3765
|
+
if (!tail || head.length + tail.length > 7) return void 0;
|
|
3766
|
+
return [...head, ...new Array(8 - head.length - tail.length).fill(0), ...tail];
|
|
3767
|
+
}
|
|
3768
|
+
function parseIpv6Groups(part) {
|
|
3769
|
+
if (part === "") return [];
|
|
3770
|
+
const groups = part.split(":");
|
|
3771
|
+
if (!groups.every((group) => IPV6_GROUP_PATTERN.test(group))) return void 0;
|
|
3772
|
+
return groups.map((group) => parseInt(group, 16));
|
|
3773
|
+
}
|
|
3774
|
+
function compileBlocks(entries, parseNetwork) {
|
|
3775
|
+
return entries.map(([cidr, value]) => {
|
|
3776
|
+
const [networkText, prefixText] = cidr.split("/");
|
|
3777
|
+
const network = parseNetwork(networkText);
|
|
3778
|
+
if (!network) throw new Error(`Invalid network in address block "${cidr}"`);
|
|
3779
|
+
return { cidr, network, prefixLength: Number(prefixText), value };
|
|
3780
|
+
});
|
|
3781
|
+
}
|
|
3698
3782
|
init_fs2();
|
|
3699
3783
|
init_crypto();
|
|
3700
3784
|
var entryAvailabilitySchema = import_lazy_zod4.z.object({
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@frontmcp/plugin-dashboard",
|
|
3
|
-
"version": "1.8.
|
|
3
|
+
"version": "1.8.2",
|
|
4
4
|
"description": "Dashboard plugin for FrontMCP - visual monitoring and introspection of MCP servers",
|
|
5
5
|
"author": "AgentFront <info@agentfront.dev>",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -47,12 +47,12 @@
|
|
|
47
47
|
}
|
|
48
48
|
},
|
|
49
49
|
"dependencies": {
|
|
50
|
-
"@frontmcp/sdk": "1.8.
|
|
50
|
+
"@frontmcp/sdk": "1.8.2"
|
|
51
51
|
},
|
|
52
52
|
"devDependencies": {
|
|
53
53
|
"reflect-metadata": "^0.2.2"
|
|
54
54
|
},
|
|
55
55
|
"peerDependencies": {
|
|
56
|
-
"@frontmcp/lazy-zod": "1.8.
|
|
56
|
+
"@frontmcp/lazy-zod": "1.8.2"
|
|
57
57
|
}
|
|
58
58
|
}
|