@elizaos/server 1.6.1-alpha.5 → 1.6.1-alpha.6

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/index.js CHANGED
@@ -370,11 +370,1083 @@ var require_dist = __commonJS((exports) => {
370
370
  }
371
371
  });
372
372
 
373
+ // ../../node_modules/ip-address/dist/common.js
374
+ var require_common = __commonJS((exports) => {
375
+ Object.defineProperty(exports, "__esModule", { value: true });
376
+ exports.isInSubnet = isInSubnet;
377
+ exports.isCorrect = isCorrect;
378
+ exports.numberToPaddedHex = numberToPaddedHex;
379
+ exports.stringToPaddedHex = stringToPaddedHex;
380
+ exports.testBit = testBit;
381
+ function isInSubnet(address) {
382
+ if (this.subnetMask < address.subnetMask) {
383
+ return false;
384
+ }
385
+ if (this.mask(address.subnetMask) === address.mask()) {
386
+ return true;
387
+ }
388
+ return false;
389
+ }
390
+ function isCorrect(defaultBits) {
391
+ return function() {
392
+ if (this.addressMinusSuffix !== this.correctForm()) {
393
+ return false;
394
+ }
395
+ if (this.subnetMask === defaultBits && !this.parsedSubnet) {
396
+ return true;
397
+ }
398
+ return this.parsedSubnet === String(this.subnetMask);
399
+ };
400
+ }
401
+ function numberToPaddedHex(number) {
402
+ return number.toString(16).padStart(2, "0");
403
+ }
404
+ function stringToPaddedHex(numberString) {
405
+ return numberToPaddedHex(parseInt(numberString, 10));
406
+ }
407
+ function testBit(binaryValue, position) {
408
+ const { length } = binaryValue;
409
+ if (position > length) {
410
+ return false;
411
+ }
412
+ const positionInString = length - position;
413
+ return binaryValue.substring(positionInString, positionInString + 1) === "1";
414
+ }
415
+ });
416
+
417
+ // ../../node_modules/ip-address/dist/v4/constants.js
418
+ var require_constants = __commonJS((exports) => {
419
+ Object.defineProperty(exports, "__esModule", { value: true });
420
+ exports.RE_SUBNET_STRING = exports.RE_ADDRESS = exports.GROUPS = exports.BITS = undefined;
421
+ exports.BITS = 32;
422
+ exports.GROUPS = 4;
423
+ exports.RE_ADDRESS = /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/g;
424
+ exports.RE_SUBNET_STRING = /\/\d{1,2}$/;
425
+ });
426
+
427
+ // ../../node_modules/ip-address/dist/address-error.js
428
+ var require_address_error = __commonJS((exports) => {
429
+ Object.defineProperty(exports, "__esModule", { value: true });
430
+ exports.AddressError = undefined;
431
+
432
+ class AddressError extends Error {
433
+ constructor(message, parseMessage) {
434
+ super(message);
435
+ this.name = "AddressError";
436
+ this.parseMessage = parseMessage;
437
+ }
438
+ }
439
+ exports.AddressError = AddressError;
440
+ });
441
+
442
+ // ../../node_modules/ip-address/dist/ipv4.js
443
+ var require_ipv4 = __commonJS((exports) => {
444
+ var __createBinding = exports && exports.__createBinding || (Object.create ? function(o, m, k, k2) {
445
+ if (k2 === undefined)
446
+ k2 = k;
447
+ var desc = Object.getOwnPropertyDescriptor(m, k);
448
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
449
+ desc = { enumerable: true, get: function() {
450
+ return m[k];
451
+ } };
452
+ }
453
+ Object.defineProperty(o, k2, desc);
454
+ } : function(o, m, k, k2) {
455
+ if (k2 === undefined)
456
+ k2 = k;
457
+ o[k2] = m[k];
458
+ });
459
+ var __setModuleDefault = exports && exports.__setModuleDefault || (Object.create ? function(o, v) {
460
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
461
+ } : function(o, v) {
462
+ o["default"] = v;
463
+ });
464
+ var __importStar = exports && exports.__importStar || function(mod) {
465
+ if (mod && mod.__esModule)
466
+ return mod;
467
+ var result = {};
468
+ if (mod != null) {
469
+ for (var k in mod)
470
+ if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k))
471
+ __createBinding(result, mod, k);
472
+ }
473
+ __setModuleDefault(result, mod);
474
+ return result;
475
+ };
476
+ Object.defineProperty(exports, "__esModule", { value: true });
477
+ exports.Address4 = undefined;
478
+ var common = __importStar(require_common());
479
+ var constants = __importStar(require_constants());
480
+ var address_error_1 = require_address_error();
481
+
482
+ class Address4 {
483
+ constructor(address) {
484
+ this.groups = constants.GROUPS;
485
+ this.parsedAddress = [];
486
+ this.parsedSubnet = "";
487
+ this.subnet = "/32";
488
+ this.subnetMask = 32;
489
+ this.v4 = true;
490
+ this.isCorrect = common.isCorrect(constants.BITS);
491
+ this.isInSubnet = common.isInSubnet;
492
+ this.address = address;
493
+ const subnet = constants.RE_SUBNET_STRING.exec(address);
494
+ if (subnet) {
495
+ this.parsedSubnet = subnet[0].replace("/", "");
496
+ this.subnetMask = parseInt(this.parsedSubnet, 10);
497
+ this.subnet = `/${this.subnetMask}`;
498
+ if (this.subnetMask < 0 || this.subnetMask > constants.BITS) {
499
+ throw new address_error_1.AddressError("Invalid subnet mask.");
500
+ }
501
+ address = address.replace(constants.RE_SUBNET_STRING, "");
502
+ }
503
+ this.addressMinusSuffix = address;
504
+ this.parsedAddress = this.parse(address);
505
+ }
506
+ static isValid(address) {
507
+ try {
508
+ new Address4(address);
509
+ return true;
510
+ } catch (e) {
511
+ return false;
512
+ }
513
+ }
514
+ parse(address) {
515
+ const groups = address.split(".");
516
+ if (!address.match(constants.RE_ADDRESS)) {
517
+ throw new address_error_1.AddressError("Invalid IPv4 address.");
518
+ }
519
+ return groups;
520
+ }
521
+ correctForm() {
522
+ return this.parsedAddress.map((part) => parseInt(part, 10)).join(".");
523
+ }
524
+ static fromHex(hex) {
525
+ const padded = hex.replace(/:/g, "").padStart(8, "0");
526
+ const groups = [];
527
+ let i;
528
+ for (i = 0;i < 8; i += 2) {
529
+ const h = padded.slice(i, i + 2);
530
+ groups.push(parseInt(h, 16));
531
+ }
532
+ return new Address4(groups.join("."));
533
+ }
534
+ static fromInteger(integer) {
535
+ return Address4.fromHex(integer.toString(16));
536
+ }
537
+ static fromArpa(arpaFormAddress) {
538
+ const leader = arpaFormAddress.replace(/(\.in-addr\.arpa)?\.$/, "");
539
+ const address = leader.split(".").reverse().join(".");
540
+ return new Address4(address);
541
+ }
542
+ toHex() {
543
+ return this.parsedAddress.map((part) => common.stringToPaddedHex(part)).join(":");
544
+ }
545
+ toArray() {
546
+ return this.parsedAddress.map((part) => parseInt(part, 10));
547
+ }
548
+ toGroup6() {
549
+ const output = [];
550
+ let i;
551
+ for (i = 0;i < constants.GROUPS; i += 2) {
552
+ output.push(`${common.stringToPaddedHex(this.parsedAddress[i])}${common.stringToPaddedHex(this.parsedAddress[i + 1])}`);
553
+ }
554
+ return output.join(":");
555
+ }
556
+ bigInt() {
557
+ return BigInt(`0x${this.parsedAddress.map((n) => common.stringToPaddedHex(n)).join("")}`);
558
+ }
559
+ _startAddress() {
560
+ return BigInt(`0b${this.mask() + "0".repeat(constants.BITS - this.subnetMask)}`);
561
+ }
562
+ startAddress() {
563
+ return Address4.fromBigInt(this._startAddress());
564
+ }
565
+ startAddressExclusive() {
566
+ const adjust = BigInt("1");
567
+ return Address4.fromBigInt(this._startAddress() + adjust);
568
+ }
569
+ _endAddress() {
570
+ return BigInt(`0b${this.mask() + "1".repeat(constants.BITS - this.subnetMask)}`);
571
+ }
572
+ endAddress() {
573
+ return Address4.fromBigInt(this._endAddress());
574
+ }
575
+ endAddressExclusive() {
576
+ const adjust = BigInt("1");
577
+ return Address4.fromBigInt(this._endAddress() - adjust);
578
+ }
579
+ static fromBigInt(bigInt) {
580
+ return Address4.fromHex(bigInt.toString(16));
581
+ }
582
+ mask(mask) {
583
+ if (mask === undefined) {
584
+ mask = this.subnetMask;
585
+ }
586
+ return this.getBitsBase2(0, mask);
587
+ }
588
+ getBitsBase2(start, end) {
589
+ return this.binaryZeroPad().slice(start, end);
590
+ }
591
+ reverseForm(options) {
592
+ if (!options) {
593
+ options = {};
594
+ }
595
+ const reversed = this.correctForm().split(".").reverse().join(".");
596
+ if (options.omitSuffix) {
597
+ return reversed;
598
+ }
599
+ return `${reversed}.in-addr.arpa.`;
600
+ }
601
+ isMulticast() {
602
+ return this.isInSubnet(new Address4("224.0.0.0/4"));
603
+ }
604
+ binaryZeroPad() {
605
+ return this.bigInt().toString(2).padStart(constants.BITS, "0");
606
+ }
607
+ groupForV6() {
608
+ const segments = this.parsedAddress;
609
+ return this.address.replace(constants.RE_ADDRESS, `<span class="hover-group group-v4 group-6">${segments.slice(0, 2).join(".")}</span>.<span class="hover-group group-v4 group-7">${segments.slice(2, 4).join(".")}</span>`);
610
+ }
611
+ }
612
+ exports.Address4 = Address4;
613
+ });
614
+
615
+ // ../../node_modules/ip-address/dist/v6/constants.js
616
+ var require_constants2 = __commonJS((exports) => {
617
+ Object.defineProperty(exports, "__esModule", { value: true });
618
+ exports.RE_URL_WITH_PORT = exports.RE_URL = exports.RE_ZONE_STRING = exports.RE_SUBNET_STRING = exports.RE_BAD_ADDRESS = exports.RE_BAD_CHARACTERS = exports.TYPES = exports.SCOPES = exports.GROUPS = exports.BITS = undefined;
619
+ exports.BITS = 128;
620
+ exports.GROUPS = 8;
621
+ exports.SCOPES = {
622
+ 0: "Reserved",
623
+ 1: "Interface local",
624
+ 2: "Link local",
625
+ 4: "Admin local",
626
+ 5: "Site local",
627
+ 8: "Organization local",
628
+ 14: "Global",
629
+ 15: "Reserved"
630
+ };
631
+ exports.TYPES = {
632
+ "ff01::1/128": "Multicast (All nodes on this interface)",
633
+ "ff01::2/128": "Multicast (All routers on this interface)",
634
+ "ff02::1/128": "Multicast (All nodes on this link)",
635
+ "ff02::2/128": "Multicast (All routers on this link)",
636
+ "ff05::2/128": "Multicast (All routers in this site)",
637
+ "ff02::5/128": "Multicast (OSPFv3 AllSPF routers)",
638
+ "ff02::6/128": "Multicast (OSPFv3 AllDR routers)",
639
+ "ff02::9/128": "Multicast (RIP routers)",
640
+ "ff02::a/128": "Multicast (EIGRP routers)",
641
+ "ff02::d/128": "Multicast (PIM routers)",
642
+ "ff02::16/128": "Multicast (MLDv2 reports)",
643
+ "ff01::fb/128": "Multicast (mDNSv6)",
644
+ "ff02::fb/128": "Multicast (mDNSv6)",
645
+ "ff05::fb/128": "Multicast (mDNSv6)",
646
+ "ff02::1:2/128": "Multicast (All DHCP servers and relay agents on this link)",
647
+ "ff05::1:2/128": "Multicast (All DHCP servers and relay agents in this site)",
648
+ "ff02::1:3/128": "Multicast (All DHCP servers on this link)",
649
+ "ff05::1:3/128": "Multicast (All DHCP servers in this site)",
650
+ "::/128": "Unspecified",
651
+ "::1/128": "Loopback",
652
+ "ff00::/8": "Multicast",
653
+ "fe80::/10": "Link-local unicast"
654
+ };
655
+ exports.RE_BAD_CHARACTERS = /([^0-9a-f:/%])/gi;
656
+ exports.RE_BAD_ADDRESS = /([0-9a-f]{5,}|:{3,}|[^:]:$|^:[^:]|\/$)/gi;
657
+ exports.RE_SUBNET_STRING = /\/\d{1,3}(?=%|$)/;
658
+ exports.RE_ZONE_STRING = /%.*$/;
659
+ exports.RE_URL = /^\[{0,1}([0-9a-f:]+)\]{0,1}/;
660
+ exports.RE_URL_WITH_PORT = /\[([0-9a-f:]+)\]:([0-9]{1,5})/;
661
+ });
662
+
663
+ // ../../node_modules/ip-address/dist/v6/helpers.js
664
+ var require_helpers = __commonJS((exports) => {
665
+ Object.defineProperty(exports, "__esModule", { value: true });
666
+ exports.spanAllZeroes = spanAllZeroes;
667
+ exports.spanAll = spanAll;
668
+ exports.spanLeadingZeroes = spanLeadingZeroes;
669
+ exports.simpleGroup = simpleGroup;
670
+ function spanAllZeroes(s) {
671
+ return s.replace(/(0+)/g, '<span class="zero">$1</span>');
672
+ }
673
+ function spanAll(s, offset = 0) {
674
+ const letters = s.split("");
675
+ return letters.map((n, i) => `<span class="digit value-${n} position-${i + offset}">${spanAllZeroes(n)}</span>`).join("");
676
+ }
677
+ function spanLeadingZeroesSimple(group) {
678
+ return group.replace(/^(0+)/, '<span class="zero">$1</span>');
679
+ }
680
+ function spanLeadingZeroes(address) {
681
+ const groups = address.split(":");
682
+ return groups.map((g) => spanLeadingZeroesSimple(g)).join(":");
683
+ }
684
+ function simpleGroup(addressString, offset = 0) {
685
+ const groups = addressString.split(":");
686
+ return groups.map((g, i) => {
687
+ if (/group-v4/.test(g)) {
688
+ return g;
689
+ }
690
+ return `<span class="hover-group group-${i + offset}">${spanLeadingZeroesSimple(g)}</span>`;
691
+ });
692
+ }
693
+ });
694
+
695
+ // ../../node_modules/ip-address/dist/v6/regular-expressions.js
696
+ var require_regular_expressions = __commonJS((exports) => {
697
+ var __createBinding = exports && exports.__createBinding || (Object.create ? function(o, m, k, k2) {
698
+ if (k2 === undefined)
699
+ k2 = k;
700
+ var desc = Object.getOwnPropertyDescriptor(m, k);
701
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
702
+ desc = { enumerable: true, get: function() {
703
+ return m[k];
704
+ } };
705
+ }
706
+ Object.defineProperty(o, k2, desc);
707
+ } : function(o, m, k, k2) {
708
+ if (k2 === undefined)
709
+ k2 = k;
710
+ o[k2] = m[k];
711
+ });
712
+ var __setModuleDefault = exports && exports.__setModuleDefault || (Object.create ? function(o, v) {
713
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
714
+ } : function(o, v) {
715
+ o["default"] = v;
716
+ });
717
+ var __importStar = exports && exports.__importStar || function(mod) {
718
+ if (mod && mod.__esModule)
719
+ return mod;
720
+ var result = {};
721
+ if (mod != null) {
722
+ for (var k in mod)
723
+ if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k))
724
+ __createBinding(result, mod, k);
725
+ }
726
+ __setModuleDefault(result, mod);
727
+ return result;
728
+ };
729
+ Object.defineProperty(exports, "__esModule", { value: true });
730
+ exports.ADDRESS_BOUNDARY = undefined;
731
+ exports.groupPossibilities = groupPossibilities;
732
+ exports.padGroup = padGroup;
733
+ exports.simpleRegularExpression = simpleRegularExpression;
734
+ exports.possibleElisions = possibleElisions;
735
+ var v6 = __importStar(require_constants2());
736
+ function groupPossibilities(possibilities) {
737
+ return `(${possibilities.join("|")})`;
738
+ }
739
+ function padGroup(group) {
740
+ if (group.length < 4) {
741
+ return `0{0,${4 - group.length}}${group}`;
742
+ }
743
+ return group;
744
+ }
745
+ exports.ADDRESS_BOUNDARY = "[^A-Fa-f0-9:]";
746
+ function simpleRegularExpression(groups) {
747
+ const zeroIndexes = [];
748
+ groups.forEach((group, i) => {
749
+ const groupInteger = parseInt(group, 16);
750
+ if (groupInteger === 0) {
751
+ zeroIndexes.push(i);
752
+ }
753
+ });
754
+ const possibilities = zeroIndexes.map((zeroIndex) => groups.map((group, i) => {
755
+ if (i === zeroIndex) {
756
+ const elision = i === 0 || i === v6.GROUPS - 1 ? ":" : "";
757
+ return groupPossibilities([padGroup(group), elision]);
758
+ }
759
+ return padGroup(group);
760
+ }).join(":"));
761
+ possibilities.push(groups.map(padGroup).join(":"));
762
+ return groupPossibilities(possibilities);
763
+ }
764
+ function possibleElisions(elidedGroups, moreLeft, moreRight) {
765
+ const left = moreLeft ? "" : ":";
766
+ const right = moreRight ? "" : ":";
767
+ const possibilities = [];
768
+ if (!moreLeft && !moreRight) {
769
+ possibilities.push("::");
770
+ }
771
+ if (moreLeft && moreRight) {
772
+ possibilities.push("");
773
+ }
774
+ if (moreRight && !moreLeft || !moreRight && moreLeft) {
775
+ possibilities.push(":");
776
+ }
777
+ possibilities.push(`${left}(:0{1,4}){1,${elidedGroups - 1}}`);
778
+ possibilities.push(`(0{1,4}:){1,${elidedGroups - 1}}${right}`);
779
+ possibilities.push(`(0{1,4}:){${elidedGroups - 1}}0{1,4}`);
780
+ for (let groups = 1;groups < elidedGroups - 1; groups++) {
781
+ for (let position = 1;position < elidedGroups - groups; position++) {
782
+ possibilities.push(`(0{1,4}:){${position}}:(0{1,4}:){${elidedGroups - position - groups - 1}}0{1,4}`);
783
+ }
784
+ }
785
+ return groupPossibilities(possibilities);
786
+ }
787
+ });
788
+
789
+ // ../../node_modules/ip-address/dist/ipv6.js
790
+ var require_ipv6 = __commonJS((exports) => {
791
+ var __createBinding = exports && exports.__createBinding || (Object.create ? function(o, m, k, k2) {
792
+ if (k2 === undefined)
793
+ k2 = k;
794
+ var desc = Object.getOwnPropertyDescriptor(m, k);
795
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
796
+ desc = { enumerable: true, get: function() {
797
+ return m[k];
798
+ } };
799
+ }
800
+ Object.defineProperty(o, k2, desc);
801
+ } : function(o, m, k, k2) {
802
+ if (k2 === undefined)
803
+ k2 = k;
804
+ o[k2] = m[k];
805
+ });
806
+ var __setModuleDefault = exports && exports.__setModuleDefault || (Object.create ? function(o, v) {
807
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
808
+ } : function(o, v) {
809
+ o["default"] = v;
810
+ });
811
+ var __importStar = exports && exports.__importStar || function(mod) {
812
+ if (mod && mod.__esModule)
813
+ return mod;
814
+ var result = {};
815
+ if (mod != null) {
816
+ for (var k in mod)
817
+ if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k))
818
+ __createBinding(result, mod, k);
819
+ }
820
+ __setModuleDefault(result, mod);
821
+ return result;
822
+ };
823
+ Object.defineProperty(exports, "__esModule", { value: true });
824
+ exports.Address6 = undefined;
825
+ var common = __importStar(require_common());
826
+ var constants4 = __importStar(require_constants());
827
+ var constants6 = __importStar(require_constants2());
828
+ var helpers = __importStar(require_helpers());
829
+ var ipv4_1 = require_ipv4();
830
+ var regular_expressions_1 = require_regular_expressions();
831
+ var address_error_1 = require_address_error();
832
+ var common_1 = require_common();
833
+ function assert(condition) {
834
+ if (!condition) {
835
+ throw new Error("Assertion failed.");
836
+ }
837
+ }
838
+ function addCommas(number) {
839
+ const r = /(\d+)(\d{3})/;
840
+ while (r.test(number)) {
841
+ number = number.replace(r, "$1,$2");
842
+ }
843
+ return number;
844
+ }
845
+ function spanLeadingZeroes4(n) {
846
+ n = n.replace(/^(0{1,})([1-9]+)$/, '<span class="parse-error">$1</span>$2');
847
+ n = n.replace(/^(0{1,})(0)$/, '<span class="parse-error">$1</span>$2');
848
+ return n;
849
+ }
850
+ function compact(address, slice) {
851
+ const s1 = [];
852
+ const s2 = [];
853
+ let i;
854
+ for (i = 0;i < address.length; i++) {
855
+ if (i < slice[0]) {
856
+ s1.push(address[i]);
857
+ } else if (i > slice[1]) {
858
+ s2.push(address[i]);
859
+ }
860
+ }
861
+ return s1.concat(["compact"]).concat(s2);
862
+ }
863
+ function paddedHex(octet) {
864
+ return parseInt(octet, 16).toString(16).padStart(4, "0");
865
+ }
866
+ function unsignByte(b) {
867
+ return b & 255;
868
+ }
869
+
870
+ class Address6 {
871
+ constructor(address, optionalGroups) {
872
+ this.addressMinusSuffix = "";
873
+ this.parsedSubnet = "";
874
+ this.subnet = "/128";
875
+ this.subnetMask = 128;
876
+ this.v4 = false;
877
+ this.zone = "";
878
+ this.isInSubnet = common.isInSubnet;
879
+ this.isCorrect = common.isCorrect(constants6.BITS);
880
+ if (optionalGroups === undefined) {
881
+ this.groups = constants6.GROUPS;
882
+ } else {
883
+ this.groups = optionalGroups;
884
+ }
885
+ this.address = address;
886
+ const subnet = constants6.RE_SUBNET_STRING.exec(address);
887
+ if (subnet) {
888
+ this.parsedSubnet = subnet[0].replace("/", "");
889
+ this.subnetMask = parseInt(this.parsedSubnet, 10);
890
+ this.subnet = `/${this.subnetMask}`;
891
+ if (Number.isNaN(this.subnetMask) || this.subnetMask < 0 || this.subnetMask > constants6.BITS) {
892
+ throw new address_error_1.AddressError("Invalid subnet mask.");
893
+ }
894
+ address = address.replace(constants6.RE_SUBNET_STRING, "");
895
+ } else if (/\//.test(address)) {
896
+ throw new address_error_1.AddressError("Invalid subnet mask.");
897
+ }
898
+ const zone = constants6.RE_ZONE_STRING.exec(address);
899
+ if (zone) {
900
+ this.zone = zone[0];
901
+ address = address.replace(constants6.RE_ZONE_STRING, "");
902
+ }
903
+ this.addressMinusSuffix = address;
904
+ this.parsedAddress = this.parse(this.addressMinusSuffix);
905
+ }
906
+ static isValid(address) {
907
+ try {
908
+ new Address6(address);
909
+ return true;
910
+ } catch (e) {
911
+ return false;
912
+ }
913
+ }
914
+ static fromBigInt(bigInt) {
915
+ const hex = bigInt.toString(16).padStart(32, "0");
916
+ const groups = [];
917
+ let i;
918
+ for (i = 0;i < constants6.GROUPS; i++) {
919
+ groups.push(hex.slice(i * 4, (i + 1) * 4));
920
+ }
921
+ return new Address6(groups.join(":"));
922
+ }
923
+ static fromURL(url) {
924
+ let host;
925
+ let port = null;
926
+ let result;
927
+ if (url.indexOf("[") !== -1 && url.indexOf("]:") !== -1) {
928
+ result = constants6.RE_URL_WITH_PORT.exec(url);
929
+ if (result === null) {
930
+ return {
931
+ error: "failed to parse address with port",
932
+ address: null,
933
+ port: null
934
+ };
935
+ }
936
+ host = result[1];
937
+ port = result[2];
938
+ } else if (url.indexOf("/") !== -1) {
939
+ url = url.replace(/^[a-z0-9]+:\/\//, "");
940
+ result = constants6.RE_URL.exec(url);
941
+ if (result === null) {
942
+ return {
943
+ error: "failed to parse address from URL",
944
+ address: null,
945
+ port: null
946
+ };
947
+ }
948
+ host = result[1];
949
+ } else {
950
+ host = url;
951
+ }
952
+ if (port) {
953
+ port = parseInt(port, 10);
954
+ if (port < 0 || port > 65536) {
955
+ port = null;
956
+ }
957
+ } else {
958
+ port = null;
959
+ }
960
+ return {
961
+ address: new Address6(host),
962
+ port
963
+ };
964
+ }
965
+ static fromAddress4(address) {
966
+ const address4 = new ipv4_1.Address4(address);
967
+ const mask6 = constants6.BITS - (constants4.BITS - address4.subnetMask);
968
+ return new Address6(`::ffff:${address4.correctForm()}/${mask6}`);
969
+ }
970
+ static fromArpa(arpaFormAddress) {
971
+ let address = arpaFormAddress.replace(/(\.ip6\.arpa)?\.$/, "");
972
+ const semicolonAmount = 7;
973
+ if (address.length !== 63) {
974
+ throw new address_error_1.AddressError("Invalid 'ip6.arpa' form.");
975
+ }
976
+ const parts = address.split(".").reverse();
977
+ for (let i = semicolonAmount;i > 0; i--) {
978
+ const insertIndex = i * 4;
979
+ parts.splice(insertIndex, 0, ":");
980
+ }
981
+ address = parts.join("");
982
+ return new Address6(address);
983
+ }
984
+ microsoftTranscription() {
985
+ return `${this.correctForm().replace(/:/g, "-")}.ipv6-literal.net`;
986
+ }
987
+ mask(mask = this.subnetMask) {
988
+ return this.getBitsBase2(0, mask);
989
+ }
990
+ possibleSubnets(subnetSize = 128) {
991
+ const availableBits = constants6.BITS - this.subnetMask;
992
+ const subnetBits = Math.abs(subnetSize - constants6.BITS);
993
+ const subnetPowers = availableBits - subnetBits;
994
+ if (subnetPowers < 0) {
995
+ return "0";
996
+ }
997
+ return addCommas((BigInt("2") ** BigInt(subnetPowers)).toString(10));
998
+ }
999
+ _startAddress() {
1000
+ return BigInt(`0b${this.mask() + "0".repeat(constants6.BITS - this.subnetMask)}`);
1001
+ }
1002
+ startAddress() {
1003
+ return Address6.fromBigInt(this._startAddress());
1004
+ }
1005
+ startAddressExclusive() {
1006
+ const adjust = BigInt("1");
1007
+ return Address6.fromBigInt(this._startAddress() + adjust);
1008
+ }
1009
+ _endAddress() {
1010
+ return BigInt(`0b${this.mask() + "1".repeat(constants6.BITS - this.subnetMask)}`);
1011
+ }
1012
+ endAddress() {
1013
+ return Address6.fromBigInt(this._endAddress());
1014
+ }
1015
+ endAddressExclusive() {
1016
+ const adjust = BigInt("1");
1017
+ return Address6.fromBigInt(this._endAddress() - adjust);
1018
+ }
1019
+ getScope() {
1020
+ let scope = constants6.SCOPES[parseInt(this.getBits(12, 16).toString(10), 10)];
1021
+ if (this.getType() === "Global unicast" && scope !== "Link local") {
1022
+ scope = "Global";
1023
+ }
1024
+ return scope || "Unknown";
1025
+ }
1026
+ getType() {
1027
+ for (const subnet of Object.keys(constants6.TYPES)) {
1028
+ if (this.isInSubnet(new Address6(subnet))) {
1029
+ return constants6.TYPES[subnet];
1030
+ }
1031
+ }
1032
+ return "Global unicast";
1033
+ }
1034
+ getBits(start, end) {
1035
+ return BigInt(`0b${this.getBitsBase2(start, end)}`);
1036
+ }
1037
+ getBitsBase2(start, end) {
1038
+ return this.binaryZeroPad().slice(start, end);
1039
+ }
1040
+ getBitsBase16(start, end) {
1041
+ const length = end - start;
1042
+ if (length % 4 !== 0) {
1043
+ throw new Error("Length of bits to retrieve must be divisible by four");
1044
+ }
1045
+ return this.getBits(start, end).toString(16).padStart(length / 4, "0");
1046
+ }
1047
+ getBitsPastSubnet() {
1048
+ return this.getBitsBase2(this.subnetMask, constants6.BITS);
1049
+ }
1050
+ reverseForm(options) {
1051
+ if (!options) {
1052
+ options = {};
1053
+ }
1054
+ const characters = Math.floor(this.subnetMask / 4);
1055
+ const reversed = this.canonicalForm().replace(/:/g, "").split("").slice(0, characters).reverse().join(".");
1056
+ if (characters > 0) {
1057
+ if (options.omitSuffix) {
1058
+ return reversed;
1059
+ }
1060
+ return `${reversed}.ip6.arpa.`;
1061
+ }
1062
+ if (options.omitSuffix) {
1063
+ return "";
1064
+ }
1065
+ return "ip6.arpa.";
1066
+ }
1067
+ correctForm() {
1068
+ let i;
1069
+ let groups = [];
1070
+ let zeroCounter = 0;
1071
+ const zeroes = [];
1072
+ for (i = 0;i < this.parsedAddress.length; i++) {
1073
+ const value = parseInt(this.parsedAddress[i], 16);
1074
+ if (value === 0) {
1075
+ zeroCounter++;
1076
+ }
1077
+ if (value !== 0 && zeroCounter > 0) {
1078
+ if (zeroCounter > 1) {
1079
+ zeroes.push([i - zeroCounter, i - 1]);
1080
+ }
1081
+ zeroCounter = 0;
1082
+ }
1083
+ }
1084
+ if (zeroCounter > 1) {
1085
+ zeroes.push([this.parsedAddress.length - zeroCounter, this.parsedAddress.length - 1]);
1086
+ }
1087
+ const zeroLengths = zeroes.map((n) => n[1] - n[0] + 1);
1088
+ if (zeroes.length > 0) {
1089
+ const index = zeroLengths.indexOf(Math.max(...zeroLengths));
1090
+ groups = compact(this.parsedAddress, zeroes[index]);
1091
+ } else {
1092
+ groups = this.parsedAddress;
1093
+ }
1094
+ for (i = 0;i < groups.length; i++) {
1095
+ if (groups[i] !== "compact") {
1096
+ groups[i] = parseInt(groups[i], 16).toString(16);
1097
+ }
1098
+ }
1099
+ let correct = groups.join(":");
1100
+ correct = correct.replace(/^compact$/, "::");
1101
+ correct = correct.replace(/(^compact)|(compact$)/, ":");
1102
+ correct = correct.replace(/compact/, "");
1103
+ return correct;
1104
+ }
1105
+ binaryZeroPad() {
1106
+ return this.bigInt().toString(2).padStart(constants6.BITS, "0");
1107
+ }
1108
+ parse4in6(address) {
1109
+ const groups = address.split(":");
1110
+ const lastGroup = groups.slice(-1)[0];
1111
+ const address4 = lastGroup.match(constants4.RE_ADDRESS);
1112
+ if (address4) {
1113
+ this.parsedAddress4 = address4[0];
1114
+ this.address4 = new ipv4_1.Address4(this.parsedAddress4);
1115
+ for (let i = 0;i < this.address4.groups; i++) {
1116
+ if (/^0[0-9]+/.test(this.address4.parsedAddress[i])) {
1117
+ throw new address_error_1.AddressError("IPv4 addresses can't have leading zeroes.", address.replace(constants4.RE_ADDRESS, this.address4.parsedAddress.map(spanLeadingZeroes4).join(".")));
1118
+ }
1119
+ }
1120
+ this.v4 = true;
1121
+ groups[groups.length - 1] = this.address4.toGroup6();
1122
+ address = groups.join(":");
1123
+ }
1124
+ return address;
1125
+ }
1126
+ parse(address) {
1127
+ address = this.parse4in6(address);
1128
+ const badCharacters = address.match(constants6.RE_BAD_CHARACTERS);
1129
+ if (badCharacters) {
1130
+ throw new address_error_1.AddressError(`Bad character${badCharacters.length > 1 ? "s" : ""} detected in address: ${badCharacters.join("")}`, address.replace(constants6.RE_BAD_CHARACTERS, '<span class="parse-error">$1</span>'));
1131
+ }
1132
+ const badAddress = address.match(constants6.RE_BAD_ADDRESS);
1133
+ if (badAddress) {
1134
+ throw new address_error_1.AddressError(`Address failed regex: ${badAddress.join("")}`, address.replace(constants6.RE_BAD_ADDRESS, '<span class="parse-error">$1</span>'));
1135
+ }
1136
+ let groups = [];
1137
+ const halves = address.split("::");
1138
+ if (halves.length === 2) {
1139
+ let first = halves[0].split(":");
1140
+ let last = halves[1].split(":");
1141
+ if (first.length === 1 && first[0] === "") {
1142
+ first = [];
1143
+ }
1144
+ if (last.length === 1 && last[0] === "") {
1145
+ last = [];
1146
+ }
1147
+ const remaining = this.groups - (first.length + last.length);
1148
+ if (!remaining) {
1149
+ throw new address_error_1.AddressError("Error parsing groups");
1150
+ }
1151
+ this.elidedGroups = remaining;
1152
+ this.elisionBegin = first.length;
1153
+ this.elisionEnd = first.length + this.elidedGroups;
1154
+ groups = groups.concat(first);
1155
+ for (let i = 0;i < remaining; i++) {
1156
+ groups.push("0");
1157
+ }
1158
+ groups = groups.concat(last);
1159
+ } else if (halves.length === 1) {
1160
+ groups = address.split(":");
1161
+ this.elidedGroups = 0;
1162
+ } else {
1163
+ throw new address_error_1.AddressError("Too many :: groups found");
1164
+ }
1165
+ groups = groups.map((group) => parseInt(group, 16).toString(16));
1166
+ if (groups.length !== this.groups) {
1167
+ throw new address_error_1.AddressError("Incorrect number of groups found");
1168
+ }
1169
+ return groups;
1170
+ }
1171
+ canonicalForm() {
1172
+ return this.parsedAddress.map(paddedHex).join(":");
1173
+ }
1174
+ decimal() {
1175
+ return this.parsedAddress.map((n) => parseInt(n, 16).toString(10).padStart(5, "0")).join(":");
1176
+ }
1177
+ bigInt() {
1178
+ return BigInt(`0x${this.parsedAddress.map(paddedHex).join("")}`);
1179
+ }
1180
+ to4() {
1181
+ const binary = this.binaryZeroPad().split("");
1182
+ return ipv4_1.Address4.fromHex(BigInt(`0b${binary.slice(96, 128).join("")}`).toString(16));
1183
+ }
1184
+ to4in6() {
1185
+ const address4 = this.to4();
1186
+ const address6 = new Address6(this.parsedAddress.slice(0, 6).join(":"), 6);
1187
+ const correct = address6.correctForm();
1188
+ let infix = "";
1189
+ if (!/:$/.test(correct)) {
1190
+ infix = ":";
1191
+ }
1192
+ return correct + infix + address4.address;
1193
+ }
1194
+ inspectTeredo() {
1195
+ const prefix = this.getBitsBase16(0, 32);
1196
+ const bitsForUdpPort = this.getBits(80, 96);
1197
+ const udpPort = (bitsForUdpPort ^ BigInt("0xffff")).toString();
1198
+ const server4 = ipv4_1.Address4.fromHex(this.getBitsBase16(32, 64));
1199
+ const bitsForClient4 = this.getBits(96, 128);
1200
+ const client4 = ipv4_1.Address4.fromHex((bitsForClient4 ^ BigInt("0xffffffff")).toString(16));
1201
+ const flagsBase2 = this.getBitsBase2(64, 80);
1202
+ const coneNat = (0, common_1.testBit)(flagsBase2, 15);
1203
+ const reserved = (0, common_1.testBit)(flagsBase2, 14);
1204
+ const groupIndividual = (0, common_1.testBit)(flagsBase2, 8);
1205
+ const universalLocal = (0, common_1.testBit)(flagsBase2, 9);
1206
+ const nonce = BigInt(`0b${flagsBase2.slice(2, 6) + flagsBase2.slice(8, 16)}`).toString(10);
1207
+ return {
1208
+ prefix: `${prefix.slice(0, 4)}:${prefix.slice(4, 8)}`,
1209
+ server4: server4.address,
1210
+ client4: client4.address,
1211
+ flags: flagsBase2,
1212
+ coneNat,
1213
+ microsoft: {
1214
+ reserved,
1215
+ universalLocal,
1216
+ groupIndividual,
1217
+ nonce
1218
+ },
1219
+ udpPort
1220
+ };
1221
+ }
1222
+ inspect6to4() {
1223
+ const prefix = this.getBitsBase16(0, 16);
1224
+ const gateway = ipv4_1.Address4.fromHex(this.getBitsBase16(16, 48));
1225
+ return {
1226
+ prefix: prefix.slice(0, 4),
1227
+ gateway: gateway.address
1228
+ };
1229
+ }
1230
+ to6to4() {
1231
+ if (!this.is4()) {
1232
+ return null;
1233
+ }
1234
+ const addr6to4 = [
1235
+ "2002",
1236
+ this.getBitsBase16(96, 112),
1237
+ this.getBitsBase16(112, 128),
1238
+ "",
1239
+ "/16"
1240
+ ].join(":");
1241
+ return new Address6(addr6to4);
1242
+ }
1243
+ toByteArray() {
1244
+ const valueWithoutPadding = this.bigInt().toString(16);
1245
+ const leadingPad = "0".repeat(valueWithoutPadding.length % 2);
1246
+ const value = `${leadingPad}${valueWithoutPadding}`;
1247
+ const bytes = [];
1248
+ for (let i = 0, length = value.length;i < length; i += 2) {
1249
+ bytes.push(parseInt(value.substring(i, i + 2), 16));
1250
+ }
1251
+ return bytes;
1252
+ }
1253
+ toUnsignedByteArray() {
1254
+ return this.toByteArray().map(unsignByte);
1255
+ }
1256
+ static fromByteArray(bytes) {
1257
+ return this.fromUnsignedByteArray(bytes.map(unsignByte));
1258
+ }
1259
+ static fromUnsignedByteArray(bytes) {
1260
+ const BYTE_MAX = BigInt("256");
1261
+ let result = BigInt("0");
1262
+ let multiplier = BigInt("1");
1263
+ for (let i = bytes.length - 1;i >= 0; i--) {
1264
+ result += multiplier * BigInt(bytes[i].toString(10));
1265
+ multiplier *= BYTE_MAX;
1266
+ }
1267
+ return Address6.fromBigInt(result);
1268
+ }
1269
+ isCanonical() {
1270
+ return this.addressMinusSuffix === this.canonicalForm();
1271
+ }
1272
+ isLinkLocal() {
1273
+ if (this.getBitsBase2(0, 64) === "1111111010000000000000000000000000000000000000000000000000000000") {
1274
+ return true;
1275
+ }
1276
+ return false;
1277
+ }
1278
+ isMulticast() {
1279
+ return this.getType() === "Multicast";
1280
+ }
1281
+ is4() {
1282
+ return this.v4;
1283
+ }
1284
+ isTeredo() {
1285
+ return this.isInSubnet(new Address6("2001::/32"));
1286
+ }
1287
+ is6to4() {
1288
+ return this.isInSubnet(new Address6("2002::/16"));
1289
+ }
1290
+ isLoopback() {
1291
+ return this.getType() === "Loopback";
1292
+ }
1293
+ href(optionalPort) {
1294
+ if (optionalPort === undefined) {
1295
+ optionalPort = "";
1296
+ } else {
1297
+ optionalPort = `:${optionalPort}`;
1298
+ }
1299
+ return `http://[${this.correctForm()}]${optionalPort}/`;
1300
+ }
1301
+ link(options) {
1302
+ if (!options) {
1303
+ options = {};
1304
+ }
1305
+ if (options.className === undefined) {
1306
+ options.className = "";
1307
+ }
1308
+ if (options.prefix === undefined) {
1309
+ options.prefix = "/#address=";
1310
+ }
1311
+ if (options.v4 === undefined) {
1312
+ options.v4 = false;
1313
+ }
1314
+ let formFunction = this.correctForm;
1315
+ if (options.v4) {
1316
+ formFunction = this.to4in6;
1317
+ }
1318
+ const form = formFunction.call(this);
1319
+ if (options.className) {
1320
+ return `<a href="${options.prefix}${form}" class="${options.className}">${form}</a>`;
1321
+ }
1322
+ return `<a href="${options.prefix}${form}">${form}</a>`;
1323
+ }
1324
+ group() {
1325
+ if (this.elidedGroups === 0) {
1326
+ return helpers.simpleGroup(this.address).join(":");
1327
+ }
1328
+ assert(typeof this.elidedGroups === "number");
1329
+ assert(typeof this.elisionBegin === "number");
1330
+ const output = [];
1331
+ const [left, right] = this.address.split("::");
1332
+ if (left.length) {
1333
+ output.push(...helpers.simpleGroup(left));
1334
+ } else {
1335
+ output.push("");
1336
+ }
1337
+ const classes = ["hover-group"];
1338
+ for (let i = this.elisionBegin;i < this.elisionBegin + this.elidedGroups; i++) {
1339
+ classes.push(`group-${i}`);
1340
+ }
1341
+ output.push(`<span class="${classes.join(" ")}"></span>`);
1342
+ if (right.length) {
1343
+ output.push(...helpers.simpleGroup(right, this.elisionEnd));
1344
+ } else {
1345
+ output.push("");
1346
+ }
1347
+ if (this.is4()) {
1348
+ assert(this.address4 instanceof ipv4_1.Address4);
1349
+ output.pop();
1350
+ output.push(this.address4.groupForV6());
1351
+ }
1352
+ return output.join(":");
1353
+ }
1354
+ regularExpressionString(substringSearch = false) {
1355
+ let output = [];
1356
+ const address6 = new Address6(this.correctForm());
1357
+ if (address6.elidedGroups === 0) {
1358
+ output.push((0, regular_expressions_1.simpleRegularExpression)(address6.parsedAddress));
1359
+ } else if (address6.elidedGroups === constants6.GROUPS) {
1360
+ output.push((0, regular_expressions_1.possibleElisions)(constants6.GROUPS));
1361
+ } else {
1362
+ const halves = address6.address.split("::");
1363
+ if (halves[0].length) {
1364
+ output.push((0, regular_expressions_1.simpleRegularExpression)(halves[0].split(":")));
1365
+ }
1366
+ assert(typeof address6.elidedGroups === "number");
1367
+ output.push((0, regular_expressions_1.possibleElisions)(address6.elidedGroups, halves[0].length !== 0, halves[1].length !== 0));
1368
+ if (halves[1].length) {
1369
+ output.push((0, regular_expressions_1.simpleRegularExpression)(halves[1].split(":")));
1370
+ }
1371
+ output = [output.join(":")];
1372
+ }
1373
+ if (!substringSearch) {
1374
+ output = [
1375
+ "(?=^|",
1376
+ regular_expressions_1.ADDRESS_BOUNDARY,
1377
+ "|[^\\w\\:])(",
1378
+ ...output,
1379
+ ")(?=[^\\w\\:]|",
1380
+ regular_expressions_1.ADDRESS_BOUNDARY,
1381
+ "|$)"
1382
+ ];
1383
+ }
1384
+ return output.join("");
1385
+ }
1386
+ regularExpression(substringSearch = false) {
1387
+ return new RegExp(this.regularExpressionString(substringSearch), "i");
1388
+ }
1389
+ }
1390
+ exports.Address6 = Address6;
1391
+ });
1392
+
1393
+ // ../../node_modules/ip-address/dist/ip-address.js
1394
+ var require_ip_address = __commonJS((exports) => {
1395
+ var __createBinding = exports && exports.__createBinding || (Object.create ? function(o, m, k, k2) {
1396
+ if (k2 === undefined)
1397
+ k2 = k;
1398
+ var desc = Object.getOwnPropertyDescriptor(m, k);
1399
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
1400
+ desc = { enumerable: true, get: function() {
1401
+ return m[k];
1402
+ } };
1403
+ }
1404
+ Object.defineProperty(o, k2, desc);
1405
+ } : function(o, m, k, k2) {
1406
+ if (k2 === undefined)
1407
+ k2 = k;
1408
+ o[k2] = m[k];
1409
+ });
1410
+ var __setModuleDefault = exports && exports.__setModuleDefault || (Object.create ? function(o, v) {
1411
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
1412
+ } : function(o, v) {
1413
+ o["default"] = v;
1414
+ });
1415
+ var __importStar = exports && exports.__importStar || function(mod) {
1416
+ if (mod && mod.__esModule)
1417
+ return mod;
1418
+ var result = {};
1419
+ if (mod != null) {
1420
+ for (var k in mod)
1421
+ if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k))
1422
+ __createBinding(result, mod, k);
1423
+ }
1424
+ __setModuleDefault(result, mod);
1425
+ return result;
1426
+ };
1427
+ Object.defineProperty(exports, "__esModule", { value: true });
1428
+ exports.v6 = exports.AddressError = exports.Address6 = exports.Address4 = undefined;
1429
+ var ipv4_1 = require_ipv4();
1430
+ Object.defineProperty(exports, "Address4", { enumerable: true, get: function() {
1431
+ return ipv4_1.Address4;
1432
+ } });
1433
+ var ipv6_1 = require_ipv6();
1434
+ Object.defineProperty(exports, "Address6", { enumerable: true, get: function() {
1435
+ return ipv6_1.Address6;
1436
+ } });
1437
+ var address_error_1 = require_address_error();
1438
+ Object.defineProperty(exports, "AddressError", { enumerable: true, get: function() {
1439
+ return address_error_1.AddressError;
1440
+ } });
1441
+ var helpers = __importStar(require_helpers());
1442
+ exports.v6 = { helpers };
1443
+ });
1444
+
373
1445
  // ../../node_modules/dotenv/package.json
374
1446
  var require_package = __commonJS((exports, module) => {
375
1447
  module.exports = {
376
1448
  name: "dotenv",
377
- version: "16.6.1",
1449
+ version: "17.2.3",
378
1450
  description: "Loads environment variables from .env file",
379
1451
  main: "lib/main.js",
380
1452
  types: "lib/main.d.ts",
@@ -396,8 +1468,8 @@ var require_package = __commonJS((exports, module) => {
396
1468
  "dts-check": "tsc --project tests/types/tsconfig.json",
397
1469
  lint: "standard",
398
1470
  pretest: "npm run lint && npm run dts-check",
399
- test: "tap run --allow-empty-coverage --disable-coverage --timeout=60000",
400
- "test:coverage": "tap run --show-full-coverage --timeout=60000 --coverage-report=text --coverage-report=lcov",
1471
+ test: "tap run tests/**/*.js --allow-empty-coverage --disable-coverage --timeout=60000",
1472
+ "test:coverage": "tap run tests/**/*.js --show-full-coverage --timeout=60000 --coverage-report=text --coverage-report=lcov",
401
1473
  prerelease: "npm test",
402
1474
  release: "standard-version"
403
1475
  },
@@ -444,6 +1516,39 @@ var require_main = __commonJS((exports, module) => {
444
1516
  var crypto = __require("crypto");
445
1517
  var packageJson = require_package();
446
1518
  var version = packageJson.version;
1519
+ var TIPS = [
1520
+ "\uD83D\uDD10 encrypt with Dotenvx: https://dotenvx.com",
1521
+ "\uD83D\uDD10 prevent committing .env to code: https://dotenvx.com/precommit",
1522
+ "\uD83D\uDD10 prevent building .env in docker: https://dotenvx.com/prebuild",
1523
+ "\uD83D\uDCE1 add observability to secrets: https://dotenvx.com/ops",
1524
+ "\uD83D\uDC65 sync secrets across teammates & machines: https://dotenvx.com/ops",
1525
+ "\uD83D\uDDC2️ backup and recover secrets: https://dotenvx.com/ops",
1526
+ "✅ audit secrets and track compliance: https://dotenvx.com/ops",
1527
+ "\uD83D\uDD04 add secrets lifecycle management: https://dotenvx.com/ops",
1528
+ "\uD83D\uDD11 add access controls to secrets: https://dotenvx.com/ops",
1529
+ "\uD83D\uDEE0️ run anywhere with `dotenvx run -- yourcommand`",
1530
+ "⚙️ specify custom .env file path with { path: '/custom/path/.env' }",
1531
+ "⚙️ enable debug logging with { debug: true }",
1532
+ "⚙️ override existing env vars with { override: true }",
1533
+ "⚙️ suppress all logs with { quiet: true }",
1534
+ "⚙️ write to custom object with { processEnv: myObject }",
1535
+ "⚙️ load multiple .env files with { path: ['.env.local', '.env'] }"
1536
+ ];
1537
+ function _getRandomTip() {
1538
+ return TIPS[Math.floor(Math.random() * TIPS.length)];
1539
+ }
1540
+ function parseBoolean(value) {
1541
+ if (typeof value === "string") {
1542
+ return !["false", "0", "no", "off", ""].includes(value.toLowerCase());
1543
+ }
1544
+ return Boolean(value);
1545
+ }
1546
+ function supportsAnsi() {
1547
+ return process.stdout.isTTY;
1548
+ }
1549
+ function dim(text) {
1550
+ return supportsAnsi() ? `\x1B[2m${text}\x1B[0m` : text;
1551
+ }
447
1552
  var LINE = /(?:^|^)\s*(?:export\s+)?([\w.-]+)(?:\s*=\s*?|:\s+?)(\s*'(?:\\'|[^'])*'|\s*"(?:\\"|[^"])*"|\s*`(?:\\`|[^`])*`|[^#\r\n]+)?\s*(?:#.*)?(?:$|$)/mg;
448
1553
  function parse(src) {
449
1554
  const obj = {};
@@ -494,7 +1599,7 @@ var require_main = __commonJS((exports, module) => {
494
1599
  return DotenvModule.parse(decrypted);
495
1600
  }
496
1601
  function _warn(message) {
497
- console.log(`[dotenv@${version}][WARN] ${message}`);
1602
+ console.error(`[dotenv@${version}][WARN] ${message}`);
498
1603
  }
499
1604
  function _debug(message) {
500
1605
  console.log(`[dotenv@${version}][DEBUG] ${message}`);
@@ -568,8 +1673,8 @@ var require_main = __commonJS((exports, module) => {
568
1673
  return envPath[0] === "~" ? path5.join(os.homedir(), envPath.slice(1)) : envPath;
569
1674
  }
570
1675
  function _configVault(options) {
571
- const debug = Boolean(options && options.debug);
572
- const quiet = options && "quiet" in options ? options.quiet : true;
1676
+ const debug = parseBoolean(process.env.DOTENV_CONFIG_DEBUG || options && options.debug);
1677
+ const quiet = parseBoolean(process.env.DOTENV_CONFIG_QUIET || options && options.quiet);
573
1678
  if (debug || !quiet) {
574
1679
  _log("Loading env from encrypted .env.vault");
575
1680
  }
@@ -584,8 +1689,12 @@ var require_main = __commonJS((exports, module) => {
584
1689
  function configDotenv(options) {
585
1690
  const dotenvPath = path5.resolve(process.cwd(), ".env");
586
1691
  let encoding = "utf8";
587
- const debug = Boolean(options && options.debug);
588
- const quiet = options && "quiet" in options ? options.quiet : true;
1692
+ let processEnv = process.env;
1693
+ if (options && options.processEnv != null) {
1694
+ processEnv = options.processEnv;
1695
+ }
1696
+ let debug = parseBoolean(processEnv.DOTENV_CONFIG_DEBUG || options && options.debug);
1697
+ let quiet = parseBoolean(processEnv.DOTENV_CONFIG_QUIET || options && options.quiet);
589
1698
  if (options && options.encoding) {
590
1699
  encoding = options.encoding;
591
1700
  } else {
@@ -617,13 +1726,11 @@ var require_main = __commonJS((exports, module) => {
617
1726
  lastError = e;
618
1727
  }
619
1728
  }
620
- let processEnv = process.env;
621
- if (options && options.processEnv != null) {
622
- processEnv = options.processEnv;
623
- }
624
- DotenvModule.populate(processEnv, parsedAll, options);
1729
+ const populated = DotenvModule.populate(processEnv, parsedAll, options);
1730
+ debug = parseBoolean(processEnv.DOTENV_CONFIG_DEBUG || debug);
1731
+ quiet = parseBoolean(processEnv.DOTENV_CONFIG_QUIET || quiet);
625
1732
  if (debug || !quiet) {
626
- const keysCount = Object.keys(parsedAll).length;
1733
+ const keysCount = Object.keys(populated).length;
627
1734
  const shortPaths = [];
628
1735
  for (const filePath of optionPaths) {
629
1736
  try {
@@ -636,7 +1743,7 @@ var require_main = __commonJS((exports, module) => {
636
1743
  lastError = e;
637
1744
  }
638
1745
  }
639
- _log(`injecting env (${keysCount}) from ${shortPaths.join(",")}`);
1746
+ _log(`injecting env (${keysCount}) from ${shortPaths.join(",")} ${dim(`-- tip: ${_getRandomTip()}`)}`);
640
1747
  }
641
1748
  if (lastError) {
642
1749
  return { parsed: parsedAll, error: lastError };
@@ -685,6 +1792,7 @@ var require_main = __commonJS((exports, module) => {
685
1792
  function populate(processEnv, parsed, options = {}) {
686
1793
  const debug = Boolean(options && options.debug);
687
1794
  const override = Boolean(options && options.override);
1795
+ const populated = {};
688
1796
  if (typeof parsed !== "object") {
689
1797
  const err = new Error("OBJECT_REQUIRED: Please check the processEnv argument being passed to populate");
690
1798
  err.code = "OBJECT_REQUIRED";
@@ -694,6 +1802,7 @@ var require_main = __commonJS((exports, module) => {
694
1802
  if (Object.prototype.hasOwnProperty.call(processEnv, key)) {
695
1803
  if (override === true) {
696
1804
  processEnv[key] = parsed[key];
1805
+ populated[key] = parsed[key];
697
1806
  }
698
1807
  if (debug) {
699
1808
  if (override === true) {
@@ -704,8 +1813,10 @@ var require_main = __commonJS((exports, module) => {
704
1813
  }
705
1814
  } else {
706
1815
  processEnv[key] = parsed[key];
1816
+ populated[key] = parsed[key];
707
1817
  }
708
1818
  }
1819
+ return populated;
709
1820
  }
710
1821
  var DotenvModule = {
711
1822
  configDotenv,
@@ -2148,7 +3259,7 @@ var require_suppress_tracing = __commonJS((exports) => {
2148
3259
  });
2149
3260
 
2150
3261
  // ../../node_modules/@opentelemetry/core/build/src/baggage/constants.js
2151
- var require_constants = __commonJS((exports) => {
3262
+ var require_constants3 = __commonJS((exports) => {
2152
3263
  Object.defineProperty(exports, "__esModule", { value: true });
2153
3264
  exports.BAGGAGE_MAX_TOTAL_LENGTH = exports.BAGGAGE_MAX_PER_NAME_VALUE_PAIRS = exports.BAGGAGE_MAX_NAME_VALUE_PAIRS = exports.BAGGAGE_HEADER = exports.BAGGAGE_ITEMS_SEPARATOR = exports.BAGGAGE_PROPERTIES_SEPARATOR = exports.BAGGAGE_KEY_PAIR_SEPARATOR = undefined;
2154
3265
  exports.BAGGAGE_KEY_PAIR_SEPARATOR = "=";
@@ -2165,7 +3276,7 @@ var require_utils3 = __commonJS((exports) => {
2165
3276
  Object.defineProperty(exports, "__esModule", { value: true });
2166
3277
  exports.parseKeyPairsIntoRecord = exports.parsePairKeyValue = exports.getKeyPairs = exports.serializeKeyPairs = undefined;
2167
3278
  var api_1 = require_src();
2168
- var constants_1 = require_constants();
3279
+ var constants_1 = require_constants3();
2169
3280
  function serializeKeyPairs(keyPairs) {
2170
3281
  return keyPairs.reduce((hValue, current) => {
2171
3282
  const value = `${hValue}${hValue !== "" ? constants_1.BAGGAGE_ITEMS_SEPARATOR : ""}${current}`;
@@ -2223,7 +3334,7 @@ var require_W3CBaggagePropagator = __commonJS((exports) => {
2223
3334
  exports.W3CBaggagePropagator = undefined;
2224
3335
  var api_1 = require_src();
2225
3336
  var suppress_tracing_1 = require_suppress_tracing();
2226
- var constants_1 = require_constants();
3337
+ var constants_1 = require_constants3();
2227
3338
  var utils_1 = require_utils3();
2228
3339
 
2229
3340
  class W3CBaggagePropagator {
@@ -5930,7 +7041,7 @@ var require_ms = __commonJS((exports, module) => {
5930
7041
  });
5931
7042
 
5932
7043
  // ../../node_modules/debug/src/common.js
5933
- var require_common = __commonJS((exports, module) => {
7044
+ var require_common2 = __commonJS((exports, module) => {
5934
7045
  function setup(env) {
5935
7046
  createDebug.debug = createDebug;
5936
7047
  createDebug.default = createDebug;
@@ -6253,7 +7364,7 @@ var require_browser = __commonJS((exports, module) => {
6253
7364
  return localStorage;
6254
7365
  } catch (error) {}
6255
7366
  }
6256
- module.exports = require_common()(exports);
7367
+ module.exports = require_common2()(exports);
6257
7368
  var { formatters } = module.exports;
6258
7369
  formatters.j = function(v) {
6259
7370
  try {
@@ -6543,7 +7654,7 @@ var require_node4 = __commonJS((exports, module) => {
6543
7654
  debug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]];
6544
7655
  }
6545
7656
  }
6546
- module.exports = require_common()(exports);
7657
+ module.exports = require_common2()(exports);
6547
7658
  var { formatters } = module.exports;
6548
7659
  formatters.o = function(v) {
6549
7660
  this.inspectOpts.colors = this.useColors;
@@ -17823,7 +18934,7 @@ var require_autoLoader2 = __commonJS((exports) => {
17823
18934
  });
17824
18935
 
17825
18936
  // ../../node_modules/semver/internal/constants.js
17826
- var require_constants2 = __commonJS((exports, module) => {
18937
+ var require_constants4 = __commonJS((exports, module) => {
17827
18938
  var SEMVER_SPEC_VERSION = "2.0.0";
17828
18939
  var MAX_LENGTH = 256;
17829
18940
  var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991;
@@ -17862,7 +18973,7 @@ var require_re = __commonJS((exports, module) => {
17862
18973
  MAX_SAFE_COMPONENT_LENGTH,
17863
18974
  MAX_SAFE_BUILD_LENGTH,
17864
18975
  MAX_LENGTH
17865
- } = require_constants2();
18976
+ } = require_constants4();
17866
18977
  var debug2 = require_debug();
17867
18978
  exports = module.exports = {};
17868
18979
  var re = exports.re = [];
@@ -17979,7 +19090,7 @@ var require_identifiers = __commonJS((exports, module) => {
17979
19090
  // ../../node_modules/semver/classes/semver.js
17980
19091
  var require_semver3 = __commonJS((exports, module) => {
17981
19092
  var debug2 = require_debug();
17982
- var { MAX_LENGTH, MAX_SAFE_INTEGER } = require_constants2();
19093
+ var { MAX_LENGTH, MAX_SAFE_INTEGER } = require_constants4();
17983
19094
  var { safeRe: re, t } = require_re();
17984
19095
  var parseOptions2 = require_parse_options();
17985
19096
  var { compareIdentifiers } = require_identifiers();
@@ -18724,7 +19835,7 @@ var require_range = __commonJS((exports, module) => {
18724
19835
  tildeTrimReplace,
18725
19836
  caretTrimReplace
18726
19837
  } = require_re();
18727
- var { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = require_constants2();
19838
+ var { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = require_constants4();
18728
19839
  var isNullSet = (c) => c.value === "<0.0.0-0";
18729
19840
  var isAny = (c) => c.value === "";
18730
19841
  var isSatisfiable = (comparators, options) => {
@@ -19494,7 +20605,7 @@ var require_subset = __commonJS((exports, module) => {
19494
20605
  // ../../node_modules/semver/index.js
19495
20606
  var require_semver4 = __commonJS((exports, module) => {
19496
20607
  var internalRe = require_re();
19497
- var constants2 = require_constants2();
20608
+ var constants2 = require_constants4();
19498
20609
  var SemVer = require_semver3();
19499
20610
  var identifiers = require_identifiers();
19500
20611
  var parse = require_parse();
@@ -24339,20 +25450,99 @@ var getRuntime = (elizaOS, agentId) => {
24339
25450
  };
24340
25451
 
24341
25452
  // ../../node_modules/express-rate-limit/dist/index.mjs
25453
+ var import_ip_address = __toESM(require_ip_address(), 1);
25454
+ import { isIPv6 } from "node:net";
25455
+ import { isIPv6 as isIPv62 } from "node:net";
24342
25456
  import { Buffer as Buffer2 } from "node:buffer";
24343
25457
  import { createHash } from "node:crypto";
24344
25458
  import { isIP } from "node:net";
25459
+ function ipKeyGenerator(ip, ipv6Subnet = 56) {
25460
+ if (ipv6Subnet && isIPv6(ip)) {
25461
+ return `${new import_ip_address.Address6(`${ip}/${ipv6Subnet}`).startAddress().correctForm()}/${ipv6Subnet}`;
25462
+ }
25463
+ return ip;
25464
+ }
25465
+ var MemoryStore = class {
25466
+ constructor(validations2) {
25467
+ this.validations = validations2;
25468
+ this.previous = /* @__PURE__ */ new Map;
25469
+ this.current = /* @__PURE__ */ new Map;
25470
+ this.localKeys = true;
25471
+ }
25472
+ init(options) {
25473
+ this.windowMs = options.windowMs;
25474
+ this.validations?.windowMs(this.windowMs);
25475
+ if (this.interval)
25476
+ clearInterval(this.interval);
25477
+ this.interval = setInterval(() => {
25478
+ this.clearExpired();
25479
+ }, this.windowMs);
25480
+ this.interval.unref?.();
25481
+ }
25482
+ async get(key) {
25483
+ return this.current.get(key) ?? this.previous.get(key);
25484
+ }
25485
+ async increment(key) {
25486
+ const client = this.getClient(key);
25487
+ const now = Date.now();
25488
+ if (client.resetTime.getTime() <= now) {
25489
+ this.resetClient(client, now);
25490
+ }
25491
+ client.totalHits++;
25492
+ return client;
25493
+ }
25494
+ async decrement(key) {
25495
+ const client = this.getClient(key);
25496
+ if (client.totalHits > 0)
25497
+ client.totalHits--;
25498
+ }
25499
+ async resetKey(key) {
25500
+ this.current.delete(key);
25501
+ this.previous.delete(key);
25502
+ }
25503
+ async resetAll() {
25504
+ this.current.clear();
25505
+ this.previous.clear();
25506
+ }
25507
+ shutdown() {
25508
+ clearInterval(this.interval);
25509
+ this.resetAll();
25510
+ }
25511
+ resetClient(client, now = Date.now()) {
25512
+ client.totalHits = 0;
25513
+ client.resetTime.setTime(now + this.windowMs);
25514
+ return client;
25515
+ }
25516
+ getClient(key) {
25517
+ if (this.current.has(key))
25518
+ return this.current.get(key);
25519
+ let client;
25520
+ if (this.previous.has(key)) {
25521
+ client = this.previous.get(key);
25522
+ this.previous.delete(key);
25523
+ } else {
25524
+ client = { totalHits: 0, resetTime: /* @__PURE__ */ new Date };
25525
+ this.resetClient(client);
25526
+ }
25527
+ this.current.set(key, client);
25528
+ return client;
25529
+ }
25530
+ clearExpired() {
25531
+ this.previous = this.current;
25532
+ this.current = /* @__PURE__ */ new Map;
25533
+ }
25534
+ };
24345
25535
  var SUPPORTED_DRAFT_VERSIONS = [
24346
25536
  "draft-6",
24347
25537
  "draft-7",
24348
25538
  "draft-8"
24349
25539
  ];
24350
- var getResetSeconds = (resetTime, windowMs) => {
24351
- let resetSeconds = undefined;
25540
+ var getResetSeconds = (windowMs, resetTime) => {
25541
+ let resetSeconds;
24352
25542
  if (resetTime) {
24353
25543
  const deltaSeconds = Math.ceil((resetTime.getTime() - Date.now()) / 1000);
24354
25544
  resetSeconds = Math.max(0, deltaSeconds);
24355
- } else if (windowMs) {
25545
+ } else {
24356
25546
  resetSeconds = Math.ceil(windowMs / 1000);
24357
25547
  }
24358
25548
  return resetSeconds;
@@ -24377,18 +25567,18 @@ var setDraft6Headers = (response, info, windowMs) => {
24377
25567
  if (response.headersSent)
24378
25568
  return;
24379
25569
  const windowSeconds = Math.ceil(windowMs / 1000);
24380
- const resetSeconds = getResetSeconds(info.resetTime);
25570
+ const resetSeconds = getResetSeconds(windowMs, info.resetTime);
24381
25571
  response.setHeader("RateLimit-Policy", `${info.limit};w=${windowSeconds}`);
24382
25572
  response.setHeader("RateLimit-Limit", info.limit.toString());
24383
25573
  response.setHeader("RateLimit-Remaining", info.remaining.toString());
24384
- if (resetSeconds)
25574
+ if (typeof resetSeconds === "number")
24385
25575
  response.setHeader("RateLimit-Reset", resetSeconds.toString());
24386
25576
  };
24387
25577
  var setDraft7Headers = (response, info, windowMs) => {
24388
25578
  if (response.headersSent)
24389
25579
  return;
24390
25580
  const windowSeconds = Math.ceil(windowMs / 1000);
24391
- const resetSeconds = getResetSeconds(info.resetTime, windowMs);
25581
+ const resetSeconds = getResetSeconds(windowMs, info.resetTime);
24392
25582
  response.setHeader("RateLimit-Policy", `${info.limit};w=${windowSeconds}`);
24393
25583
  response.setHeader("RateLimit", `limit=${info.limit}, remaining=${info.remaining}, reset=${resetSeconds}`);
24394
25584
  };
@@ -24396,19 +25586,29 @@ var setDraft8Headers = (response, info, windowMs, name, key) => {
24396
25586
  if (response.headersSent)
24397
25587
  return;
24398
25588
  const windowSeconds = Math.ceil(windowMs / 1000);
24399
- const resetSeconds = getResetSeconds(info.resetTime, windowMs);
25589
+ const resetSeconds = getResetSeconds(windowMs, info.resetTime);
24400
25590
  const partitionKey = getPartitionKey(key);
24401
- const policy = `q=${info.limit}; w=${windowSeconds}; pk=:${partitionKey}:`;
24402
25591
  const header = `r=${info.remaining}; t=${resetSeconds}`;
24403
- response.append("RateLimit-Policy", `"${name}"; ${policy}`);
25592
+ const policy = `q=${info.limit}; w=${windowSeconds}; pk=:${partitionKey}:`;
24404
25593
  response.append("RateLimit", `"${name}"; ${header}`);
25594
+ response.append("RateLimit-Policy", `"${name}"; ${policy}`);
24405
25595
  };
24406
25596
  var setRetryAfterHeader = (response, info, windowMs) => {
24407
25597
  if (response.headersSent)
24408
25598
  return;
24409
- const resetSeconds = getResetSeconds(info.resetTime, windowMs);
25599
+ const resetSeconds = getResetSeconds(windowMs, info.resetTime);
24410
25600
  response.setHeader("Retry-After", resetSeconds.toString());
24411
25601
  };
25602
+ var omitUndefinedProperties = (passedOptions) => {
25603
+ const omittedOptions = {};
25604
+ for (const k of Object.keys(passedOptions)) {
25605
+ const key = k;
25606
+ if (passedOptions[key] !== undefined) {
25607
+ omittedOptions[key] = passedOptions[key];
25608
+ }
25609
+ }
25610
+ return omittedOptions;
25611
+ };
24412
25612
  var ValidationError = class extends Error {
24413
25613
  constructor(code, message) {
24414
25614
  const url = `https://express-rate-limit.github.io/${code}/`;
@@ -24448,6 +25648,11 @@ var validations = {
24448
25648
  throw new ValidationError("ERR_ERL_UNEXPECTED_X_FORWARDED_FOR", `The 'X-Forwarded-For' header is set but the Express 'trust proxy' setting is false (default). This could indicate a misconfiguration which would prevent express-rate-limit from accurately identifying users.`);
24449
25649
  }
24450
25650
  },
25651
+ forwardedHeader(request) {
25652
+ if (request.headers.forwarded && request.ip === request.socket?.remoteAddress) {
25653
+ throw new ValidationError("ERR_ERL_FORWARDED_HEADER", `The 'Forwarded' header (standardized X-Forwarded-For) is set but currently being ignored. Add a custom keyGenerator to use a value from this header.`);
25654
+ }
25655
+ },
24451
25656
  positiveHits(hits) {
24452
25657
  if (typeof hits !== "number" || hits < 1 || hits !== Math.round(hits)) {
24453
25658
  throw new ValidationError("ERR_ERL_INVALID_HITS", `The totalHits value returned from the store must be a positive integer, got ${hits}`);
@@ -24480,7 +25685,7 @@ var validations = {
24480
25685
  },
24481
25686
  limit(limit) {
24482
25687
  if (limit === 0) {
24483
- throw new ChangeWarning("WRN_ERL_MAX_ZERO", `Setting limit or max to 0 disables rate limiting in express-rate-limit v6 and older, but will cause all requests to be blocked in v7`);
25688
+ throw new ChangeWarning("WRN_ERL_MAX_ZERO", "Setting limit or max to 0 disables rate limiting in express-rate-limit v6 and older, but will cause all requests to be blocked in v7");
24484
25689
  }
24485
25690
  },
24486
25691
  draftPolliHeaders(draft_polli_ratelimit_headers) {
@@ -24490,7 +25695,7 @@ var validations = {
24490
25695
  },
24491
25696
  onLimitReached(onLimitReached) {
24492
25697
  if (onLimitReached) {
24493
- throw new ChangeWarning("WRN_ERL_DEPRECATED_ON_LIMIT_REACHED", `The onLimitReached configuration option is deprecated and has been removed in express-rate-limit v7.`);
25698
+ throw new ChangeWarning("WRN_ERL_DEPRECATED_ON_LIMIT_REACHED", "The onLimitReached configuration option is deprecated and has been removed in express-rate-limit v7.");
24494
25699
  }
24495
25700
  },
24496
25701
  headersDraftVersion(version) {
@@ -24515,11 +25720,39 @@ var validations = {
24515
25720
  },
24516
25721
  creationStack(store) {
24517
25722
  const { stack } = new Error("express-rate-limit validation check (set options.validate.creationStack=false to disable)");
24518
- if (stack?.includes("Layer.handle [as handle_request]")) {
25723
+ if (stack?.includes("Layer.handle [as handle_request]") || stack?.includes("Layer.handleRequest")) {
24519
25724
  if (!store.localKeys) {
24520
25725
  throw new ValidationError("ERR_ERL_CREATED_IN_REQUEST_HANDLER", "express-rate-limit instance should *usually* be created at app initialization, not when responding to a request.");
24521
25726
  }
24522
- throw new ValidationError("ERR_ERL_CREATED_IN_REQUEST_HANDLER", `express-rate-limit instance should be created at app initialization, not when responding to a request.`);
25727
+ throw new ValidationError("ERR_ERL_CREATED_IN_REQUEST_HANDLER", "express-rate-limit instance should be created at app initialization, not when responding to a request.");
25728
+ }
25729
+ },
25730
+ ipv6Subnet(ipv6Subnet) {
25731
+ if (ipv6Subnet === false) {
25732
+ return;
25733
+ }
25734
+ if (!Number.isInteger(ipv6Subnet) || ipv6Subnet < 32 || ipv6Subnet > 64) {
25735
+ throw new ValidationError("ERR_ERL_IPV6_SUBNET", `Unexpected ipv6Subnet value: ${ipv6Subnet}. Expected an integer between 32 and 64 (usually 48-64).`);
25736
+ }
25737
+ },
25738
+ ipv6SubnetOrKeyGenerator(options) {
25739
+ if (options.ipv6Subnet !== undefined && options.keyGenerator) {
25740
+ throw new ValidationError("ERR_ERL_IPV6SUBNET_OR_KEYGENERATOR", `Incompatible options: the 'ipv6Subnet' option is ignored when a custom 'keyGenerator' function is also set.`);
25741
+ }
25742
+ },
25743
+ keyGeneratorIpFallback(keyGenerator) {
25744
+ if (!keyGenerator) {
25745
+ return;
25746
+ }
25747
+ const src = keyGenerator.toString();
25748
+ if ((src.includes("req.ip") || src.includes("request.ip")) && !src.includes("ipKeyGenerator")) {
25749
+ throw new ValidationError("ERR_ERL_KEY_GEN_IPV6", "Custom keyGenerator appears to use request IP without calling the ipKeyGenerator helper function for IPv6 addresses. This could allow IPv6 users to bypass limits.");
25750
+ }
25751
+ },
25752
+ windowMs(windowMs) {
25753
+ const SET_TIMEOUT_MAX = 2 ** 31 - 1;
25754
+ if (typeof windowMs !== "number" || Number.isNaN(windowMs) || windowMs < 1 || windowMs > SET_TIMEOUT_MAX) {
25755
+ throw new ValidationError("ERR_ERL_WINDOW_MS", `Invalid windowMs value: ${windowMs}${typeof windowMs !== "number" ? ` (${typeof windowMs})` : ""}, must be a number between 1 and ${SET_TIMEOUT_MAX} when using the default MemoryStore`);
24523
25756
  }
24524
25757
  }
24525
25758
  };
@@ -24535,9 +25768,7 @@ var getValidations = (_enabled) => {
24535
25768
  ..._enabled
24536
25769
  };
24537
25770
  }
24538
- const wrappedValidations = {
24539
- enabled
24540
- };
25771
+ const wrappedValidations = { enabled };
24541
25772
  for (const [name, validation] of Object.entries(validations)) {
24542
25773
  if (typeof validation === "function")
24543
25774
  wrappedValidations[name] = (...args) => {
@@ -24556,75 +25787,6 @@ var getValidations = (_enabled) => {
24556
25787
  }
24557
25788
  return wrappedValidations;
24558
25789
  };
24559
- var MemoryStore = class {
24560
- constructor() {
24561
- this.previous = /* @__PURE__ */ new Map;
24562
- this.current = /* @__PURE__ */ new Map;
24563
- this.localKeys = true;
24564
- }
24565
- init(options) {
24566
- this.windowMs = options.windowMs;
24567
- if (this.interval)
24568
- clearInterval(this.interval);
24569
- this.interval = setInterval(() => {
24570
- this.clearExpired();
24571
- }, this.windowMs);
24572
- if (this.interval.unref)
24573
- this.interval.unref();
24574
- }
24575
- async get(key) {
24576
- return this.current.get(key) ?? this.previous.get(key);
24577
- }
24578
- async increment(key) {
24579
- const client = this.getClient(key);
24580
- const now = Date.now();
24581
- if (client.resetTime.getTime() <= now) {
24582
- this.resetClient(client, now);
24583
- }
24584
- client.totalHits++;
24585
- return client;
24586
- }
24587
- async decrement(key) {
24588
- const client = this.getClient(key);
24589
- if (client.totalHits > 0)
24590
- client.totalHits--;
24591
- }
24592
- async resetKey(key) {
24593
- this.current.delete(key);
24594
- this.previous.delete(key);
24595
- }
24596
- async resetAll() {
24597
- this.current.clear();
24598
- this.previous.clear();
24599
- }
24600
- shutdown() {
24601
- clearInterval(this.interval);
24602
- this.resetAll();
24603
- }
24604
- resetClient(client, now = Date.now()) {
24605
- client.totalHits = 0;
24606
- client.resetTime.setTime(now + this.windowMs);
24607
- return client;
24608
- }
24609
- getClient(key) {
24610
- if (this.current.has(key))
24611
- return this.current.get(key);
24612
- let client;
24613
- if (this.previous.has(key)) {
24614
- client = this.previous.get(key);
24615
- this.previous.delete(key);
24616
- } else {
24617
- client = { totalHits: 0, resetTime: /* @__PURE__ */ new Date };
24618
- this.resetClient(client);
24619
- }
24620
- this.current.set(key, client);
24621
- return client;
24622
- }
24623
- clearExpired() {
24624
- this.previous = this.current;
24625
- this.current = /* @__PURE__ */ new Map;
24626
- }
24627
- };
24628
25790
  var isLegacyStore = (store) => typeof store.incr === "function" && typeof store.increment !== "function";
24629
25791
  var promisifyStore = (passedStore) => {
24630
25792
  if (!isLegacyStore(passedStore)) {
@@ -24662,22 +25824,17 @@ var getOptionsFromConfig = (config) => {
24662
25824
  validate: validations2.enabled
24663
25825
  };
24664
25826
  };
24665
- var omitUndefinedOptions = (passedOptions) => {
24666
- const omittedOptions = {};
24667
- for (const k of Object.keys(passedOptions)) {
24668
- const key = k;
24669
- if (passedOptions[key] !== undefined) {
24670
- omittedOptions[key] = passedOptions[key];
24671
- }
24672
- }
24673
- return omittedOptions;
24674
- };
24675
25827
  var parseOptions = (passedOptions) => {
24676
- const notUndefinedOptions = omitUndefinedOptions(passedOptions);
25828
+ const notUndefinedOptions = omitUndefinedProperties(passedOptions);
24677
25829
  const validations2 = getValidations(notUndefinedOptions?.validate ?? true);
24678
25830
  validations2.validationsConfig();
24679
25831
  validations2.draftPolliHeaders(notUndefinedOptions.draft_polli_ratelimit_headers);
24680
25832
  validations2.onLimitReached(notUndefinedOptions.onLimitReached);
25833
+ if (notUndefinedOptions.ipv6Subnet !== undefined && typeof notUndefinedOptions.ipv6Subnet !== "function") {
25834
+ validations2.ipv6Subnet(notUndefinedOptions.ipv6Subnet);
25835
+ }
25836
+ validations2.keyGeneratorIpFallback(notUndefinedOptions.keyGenerator);
25837
+ validations2.ipv6SubnetOrKeyGenerator(notUndefinedOptions);
24681
25838
  let standardHeaders = notUndefinedOptions.standardHeaders ?? false;
24682
25839
  if (standardHeaders === true)
24683
25840
  standardHeaders = "draft-6";
@@ -24710,23 +25867,31 @@ var parseOptions = (passedOptions) => {
24710
25867
  skipSuccessfulRequests: false,
24711
25868
  requestWasSuccessful: (_request, response) => response.statusCode < 400,
24712
25869
  skip: (_request, _response) => false,
24713
- keyGenerator(request, _response) {
25870
+ async keyGenerator(request, response) {
24714
25871
  validations2.ip(request.ip);
24715
25872
  validations2.trustProxy(request);
24716
25873
  validations2.xForwardedForHeader(request);
24717
- return request.ip;
25874
+ validations2.forwardedHeader(request);
25875
+ const ip = request.ip;
25876
+ let subnet = 56;
25877
+ if (isIPv62(ip)) {
25878
+ subnet = typeof config.ipv6Subnet === "function" ? await config.ipv6Subnet(request, response) : config.ipv6Subnet;
25879
+ if (typeof config.ipv6Subnet === "function")
25880
+ validations2.ipv6Subnet(subnet);
25881
+ }
25882
+ return ipKeyGenerator(ip, subnet);
24718
25883
  },
25884
+ ipv6Subnet: 56,
24719
25885
  async handler(request, response, _next, _optionsUsed) {
24720
25886
  response.status(config.statusCode);
24721
25887
  const message = typeof config.message === "function" ? await config.message(request, response) : config.message;
24722
- if (!response.writableEnded) {
25888
+ if (!response.writableEnded)
24723
25889
  response.send(message);
24724
- }
24725
25890
  },
24726
25891
  passOnStoreError: false,
24727
25892
  ...notUndefinedOptions,
24728
25893
  standardHeaders,
24729
- store: promisifyStore(notUndefinedOptions.store ?? new MemoryStore),
25894
+ store: promisifyStore(notUndefinedOptions.store ?? new MemoryStore(validations2)),
24730
25895
  validations: validations2
24731
25896
  };
24732
25897
  if (typeof config.store.increment !== "function" || typeof config.store.decrement !== "function" || typeof config.store.resetKey !== "function" || config.store.resetAll !== undefined && typeof config.store.resetAll !== "function" || config.store.init !== undefined && typeof config.store.init !== "function") {
@@ -24779,7 +25944,8 @@ var rateLimit = (passedOptions) => {
24779
25944
  limit,
24780
25945
  used: totalHits,
24781
25946
  remaining: Math.max(limit - totalHits, 0),
24782
- resetTime
25947
+ resetTime,
25948
+ key
24783
25949
  };
24784
25950
  Object.defineProperty(info, "current", {
24785
25951
  configurable: false,
@@ -24859,7 +26025,7 @@ var rateLimit = (passedOptions) => {
24859
26025
  middleware.getKey = typeof config.store.get === "function" ? config.store.get.bind(config.store) : getThrowFn;
24860
26026
  return middleware;
24861
26027
  };
24862
- var lib_default = rateLimit;
26028
+ var rate_limit_default = rateLimit;
24863
26029
 
24864
26030
  // src/api/shared/middleware.ts
24865
26031
  var securityMiddleware = () => {
@@ -24933,7 +26099,7 @@ var validateContentTypeMiddleware = () => {
24933
26099
  };
24934
26100
  };
24935
26101
  var createApiRateLimit = () => {
24936
- return lib_default({
26102
+ return rate_limit_default({
24937
26103
  windowMs: 15 * 60 * 1000,
24938
26104
  max: 1000,
24939
26105
  message: {
@@ -24959,7 +26125,7 @@ var createApiRateLimit = () => {
24959
26125
  });
24960
26126
  };
24961
26127
  var createFileSystemRateLimit = () => {
24962
- return lib_default({
26128
+ return rate_limit_default({
24963
26129
  windowMs: 5 * 60 * 1000,
24964
26130
  max: 100,
24965
26131
  message: {
@@ -24985,7 +26151,7 @@ var createFileSystemRateLimit = () => {
24985
26151
  });
24986
26152
  };
24987
26153
  var createUploadRateLimit = () => {
24988
- return lib_default({
26154
+ return rate_limit_default({
24989
26155
  windowMs: 15 * 60 * 1000,
24990
26156
  max: 50,
24991
26157
  message: {
@@ -25740,7 +26906,7 @@ import {
25740
26906
  } from "@elizaos/core";
25741
26907
  import express13 from "express";
25742
26908
 
25743
- // ../../node_modules/uuid/dist/esm/stringify.js
26909
+ // ../../node_modules/uuid/dist-node/stringify.js
25744
26910
  var byteToHex = [];
25745
26911
  for (let i = 0;i < 256; ++i) {
25746
26912
  byteToHex.push((i + 256).toString(16).slice(1));
@@ -25749,8 +26915,8 @@ function unsafeStringify(arr, offset = 0) {
25749
26915
  return (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + "-" + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + "-" + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + "-" + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + "-" + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase();
25750
26916
  }
25751
26917
 
25752
- // ../../node_modules/uuid/dist/esm/rng.js
25753
- import { randomFillSync } from "crypto";
26918
+ // ../../node_modules/uuid/dist-node/rng.js
26919
+ import { randomFillSync } from "node:crypto";
25754
26920
  var rnds8Pool = new Uint8Array(256);
25755
26921
  var poolPtr = rnds8Pool.length;
25756
26922
  function rng() {
@@ -25761,15 +26927,12 @@ function rng() {
25761
26927
  return rnds8Pool.slice(poolPtr, poolPtr += 16);
25762
26928
  }
25763
26929
 
25764
- // ../../node_modules/uuid/dist/esm/native.js
25765
- import { randomUUID } from "crypto";
26930
+ // ../../node_modules/uuid/dist-node/native.js
26931
+ import { randomUUID } from "node:crypto";
25766
26932
  var native_default = { randomUUID };
25767
26933
 
25768
- // ../../node_modules/uuid/dist/esm/v4.js
25769
- function v4(options, buf, offset) {
25770
- if (native_default.randomUUID && !buf && !options) {
25771
- return native_default.randomUUID();
25772
- }
26934
+ // ../../node_modules/uuid/dist-node/v4.js
26935
+ function _v4(options, buf, offset) {
25773
26936
  options = options || {};
25774
26937
  const rnds = options.random ?? options.rng?.() ?? rng();
25775
26938
  if (rnds.length < 16) {
@@ -25789,6 +26952,12 @@ function v4(options, buf, offset) {
25789
26952
  }
25790
26953
  return unsafeStringify(rnds);
25791
26954
  }
26955
+ function v4(options, buf, offset) {
26956
+ if (native_default.randomUUID && !buf && !options) {
26957
+ return native_default.randomUUID();
26958
+ }
26959
+ return _v4(options, buf, offset);
26960
+ }
25792
26961
  var v4_default = v4;
25793
26962
  // src/api/messaging/errors/SessionErrors.ts
25794
26963
  class SessionError extends Error {
@@ -26747,7 +27916,7 @@ async function saveUploadedFile2(file, channelId) {
26747
27916
  }
26748
27917
  function createChannelMediaRouter() {
26749
27918
  const router = express16.Router();
26750
- const uploadMediaRateLimiter = lib_default({
27919
+ const uploadMediaRateLimiter = rate_limit_default({
26751
27920
  windowMs: 15 * 60 * 1000,
26752
27921
  max: 100,
26753
27922
  message: { success: false, error: "Too many requests, please try again later." }
@@ -27627,7 +28796,7 @@ import express30 from "express";
27627
28796
  // package.json
27628
28797
  var package_default = {
27629
28798
  name: "@elizaos/server",
27630
- version: "1.6.1-alpha.5",
28799
+ version: "1.6.1-alpha.6",
27631
28800
  description: "ElizaOS Server - Core server infrastructure for ElizaOS agents",
27632
28801
  publishConfig: {
27633
28802
  access: "public",
@@ -27673,23 +28842,23 @@ var package_default = {
27673
28842
  devDependencies: {
27674
28843
  "@elizaos/client": "workspace:*",
27675
28844
  "@types/node": "^24.0.1",
27676
- prettier: "3.5.3",
27677
- tsx: "4.19.4",
28845
+ prettier: "3.6.2",
28846
+ tsx: "4.20.6",
27678
28847
  typescript: "^5.5.4",
27679
- which: "^4.0.0",
28848
+ which: "^5.0.0",
27680
28849
  ws: "^8.18.0"
27681
28850
  },
27682
28851
  gitHead: "255e37c0e4a76da0b776219db5ebb9dadf20e89f",
27683
28852
  dependencies: {
27684
28853
  "@elizaos/core": "workspace:*",
27685
28854
  "@elizaos/plugin-sql": "workspace:*",
27686
- "@sentry/node": "^10.11.0",
28855
+ "@sentry/node": "^10.16.0",
27687
28856
  "@types/express": "^5.0.2",
27688
28857
  "@types/helmet": "^4.0.0",
27689
- "@types/multer": "^1.4.13",
27690
- dotenv: "^16.5.0",
28858
+ "@types/multer": "^2.0.0",
28859
+ dotenv: "^17.2.3",
27691
28860
  express: "^5.1.0",
27692
- "express-rate-limit": "^7.5.0",
28861
+ "express-rate-limit": "^8.1.0",
27693
28862
  helmet: "^8.1.0",
27694
28863
  multer: "^2.0.1",
27695
28864
  "path-to-regexp": "^8.2.0",
@@ -29184,7 +30353,7 @@ var DEBUG_BUILD = typeof __SENTRY_DEBUG__ === "undefined" || __SENTRY_DEBUG__;
29184
30353
  var GLOBAL_OBJ = globalThis;
29185
30354
 
29186
30355
  // ../../node_modules/@sentry/core/build/esm/utils/version.js
29187
- var SDK_VERSION = "10.15.0";
30356
+ var SDK_VERSION = "10.16.0";
29188
30357
 
29189
30358
  // ../../node_modules/@sentry/core/build/esm/carrier.js
29190
30359
  function getMainCarrier() {
@@ -33647,48 +34816,38 @@ function estimatePrimitiveSizeInBytes(value) {
33647
34816
  }
33648
34817
  // ../../node_modules/@sentry/core/build/esm/utils/promisebuffer.js
33649
34818
  var SENTRY_BUFFER_FULL_ERROR = Symbol.for("SentryBufferFullError");
33650
- function makePromiseBuffer(limit) {
33651
- const buffer = [];
34819
+ function makePromiseBuffer(limit = 100) {
34820
+ const buffer = new Set;
33652
34821
  function isReady() {
33653
- return limit === undefined || buffer.length < limit;
34822
+ return buffer.size < limit;
33654
34823
  }
33655
34824
  function remove(task) {
33656
- return buffer.splice(buffer.indexOf(task), 1)[0] || Promise.resolve(undefined);
34825
+ buffer.delete(task);
33657
34826
  }
33658
34827
  function add(taskProducer) {
33659
34828
  if (!isReady()) {
33660
34829
  return rejectedSyncPromise(SENTRY_BUFFER_FULL_ERROR);
33661
34830
  }
33662
34831
  const task = taskProducer();
33663
- if (buffer.indexOf(task) === -1) {
33664
- buffer.push(task);
33665
- }
33666
- task.then(() => remove(task)).then(null, () => remove(task).then(null, () => {}));
34832
+ buffer.add(task);
34833
+ task.then(() => remove(task), () => remove(task));
33667
34834
  return task;
33668
34835
  }
33669
34836
  function drain(timeout) {
33670
- return new SyncPromise((resolve, reject) => {
33671
- let counter = buffer.length;
33672
- if (!counter) {
33673
- return resolve(true);
33674
- }
33675
- const capturedSetTimeout = setTimeout(() => {
33676
- if (timeout && timeout > 0) {
33677
- resolve(false);
33678
- }
33679
- }, timeout);
33680
- buffer.forEach((item) => {
33681
- resolvedSyncPromise(item).then(() => {
33682
- if (!--counter) {
33683
- clearTimeout(capturedSetTimeout);
33684
- resolve(true);
33685
- }
33686
- }, reject);
33687
- });
33688
- });
34837
+ if (!buffer.size) {
34838
+ return resolvedSyncPromise(true);
34839
+ }
34840
+ const drainPromise = Promise.allSettled(Array.from(buffer)).then(() => true);
34841
+ if (!timeout) {
34842
+ return drainPromise;
34843
+ }
34844
+ const promises = [drainPromise, new Promise((resolve) => setTimeout(() => resolve(false), timeout))];
34845
+ return Promise.race(promises);
33689
34846
  }
33690
34847
  return {
33691
- $: buffer,
34848
+ get $() {
34849
+ return Array.from(buffer);
34850
+ },
33692
34851
  add,
33693
34852
  drain
33694
34853
  };
@@ -35382,7 +36541,42 @@ function processEvent(event, state, recordOutputs, span) {
35382
36541
  handleContentBlockDelta(event, state, recordOutputs);
35383
36542
  handleContentBlockStop(event, state);
35384
36543
  }
35385
- async function* instrumentStream2(stream, span, recordOutputs) {
36544
+ function finalizeStreamSpan(state, span, recordOutputs) {
36545
+ if (!span.isRecording()) {
36546
+ return;
36547
+ }
36548
+ if (state.responseId) {
36549
+ span.setAttributes({
36550
+ [GEN_AI_RESPONSE_ID_ATTRIBUTE]: state.responseId
36551
+ });
36552
+ }
36553
+ if (state.responseModel) {
36554
+ span.setAttributes({
36555
+ [GEN_AI_RESPONSE_MODEL_ATTRIBUTE]: state.responseModel
36556
+ });
36557
+ }
36558
+ setTokenUsageAttributes2(span, state.promptTokens, state.completionTokens, state.cacheCreationInputTokens, state.cacheReadInputTokens);
36559
+ span.setAttributes({
36560
+ [GEN_AI_RESPONSE_STREAMING_ATTRIBUTE]: true
36561
+ });
36562
+ if (state.finishReasons.length > 0) {
36563
+ span.setAttributes({
36564
+ [GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE]: JSON.stringify(state.finishReasons)
36565
+ });
36566
+ }
36567
+ if (recordOutputs && state.responseTexts.length > 0) {
36568
+ span.setAttributes({
36569
+ [GEN_AI_RESPONSE_TEXT_ATTRIBUTE]: state.responseTexts.join("")
36570
+ });
36571
+ }
36572
+ if (recordOutputs && state.toolCalls.length > 0) {
36573
+ span.setAttributes({
36574
+ [GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE]: JSON.stringify(state.toolCalls)
36575
+ });
36576
+ }
36577
+ span.end();
36578
+ }
36579
+ async function* instrumentAsyncIterableStream(stream, span, recordOutputs) {
35386
36580
  const state = {
35387
36581
  responseTexts: [],
35388
36582
  finishReasons: [],
@@ -35433,6 +36627,39 @@ async function* instrumentStream2(stream, span, recordOutputs) {
35433
36627
  span.end();
35434
36628
  }
35435
36629
  }
36630
+ function instrumentMessageStream(stream, span, recordOutputs) {
36631
+ const state = {
36632
+ responseTexts: [],
36633
+ finishReasons: [],
36634
+ responseId: "",
36635
+ responseModel: "",
36636
+ promptTokens: undefined,
36637
+ completionTokens: undefined,
36638
+ cacheCreationInputTokens: undefined,
36639
+ cacheReadInputTokens: undefined,
36640
+ toolCalls: [],
36641
+ activeToolBlocks: {}
36642
+ };
36643
+ stream.on("streamEvent", (event) => {
36644
+ processEvent(event, state, recordOutputs, span);
36645
+ });
36646
+ stream.on("message", () => {
36647
+ finalizeStreamSpan(state, span, recordOutputs);
36648
+ });
36649
+ stream.on("error", (error2) => {
36650
+ captureException(error2, {
36651
+ mechanism: {
36652
+ handled: false,
36653
+ type: "auto.ai.anthropic.stream_error"
36654
+ }
36655
+ });
36656
+ if (span.isRecording()) {
36657
+ span.setStatus({ code: SPAN_STATUS_ERROR, message: "stream_error" });
36658
+ span.end();
36659
+ }
36660
+ });
36661
+ return stream;
36662
+ }
35436
36663
 
35437
36664
  // ../../node_modules/@sentry/core/build/esm/utils/anthropic-ai/constants.js
35438
36665
  var ANTHROPIC_AI_INTEGRATION_NAME = "Anthropic_AI";
@@ -35564,28 +36791,70 @@ function addResponseAttributes2(span, response, recordOutputs) {
35564
36791
  }
35565
36792
  addMetadataAttributes(span, response);
35566
36793
  }
36794
+ function handleStreamingError(error2, span, methodPath) {
36795
+ captureException(error2, {
36796
+ mechanism: { handled: false, type: "auto.ai.anthropic", data: { function: methodPath } }
36797
+ });
36798
+ if (span.isRecording()) {
36799
+ span.setStatus({ code: SPAN_STATUS_ERROR, message: "internal_error" });
36800
+ span.end();
36801
+ }
36802
+ throw error2;
36803
+ }
36804
+ function handleStreamingRequest(originalMethod, target, context, args, requestAttributes, operationName, methodPath, params, options, isStreamRequested) {
36805
+ const model = requestAttributes[GEN_AI_REQUEST_MODEL_ATTRIBUTE] ?? "unknown";
36806
+ const spanConfig = {
36807
+ name: `${operationName} ${model} stream-response`,
36808
+ op: getSpanOperation2(methodPath),
36809
+ attributes: requestAttributes
36810
+ };
36811
+ if (isStreamRequested) {
36812
+ return startSpanManual(spanConfig, async (span) => {
36813
+ try {
36814
+ if (options.recordInputs && params) {
36815
+ addPrivateRequestAttributes(span, params);
36816
+ }
36817
+ const result = await originalMethod.apply(context, args);
36818
+ return instrumentAsyncIterableStream(result, span, options.recordOutputs ?? false);
36819
+ } catch (error2) {
36820
+ return handleStreamingError(error2, span, methodPath);
36821
+ }
36822
+ });
36823
+ } else {
36824
+ return startSpanManual(spanConfig, (span) => {
36825
+ try {
36826
+ if (options.recordInputs && params) {
36827
+ addPrivateRequestAttributes(span, params);
36828
+ }
36829
+ const messageStream = target.apply(context, args);
36830
+ return instrumentMessageStream(messageStream, span, options.recordOutputs ?? false);
36831
+ } catch (error2) {
36832
+ return handleStreamingError(error2, span, methodPath);
36833
+ }
36834
+ });
36835
+ }
36836
+ }
35567
36837
  function instrumentMethod2(originalMethod, methodPath, context, options) {
35568
- return async function instrumentedMethod(...args) {
35569
- const requestAttributes = extractRequestAttributes2(args, methodPath);
35570
- const model = requestAttributes[GEN_AI_REQUEST_MODEL_ATTRIBUTE] ?? "unknown";
35571
- const operationName = getFinalOperationName(methodPath);
35572
- const params = typeof args[0] === "object" ? args[0] : undefined;
35573
- const isStreamRequested = Boolean(params?.stream);
35574
- const isStreamingMethod = methodPath === "messages.stream";
35575
- if (isStreamRequested || isStreamingMethod) {
35576
- return startSpanManual({
35577
- name: `${operationName} ${model} stream-response`,
36838
+ return new Proxy(originalMethod, {
36839
+ apply(target, thisArg, args) {
36840
+ const requestAttributes = extractRequestAttributes2(args, methodPath);
36841
+ const model = requestAttributes[GEN_AI_REQUEST_MODEL_ATTRIBUTE] ?? "unknown";
36842
+ const operationName = getFinalOperationName(methodPath);
36843
+ const params = typeof args[0] === "object" ? args[0] : undefined;
36844
+ const isStreamRequested = Boolean(params?.stream);
36845
+ const isStreamingMethod = methodPath === "messages.stream";
36846
+ if (isStreamRequested || isStreamingMethod) {
36847
+ return handleStreamingRequest(originalMethod, target, context, args, requestAttributes, operationName, methodPath, params, options, isStreamRequested);
36848
+ }
36849
+ return startSpan({
36850
+ name: `${operationName} ${model}`,
35578
36851
  op: getSpanOperation2(methodPath),
35579
36852
  attributes: requestAttributes
35580
- }, async (span) => {
35581
- try {
35582
- if (options.recordInputs && params) {
35583
- addPrivateRequestAttributes(span, params);
35584
- }
35585
- const result = await originalMethod.apply(context, args);
35586
- return instrumentStream2(result, span, options.recordOutputs ?? false);
35587
- } catch (error2) {
35588
- span.setStatus({ code: SPAN_STATUS_ERROR, message: "internal_error" });
36853
+ }, (span) => {
36854
+ if (options.recordInputs && params) {
36855
+ addPrivateRequestAttributes(span, params);
36856
+ }
36857
+ return handleCallbackErrors(() => target.apply(context, args), (error2) => {
35589
36858
  captureException(error2, {
35590
36859
  mechanism: {
35591
36860
  handled: false,
@@ -35595,32 +36864,10 @@ function instrumentMethod2(originalMethod, methodPath, context, options) {
35595
36864
  }
35596
36865
  }
35597
36866
  });
35598
- span.end();
35599
- throw error2;
35600
- }
36867
+ }, () => {}, (result) => addResponseAttributes2(span, result, options.recordOutputs));
35601
36868
  });
35602
36869
  }
35603
- return startSpan({
35604
- name: `${operationName} ${model}`,
35605
- op: getSpanOperation2(methodPath),
35606
- attributes: requestAttributes
35607
- }, (span) => {
35608
- if (options.recordInputs && params) {
35609
- addPrivateRequestAttributes(span, params);
35610
- }
35611
- return handleCallbackErrors(() => originalMethod.apply(context, args), (error2) => {
35612
- captureException(error2, {
35613
- mechanism: {
35614
- handled: false,
35615
- type: "auto.ai.anthropic",
35616
- data: {
35617
- function: methodPath
35618
- }
35619
- }
35620
- });
35621
- }, () => {}, (result) => addResponseAttributes2(span, result, options.recordOutputs));
35622
- });
35623
- };
36870
+ });
35624
36871
  }
35625
36872
  function createDeepProxy2(target, currentPath = "", options) {
35626
36873
  return new Proxy(target, {
@@ -38715,7 +39962,7 @@ function functionNamesMatch(a, b) {
38715
39962
  }
38716
39963
 
38717
39964
  // ../../node_modules/@sentry/node-core/build/esm/integrations/local-variables/local-variables-async.js
38718
- var base64WorkerScript = "LyohIEBzZW50cnkvbm9kZS1jb3JlIDEwLjE1LjAgKGQxMzY2ZjQpIHwgaHR0cHM6Ly9naXRodWIuY29tL2dldHNlbnRyeS9zZW50cnktamF2YXNjcmlwdCAqLwppbXBvcnR7U2Vzc2lvbiBhcyBlfWZyb20ibm9kZTppbnNwZWN0b3IvcHJvbWlzZXMiO2ltcG9ydHt3b3JrZXJEYXRhIGFzIHR9ZnJvbSJub2RlOndvcmtlcl90aHJlYWRzIjtjb25zdCBuPWdsb2JhbFRoaXMsaT17fTtjb25zdCBvPSJfX1NFTlRSWV9FUlJPUl9MT0NBTF9WQVJJQUJMRVNfXyI7Y29uc3QgYT10O2Z1bmN0aW9uIHMoLi4uZSl7YS5kZWJ1ZyYmZnVuY3Rpb24oZSl7aWYoISgiY29uc29sZSJpbiBuKSlyZXR1cm4gZSgpO2NvbnN0IHQ9bi5jb25zb2xlLG89e30sYT1PYmplY3Qua2V5cyhpKTthLmZvckVhY2goZT0+e2NvbnN0IG49aVtlXTtvW2VdPXRbZV0sdFtlXT1ufSk7dHJ5e3JldHVybiBlKCl9ZmluYWxseXthLmZvckVhY2goZT0+e3RbZV09b1tlXX0pfX0oKCk9PmNvbnNvbGUubG9nKCJbTG9jYWxWYXJpYWJsZXMgV29ya2VyXSIsLi4uZSkpfWFzeW5jIGZ1bmN0aW9uIGMoZSx0LG4saSl7Y29uc3Qgbz1hd2FpdCBlLnBvc3QoIlJ1bnRpbWUuZ2V0UHJvcGVydGllcyIse29iamVjdElkOnQsb3duUHJvcGVydGllczohMH0pO2lbbl09by5yZXN1bHQuZmlsdGVyKGU9PiJsZW5ndGgiIT09ZS5uYW1lJiYhaXNOYU4ocGFyc2VJbnQoZS5uYW1lLDEwKSkpLnNvcnQoKGUsdCk9PnBhcnNlSW50KGUubmFtZSwxMCktcGFyc2VJbnQodC5uYW1lLDEwKSkubWFwKGU9PmUudmFsdWU/LnZhbHVlKX1hc3luYyBmdW5jdGlvbiByKGUsdCxuLGkpe2NvbnN0IG89YXdhaXQgZS5wb3N0KCJSdW50aW1lLmdldFByb3BlcnRpZXMiLHtvYmplY3RJZDp0LG93blByb3BlcnRpZXM6ITB9KTtpW25dPW8ucmVzdWx0Lm1hcChlPT5bZS5uYW1lLGUudmFsdWU/LnZhbHVlXSkucmVkdWNlKChlLFt0LG5dKT0+KGVbdF09bixlKSx7fSl9ZnVuY3Rpb24gdShlLHQpe2UudmFsdWUmJigidmFsdWUiaW4gZS52YWx1ZT92b2lkIDA9PT1lLnZhbHVlLnZhbHVlfHxudWxsPT09ZS52YWx1ZS52YWx1ZT90W2UubmFtZV09YDwke2UudmFsdWUudmFsdWV9PmA6dFtlLm5hbWVdPWUudmFsdWUudmFsdWU6ImRlc2NyaXB0aW9uImluIGUudmFsdWUmJiJmdW5jdGlvbiIhPT1lLnZhbHVlLnR5cGU/dFtlLm5hbWVdPWA8JHtlLnZhbHVlLmRlc2NyaXB0aW9ufT5gOiJ1bmRlZmluZWQiPT09ZS52YWx1ZS50eXBlJiYodFtlLm5hbWVdPSI8dW5kZWZpbmVkPiIpKX1hc3luYyBmdW5jdGlvbiBsKGUsdCl7Y29uc3Qgbj1hd2FpdCBlLnBvc3QoIlJ1bnRpbWUuZ2V0UHJvcGVydGllcyIse29iamVjdElkOnQsb3duUHJvcGVydGllczohMH0pLGk9e307Zm9yKGNvbnN0IHQgb2Ygbi5yZXN1bHQpaWYodC52YWx1ZT8ub2JqZWN0SWQmJiJBcnJheSI9PT10LnZhbHVlLmNsYXNzTmFtZSl7Y29uc3Qgbj10LnZhbHVlLm9iamVjdElkO2F3YWl0IGMoZSxuLHQubmFtZSxpKX1lbHNlIGlmKHQudmFsdWU/Lm9iamVjdElkJiYiT2JqZWN0Ij09PXQudmFsdWUuY2xhc3NOYW1lKXtjb25zdCBuPXQudmFsdWUub2JqZWN0SWQ7YXdhaXQgcihlLG4sdC5uYW1lLGkpfWVsc2UgdC52YWx1ZSYmdSh0LGkpO3JldHVybiBpfWxldCBmOyhhc3luYyBmdW5jdGlvbigpe2NvbnN0IHQ9bmV3IGU7dC5jb25uZWN0VG9NYWluVGhyZWFkKCkscygiQ29ubmVjdGVkIHRvIG1haW4gdGhyZWFkIik7bGV0IG49ITE7dC5vbigiRGVidWdnZXIucmVzdW1lZCIsKCk9PntuPSExfSksdC5vbigiRGVidWdnZXIucGF1c2VkIixlPT57bj0hMCxhc3luYyBmdW5jdGlvbihlLHtyZWFzb246dCxkYXRhOntvYmplY3RJZDpufSxjYWxsRnJhbWVzOml9KXtpZigiZXhjZXB0aW9uIiE9PXQmJiJwcm9taXNlUmVqZWN0aW9uIiE9PXQpcmV0dXJuO2lmKGY/LigpLG51bGw9PW4pcmV0dXJuO2NvbnN0IGE9W107Zm9yKGxldCB0PTA7dDxpLmxlbmd0aDt0Kyspe2NvbnN0e3Njb3BlQ2hhaW46bixmdW5jdGlvbk5hbWU6byx0aGlzOnN9PWlbdF0sYz1uLmZpbmQoZT0+ImxvY2FsIj09PWUudHlwZSkscj0iZ2xvYmFsIiE9PXMuY2xhc3NOYW1lJiZzLmNsYXNzTmFtZT9gJHtzLmNsYXNzTmFtZX0uJHtvfWA6bztpZih2b2lkIDA9PT1jPy5vYmplY3Qub2JqZWN0SWQpYVt0XT17ZnVuY3Rpb246cn07ZWxzZXtjb25zdCBuPWF3YWl0IGwoZSxjLm9iamVjdC5vYmplY3RJZCk7YVt0XT17ZnVuY3Rpb246cix2YXJzOm59fX1hd2FpdCBlLnBvc3QoIlJ1bnRpbWUuY2FsbEZ1bmN0aW9uT24iLHtmdW5jdGlvbkRlY2xhcmF0aW9uOmBmdW5jdGlvbigpIHsgdGhpcy4ke299ID0gdGhpcy4ke299IHx8ICR7SlNPTi5zdHJpbmdpZnkoYSl9OyB9YCxzaWxlbnQ6ITAsb2JqZWN0SWQ6bn0pLGF3YWl0IGUucG9zdCgiUnVudGltZS5yZWxlYXNlT2JqZWN0Iix7b2JqZWN0SWQ6bn0pfSh0LGUucGFyYW1zKS50aGVuKGFzeW5jKCk9PntuJiZhd2FpdCB0LnBvc3QoIkRlYnVnZ2VyLnJlc3VtZSIpfSxhc3luYyBlPT57biYmYXdhaXQgdC5wb3N0KCJEZWJ1Z2dlci5yZXN1bWUiKX0pfSksYXdhaXQgdC5wb3N0KCJEZWJ1Z2dlci5lbmFibGUiKTtjb25zdCBpPSExIT09YS5jYXB0dXJlQWxsRXhjZXB0aW9ucztpZihhd2FpdCB0LnBvc3QoIkRlYnVnZ2VyLnNldFBhdXNlT25FeGNlcHRpb25zIix7c3RhdGU6aT8iYWxsIjoidW5jYXVnaHQifSksaSl7Y29uc3QgZT1hLm1heEV4Y2VwdGlvbnNQZXJTZWNvbmR8fDUwO2Y9ZnVuY3Rpb24oZSx0LG4pe2xldCBpPTAsbz01LGE9MDtyZXR1cm4gc2V0SW50ZXJ2YWwoKCk9PnswPT09YT9pPmUmJihvKj0yLG4obyksbz44NjQwMCYmKG89ODY0MDApLGE9byk6KGEtPTEsMD09PWEmJnQoKSksaT0wfSwxZTMpLnVucmVmKCksKCk9PntpKz0xfX0oZSxhc3luYygpPT57cygiUmF0ZS1saW1pdCBsaWZ0ZWQuIiksYXdhaXQgdC5wb3N0KCJEZWJ1Z2dlci5zZXRQYXVzZU9uRXhjZXB0aW9ucyIse3N0YXRlOiJhbGwifSl9LGFzeW5jIGU9PntzKGBSYXRlLWxpbWl0IGV4Y2VlZGVkLiBEaXNhYmxpbmcgY2FwdHVyaW5nIG9mIGNhdWdodCBleGNlcHRpb25zIGZvciAke2V9IHNlY29uZHMuYCksYXdhaXQgdC5wb3N0KCJEZWJ1Z2dlci5zZXRQYXVzZU9uRXhjZXB0aW9ucyIse3N0YXRlOiJ1bmNhdWdodCJ9KX0pfX0pKCkuY2F0Y2goZT0+e3MoIkZhaWxlZCB0byBzdGFydCBkZWJ1Z2dlciIsZSl9KSxzZXRJbnRlcnZhbCgoKT0+e30sMWU0KTs=";
39965
+ var base64WorkerScript = "LyohIEBzZW50cnkvbm9kZS1jb3JlIDEwLjE2LjAgKDc0YzUyMTMpIHwgaHR0cHM6Ly9naXRodWIuY29tL2dldHNlbnRyeS9zZW50cnktamF2YXNjcmlwdCAqLwppbXBvcnR7U2Vzc2lvbiBhcyBlfWZyb20ibm9kZTppbnNwZWN0b3IvcHJvbWlzZXMiO2ltcG9ydHt3b3JrZXJEYXRhIGFzIHR9ZnJvbSJub2RlOndvcmtlcl90aHJlYWRzIjtjb25zdCBuPWdsb2JhbFRoaXMsaT17fTtjb25zdCBvPSJfX1NFTlRSWV9FUlJPUl9MT0NBTF9WQVJJQUJMRVNfXyI7Y29uc3QgYT10O2Z1bmN0aW9uIHMoLi4uZSl7YS5kZWJ1ZyYmZnVuY3Rpb24oZSl7aWYoISgiY29uc29sZSJpbiBuKSlyZXR1cm4gZSgpO2NvbnN0IHQ9bi5jb25zb2xlLG89e30sYT1PYmplY3Qua2V5cyhpKTthLmZvckVhY2goZT0+e2NvbnN0IG49aVtlXTtvW2VdPXRbZV0sdFtlXT1ufSk7dHJ5e3JldHVybiBlKCl9ZmluYWxseXthLmZvckVhY2goZT0+e3RbZV09b1tlXX0pfX0oKCk9PmNvbnNvbGUubG9nKCJbTG9jYWxWYXJpYWJsZXMgV29ya2VyXSIsLi4uZSkpfWFzeW5jIGZ1bmN0aW9uIGMoZSx0LG4saSl7Y29uc3Qgbz1hd2FpdCBlLnBvc3QoIlJ1bnRpbWUuZ2V0UHJvcGVydGllcyIse29iamVjdElkOnQsb3duUHJvcGVydGllczohMH0pO2lbbl09by5yZXN1bHQuZmlsdGVyKGU9PiJsZW5ndGgiIT09ZS5uYW1lJiYhaXNOYU4ocGFyc2VJbnQoZS5uYW1lLDEwKSkpLnNvcnQoKGUsdCk9PnBhcnNlSW50KGUubmFtZSwxMCktcGFyc2VJbnQodC5uYW1lLDEwKSkubWFwKGU9PmUudmFsdWU/LnZhbHVlKX1hc3luYyBmdW5jdGlvbiByKGUsdCxuLGkpe2NvbnN0IG89YXdhaXQgZS5wb3N0KCJSdW50aW1lLmdldFByb3BlcnRpZXMiLHtvYmplY3RJZDp0LG93blByb3BlcnRpZXM6ITB9KTtpW25dPW8ucmVzdWx0Lm1hcChlPT5bZS5uYW1lLGUudmFsdWU/LnZhbHVlXSkucmVkdWNlKChlLFt0LG5dKT0+KGVbdF09bixlKSx7fSl9ZnVuY3Rpb24gdShlLHQpe2UudmFsdWUmJigidmFsdWUiaW4gZS52YWx1ZT92b2lkIDA9PT1lLnZhbHVlLnZhbHVlfHxudWxsPT09ZS52YWx1ZS52YWx1ZT90W2UubmFtZV09YDwke2UudmFsdWUudmFsdWV9PmA6dFtlLm5hbWVdPWUudmFsdWUudmFsdWU6ImRlc2NyaXB0aW9uImluIGUudmFsdWUmJiJmdW5jdGlvbiIhPT1lLnZhbHVlLnR5cGU/dFtlLm5hbWVdPWA8JHtlLnZhbHVlLmRlc2NyaXB0aW9ufT5gOiJ1bmRlZmluZWQiPT09ZS52YWx1ZS50eXBlJiYodFtlLm5hbWVdPSI8dW5kZWZpbmVkPiIpKX1hc3luYyBmdW5jdGlvbiBsKGUsdCl7Y29uc3Qgbj1hd2FpdCBlLnBvc3QoIlJ1bnRpbWUuZ2V0UHJvcGVydGllcyIse29iamVjdElkOnQsb3duUHJvcGVydGllczohMH0pLGk9e307Zm9yKGNvbnN0IHQgb2Ygbi5yZXN1bHQpaWYodC52YWx1ZT8ub2JqZWN0SWQmJiJBcnJheSI9PT10LnZhbHVlLmNsYXNzTmFtZSl7Y29uc3Qgbj10LnZhbHVlLm9iamVjdElkO2F3YWl0IGMoZSxuLHQubmFtZSxpKX1lbHNlIGlmKHQudmFsdWU/Lm9iamVjdElkJiYiT2JqZWN0Ij09PXQudmFsdWUuY2xhc3NOYW1lKXtjb25zdCBuPXQudmFsdWUub2JqZWN0SWQ7YXdhaXQgcihlLG4sdC5uYW1lLGkpfWVsc2UgdC52YWx1ZSYmdSh0LGkpO3JldHVybiBpfWxldCBmOyhhc3luYyBmdW5jdGlvbigpe2NvbnN0IHQ9bmV3IGU7dC5jb25uZWN0VG9NYWluVGhyZWFkKCkscygiQ29ubmVjdGVkIHRvIG1haW4gdGhyZWFkIik7bGV0IG49ITE7dC5vbigiRGVidWdnZXIucmVzdW1lZCIsKCk9PntuPSExfSksdC5vbigiRGVidWdnZXIucGF1c2VkIixlPT57bj0hMCxhc3luYyBmdW5jdGlvbihlLHtyZWFzb246dCxkYXRhOntvYmplY3RJZDpufSxjYWxsRnJhbWVzOml9KXtpZigiZXhjZXB0aW9uIiE9PXQmJiJwcm9taXNlUmVqZWN0aW9uIiE9PXQpcmV0dXJuO2lmKGY/LigpLG51bGw9PW4pcmV0dXJuO2NvbnN0IGE9W107Zm9yKGxldCB0PTA7dDxpLmxlbmd0aDt0Kyspe2NvbnN0e3Njb3BlQ2hhaW46bixmdW5jdGlvbk5hbWU6byx0aGlzOnN9PWlbdF0sYz1uLmZpbmQoZT0+ImxvY2FsIj09PWUudHlwZSkscj0iZ2xvYmFsIiE9PXMuY2xhc3NOYW1lJiZzLmNsYXNzTmFtZT9gJHtzLmNsYXNzTmFtZX0uJHtvfWA6bztpZih2b2lkIDA9PT1jPy5vYmplY3Qub2JqZWN0SWQpYVt0XT17ZnVuY3Rpb246cn07ZWxzZXtjb25zdCBuPWF3YWl0IGwoZSxjLm9iamVjdC5vYmplY3RJZCk7YVt0XT17ZnVuY3Rpb246cix2YXJzOm59fX1hd2FpdCBlLnBvc3QoIlJ1bnRpbWUuY2FsbEZ1bmN0aW9uT24iLHtmdW5jdGlvbkRlY2xhcmF0aW9uOmBmdW5jdGlvbigpIHsgdGhpcy4ke299ID0gdGhpcy4ke299IHx8ICR7SlNPTi5zdHJpbmdpZnkoYSl9OyB9YCxzaWxlbnQ6ITAsb2JqZWN0SWQ6bn0pLGF3YWl0IGUucG9zdCgiUnVudGltZS5yZWxlYXNlT2JqZWN0Iix7b2JqZWN0SWQ6bn0pfSh0LGUucGFyYW1zKS50aGVuKGFzeW5jKCk9PntuJiZhd2FpdCB0LnBvc3QoIkRlYnVnZ2VyLnJlc3VtZSIpfSxhc3luYyBlPT57biYmYXdhaXQgdC5wb3N0KCJEZWJ1Z2dlci5yZXN1bWUiKX0pfSksYXdhaXQgdC5wb3N0KCJEZWJ1Z2dlci5lbmFibGUiKTtjb25zdCBpPSExIT09YS5jYXB0dXJlQWxsRXhjZXB0aW9ucztpZihhd2FpdCB0LnBvc3QoIkRlYnVnZ2VyLnNldFBhdXNlT25FeGNlcHRpb25zIix7c3RhdGU6aT8iYWxsIjoidW5jYXVnaHQifSksaSl7Y29uc3QgZT1hLm1heEV4Y2VwdGlvbnNQZXJTZWNvbmR8fDUwO2Y9ZnVuY3Rpb24oZSx0LG4pe2xldCBpPTAsbz01LGE9MDtyZXR1cm4gc2V0SW50ZXJ2YWwoKCk9PnswPT09YT9pPmUmJihvKj0yLG4obyksbz44NjQwMCYmKG89ODY0MDApLGE9byk6KGEtPTEsMD09PWEmJnQoKSksaT0wfSwxZTMpLnVucmVmKCksKCk9PntpKz0xfX0oZSxhc3luYygpPT57cygiUmF0ZS1saW1pdCBsaWZ0ZWQuIiksYXdhaXQgdC5wb3N0KCJEZWJ1Z2dlci5zZXRQYXVzZU9uRXhjZXB0aW9ucyIse3N0YXRlOiJhbGwifSl9LGFzeW5jIGU9PntzKGBSYXRlLWxpbWl0IGV4Y2VlZGVkLiBEaXNhYmxpbmcgY2FwdHVyaW5nIG9mIGNhdWdodCBleGNlcHRpb25zIGZvciAke2V9IHNlY29uZHMuYCksYXdhaXQgdC5wb3N0KCJEZWJ1Z2dlci5zZXRQYXVzZU9uRXhjZXB0aW9ucyIse3N0YXRlOiJ1bmNhdWdodCJ9KX0pfX0pKCkuY2F0Y2goZT0+e3MoIkZhaWxlZCB0byBzdGFydCBkZWJ1Z2dlciIsZSl9KSxzZXRJbnRlcnZhbCgoKT0+e30sMWU0KTs=";
38719
39966
  function log2(...args) {
38720
39967
  debug.log("[LocalVariables]", ...args);
38721
39968
  }