@ever-works/mistral-plugin 1.0.3 → 1.0.4

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 (3) hide show
  1. package/dist/index.cjs +118 -24
  2. package/dist/index.js +118 -24
  3. package/package.json +5 -5
package/dist/index.cjs CHANGED
@@ -5019,6 +5019,7 @@ function isSafeWebhookUrl(rawUrl) {
5019
5019
  if (host.startsWith("[") && host.endsWith("]")) {
5020
5020
  host = host.slice(1, -1);
5021
5021
  }
5022
+ host = host.replace(/\.+$/, "");
5022
5023
  if (CLOUD_METADATA_HOSTNAMES.has(host)) {
5023
5024
  return false;
5024
5025
  }
@@ -5048,23 +5049,69 @@ function isPrivateIPv4(ip) {
5048
5049
  if (a === 172 && b >= 16 && b <= 31) return true;
5049
5050
  if (a === 192 && b === 168) return true;
5050
5051
  if (a === 192 && b === 0 && parts[2] === 0) return true;
5052
+ if (a === 198 && (b === 18 || b === 19)) return true;
5053
+ if (a === 192 && b === 0 && parts[2] === 2) return true;
5054
+ if (a === 198 && b === 51 && parts[2] === 100) return true;
5055
+ if (a === 203 && b === 0 && parts[2] === 113) return true;
5051
5056
  if (a === 100 && b >= 64 && b <= 127) return true;
5052
5057
  if (a >= 224) return true;
5053
5058
  return false;
5054
5059
  }
5060
+ function parseIPv6Groups(ip) {
5061
+ let text = ip.trim().toLowerCase();
5062
+ const zone = text.indexOf("%");
5063
+ if (zone >= 0) text = text.slice(0, zone);
5064
+ if (net.isIP(text) !== 6) return null;
5065
+ const lastColon = text.lastIndexOf(":");
5066
+ const tail = text.slice(lastColon + 1);
5067
+ if (tail.includes(".")) {
5068
+ if (net.isIP(tail) !== 4) return null;
5069
+ const [a, b, c, d] = tail.split(".").map((part) => Number(part));
5070
+ text = `${text.slice(0, lastColon + 1)}${(a << 8 | b).toString(16)}:${(c << 8 | d).toString(16)}`;
5071
+ }
5072
+ const halves = text.split("::");
5073
+ if (halves.length > 2) return null;
5074
+ const head = halves[0] ? halves[0].split(":") : [];
5075
+ const rest = halves.length === 2 && halves[1] ? halves[1].split(":") : [];
5076
+ const fill = halves.length === 2 ? 8 - head.length - rest.length : 0;
5077
+ if (fill < 0) return null;
5078
+ const groups = [...head, ...new Array(fill).fill("0"), ...rest].map((group) => parseInt(group, 16));
5079
+ if (groups.length !== 8 || groups.some((group) => Number.isNaN(group) || group < 0 || group > 65535)) {
5080
+ return null;
5081
+ }
5082
+ return groups;
5083
+ }
5084
+ function ipv4FromGroups(high, low) {
5085
+ return `${high >> 8}.${high & 255}.${low >> 8}.${low & 255}`;
5086
+ }
5087
+ function embeddedIPv4(ip) {
5088
+ const g = parseIPv6Groups(ip);
5089
+ if (!g) return null;
5090
+ const zeros = (from, to) => g.slice(from, to).every((group) => group === 0);
5091
+ if (zeros(0, 5) && g[5] === 65535) return ipv4FromGroups(g[6], g[7]);
5092
+ if (zeros(0, 4) && g[4] === 65535 && g[5] === 0) return ipv4FromGroups(g[6], g[7]);
5093
+ if (zeros(0, 6) && (g[6] !== 0 || g[7] > 1)) return ipv4FromGroups(g[6], g[7]);
5094
+ if (g[0] === 100 && g[1] === 65435 && zeros(2, 6)) return ipv4FromGroups(g[6], g[7]);
5095
+ if (g[0] === 8194) return ipv4FromGroups(g[1], g[2]);
5096
+ if (g[0] === 8193 && g[1] === 0) return ipv4FromGroups(g[6] ^ 65535, g[7] ^ 65535);
5097
+ return null;
5098
+ }
5055
5099
  function isPrivateIPv6(ip) {
5056
- const lower = ip.toLowerCase();
5057
- if (lower === "::1" || lower === "::") return true;
5058
- if (lower.startsWith("fc") || lower.startsWith("fd")) return true;
5059
- const firstHextet = lower.split(":", 1)[0];
5060
- if (/^[0-9a-f]{1,4}$/.test(firstHextet)) {
5061
- const group0 = parseInt(firstHextet, 16);
5062
- if ((group0 & 65472) === 65152) return true;
5063
- }
5064
- if (lower.startsWith("::ffff:")) {
5065
- const v4 = lower.slice("::ffff:".length);
5066
- if (net.isIP(v4) === 4) return isPrivateIPv4(v4);
5067
- }
5100
+ const g = parseIPv6Groups(ip);
5101
+ if (!g) {
5102
+ const lower = ip.toLowerCase();
5103
+ return lower === "::1" || lower === "::" || lower.startsWith("fc") || lower.startsWith("fd");
5104
+ }
5105
+ if (g.every((group) => group === 0)) return true;
5106
+ if (g.slice(0, 7).every((group) => group === 0) && g[7] === 1) return true;
5107
+ if ((g[0] & 65024) === 64512) return true;
5108
+ if ((g[0] & 65472) === 65152) return true;
5109
+ if ((g[0] & 65472) === 65216) return true;
5110
+ if ((g[0] & 65280) === 65280) return true;
5111
+ if (g[0] === 8193 && g[1] === 3512) return true;
5112
+ if (g[0] === 100 && g[1] === 65435 && g[2] === 1) return true;
5113
+ const v4 = embeddedIPv4(ip);
5114
+ if (v4 && isPrivateIPv4(v4)) return true;
5068
5115
  return false;
5069
5116
  }
5070
5117
  var defaultDnsResolver = (hostname) => dns__namespace.promises.lookup(hostname, { all: true });
@@ -5592,6 +5639,7 @@ function isSafeWebhookUrl2(rawUrl) {
5592
5639
  if (host.startsWith("[") && host.endsWith("]")) {
5593
5640
  host = host.slice(1, -1);
5594
5641
  }
5642
+ host = host.replace(/\.+$/, "");
5595
5643
  if (CLOUD_METADATA_HOSTNAMES2.has(host)) {
5596
5644
  return false;
5597
5645
  }
@@ -5621,23 +5669,69 @@ function isPrivateIPv42(ip) {
5621
5669
  if (a === 172 && b >= 16 && b <= 31) return true;
5622
5670
  if (a === 192 && b === 168) return true;
5623
5671
  if (a === 192 && b === 0 && parts[2] === 0) return true;
5672
+ if (a === 198 && (b === 18 || b === 19)) return true;
5673
+ if (a === 192 && b === 0 && parts[2] === 2) return true;
5674
+ if (a === 198 && b === 51 && parts[2] === 100) return true;
5675
+ if (a === 203 && b === 0 && parts[2] === 113) return true;
5624
5676
  if (a === 100 && b >= 64 && b <= 127) return true;
5625
5677
  if (a >= 224) return true;
5626
5678
  return false;
5627
5679
  }
5680
+ function parseIPv6Groups2(ip) {
5681
+ let text = ip.trim().toLowerCase();
5682
+ const zone = text.indexOf("%");
5683
+ if (zone >= 0) text = text.slice(0, zone);
5684
+ if (net.isIP(text) !== 6) return null;
5685
+ const lastColon = text.lastIndexOf(":");
5686
+ const tail = text.slice(lastColon + 1);
5687
+ if (tail.includes(".")) {
5688
+ if (net.isIP(tail) !== 4) return null;
5689
+ const [a, b, c, d] = tail.split(".").map((part) => Number(part));
5690
+ text = `${text.slice(0, lastColon + 1)}${(a << 8 | b).toString(16)}:${(c << 8 | d).toString(16)}`;
5691
+ }
5692
+ const halves = text.split("::");
5693
+ if (halves.length > 2) return null;
5694
+ const head = halves[0] ? halves[0].split(":") : [];
5695
+ const rest = halves.length === 2 && halves[1] ? halves[1].split(":") : [];
5696
+ const fill = halves.length === 2 ? 8 - head.length - rest.length : 0;
5697
+ if (fill < 0) return null;
5698
+ const groups = [...head, ...new Array(fill).fill("0"), ...rest].map((group) => parseInt(group, 16));
5699
+ if (groups.length !== 8 || groups.some((group) => Number.isNaN(group) || group < 0 || group > 65535)) {
5700
+ return null;
5701
+ }
5702
+ return groups;
5703
+ }
5704
+ function ipv4FromGroups2(high, low) {
5705
+ return `${high >> 8}.${high & 255}.${low >> 8}.${low & 255}`;
5706
+ }
5707
+ function embeddedIPv42(ip) {
5708
+ const g = parseIPv6Groups2(ip);
5709
+ if (!g) return null;
5710
+ const zeros = (from, to) => g.slice(from, to).every((group) => group === 0);
5711
+ if (zeros(0, 5) && g[5] === 65535) return ipv4FromGroups2(g[6], g[7]);
5712
+ if (zeros(0, 4) && g[4] === 65535 && g[5] === 0) return ipv4FromGroups2(g[6], g[7]);
5713
+ if (zeros(0, 6) && (g[6] !== 0 || g[7] > 1)) return ipv4FromGroups2(g[6], g[7]);
5714
+ if (g[0] === 100 && g[1] === 65435 && zeros(2, 6)) return ipv4FromGroups2(g[6], g[7]);
5715
+ if (g[0] === 8194) return ipv4FromGroups2(g[1], g[2]);
5716
+ if (g[0] === 8193 && g[1] === 0) return ipv4FromGroups2(g[6] ^ 65535, g[7] ^ 65535);
5717
+ return null;
5718
+ }
5628
5719
  function isPrivateIPv62(ip) {
5629
- const lower = ip.toLowerCase();
5630
- if (lower === "::1" || lower === "::") return true;
5631
- if (lower.startsWith("fc") || lower.startsWith("fd")) return true;
5632
- const firstHextet = lower.split(":", 1)[0];
5633
- if (/^[0-9a-f]{1,4}$/.test(firstHextet)) {
5634
- const group0 = parseInt(firstHextet, 16);
5635
- if ((group0 & 65472) === 65152) return true;
5636
- }
5637
- if (lower.startsWith("::ffff:")) {
5638
- const v4 = lower.slice("::ffff:".length);
5639
- if (net.isIP(v4) === 4) return isPrivateIPv42(v4);
5640
- }
5720
+ const g = parseIPv6Groups2(ip);
5721
+ if (!g) {
5722
+ const lower = ip.toLowerCase();
5723
+ return lower === "::1" || lower === "::" || lower.startsWith("fc") || lower.startsWith("fd");
5724
+ }
5725
+ if (g.every((group) => group === 0)) return true;
5726
+ if (g.slice(0, 7).every((group) => group === 0) && g[7] === 1) return true;
5727
+ if ((g[0] & 65024) === 64512) return true;
5728
+ if ((g[0] & 65472) === 65152) return true;
5729
+ if ((g[0] & 65472) === 65216) return true;
5730
+ if ((g[0] & 65280) === 65280) return true;
5731
+ if (g[0] === 8193 && g[1] === 3512) return true;
5732
+ if (g[0] === 100 && g[1] === 65435 && g[2] === 1) return true;
5733
+ const v4 = embeddedIPv42(ip);
5734
+ if (v4 && isPrivateIPv42(v4)) return true;
5641
5735
  return false;
5642
5736
  }
5643
5737
 
package/dist/index.js CHANGED
@@ -4995,6 +4995,7 @@ function isSafeWebhookUrl(rawUrl) {
4995
4995
  if (host.startsWith("[") && host.endsWith("]")) {
4996
4996
  host = host.slice(1, -1);
4997
4997
  }
4998
+ host = host.replace(/\.+$/, "");
4998
4999
  if (CLOUD_METADATA_HOSTNAMES.has(host)) {
4999
5000
  return false;
5000
5001
  }
@@ -5024,23 +5025,69 @@ function isPrivateIPv4(ip) {
5024
5025
  if (a === 172 && b >= 16 && b <= 31) return true;
5025
5026
  if (a === 192 && b === 168) return true;
5026
5027
  if (a === 192 && b === 0 && parts[2] === 0) return true;
5028
+ if (a === 198 && (b === 18 || b === 19)) return true;
5029
+ if (a === 192 && b === 0 && parts[2] === 2) return true;
5030
+ if (a === 198 && b === 51 && parts[2] === 100) return true;
5031
+ if (a === 203 && b === 0 && parts[2] === 113) return true;
5027
5032
  if (a === 100 && b >= 64 && b <= 127) return true;
5028
5033
  if (a >= 224) return true;
5029
5034
  return false;
5030
5035
  }
5036
+ function parseIPv6Groups(ip) {
5037
+ let text = ip.trim().toLowerCase();
5038
+ const zone = text.indexOf("%");
5039
+ if (zone >= 0) text = text.slice(0, zone);
5040
+ if (isIP(text) !== 6) return null;
5041
+ const lastColon = text.lastIndexOf(":");
5042
+ const tail = text.slice(lastColon + 1);
5043
+ if (tail.includes(".")) {
5044
+ if (isIP(tail) !== 4) return null;
5045
+ const [a, b, c, d] = tail.split(".").map((part) => Number(part));
5046
+ text = `${text.slice(0, lastColon + 1)}${(a << 8 | b).toString(16)}:${(c << 8 | d).toString(16)}`;
5047
+ }
5048
+ const halves = text.split("::");
5049
+ if (halves.length > 2) return null;
5050
+ const head = halves[0] ? halves[0].split(":") : [];
5051
+ const rest = halves.length === 2 && halves[1] ? halves[1].split(":") : [];
5052
+ const fill = halves.length === 2 ? 8 - head.length - rest.length : 0;
5053
+ if (fill < 0) return null;
5054
+ const groups = [...head, ...new Array(fill).fill("0"), ...rest].map((group) => parseInt(group, 16));
5055
+ if (groups.length !== 8 || groups.some((group) => Number.isNaN(group) || group < 0 || group > 65535)) {
5056
+ return null;
5057
+ }
5058
+ return groups;
5059
+ }
5060
+ function ipv4FromGroups(high, low) {
5061
+ return `${high >> 8}.${high & 255}.${low >> 8}.${low & 255}`;
5062
+ }
5063
+ function embeddedIPv4(ip) {
5064
+ const g = parseIPv6Groups(ip);
5065
+ if (!g) return null;
5066
+ const zeros = (from, to) => g.slice(from, to).every((group) => group === 0);
5067
+ if (zeros(0, 5) && g[5] === 65535) return ipv4FromGroups(g[6], g[7]);
5068
+ if (zeros(0, 4) && g[4] === 65535 && g[5] === 0) return ipv4FromGroups(g[6], g[7]);
5069
+ if (zeros(0, 6) && (g[6] !== 0 || g[7] > 1)) return ipv4FromGroups(g[6], g[7]);
5070
+ if (g[0] === 100 && g[1] === 65435 && zeros(2, 6)) return ipv4FromGroups(g[6], g[7]);
5071
+ if (g[0] === 8194) return ipv4FromGroups(g[1], g[2]);
5072
+ if (g[0] === 8193 && g[1] === 0) return ipv4FromGroups(g[6] ^ 65535, g[7] ^ 65535);
5073
+ return null;
5074
+ }
5031
5075
  function isPrivateIPv6(ip) {
5032
- const lower = ip.toLowerCase();
5033
- if (lower === "::1" || lower === "::") return true;
5034
- if (lower.startsWith("fc") || lower.startsWith("fd")) return true;
5035
- const firstHextet = lower.split(":", 1)[0];
5036
- if (/^[0-9a-f]{1,4}$/.test(firstHextet)) {
5037
- const group0 = parseInt(firstHextet, 16);
5038
- if ((group0 & 65472) === 65152) return true;
5039
- }
5040
- if (lower.startsWith("::ffff:")) {
5041
- const v4 = lower.slice("::ffff:".length);
5042
- if (isIP(v4) === 4) return isPrivateIPv4(v4);
5043
- }
5076
+ const g = parseIPv6Groups(ip);
5077
+ if (!g) {
5078
+ const lower = ip.toLowerCase();
5079
+ return lower === "::1" || lower === "::" || lower.startsWith("fc") || lower.startsWith("fd");
5080
+ }
5081
+ if (g.every((group) => group === 0)) return true;
5082
+ if (g.slice(0, 7).every((group) => group === 0) && g[7] === 1) return true;
5083
+ if ((g[0] & 65024) === 64512) return true;
5084
+ if ((g[0] & 65472) === 65152) return true;
5085
+ if ((g[0] & 65472) === 65216) return true;
5086
+ if ((g[0] & 65280) === 65280) return true;
5087
+ if (g[0] === 8193 && g[1] === 3512) return true;
5088
+ if (g[0] === 100 && g[1] === 65435 && g[2] === 1) return true;
5089
+ const v4 = embeddedIPv4(ip);
5090
+ if (v4 && isPrivateIPv4(v4)) return true;
5044
5091
  return false;
5045
5092
  }
5046
5093
  var defaultDnsResolver = (hostname) => dns.promises.lookup(hostname, { all: true });
@@ -5568,6 +5615,7 @@ function isSafeWebhookUrl2(rawUrl) {
5568
5615
  if (host.startsWith("[") && host.endsWith("]")) {
5569
5616
  host = host.slice(1, -1);
5570
5617
  }
5618
+ host = host.replace(/\.+$/, "");
5571
5619
  if (CLOUD_METADATA_HOSTNAMES2.has(host)) {
5572
5620
  return false;
5573
5621
  }
@@ -5597,23 +5645,69 @@ function isPrivateIPv42(ip) {
5597
5645
  if (a === 172 && b >= 16 && b <= 31) return true;
5598
5646
  if (a === 192 && b === 168) return true;
5599
5647
  if (a === 192 && b === 0 && parts[2] === 0) return true;
5648
+ if (a === 198 && (b === 18 || b === 19)) return true;
5649
+ if (a === 192 && b === 0 && parts[2] === 2) return true;
5650
+ if (a === 198 && b === 51 && parts[2] === 100) return true;
5651
+ if (a === 203 && b === 0 && parts[2] === 113) return true;
5600
5652
  if (a === 100 && b >= 64 && b <= 127) return true;
5601
5653
  if (a >= 224) return true;
5602
5654
  return false;
5603
5655
  }
5656
+ function parseIPv6Groups2(ip) {
5657
+ let text = ip.trim().toLowerCase();
5658
+ const zone = text.indexOf("%");
5659
+ if (zone >= 0) text = text.slice(0, zone);
5660
+ if (isIP(text) !== 6) return null;
5661
+ const lastColon = text.lastIndexOf(":");
5662
+ const tail = text.slice(lastColon + 1);
5663
+ if (tail.includes(".")) {
5664
+ if (isIP(tail) !== 4) return null;
5665
+ const [a, b, c, d] = tail.split(".").map((part) => Number(part));
5666
+ text = `${text.slice(0, lastColon + 1)}${(a << 8 | b).toString(16)}:${(c << 8 | d).toString(16)}`;
5667
+ }
5668
+ const halves = text.split("::");
5669
+ if (halves.length > 2) return null;
5670
+ const head = halves[0] ? halves[0].split(":") : [];
5671
+ const rest = halves.length === 2 && halves[1] ? halves[1].split(":") : [];
5672
+ const fill = halves.length === 2 ? 8 - head.length - rest.length : 0;
5673
+ if (fill < 0) return null;
5674
+ const groups = [...head, ...new Array(fill).fill("0"), ...rest].map((group) => parseInt(group, 16));
5675
+ if (groups.length !== 8 || groups.some((group) => Number.isNaN(group) || group < 0 || group > 65535)) {
5676
+ return null;
5677
+ }
5678
+ return groups;
5679
+ }
5680
+ function ipv4FromGroups2(high, low) {
5681
+ return `${high >> 8}.${high & 255}.${low >> 8}.${low & 255}`;
5682
+ }
5683
+ function embeddedIPv42(ip) {
5684
+ const g = parseIPv6Groups2(ip);
5685
+ if (!g) return null;
5686
+ const zeros = (from, to) => g.slice(from, to).every((group) => group === 0);
5687
+ if (zeros(0, 5) && g[5] === 65535) return ipv4FromGroups2(g[6], g[7]);
5688
+ if (zeros(0, 4) && g[4] === 65535 && g[5] === 0) return ipv4FromGroups2(g[6], g[7]);
5689
+ if (zeros(0, 6) && (g[6] !== 0 || g[7] > 1)) return ipv4FromGroups2(g[6], g[7]);
5690
+ if (g[0] === 100 && g[1] === 65435 && zeros(2, 6)) return ipv4FromGroups2(g[6], g[7]);
5691
+ if (g[0] === 8194) return ipv4FromGroups2(g[1], g[2]);
5692
+ if (g[0] === 8193 && g[1] === 0) return ipv4FromGroups2(g[6] ^ 65535, g[7] ^ 65535);
5693
+ return null;
5694
+ }
5604
5695
  function isPrivateIPv62(ip) {
5605
- const lower = ip.toLowerCase();
5606
- if (lower === "::1" || lower === "::") return true;
5607
- if (lower.startsWith("fc") || lower.startsWith("fd")) return true;
5608
- const firstHextet = lower.split(":", 1)[0];
5609
- if (/^[0-9a-f]{1,4}$/.test(firstHextet)) {
5610
- const group0 = parseInt(firstHextet, 16);
5611
- if ((group0 & 65472) === 65152) return true;
5612
- }
5613
- if (lower.startsWith("::ffff:")) {
5614
- const v4 = lower.slice("::ffff:".length);
5615
- if (isIP(v4) === 4) return isPrivateIPv42(v4);
5616
- }
5696
+ const g = parseIPv6Groups2(ip);
5697
+ if (!g) {
5698
+ const lower = ip.toLowerCase();
5699
+ return lower === "::1" || lower === "::" || lower.startsWith("fc") || lower.startsWith("fd");
5700
+ }
5701
+ if (g.every((group) => group === 0)) return true;
5702
+ if (g.slice(0, 7).every((group) => group === 0) && g[7] === 1) return true;
5703
+ if ((g[0] & 65024) === 64512) return true;
5704
+ if ((g[0] & 65472) === 65152) return true;
5705
+ if ((g[0] & 65472) === 65216) return true;
5706
+ if ((g[0] & 65280) === 65280) return true;
5707
+ if (g[0] === 8193 && g[1] === 3512) return true;
5708
+ if (g[0] === 100 && g[1] === 65435 && g[2] === 1) return true;
5709
+ const v4 = embeddedIPv42(ip);
5710
+ if (v4 && isPrivateIPv42(v4)) return true;
5617
5711
  return false;
5618
5712
  }
5619
5713
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ever-works/mistral-plugin",
3
- "version": "1.0.3",
3
+ "version": "1.0.4",
4
4
  "description": "Mistral AI provider plugin for Ever Works platform",
5
5
  "author": {
6
6
  "name": "Ever Co. LTD",
@@ -32,7 +32,7 @@
32
32
  "test:watch": "vitest"
33
33
  },
34
34
  "dependencies": {
35
- "@ever-works/plugin": "^1.2.5",
35
+ "@ever-works/plugin": "^1.2.9",
36
36
  "@langchain/openai": "^0.6.17",
37
37
  "@langchain/core": "^0.3.80"
38
38
  },
@@ -71,8 +71,8 @@
71
71
  "url": "https://github.com/ever-works/ever-works/issues"
72
72
  },
73
73
  "everworksRelease": {
74
- "contentHash": "sha256:eb06840652f738455522edae0b3d60a512c985e0d1506bfb717c5778ce2742b3",
75
- "commit": "19905c70cf05be3bc523db030597046067cd322a",
76
- "source": "https://github.com/ever-works/ever-works/tree/19905c70cf05be3bc523db030597046067cd322a/packages/plugins/mistral"
74
+ "contentHash": "sha256:94c843c12b52ab985cc254198044eb516a4140ad5a1bb46f4f5721f3cab6ef73",
75
+ "commit": "5b5a17e1cdc02e06383d508a6424a863521fc3e0",
76
+ "source": "https://github.com/ever-works/ever-works/tree/5b5a17e1cdc02e06383d508a6424a863521fc3e0/packages/plugins/mistral"
77
77
  }
78
78
  }