@qodalis/cli-lang-es 2.0.0-beta.17 → 2.0.0-beta.18

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.
@@ -8,7 +8,11 @@ var langEs = (() => {
8
8
  var __getProtoOf = Object.getPrototypeOf;
9
9
  var __hasOwnProp = Object.prototype.hasOwnProperty;
10
10
  var __commonJS = (cb, mod) => function __require() {
11
- return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
11
+ try {
12
+ return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
13
+ } catch (e) {
14
+ throw mod = 0, e;
15
+ }
12
16
  };
13
17
  var __copyProps = (to, from, except, desc) => {
14
18
  if (from && typeof from === "object" || typeof from === "function") {
@@ -27,7 +31,7 @@ var langEs = (() => {
27
31
  mod
28
32
  ));
29
33
  var require_constants = __commonJS({
30
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/internal/constants.js"(exports$1, module) {
34
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/constants.js"(exports, module) {
31
35
  var SEMVER_SPEC_VERSION = "2.0.0";
32
36
  var MAX_LENGTH = 256;
33
37
  var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || /* istanbul ignore next */
@@ -56,26 +60,26 @@ var langEs = (() => {
56
60
  }
57
61
  });
58
62
  var require_debug = __commonJS({
59
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/internal/debug.js"(exports$1, module) {
63
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/debug.js"(exports, module) {
60
64
  var debug = typeof process === "object" && process.env && process.env.NODE_DEBUG && /\bsemver\b/i.test(process.env.NODE_DEBUG) ? (...args) => console.error("SEMVER", ...args) : () => {
61
65
  };
62
66
  module.exports = debug;
63
67
  }
64
68
  });
65
69
  var require_re = __commonJS({
66
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/internal/re.js"(exports$1, module) {
70
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/re.js"(exports, module) {
67
71
  var {
68
72
  MAX_SAFE_COMPONENT_LENGTH,
69
73
  MAX_SAFE_BUILD_LENGTH,
70
74
  MAX_LENGTH
71
75
  } = require_constants();
72
76
  var debug = require_debug();
73
- exports$1 = module.exports = {};
74
- var re = exports$1.re = [];
75
- var safeRe = exports$1.safeRe = [];
76
- var src = exports$1.src = [];
77
- var safeSrc = exports$1.safeSrc = [];
78
- var t = exports$1.t = {};
77
+ exports = module.exports = {};
78
+ var re = exports.re = [];
79
+ var safeRe = exports.safeRe = [];
80
+ var src = exports.src = [];
81
+ var safeSrc = exports.safeSrc = [];
82
+ var t = exports.t = {};
79
83
  var R = 0;
80
84
  var LETTERDASHNUMBER = "[a-zA-Z0-9-]";
81
85
  var safeRegexReplacements = [
@@ -128,18 +132,18 @@ var langEs = (() => {
128
132
  createToken("COERCERTLFULL", src[t.COERCEFULL], true);
129
133
  createToken("LONETILDE", "(?:~>?)");
130
134
  createToken("TILDETRIM", `(\\s*)${src[t.LONETILDE]}\\s+`, true);
131
- exports$1.tildeTrimReplace = "$1~";
135
+ exports.tildeTrimReplace = "$1~";
132
136
  createToken("TILDE", `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`);
133
137
  createToken("TILDELOOSE", `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`);
134
138
  createToken("LONECARET", "(?:\\^)");
135
139
  createToken("CARETTRIM", `(\\s*)${src[t.LONECARET]}\\s+`, true);
136
- exports$1.caretTrimReplace = "$1^";
140
+ exports.caretTrimReplace = "$1^";
137
141
  createToken("CARET", `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`);
138
142
  createToken("CARETLOOSE", `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`);
139
143
  createToken("COMPARATORLOOSE", `^${src[t.GTLT]}\\s*(${src[t.LOOSEPLAIN]})$|^$`);
140
144
  createToken("COMPARATOR", `^${src[t.GTLT]}\\s*(${src[t.FULLPLAIN]})$|^$`);
141
145
  createToken("COMPARATORTRIM", `(\\s*)${src[t.GTLT]}\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true);
142
- exports$1.comparatorTrimReplace = "$1$2$3";
146
+ exports.comparatorTrimReplace = "$1$2$3";
143
147
  createToken("HYPHENRANGE", `^\\s*(${src[t.XRANGEPLAIN]})\\s+-\\s+(${src[t.XRANGEPLAIN]})\\s*$`);
144
148
  createToken("HYPHENRANGELOOSE", `^\\s*(${src[t.XRANGEPLAINLOOSE]})\\s+-\\s+(${src[t.XRANGEPLAINLOOSE]})\\s*$`);
145
149
  createToken("STAR", "(<|>)?=?\\s*\\*");
@@ -148,7 +152,7 @@ var langEs = (() => {
148
152
  }
149
153
  });
150
154
  var require_parse_options = __commonJS({
151
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/internal/parse-options.js"(exports$1, module) {
155
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/parse-options.js"(exports, module) {
152
156
  var looseOption = Object.freeze({ loose: true });
153
157
  var emptyOpts = Object.freeze({});
154
158
  var parseOptions = (options) => {
@@ -164,7 +168,7 @@ var langEs = (() => {
164
168
  }
165
169
  });
166
170
  var require_identifiers = __commonJS({
167
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/internal/identifiers.js"(exports$1, module) {
171
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/identifiers.js"(exports, module) {
168
172
  var numeric = /^[0-9]+$/;
169
173
  var compareIdentifiers = (a, b) => {
170
174
  if (typeof a === "number" && typeof b === "number") {
@@ -186,12 +190,24 @@ var langEs = (() => {
186
190
  }
187
191
  });
188
192
  var require_semver = __commonJS({
189
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/classes/semver.js"(exports$1, module) {
193
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/classes/semver.js"(exports, module) {
190
194
  var debug = require_debug();
191
195
  var { MAX_LENGTH, MAX_SAFE_INTEGER } = require_constants();
192
196
  var { safeRe: re, t } = require_re();
193
197
  var parseOptions = require_parse_options();
194
198
  var { compareIdentifiers } = require_identifiers();
199
+ var isPrereleaseIdentifier = (prerelease, identifier) => {
200
+ const identifiers = identifier.split(".");
201
+ if (identifiers.length > prerelease.length) {
202
+ return false;
203
+ }
204
+ for (let i = 0; i < identifiers.length; i++) {
205
+ if (compareIdentifiers(prerelease[i], identifiers[i]) !== 0) {
206
+ return false;
207
+ }
208
+ }
209
+ return true;
210
+ };
195
211
  var SemVer = class _SemVer {
196
212
  constructor(version, options) {
197
213
  options = parseOptions(options);
@@ -438,8 +454,9 @@ var langEs = (() => {
438
454
  if (identifierBase === false) {
439
455
  prerelease = [identifier];
440
456
  }
441
- if (compareIdentifiers(this.prerelease[0], identifier) === 0) {
442
- if (isNaN(this.prerelease[1])) {
457
+ if (isPrereleaseIdentifier(this.prerelease, identifier)) {
458
+ const prereleaseBase = this.prerelease[identifier.split(".").length];
459
+ if (isNaN(prereleaseBase)) {
443
460
  this.prerelease = prerelease;
444
461
  }
445
462
  } else {
@@ -462,7 +479,7 @@ var langEs = (() => {
462
479
  }
463
480
  });
464
481
  var require_parse = __commonJS({
465
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/parse.js"(exports$1, module) {
482
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/parse.js"(exports, module) {
466
483
  var SemVer = require_semver();
467
484
  var parse = (version, options, throwErrors = false) => {
468
485
  if (version instanceof SemVer) {
@@ -481,7 +498,7 @@ var langEs = (() => {
481
498
  }
482
499
  });
483
500
  var require_valid = __commonJS({
484
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/valid.js"(exports$1, module) {
501
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/valid.js"(exports, module) {
485
502
  var parse = require_parse();
486
503
  var valid2 = (version, options) => {
487
504
  const v = parse(version, options);
@@ -491,7 +508,7 @@ var langEs = (() => {
491
508
  }
492
509
  });
493
510
  var require_clean = __commonJS({
494
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/clean.js"(exports$1, module) {
511
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/clean.js"(exports, module) {
495
512
  var parse = require_parse();
496
513
  var clean = (version, options) => {
497
514
  const s = parse(version.trim().replace(/^[=v]+/, ""), options);
@@ -501,7 +518,7 @@ var langEs = (() => {
501
518
  }
502
519
  });
503
520
  var require_inc = __commonJS({
504
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/inc.js"(exports$1, module) {
521
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/inc.js"(exports, module) {
505
522
  var SemVer = require_semver();
506
523
  var inc = (version, release, options, identifier, identifierBase) => {
507
524
  if (typeof options === "string") {
@@ -522,7 +539,7 @@ var langEs = (() => {
522
539
  }
523
540
  });
524
541
  var require_diff = __commonJS({
525
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/diff.js"(exports$1, module) {
542
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/diff.js"(exports, module) {
526
543
  var parse = require_parse();
527
544
  var diff = (version1, version2) => {
528
545
  const v1 = parse(version1, null, true);
@@ -563,28 +580,28 @@ var langEs = (() => {
563
580
  }
564
581
  });
565
582
  var require_major = __commonJS({
566
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/major.js"(exports$1, module) {
583
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/major.js"(exports, module) {
567
584
  var SemVer = require_semver();
568
585
  var major = (a, loose) => new SemVer(a, loose).major;
569
586
  module.exports = major;
570
587
  }
571
588
  });
572
589
  var require_minor = __commonJS({
573
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/minor.js"(exports$1, module) {
590
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/minor.js"(exports, module) {
574
591
  var SemVer = require_semver();
575
592
  var minor = (a, loose) => new SemVer(a, loose).minor;
576
593
  module.exports = minor;
577
594
  }
578
595
  });
579
596
  var require_patch = __commonJS({
580
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/patch.js"(exports$1, module) {
597
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/patch.js"(exports, module) {
581
598
  var SemVer = require_semver();
582
599
  var patch = (a, loose) => new SemVer(a, loose).patch;
583
600
  module.exports = patch;
584
601
  }
585
602
  });
586
603
  var require_prerelease = __commonJS({
587
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/prerelease.js"(exports$1, module) {
604
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/prerelease.js"(exports, module) {
588
605
  var parse = require_parse();
589
606
  var prerelease = (version, options) => {
590
607
  const parsed = parse(version, options);
@@ -594,28 +611,28 @@ var langEs = (() => {
594
611
  }
595
612
  });
596
613
  var require_compare = __commonJS({
597
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/compare.js"(exports$1, module) {
614
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/compare.js"(exports, module) {
598
615
  var SemVer = require_semver();
599
616
  var compare2 = (a, b, loose) => new SemVer(a, loose).compare(new SemVer(b, loose));
600
617
  module.exports = compare2;
601
618
  }
602
619
  });
603
620
  var require_rcompare = __commonJS({
604
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/rcompare.js"(exports$1, module) {
621
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/rcompare.js"(exports, module) {
605
622
  var compare2 = require_compare();
606
623
  var rcompare = (a, b, loose) => compare2(b, a, loose);
607
624
  module.exports = rcompare;
608
625
  }
609
626
  });
610
627
  var require_compare_loose = __commonJS({
611
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/compare-loose.js"(exports$1, module) {
628
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/compare-loose.js"(exports, module) {
612
629
  var compare2 = require_compare();
613
630
  var compareLoose = (a, b) => compare2(a, b, true);
614
631
  module.exports = compareLoose;
615
632
  }
616
633
  });
617
634
  var require_compare_build = __commonJS({
618
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/compare-build.js"(exports$1, module) {
635
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/compare-build.js"(exports, module) {
619
636
  var SemVer = require_semver();
620
637
  var compareBuild = (a, b, loose) => {
621
638
  const versionA = new SemVer(a, loose);
@@ -626,63 +643,63 @@ var langEs = (() => {
626
643
  }
627
644
  });
628
645
  var require_sort = __commonJS({
629
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/sort.js"(exports$1, module) {
646
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/sort.js"(exports, module) {
630
647
  var compareBuild = require_compare_build();
631
648
  var sort = (list2, loose) => list2.sort((a, b) => compareBuild(a, b, loose));
632
649
  module.exports = sort;
633
650
  }
634
651
  });
635
652
  var require_rsort = __commonJS({
636
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/rsort.js"(exports$1, module) {
653
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/rsort.js"(exports, module) {
637
654
  var compareBuild = require_compare_build();
638
655
  var rsort = (list2, loose) => list2.sort((a, b) => compareBuild(b, a, loose));
639
656
  module.exports = rsort;
640
657
  }
641
658
  });
642
659
  var require_gt = __commonJS({
643
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/gt.js"(exports$1, module) {
660
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/gt.js"(exports, module) {
644
661
  var compare2 = require_compare();
645
662
  var gt = (a, b, loose) => compare2(a, b, loose) > 0;
646
663
  module.exports = gt;
647
664
  }
648
665
  });
649
666
  var require_lt = __commonJS({
650
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/lt.js"(exports$1, module) {
667
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/lt.js"(exports, module) {
651
668
  var compare2 = require_compare();
652
669
  var lt = (a, b, loose) => compare2(a, b, loose) < 0;
653
670
  module.exports = lt;
654
671
  }
655
672
  });
656
673
  var require_eq = __commonJS({
657
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/eq.js"(exports$1, module) {
674
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/eq.js"(exports, module) {
658
675
  var compare2 = require_compare();
659
676
  var eq = (a, b, loose) => compare2(a, b, loose) === 0;
660
677
  module.exports = eq;
661
678
  }
662
679
  });
663
680
  var require_neq = __commonJS({
664
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/neq.js"(exports$1, module) {
681
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/neq.js"(exports, module) {
665
682
  var compare2 = require_compare();
666
683
  var neq = (a, b, loose) => compare2(a, b, loose) !== 0;
667
684
  module.exports = neq;
668
685
  }
669
686
  });
670
687
  var require_gte = __commonJS({
671
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/gte.js"(exports$1, module) {
688
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/gte.js"(exports, module) {
672
689
  var compare2 = require_compare();
673
690
  var gte2 = (a, b, loose) => compare2(a, b, loose) >= 0;
674
691
  module.exports = gte2;
675
692
  }
676
693
  });
677
694
  var require_lte = __commonJS({
678
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/lte.js"(exports$1, module) {
695
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/lte.js"(exports, module) {
679
696
  var compare2 = require_compare();
680
697
  var lte = (a, b, loose) => compare2(a, b, loose) <= 0;
681
698
  module.exports = lte;
682
699
  }
683
700
  });
684
701
  var require_cmp = __commonJS({
685
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/cmp.js"(exports$1, module) {
702
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/cmp.js"(exports, module) {
686
703
  var eq = require_eq();
687
704
  var neq = require_neq();
688
705
  var gt = require_gt();
@@ -729,7 +746,7 @@ var langEs = (() => {
729
746
  }
730
747
  });
731
748
  var require_coerce = __commonJS({
732
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/coerce.js"(exports$1, module) {
749
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/coerce.js"(exports, module) {
733
750
  var SemVer = require_semver();
734
751
  var parse = require_parse();
735
752
  var { safeRe: re, t } = require_re();
@@ -771,8 +788,46 @@ var langEs = (() => {
771
788
  module.exports = coerce2;
772
789
  }
773
790
  });
791
+ var require_truncate = __commonJS({
792
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/truncate.js"(exports, module) {
793
+ var parse = require_parse();
794
+ var constants2 = require_constants();
795
+ var SemVer = require_semver();
796
+ var truncate = (version, truncation, options) => {
797
+ if (!constants2.RELEASE_TYPES.includes(truncation)) {
798
+ return null;
799
+ }
800
+ const clonedVersion = cloneInputVersion(version, options);
801
+ return clonedVersion && doTruncation(clonedVersion, truncation);
802
+ };
803
+ var cloneInputVersion = (version, options) => {
804
+ const versionStringToParse = version instanceof SemVer ? version.version : version;
805
+ return parse(versionStringToParse, options);
806
+ };
807
+ var doTruncation = (version, truncation) => {
808
+ if (isPrerelease(truncation)) {
809
+ return version.version;
810
+ }
811
+ version.prerelease = [];
812
+ switch (truncation) {
813
+ case "major":
814
+ version.minor = 0;
815
+ version.patch = 0;
816
+ break;
817
+ case "minor":
818
+ version.patch = 0;
819
+ break;
820
+ }
821
+ return version.format();
822
+ };
823
+ var isPrerelease = (type) => {
824
+ return type.startsWith("pre");
825
+ };
826
+ module.exports = truncate;
827
+ }
828
+ });
774
829
  var require_lrucache = __commonJS({
775
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/internal/lrucache.js"(exports$1, module) {
830
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/lrucache.js"(exports, module) {
776
831
  var LRUCache = class {
777
832
  constructor() {
778
833
  this.max = 1e3;
@@ -807,7 +862,7 @@ var langEs = (() => {
807
862
  }
808
863
  });
809
864
  var require_range = __commonJS({
810
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/classes/range.js"(exports$1, module) {
865
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/classes/range.js"(exports, module) {
811
866
  var SPACE_CHARACTERS = /\s+/g;
812
867
  var Range = class _Range {
813
868
  constructor(range, options) {
@@ -874,6 +929,7 @@ var langEs = (() => {
874
929
  return this.range;
875
930
  }
876
931
  parseRange(range) {
932
+ range = range.replace(BUILDSTRIPRE, "");
877
933
  const memoOpts = (this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) | (this.options.loose && FLAG_LOOSE);
878
934
  const memoKey = memoOpts + ":" + range;
879
935
  const cached = cache.get(memoKey);
@@ -956,12 +1012,14 @@ var langEs = (() => {
956
1012
  var SemVer = require_semver();
957
1013
  var {
958
1014
  safeRe: re,
1015
+ src,
959
1016
  t,
960
1017
  comparatorTrimReplace,
961
1018
  tildeTrimReplace,
962
1019
  caretTrimReplace
963
1020
  } = require_re();
964
1021
  var { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = require_constants();
1022
+ var BUILDSTRIPRE = new RegExp(src[t.BUILD], "g");
965
1023
  var isNullSet = (c) => c.value === "<0.0.0-0";
966
1024
  var isAny = (c) => c.value === "";
967
1025
  var isSatisfiable = (comparators, options) => {
@@ -990,20 +1048,22 @@ var langEs = (() => {
990
1048
  return comp;
991
1049
  };
992
1050
  var isX = (id) => !id || id.toLowerCase() === "x" || id === "*";
1051
+ var invalidXRangeOrder = (M, m, p) => isX(M) && !isX(m) || isX(m) && p && !isX(p);
993
1052
  var replaceTildes = (comp, options) => {
994
1053
  return comp.trim().split(/\s+/).map((c) => replaceTilde(c, options)).join(" ");
995
1054
  };
996
1055
  var replaceTilde = (comp, options) => {
997
1056
  const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE];
1057
+ const z = options.includePrerelease ? "-0" : "";
998
1058
  return comp.replace(r, (_, M, m, p, pr) => {
999
1059
  debug("tilde", comp, _, M, m, p, pr);
1000
1060
  let ret;
1001
1061
  if (isX(M)) {
1002
1062
  ret = "";
1003
1063
  } else if (isX(m)) {
1004
- ret = `>=${M}.0.0 <${+M + 1}.0.0-0`;
1064
+ ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`;
1005
1065
  } else if (isX(p)) {
1006
- ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`;
1066
+ ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`;
1007
1067
  } else if (pr) {
1008
1068
  debug("replaceTilde pr", pr);
1009
1069
  ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`;
@@ -1049,9 +1109,9 @@ var langEs = (() => {
1049
1109
  debug("no pr");
1050
1110
  if (M === "0") {
1051
1111
  if (m === "0") {
1052
- ret = `>=${M}.${m}.${p}${z} <${M}.${m}.${+p + 1}-0`;
1112
+ ret = `>=${M}.${m}.${p} <${M}.${m}.${+p + 1}-0`;
1053
1113
  } else {
1054
- ret = `>=${M}.${m}.${p}${z} <${M}.${+m + 1}.0-0`;
1114
+ ret = `>=${M}.${m}.${p} <${M}.${+m + 1}.0-0`;
1055
1115
  }
1056
1116
  } else {
1057
1117
  ret = `>=${M}.${m}.${p} <${+M + 1}.0.0-0`;
@@ -1070,6 +1130,9 @@ var langEs = (() => {
1070
1130
  const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE];
1071
1131
  return comp.replace(r, (ret, gtlt, M, m, p, pr) => {
1072
1132
  debug("xRange", comp, ret, gtlt, M, m, p, pr);
1133
+ if (invalidXRangeOrder(M, m, p)) {
1134
+ return comp;
1135
+ }
1073
1136
  const xM = isX(M);
1074
1137
  const xm = xM || isX(m);
1075
1138
  const xp = xm || isX(p);
@@ -1181,7 +1244,7 @@ var langEs = (() => {
1181
1244
  }
1182
1245
  });
1183
1246
  var require_comparator = __commonJS({
1184
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/classes/comparator.js"(exports$1, module) {
1247
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/classes/comparator.js"(exports, module) {
1185
1248
  var ANY = /* @__PURE__ */ Symbol("SemVer ANY");
1186
1249
  var Comparator = class _Comparator {
1187
1250
  static get ANY() {
@@ -1291,7 +1354,7 @@ var langEs = (() => {
1291
1354
  }
1292
1355
  });
1293
1356
  var require_satisfies = __commonJS({
1294
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/satisfies.js"(exports$1, module) {
1357
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/satisfies.js"(exports, module) {
1295
1358
  var Range = require_range();
1296
1359
  var satisfies2 = (version, range, options) => {
1297
1360
  try {
@@ -1305,14 +1368,14 @@ var langEs = (() => {
1305
1368
  }
1306
1369
  });
1307
1370
  var require_to_comparators = __commonJS({
1308
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/ranges/to-comparators.js"(exports$1, module) {
1371
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/to-comparators.js"(exports, module) {
1309
1372
  var Range = require_range();
1310
1373
  var toComparators = (range, options) => new Range(range, options).set.map((comp) => comp.map((c) => c.value).join(" ").trim().split(" "));
1311
1374
  module.exports = toComparators;
1312
1375
  }
1313
1376
  });
1314
1377
  var require_max_satisfying = __commonJS({
1315
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/ranges/max-satisfying.js"(exports$1, module) {
1378
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/max-satisfying.js"(exports, module) {
1316
1379
  var SemVer = require_semver();
1317
1380
  var Range = require_range();
1318
1381
  var maxSatisfying = (versions, range, options) => {
@@ -1338,7 +1401,7 @@ var langEs = (() => {
1338
1401
  }
1339
1402
  });
1340
1403
  var require_min_satisfying = __commonJS({
1341
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/ranges/min-satisfying.js"(exports$1, module) {
1404
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/min-satisfying.js"(exports, module) {
1342
1405
  var SemVer = require_semver();
1343
1406
  var Range = require_range();
1344
1407
  var minSatisfying = (versions, range, options) => {
@@ -1364,7 +1427,7 @@ var langEs = (() => {
1364
1427
  }
1365
1428
  });
1366
1429
  var require_min_version = __commonJS({
1367
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/ranges/min-version.js"(exports$1, module) {
1430
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/min-version.js"(exports, module) {
1368
1431
  var SemVer = require_semver();
1369
1432
  var Range = require_range();
1370
1433
  var gt = require_gt();
@@ -1420,7 +1483,7 @@ var langEs = (() => {
1420
1483
  }
1421
1484
  });
1422
1485
  var require_valid2 = __commonJS({
1423
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/ranges/valid.js"(exports$1, module) {
1486
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/valid.js"(exports, module) {
1424
1487
  var Range = require_range();
1425
1488
  var validRange = (range, options) => {
1426
1489
  try {
@@ -1433,7 +1496,7 @@ var langEs = (() => {
1433
1496
  }
1434
1497
  });
1435
1498
  var require_outside = __commonJS({
1436
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/ranges/outside.js"(exports$1, module) {
1499
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/outside.js"(exports, module) {
1437
1500
  var SemVer = require_semver();
1438
1501
  var Comparator = require_comparator();
1439
1502
  var { ANY } = Comparator;
@@ -1499,21 +1562,21 @@ var langEs = (() => {
1499
1562
  }
1500
1563
  });
1501
1564
  var require_gtr = __commonJS({
1502
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/ranges/gtr.js"(exports$1, module) {
1565
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/gtr.js"(exports, module) {
1503
1566
  var outside = require_outside();
1504
1567
  var gtr = (version, range, options) => outside(version, range, ">", options);
1505
1568
  module.exports = gtr;
1506
1569
  }
1507
1570
  });
1508
1571
  var require_ltr = __commonJS({
1509
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/ranges/ltr.js"(exports$1, module) {
1572
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/ltr.js"(exports, module) {
1510
1573
  var outside = require_outside();
1511
1574
  var ltr = (version, range, options) => outside(version, range, "<", options);
1512
1575
  module.exports = ltr;
1513
1576
  }
1514
1577
  });
1515
1578
  var require_intersects = __commonJS({
1516
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/ranges/intersects.js"(exports$1, module) {
1579
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/intersects.js"(exports, module) {
1517
1580
  var Range = require_range();
1518
1581
  var intersects = (r1, r2, options) => {
1519
1582
  r1 = new Range(r1, options);
@@ -1524,7 +1587,7 @@ var langEs = (() => {
1524
1587
  }
1525
1588
  });
1526
1589
  var require_simplify = __commonJS({
1527
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/ranges/simplify.js"(exports$1, module) {
1590
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/simplify.js"(exports, module) {
1528
1591
  var satisfies2 = require_satisfies();
1529
1592
  var compare2 = require_compare();
1530
1593
  module.exports = (versions, range, options) => {
@@ -1571,7 +1634,7 @@ var langEs = (() => {
1571
1634
  }
1572
1635
  });
1573
1636
  var require_subset = __commonJS({
1574
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/ranges/subset.js"(exports$1, module) {
1637
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/subset.js"(exports, module) {
1575
1638
  var Range = require_range();
1576
1639
  var Comparator = require_comparator();
1577
1640
  var { ANY } = Comparator;
@@ -1678,7 +1741,7 @@ var langEs = (() => {
1678
1741
  if (higher === c && higher !== gt) {
1679
1742
  return false;
1680
1743
  }
1681
- } else if (gt.operator === ">=" && !satisfies2(gt.semver, String(c), options)) {
1744
+ } else if (gt.operator === ">=" && !c.test(gt.semver)) {
1682
1745
  return false;
1683
1746
  }
1684
1747
  }
@@ -1693,7 +1756,7 @@ var langEs = (() => {
1693
1756
  if (lower === c && lower !== lt) {
1694
1757
  return false;
1695
1758
  }
1696
- } else if (lt.operator === "<=" && !satisfies2(lt.semver, String(c), options)) {
1759
+ } else if (lt.operator === "<=" && !c.test(lt.semver)) {
1697
1760
  return false;
1698
1761
  }
1699
1762
  }
@@ -1730,7 +1793,7 @@ var langEs = (() => {
1730
1793
  }
1731
1794
  });
1732
1795
  var require_semver2 = __commonJS({
1733
- "../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/index.js"(exports$1, module) {
1796
+ "../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/index.js"(exports, module) {
1734
1797
  var internalRe = require_re();
1735
1798
  var constants2 = require_constants();
1736
1799
  var SemVer = require_semver();
@@ -1758,6 +1821,7 @@ var langEs = (() => {
1758
1821
  var lte = require_lte();
1759
1822
  var cmp = require_cmp();
1760
1823
  var coerce2 = require_coerce();
1824
+ var truncate = require_truncate();
1761
1825
  var Comparator = require_comparator();
1762
1826
  var Range = require_range();
1763
1827
  var satisfies2 = require_satisfies();
@@ -1796,6 +1860,7 @@ var langEs = (() => {
1796
1860
  lte,
1797
1861
  cmp,
1798
1862
  coerce: coerce2,
1863
+ truncate,
1799
1864
  Comparator,
1800
1865
  Range,
1801
1866
  satisfies: satisfies2,
@@ -1821,11 +1886,35 @@ var langEs = (() => {
1821
1886
  };
1822
1887
  }
1823
1888
  });
1824
- var ICliTranslationService_TOKEN = "cli-translation-service";
1889
+ function createCliToken(name) {
1890
+ return name;
1891
+ }
1892
+ var ICliUserSessionService_TOKEN = createCliToken("cli-user-session-service");
1893
+ var ICliUsersStoreService_TOKEN = createCliToken("cli-users-store-service");
1894
+ var ICliGroupsStoreService_TOKEN = createCliToken("cli-groups-store-service");
1895
+ var ICliAuthService_TOKEN = createCliToken("cli-auth-service");
1896
+ var ICliCompletionProvider_TOKEN = createCliToken("cli-completion-provider");
1897
+ var ICliDragDropService_TOKEN = createCliToken("cli-drag-drop-service");
1898
+ var ICliFileTransferService_TOKEN = createCliToken("cli-file-transfer-service");
1899
+ var ICliTranslationService_TOKEN = createCliToken("cli-translation-service");
1900
+ var ICliPermissionService_TOKEN = createCliToken("cli-permission-service");
1901
+ var ICliFilePickerProvider_TOKEN = createCliToken("cli-file-picker-provider");
1902
+ var ICliHttpClient_TOKEN = createCliToken("cli-http-client");
1903
+ var ICliUserEventService_TOKEN = createCliToken("cli-user-event-service");
1904
+ var ICliAuditService_TOKEN = createCliToken("cli-audit-service");
1905
+ var ICliAuthorizationService_TOKEN = createCliToken("cli-authorization-service");
1906
+ var ICliPermissionRegistry_TOKEN = createCliToken("cli-permission-registry");
1907
+ var ICliSessionsService_TOKEN = createCliToken("cli-sessions-service");
1908
+ var ICliKeyValueStore_TOKEN = createCliToken("cli-key-value-store");
1909
+ var ICliServerAuthTokenProvider_TOKEN = createCliToken("cli-server-auth-token-provider");
1910
+ var ICliServerAuthService_TOKEN = createCliToken("cli-server-auth-service");
1911
+ var ICliServerManager_TOKEN = createCliToken("cli-server-manager");
1825
1912
  function resolveHeaders(provider) {
1826
1913
  if (!provider) return {};
1827
1914
  return typeof provider === "function" ? provider() : provider;
1828
1915
  }
1916
+ var ICliCommandGuard_TOKEN = createCliToken("cli-command-guard");
1917
+ var ICliEventBus_TOKEN = createCliToken("cli-event-bus");
1829
1918
  var semver = __toESM(require_semver2());
1830
1919
  var API_VERSION = 2;
1831
1920
  var VERSIONS_ENDPOINT = "/api/qcli/versions";
@@ -1848,12 +1937,18 @@ var langEs = (() => {
1848
1937
  * Returns the negotiated API version and the base path for all subsequent calls,
1849
1938
  * or null if the server is unreachable or incompatible.
1850
1939
  */
1851
- static async discover(baseUrl, headers) {
1940
+ static async discover(baseUrl, headers, options) {
1941
+ let response;
1852
1942
  try {
1853
1943
  const resolved = resolveHeaders(headers);
1854
- const response = await fetch(`${baseUrl}${VERSIONS_ENDPOINT}`, {
1944
+ response = await fetch(`${baseUrl}${VERSIONS_ENDPOINT}`, {
1855
1945
  headers: Object.keys(resolved).length > 0 ? resolved : void 0
1856
1946
  });
1947
+ } catch (e) {
1948
+ if (options?.rethrowNetworkErrors) throw e;
1949
+ return null;
1950
+ }
1951
+ try {
1857
1952
  if (!response.ok) return null;
1858
1953
  const info = await response.json();
1859
1954
  const version = this.negotiate(info);
@@ -2689,6 +2784,7 @@ var langEs = (() => {
2689
2784
  // ── Common ───────────────────────────────────────────────────────
2690
2785
  "cli.common.usage": "Uso:",
2691
2786
  "cli.common.examples": "Ejemplos:",
2787
+ "cli.common.use_hint": "Use {command} {action}",
2692
2788
  // ── Help ─────────────────────────────────────────────────────────
2693
2789
  "cli.help.description": "Muestra la ayuda de un comando",
2694
2790
  "cli.help.long_description": "Muestra informaci\xF3n de ayuda para los comandos",
@@ -2736,10 +2832,18 @@ var langEs = (() => {
2736
2832
  "cli.configure.all_reset": "Toda la configuraci\xF3n restablecida a los valores predeterminados",
2737
2833
  "cli.configure.invalid_number": "N\xFAmero no v\xE1lido: {value}",
2738
2834
  "cli.configure.invalid_options": "Valor no v\xE1lido. Opciones v\xE1lidas: {options}",
2835
+ "cli.configure.invalid_boolean": 'Valor booleano no v\xE1lido: "{value}". Use true o false.',
2739
2836
  // ── Echo ──────────────────────────────────────────────────────────
2740
2837
  "cli.echo.description": "Imprime el texto especificado",
2741
2838
  "cli.echo.long_description": "Imprime el texto especificado en la terminal",
2742
2839
  "cli.echo.piping_note": "Soporta salida de texto y objetos JSON mediante tuber\xEDas",
2840
+ "cli.echo.help.print_text_terminal_add": "Muestra texto en el terminal. A\xF1ada > file para guardarlo en un archivo (reemplaz\xE1ndolo) o >> file para a\xF1adirlo al final.",
2841
+ "cli.echo.help.print_text": "Mostrar texto",
2842
+ "cli.echo.help.write_text_file": "Escribir texto en un archivo",
2843
+ "cli.echo.help.append_text_file": "A\xF1adir texto a un archivo",
2844
+ "cli.echo.help.print_greeting": "Mostrar un saludo",
2845
+ "cli.echo.help.create_replace_notes_txt": "Crear o reemplazar notes.txt",
2846
+ "cli.echo.help.add_line": "A\xF1adirle una l\xEDnea",
2743
2847
  // ── Clear ─────────────────────────────────────────────────────────
2744
2848
  "cli.clear.description": "Limpia la terminal",
2745
2849
  "cli.clear.long_description": "Limpia todo el contenido de la pantalla de la terminal",
@@ -2752,6 +2856,7 @@ var langEs = (() => {
2752
2856
  "cli.uname.cli_versions": "Versiones del n\xFAcleo y las librer\xEDas del CLI",
2753
2857
  "cli.uname.browser_info": "Nombre del navegador, versi\xF3n, agente de usuario, idioma y plataforma",
2754
2858
  "cli.uname.os": "Sistema operativo",
2859
+ "cli.uname.description": "Muestra informaci\xF3n detallada del sistema y del navegador",
2755
2860
  // ── Hash ──────────────────────────────────────────────────────────
2756
2861
  "cli.hash.description": "Generar res\xFAmenes hash de texto",
2757
2862
  "cli.hash.long_description": "Generar res\xFAmenes hash criptogr\xE1ficos usando la API Web Crypto",
@@ -2765,6 +2870,7 @@ var langEs = (() => {
2765
2870
  "cli.time.description": "Mostrar la hora local y UTC actual",
2766
2871
  "cli.time.long_description": "Mostrar la hora local y UTC actual",
2767
2872
  "cli.time.show_current": "Mostrar la hora local y UTC actual",
2873
+ "cli.time.now.description": "Mostrar la hora actual",
2768
2874
  // ── Uptime ────────────────────────────────────────────────────────
2769
2875
  "cli.uptime.description": "Mostrar el tiempo de actividad de la sesi\xF3n",
2770
2876
  "cli.uptime.long_description": "Mostrar cu\xE1nto tiempo lleva activa la sesi\xF3n actual de la terminal",
@@ -2788,6 +2894,9 @@ var langEs = (() => {
2788
2894
  "cli.lorem.gen_words": "Generar palabras",
2789
2895
  "cli.lorem.gen_sentences": "Generar oraciones",
2790
2896
  "cli.lorem.gen_paragraphs": "Generar p\xE1rrafos",
2897
+ "cli.lorem.words.description": "Generar un n\xFAmero de palabras",
2898
+ "cli.lorem.sentences.description": "Generar un n\xFAmero de frases",
2899
+ "cli.lorem.paragraphs.description": "Generar un n\xFAmero de p\xE1rrafos",
2791
2900
  // ── Alias / Unalias ──────────────────────────────────────────────
2792
2901
  "cli.alias.description": "Gestionar alias de comandos",
2793
2902
  "cli.alias.long_description": "Crear atajos de alias para comandos usados frecuentemente",
@@ -2811,6 +2920,9 @@ var langEs = (() => {
2811
2920
  "cli.history.clear": "Borrar todo el historial",
2812
2921
  "cli.history.arrow_hint": "Use las teclas de flecha {keys} para navegar por el historial",
2813
2922
  "cli.history.prefix_hint": "Escriba un prefijo y luego {key} para buscar en el historial por prefijo",
2923
+ "cli.history.description": "Muestra el historial de comandos de la sesi\xF3n actual",
2924
+ "cli.history.clear.description": "Borra el historial de comandos",
2925
+ "cli.history.search.description": "Buscar un patr\xF3n en el historial de comandos",
2814
2926
  // ── Theme ─────────────────────────────────────────────────────────
2815
2927
  "cli.theme.description": "Interactuar con el tema",
2816
2928
  "cli.theme.long_description": "Personalizar la apariencia de la terminal con temas y colores",
@@ -2822,6 +2934,10 @@ var langEs = (() => {
2822
2934
  "cli.hex.base_conversion": "Conversi\xF3n de base",
2823
2935
  // ── Feedback ──────────────────────────────────────────────────────
2824
2936
  "cli.feedback.long_description": "Reportar errores, solicitar funcionalidades o sugerir nuevos comandos \u2014 de forma interactiva o en l\xEDnea.",
2937
+ "cli.feedback.report-bug.description": "Informa de un error en GitHub",
2938
+ "cli.feedback.request-feature.description": "Solicita una nueva funci\xF3n en GitHub",
2939
+ "cli.feedback.request-command.description": "Solicita un nuevo comando en GitHub",
2940
+ "cli.feedback.description": "Permite a los usuarios informar de errores o solicitar funciones",
2825
2941
  // ── JWT ───────────────────────────────────────────────────────────
2826
2942
  "cli.jwt.description": "Decodificar e inspeccionar tokens JWT",
2827
2943
  "cli.jwt.long_description": "Decodificar e inspeccionar JSON Web Tokens (JWT)",
@@ -2839,6 +2955,12 @@ var langEs = (() => {
2839
2955
  "cli.services.restart_desc": "Reiniciar un servicio",
2840
2956
  "cli.services.logs_desc": "Ver registros del servicio",
2841
2957
  "cli.services.info_desc": "Detalles del servicio",
2958
+ "cli.services.list.description": "Listar todos los servicios en segundo plano registrados",
2959
+ "cli.services.start.description": "Iniciar un servicio en segundo plano",
2960
+ "cli.services.stop.description": "Detener un servicio en segundo plano en ejecuci\xF3n",
2961
+ "cli.services.restart.description": "Reiniciar un servicio en segundo plano",
2962
+ "cli.services.logs.description": "Mostrar los registros de un servicio en segundo plano",
2963
+ "cli.services.info.description": "Mostrar informaci\xF3n detallada de un servicio",
2842
2964
  // ── Yes ───────────────────────────────────────────────────────────
2843
2965
  "cli.yes.description": "Repetir una cadena continuamente",
2844
2966
  "cli.yes.long_description": "Repetir una cadena continuamente",
@@ -2847,6 +2969,8 @@ var langEs = (() => {
2847
2969
  "cli.clipboard.long_description": "Copiar texto al portapapeles del sistema o pegar texto desde \xE9l",
2848
2970
  "cli.clipboard.copy_desc": "Copiar texto al portapapeles",
2849
2971
  "cli.clipboard.paste_desc": "Pegar del portapapeles",
2972
+ "cli.clipboard.copy.description": "Copiar texto al portapapeles",
2973
+ "cli.clipboard.paste.description": "Pegar texto del portapapeles",
2850
2974
  // ── Hotkeys ───────────────────────────────────────────────────────
2851
2975
  "cli.hotkeys.description": "Mostrar informaci\xF3n de las teclas r\xE1pidas",
2852
2976
  "cli.hotkeys.long_description": "Muestra todos los atajos de teclado y teclas r\xE1pidas disponibles",
@@ -2856,8 +2980,14 @@ var langEs = (() => {
2856
2980
  "cli.export.show_all": "Mostrar todas las variables",
2857
2981
  "cli.export.set_var": "Establecer una variable",
2858
2982
  "cli.export.set_spaces": "Establecer con espacios",
2983
+ "cli.export.set_many": "Definir varias a la vez",
2984
+ "cli.export.set_global": "Definir para todos los usuarios",
2985
+ "cli.export.set_session": "Solo este terminal, sin guardar",
2986
+ "cli.export.scopes": "Use las variables como $VAR o ${VAR}. Un valor definido en este terminal prevalece sobre el suyo guardado, que prevalece sobre uno compartido. env muestra de d\xF3nde viene cada una.",
2859
2987
  "cli.unset.description": "Eliminar variables de entorno",
2860
2988
  "cli.unset.long_description": "Eliminar una variable de entorno",
2989
+ "cli.unset.own": "Eliminar para este terminal y para usted (un valor compartido se oculta para usted)",
2990
+ "cli.unset.global": "Eliminar el valor compartido",
2861
2991
  "cli.env.description": "Mostrar variables de entorno",
2862
2992
  "cli.env.long_description": "Mostrar variables de entorno",
2863
2993
  "cli.env.show_all": "Mostrar todas las variables",
@@ -2874,6 +3004,9 @@ var langEs = (() => {
2874
3004
  "cli.json.format_desc": "Formatear JSON con sangr\xEDa",
2875
3005
  "cli.json.minify_desc": "Eliminar espacios en blanco",
2876
3006
  "cli.json.validate_desc": "Verificar si es JSON v\xE1lido",
3007
+ "cli.json.format.description": "Formatear JSON con sangr\xEDa",
3008
+ "cli.json.minify.description": "Minificar JSON quitando los espacios en blanco",
3009
+ "cli.json.validate.description": "Validar si una cadena es JSON v\xE1lido",
2877
3010
  // ── Base64 ────────────────────────────────────────────────────────
2878
3011
  "cli.base64.description": "Codificar o decodificar cadenas Base64",
2879
3012
  "cli.base64.long_description": "Codificar y decodificar cadenas Base64",
@@ -2886,6 +3019,9 @@ var langEs = (() => {
2886
3019
  "cli.timestamp.current": "Marca de tiempo Unix actual",
2887
3020
  "cli.timestamp.to_date": "Marca de tiempo a fecha",
2888
3021
  "cli.timestamp.from_date": "Fecha a marca de tiempo",
3022
+ "cli.timestamp.now.description": "Mostrar la marca de tiempo Unix actual",
3023
+ "cli.timestamp.to-date.description": "Convertir una marca de tiempo Unix en una fecha",
3024
+ "cli.timestamp.from-date.description": "Convertir una cadena de fecha en una marca de tiempo Unix",
2889
3025
  // ── Screen ────────────────────────────────────────────────────────
2890
3026
  "cli.screen.description": "Mostrar informaci\xF3n de pantalla y terminal",
2891
3027
  "cli.screen.long_description": "Mostrar dimensiones de la pantalla, ventana gr\xE1fica y terminal",
@@ -2898,6 +3034,11 @@ var langEs = (() => {
2898
3034
  "cli.random.uuid_desc": "UUID v4 aleatorio",
2899
3035
  "cli.random.coin_desc": "Lanzar una moneda",
2900
3036
  "cli.random.dice_desc": "Lanzar un dado",
3037
+ "cli.random.number.description": "Generar un n\xFAmero aleatorio",
3038
+ "cli.random.string.description": "Generar una cadena aleatoria",
3039
+ "cli.random.uuid.description": "Generar un UUID v4 aleatorio",
3040
+ "cli.random.coin.description": "Lanzar una moneda",
3041
+ "cli.random.dice.description": "Lanzar un dado",
2901
3042
  // ── Ping ──────────────────────────────────────────────────────────
2902
3043
  "cli.ping.description": "Enviar pings tipo ICMP a un host",
2903
3044
  "cli.ping.long_description": "Enviar pings HTTP tipo ICMP a un host y mostrar estad\xEDsticas de ida y vuelta",
@@ -2916,8 +3057,620 @@ var langEs = (() => {
2916
3057
  "cli.debug.processors": "Todos los procesadores registrados",
2917
3058
  "cli.debug.modules": "Todos los m\xF3dulos cargados",
2918
3059
  "cli.debug.state": "Inspeccionar almacenes de estado",
3060
+ "cli.debug.processors.description": "Listar todos los procesadores de comandos registrados",
3061
+ "cli.debug.modules.description": "Listar todos los m\xF3dulos CLI cargados",
3062
+ "cli.debug.state.description": "Inspeccionar todos los almacenes de estado y sus valores",
3063
+ "cli.debug.services.description": "Listar todos los servicios registrados en el contenedor DI",
3064
+ "cli.debug.environment.description": "Mostrar informaci\xF3n del navegador, el terminal y el framework",
3065
+ "cli.debug.history.description": "Mostrar estad\xEDsticas del historial de comandos",
3066
+ "cli.debug.health.description": "Comprobar el estado del sistema: almacenamiento, conectividad, estado de los procesadores",
3067
+ "cli.debug.export.description": "Exportar toda la informaci\xF3n de depuraci\xF3n como JSON",
3068
+ "cli.debug.servers.description": "Listar los servidores configurados y su estado de conexi\xF3n",
2919
3069
  // ── Packages ──────────────────────────────────────────────────────
2920
- "cli.packages.description": "Gestionar paquetes en el CLI"
3070
+ "cli.packages.description": "Gestionar paquetes en el CLI",
3071
+ // ── Servers and events ───────────────────────────────────────────
3072
+ "cli.server.description": "Gestionar las conexiones a servidores CLI remotos",
3073
+ "cli.server.list.description": "Mostrar los servidores con su estado, versi\xF3n y comandos",
3074
+ "cli.server.status.description": "Comprobar que los servidores responden (todos, o uno en detalle)",
3075
+ "cli.server.commands.description": "Mostrar los comandos de cada servidor",
3076
+ "cli.server.reconnect.description": "Volver a conectar con los servidores y recargar sus comandos",
3077
+ "cli.server.default.description": "Mostrar o fijar el servidor que ejecuta los comandos compartidos",
3078
+ "cli.server.jobs.description": "Gestionar tareas en segundo plano en los servidores conectados",
3079
+ "cli.server.jobs.list.description": "Listar todas las tareas de los servidores conectados",
3080
+ "cli.server.jobs.info.description": "Mostrar informaci\xF3n detallada de una tarea",
3081
+ "cli.server.jobs.trigger.description": "Iniciar la ejecuci\xF3n inmediata de una tarea",
3082
+ "cli.server.jobs.pause.description": "Pausar la ejecuci\xF3n programada de una tarea",
3083
+ "cli.server.jobs.resume.description": "Reanudar una tarea pausada",
3084
+ "cli.server.jobs.stop.description": "Detener una tarea y cancelar la ejecuci\xF3n actual si la hay",
3085
+ "cli.server.jobs.cancel.description": "Cancelar la ejecuci\xF3n actual de una tarea",
3086
+ "cli.server.jobs.history.description": "Mostrar el historial de ejecuciones de una tarea",
3087
+ "cli.server.jobs.logs.description": "Mostrar los registros de la \xFAltima ejecuci\xF3n o de una concreta",
3088
+ "cli.server.jobs.edit.description": "Editar interactivamente la configuraci\xF3n de una tarea",
3089
+ "cli.server.jobs.watch.description": "Vista en directo de los eventos de tareas por WebSocket",
3090
+ "cli.server.help.see_everything_you_can": "para ver todo lo que puede hacer",
3091
+ "cli.server.help.connect_terminal_remote_cli": "Conecta el terminal con servidores CLI remotos (.NET, Node.js, Python) y ejecuta sus comandos.",
3092
+ "cli.server.help.by_name_or_prefix": "Los comandos de cada servidor est\xE1n disponibles por nombre ({byName}) y con el servidor como prefijo ({prefixed}). Cuando varios servidores tienen el mismo comando, lo ejecuta el servidor predeterminado; si no hay uno, se le pregunta qu\xE9 servidor usar. Un comando local con el mismo nombre tiene prioridad: use el nombre con prefijo. Un servidor que se cae se reintenta cada 30 segundos y sus comandos vuelven cuando se recupera.",
3093
+ "cli.server.help.overview_servers": "Resumen de los servidores",
3094
+ "cli.server.help.servers_status_version_commands": "Servidores con estado, versi\xF3n y comandos",
3095
+ "cli.server.help.check_servers_reachable_all": "Comprobar que los servidores responden (todos, o uno en detalle)",
3096
+ "cli.server.help.commands_each_server_provides": "Comandos que ofrece cada servidor",
3097
+ "cli.server.help.connect_again_unreachable_servers": "Volver a conectar (servidores inaccesibles, o uno)",
3098
+ "cli.server.help.show_set_server_shared": "Mostrar o fijar el servidor para los comandos compartidos",
3099
+ "cli.server.help.open_shell_server_run": "Abrir un shell en un servidor, o ejecutar un comando",
3100
+ "cli.server.help.ping_node_show_details": "Hacer ping a node y mostrar sus detalles",
3101
+ "cli.server.help.what_node_can_do": "Qu\xE9 puede hacer node",
3102
+ "cli.server.help.run_echo_node_explicitly": "Ejecutar echo en node de forma expl\xEDcita",
3103
+ "cli.server.help.shared_commands_run_node": "Los comandos compartidos se ejecutan en node",
3104
+ "cli.server.help.retry_every_unreachable_server": "Reintentar todos los servidores inaccesibles",
3105
+ "cli.server.list.help.list_configured_servers_connection": "Lista los servidores configurados: estado de conexi\xF3n, URL, versi\xF3n del servidor y de la API, n\xFAmero de comandos y acceso al shell.",
3106
+ "cli.server.list.help.see_why_server_unreachable": "para ver por qu\xE9 un servidor no responde, server reconnect para reintentar",
3107
+ "cli.server.status.help.details_server": "para ver los detalles de un servidor",
3108
+ "cli.server.status.help.try_again": "para volver a intentarlo",
3109
+ "cli.server.status.help.load_commands": "para cargar sus comandos",
3110
+ "cli.server.status.help.see_commands": "para ver sus comandos",
3111
+ "cli.server.status.help.ping_servers_without_name": "Hace ping a los servidores. Sin nombre, se comprueban todos a la vez con su tiempo de ida y vuelta; con nombre, se muestra ese servidor en detalle (versiones, SO, shell, streaming) con sugerencias cuando no se puede alcanzar.",
3112
+ "cli.server.status.help.check_every_server": "Comprobar todos los servidores",
3113
+ "cli.server.status.help.details_one_server": "Detalles de un servidor",
3114
+ "cli.server.status.help.same_server_status": "Igual que server status",
3115
+ "cli.server.status.help.details_node": "Detalles de node",
3116
+ "cli.server.commands.help.shared_marker": "en varios servidores: se ejecuta en el servidor predeterminado (server use <name>), o pregunta",
3117
+ "cli.server.commands.help.local_marker": "un comando local tiene el mismo nombre: ejec\xFAtelo con el prefijo del servidor",
3118
+ "cli.server.commands.help.intro": "Lista los comandos que ofrece un servidor (todos los servidores, o uno). Ejec\xFAtelos por nombre, o con el servidor como prefijo: {example} siempre se ejecuta en node, tambi\xE9n cuando otro servidor o un comando local se llama echo.",
3119
+ "cli.server.commands.help.commands_every_server": "Comandos de cada servidor",
3120
+ "cli.server.commands.help.commands_one_server": "Comandos de un servidor",
3121
+ "cli.server.commands.help.what_node_can_do": "Qu\xE9 puede hacer node",
3122
+ "cli.server.reconnect.help.reconnect_them_anyway": "para volver a conectarlos de todos modos",
3123
+ "cli.server.reconnect.help.see_why": "para ver por qu\xE9",
3124
+ "cli.server.reconnect.help.connect_servers_again_reload": "Vuelve a conectar con los servidores y recarga sus comandos, p. ej. despu\xE9s de reiniciar o actualizar un servidor. Sin nombre, se reintentan todos los servidores inaccesibles.",
3125
+ "cli.server.reconnect.help.retry_unreachable_servers": "Reintentar los servidores inaccesibles",
3126
+ "cli.server.reconnect.help.reconnect_one_server": "Volver a conectar un servidor",
3127
+ "cli.server.reconnect.help.reconnect_every_server": "Volver a conectar todos los servidores",
3128
+ "cli.server.reconnect.help.same_server_reconnect": "Igual que server reconnect",
3129
+ "cli.server.reconnect.help.reload_commands_node": "Recargar los comandos de node",
3130
+ "cli.server.default.help.to_remove": "para quitarlo",
3131
+ "cli.server.default.help.to_set_one": "para fijar uno",
3132
+ "cli.server.default.help.default_server_runs_commands": "El servidor predeterminado ejecuta los comandos que tienen varios servidores (si no, se le pregunta cu\xE1l) y los comandos que necesitan un solo servidor, como server logs. Se recuerda entre recargas.",
3133
+ "cli.server.default.help.show_default_server": "Mostrar el servidor predeterminado",
3134
+ "cli.server.default.help.set": "Fijarlo",
3135
+ "cli.server.default.help.remove": "Quitarlo",
3136
+ "cli.server.default.help.same_server_default_node": "Igual que server default node",
3137
+ "cli.server.jobs.help.see_control_background_jobs": "Consulta y controla las tareas en segundo plano que se ejecutan en los servidores conectados: listarlas, ejecutar una ahora, pausarla o detenerla, leer su historial y registros, cambiar su configuraci\xF3n o ver los eventos en directo. Una tarea se elige por nombre (sin distinguir may\xFAsculas) o ID y se busca en todos los servidores conectados; las acciones se aplican a cada servidor que tiene la tarea, y --server limita un comando a uno.",
3138
+ "cli.server.jobs.help.same_server_jobs_list": "Igual que server jobs list",
3139
+ "cli.server.jobs.help.live_job_events": "Eventos de tareas en directo",
3140
+ "cli.server.jobs.help.all_jobs": "Todas las tareas",
3141
+ "cli.server.jobs.help.run_cleanup_job_now": "Ejecutar ahora la tarea cleanup",
3142
+ "cli.server.jobs.help.failed_runs": "Sus ejecuciones fallidas",
3143
+ "cli.server.jobs.help.last_run_output_node": "Salida de la \xFAltima ejecuci\xF3n, en node",
3144
+ "cli.server.jobs.list.help.list_jobs_every_connected": "Lista las tareas de todos los servidores conectados: grupo, estado, programaci\xF3n, \xFAltima y pr\xF3xima ejecuci\xF3n, y cu\xE1nto dur\xF3 la \xFAltima. Con varios servidores, cada uno tiene su propia tabla.",
3145
+ "cli.server.jobs.list.help.jobs_all_connected_servers": "Tareas de todos los servidores conectados",
3146
+ "cli.server.jobs.list.help.only_one_group": "Solo un grupo",
3147
+ "cli.server.jobs.list.help.jobs_node_server": "Tareas del servidor node",
3148
+ "cli.server.jobs.list.help.jobs_reports_group": "Tareas del grupo reports",
3149
+ "cli.server.jobs.info.help.show_everything_about_one": "Muestra todo sobre una tarea: programaci\xF3n, reintentos, tiempo l\xEDmite, pol\xEDtica de solapamiento, la ejecuci\xF3n en curso y el resultado de la \xFAltima. La tarea se encuentra por nombre (sin distinguir may\xFAsculas) o ID.",
3150
+ "cli.server.jobs.info.help.details_cleanup_job": "Detalles de la tarea cleanup",
3151
+ "cli.server.jobs.trigger.help.run_job_now_without": "Ejecuta una tarea ahora, sin esperar a su pr\xF3xima hora programada. Su programaci\xF3n no cambia.",
3152
+ "cli.server.jobs.trigger.help.run_cleanup_now": "Ejecutar cleanup ahora",
3153
+ "cli.server.jobs.trigger.help.then_read_output": "Luego leer su salida",
3154
+ "cli.server.jobs.pause.help.stop_running_job_schedule": "Deja de ejecutar una tarea seg\xFAn su programaci\xF3n hasta que se reanude. Use cancel o stop para una ejecuci\xF3n que ya est\xE1 en curso.",
3155
+ "cli.server.jobs.pause.help.hold_cleanup": "Retener cleanup",
3156
+ "cli.server.jobs.pause.help.put_back_schedule": "Volver a programarla",
3157
+ "cli.server.jobs.resume.help.put_paused_job_back": "Vuelve a poner una tarea pausada en su programaci\xF3n.",
3158
+ "cli.server.jobs.resume.help.run_cleanup_schedule_again": "Volver a ejecutar cleanup seg\xFAn su programaci\xF3n",
3159
+ "cli.server.jobs.stop.help.take_job_off_schedule": "Quita una tarea de su programaci\xF3n y cancela la ejecuci\xF3n en curso, si la hay.",
3160
+ "cli.server.jobs.stop.help.stop_cleanup_completely": "Detener cleanup por completo",
3161
+ "cli.server.jobs.cancel.help.cancel_run_progress_job": "Cancela la ejecuci\xF3n en curso de una tarea. La tarea sigue programada y se ejecuta de nuevo la pr\xF3xima vez.",
3162
+ "cli.server.jobs.cancel.help.abort_current_cleanup_run": "Abortar la ejecuci\xF3n actual de cleanup",
3163
+ "cli.server.jobs.history.help.list_past_runs_job": "Lista las ejecuciones pasadas de una tarea: estado, hora de inicio, duraci\xF3n, intento de reintento y el comienzo del mensaje de error. Use el ID corto con logs --exec para leer la salida de una ejecuci\xF3n.",
3164
+ "cli.server.jobs.history.help.last_20_runs": "Las \xFAltimas 20 ejecuciones",
3165
+ "cli.server.jobs.history.help.page_through_older_runs": "Recorrer las ejecuciones anteriores",
3166
+ "cli.server.jobs.history.help.only_failed_runs": "Solo las ejecuciones fallidas",
3167
+ "cli.server.jobs.history.help.last_5_runs": "Las \xFAltimas 5 ejecuciones",
3168
+ "cli.server.jobs.logs.help.print_log_entries_latest": "Muestra las entradas de registro de la \xFAltima ejecuci\xF3n de una tarea, o de una ejecuci\xF3n elegida por su ID de ejecuci\xF3n (del historial).",
3169
+ "cli.server.jobs.logs.help.logs_latest_run": "Registros de la \xFAltima ejecuci\xF3n",
3170
+ "cli.server.jobs.logs.help.logs_one_run": "Registros de una ejecuci\xF3n",
3171
+ "cli.server.jobs.logs.help.what_last_cleanup_run": "Lo que mostr\xF3 la \xFAltima ejecuci\xF3n de cleanup",
3172
+ "cli.server.jobs.edit.help.change_job_step_step": "Cambia una tarea paso a paso: descripci\xF3n, grupo, programaci\xF3n cron o intervalo, reintentos m\xE1ximos, tiempo l\xEDmite y pol\xEDtica de solapamiento (skip, queue o cancel). Pulse Enter para conservar un valor y Ctrl+C o Escape para cancelar; no cambia nada hasta que confirme. Una tarea en varios servidores necesita --server.",
3173
+ "cli.server.jobs.edit.help.edit_cleanup_server_has": "Editar cleanup en el servidor que la tiene",
3174
+ "cli.server.jobs.watch.help.follow_job_events_they": "Sigue los eventos de tareas a medida que ocurren (iniciada, completada, fallida, etc.) en todos los servidores conectados, una l\xEDnea por evento. Pulse Ctrl+C para detener.",
3175
+ "cli.server.jobs.watch.help.events_all_connected_servers": "Eventos de todos los servidores conectados",
3176
+ "cli.server.jobs.watch.help.only_events_node": "Solo eventos de node",
3177
+ "cli.ssh.description": "Abrir una sesi\xF3n de shell remota en un servidor",
3178
+ "cli.ssh.help.open_interactive_shell_server": "Abre un shell interactivo en un servidor, en este terminal, o ejecuta all\xED un comando y muestra su salida. Solo se pueden usar servidores que habilitan su shell; con el plugin users se necesita el permiso shell:execute. Sin nombre, ssh usa el \xFAnico servidor con shell, si no el servidor predeterminado, si no pregunta cu\xE1l.",
3179
+ "cli.ssh.help.shell_default_only_server": "Shell en el servidor predeterminado (o \xFAnico)",
3180
+ "cli.ssh.help.shell_server_exit_ctrl": "Shell en un servidor (exit o Ctrl+D para salir)",
3181
+ "cli.ssh.help.run_one_command_print": "Ejecutar un comando y mostrar su salida",
3182
+ "cli.ssh.help.same_ssh": "Igual que ssh <name>",
3183
+ "cli.ssh.help.interactive_shell_node": "Shell interactivo en node",
3184
+ "cli.ssh.help.one_command_node": "Un comando en node",
3185
+ "cli.ssh.help.same_ssh_2": "Igual que ssh",
3186
+ "cli.events.description": "Ver, listar y emitir eventos del bus de eventos",
3187
+ "cli.events.watch.description": "Mostrar los eventos en cuanto ocurren (Ctrl+C para parar)",
3188
+ "cli.events.log.description": "Mostrar los eventos recientes (en memoria, no se guardan)",
3189
+ "cli.events.emit.description": "Emitir un evento: events emit <tipo> [json]",
3190
+ "cli.events.watch.help.intro": "Muestra los eventos a medida que ocurren, hasta Ctrl+C",
3191
+ "cli.events.watch.help.every_event": "Todos los eventos",
3192
+ "cli.events.watch.help.namespace": "Un espacio de nombres",
3193
+ "cli.events.watch.help.one_type": "Un tipo",
3194
+ "cli.events.log.help.intro": "Muestra los eventos m\xE1s recientes, del m\xE1s antiguo al m\xE1s nuevo",
3195
+ "cli.events.log.help.last_20": "\xDAltimos 20 eventos",
3196
+ "cli.events.log.help.last_50_server": "\xDAltimos 50 eventos del servidor",
3197
+ "cli.events.emit.help.intro": "Emite un evento, p. ej. para probar un plugin que lo escucha",
3198
+ "cli.events.help.commands": "Comandos:",
3199
+ "cli.events.help.print_live": "Mostrar eventos en directo",
3200
+ "cli.events.help.recent": "Eventos recientes",
3201
+ "cli.events.help.emit": "Emitir un evento",
3202
+ "cli.events.help.patterns": "Patrones: un tipo exacto (package:installed), un espacio de nombres (package:*) o * para todos.",
3203
+ "cli.events.help.in_memory": "Los eventos se guardan en memoria solo para este terminal; no se conserva nada.",
3204
+ // ── Capture ──────────────────────────────────────────────────────
3205
+ "cli.capture.description": "Exportar la salida del terminal a un archivo descargable",
3206
+ "cli.capture.help.save_what_terminal_including": "Guarda lo que hay en el terminal, incluido el historial de desplazamiento, como un archivo que descarga el navegador. HTML conserva el fondo y el color de texto del tema; txt es texto plano. Los colores de cada l\xEDnea no se conservan.",
3207
+ "cli.capture.help.everything_terminal_html": "Todo como terminal-<timestamp>.html",
3208
+ "cli.capture.help.plain_text_file": "Archivo de texto plano",
3209
+ "cli.capture.help.only_last_n_lines": "Solo las \xFAltimas n l\xEDneas",
3210
+ "cli.capture.help.downloads_session_txt": "Descarga session.txt",
3211
+ "cli.capture.help.last_50_lines_html": "Las \xFAltimas 50 l\xEDneas como HTML",
3212
+ "cli.capture.help.same_capture": "Igual que capture",
3213
+ // ── Diff ─────────────────────────────────────────────────────────
3214
+ "cli.diff.description": "Comparar archivos l\xEDnea por l\xEDnea",
3215
+ "cli.diff.help.compare_two_texts_line": "Compara dos textos l\xEDnea por l\xEDnea: las l\xEDneas a\xF1adidas se muestran en verde con +, las eliminadas en rojo con -, con algunas l\xEDneas sin cambios alrededor de cada cambio como contexto.",
3216
+ "cli.diff.help.compare_two_texts": "Comparar dos textos",
3217
+ "cli.diff.help.only_changed_lines": "Solo las l\xEDneas modificadas",
3218
+ "cli.diff.help.one_line_changed": "Una l\xEDnea modificada",
3219
+ "cli.diff.help.prints_no_differences_found": "Muestra: No differences found",
3220
+ "cli.diff.help.compare_two_files_line": "Compara dos archivos l\xEDnea por l\xEDnea y muestra qu\xE9 cambi\xF3: las l\xEDneas que empiezan por < (o -) est\xE1n solo en el primer archivo, las que empiezan por > (o +) solo en el segundo.",
3221
+ "cli.diff.help.show_differences": "Mostrar las diferencias",
3222
+ "cli.diff.help.unified_format_context": "Formato unificado con contexto",
3223
+ "cli.diff.help.what_changed_between_versions": "Qu\xE9 cambi\xF3 entre versiones",
3224
+ "cli.diff.help.review_edits_git_style": "Revisar ediciones, al estilo git",
3225
+ "cli.diff.help.ignore_upper_lower_case": "Ignorar may\xFAsculas y min\xFAsculas",
3226
+ // ── Font Size ────────────────────────────────────────────────────
3227
+ "cli.font-size.description": "Ajustar el tama\xF1o de fuente del terminal",
3228
+ "cli.font-size.reset.description": "Restablecer el tama\xF1o de fuente predeterminado",
3229
+ "cli.font-size.set.description": "Establecer un tama\xF1o de fuente concreto",
3230
+ "cli.font-size.help.intro": "Aumenta o reduce el texto del terminal, de {min}px a {max}px. El tama\xF1o elegido se guarda y se restaura la pr\xF3xima vez que se abra el terminal; reset vuelve al tama\xF1o con el que empez\xF3 la p\xE1gina.",
3231
+ "cli.font-size.help.show_current_size": "Mostrar el tama\xF1o actual",
3232
+ "cli.font-size.help.bigger_smaller_by": "M\xE1s grande o m\xE1s peque\xF1o en {step}px",
3233
+ "cli.font-size.help.exact_size": "Tama\xF1o exacto en p\xEDxeles ({min}-{max})",
3234
+ "cli.font-size.help.back_default_size": "Volver al tama\xF1o predeterminado",
3235
+ "cli.font-size.help.use_16px_text": "Usar texto de 16px",
3236
+ "cli.font-size.help.grow_by": "Aumentar en {step}px",
3237
+ "cli.font-size.help.forget_saved_size": "Olvidar el tama\xF1o guardado",
3238
+ // ── Snippet ──────────────────────────────────────────────────────
3239
+ "cli.snippet.description": "Guardar y reutilizar plantillas de comandos con par\xE1metros",
3240
+ "cli.snippet.list.description": "Listar todos los snippets guardados",
3241
+ "cli.snippet.save.description": 'Guardar un nuevo snippet: snippet save <name> "<template>"',
3242
+ "cli.snippet.show.description": "Mostrar la plantilla de un snippet: snippet show <name>",
3243
+ "cli.snippet.delete.description": "Eliminar un snippet: snippet delete <name>",
3244
+ "cli.snippet.run.description": "Ejecutar un snippet con valores de variables: snippet run <name> var1=val1 var2=val2",
3245
+ "cli.snippet.help.save_command_lines_you": "Guarda como plantillas con nombre las l\xEDneas de comandos que usa a menudo, con {{placeholders}} que se rellenan al ejecutarlas. Los snippets se guardan en el navegador y los comparten todos sus terminales y pesta\xF1as.",
3246
+ "cli.snippet.help.save_replace_snippet": "Guardar (o reemplazar) un snippet",
3247
+ "cli.snippet.help.fill_placeholders_run": "Rellenar los marcadores y ejecutarlo",
3248
+ "cli.snippet.help.all_saved_snippets": "Todos los snippets guardados",
3249
+ "cli.snippet.help.print_snippet": "Mostrar un snippet",
3250
+ "cli.snippet.help.delete_snippet_rm_remove": "Eliminar un snippet (rm, remove)",
3251
+ "cli.snippet.help.template_placeholder": "Una plantilla con un marcador",
3252
+ "cli.snippet.help.runs_echo_hello_ada": "Ejecuta: echo Hello Ada",
3253
+ "cli.snippet.help.quote_values_spaces": "Entrecomillar valores con espacios",
3254
+ // ── Test ─────────────────────────────────────────────────────────
3255
+ "cli.test.description": "Evaluar una condici\xF3n (estado de salida 0 si es verdadera)",
3256
+ "cli.test.help.expressions": "Expresiones:",
3257
+ "cli.test.help.empty_not_empty": "vac\xEDo / no vac\xEDo",
3258
+ "cli.test.help.equal_not_equal": "igual / distinto",
3259
+ "cli.test.help.integer_comparison": "comparaci\xF3n de enteros",
3260
+ "cli.test.help.exists_file_directory": "existe / archivo / directorio",
3261
+ // ── Kill ─────────────────────────────────────────────────────────
3262
+ "cli.kill.description": "Terminar un proceso en ejecuci\xF3n por PID",
3263
+ "cli.kill.help.stop_running_process_pid": "Detiene un proceso en ejecuci\xF3n por su PID, tal como lo muestra ps. Un comando se cancela, un servicio en segundo plano se detiene. Solo se pueden terminar procesos en ejecuci\xF3n; despu\xE9s aparecen como killed con c\xF3digo de salida -9.",
3264
+ "cli.kill.help.stop_process_pid": "Detener el proceso con ese PID",
3265
+ "cli.kill.help.find_pid": "Buscar el PID",
3266
+ "cli.kill.help.stop_process_3": "Detener el proceso 3",
3267
+ // ── Pkg ──────────────────────────────────────────────────────────
3268
+ "cli.pkg.description": "Gestionar paquetes en la CLI",
3269
+ "cli.pkg.ls.description": "Listar todos los paquetes de la CLI",
3270
+ "cli.pkg.browse.description": "Listar todos los paquetes disponibles de todos los or\xEDgenes configurados",
3271
+ "cli.pkg.add.description": "A\xF1adir un paquete a la CLI, p. ej. pkg add guid.",
3272
+ "cli.pkg.remove.description": "Eliminar un paquete de la CLI",
3273
+ "cli.pkg.versions.description": "Mostrar todas las versiones publicadas de un paquete",
3274
+ "cli.pkg.check.description": "Buscar actualizaciones de los paquetes instalados",
3275
+ "cli.pkg.update.description": "Actualizar un paquete de la CLI a la \xFAltima versi\xF3n o actualizar todos los paquetes",
3276
+ "cli.pkg.source.description": "Consultar o definir el origen de paquetes para las descargas",
3277
+ "cli.pkg.source.get.description": "Mostrar el CDN actual",
3278
+ "cli.pkg.source.set.description": "Definir el origen de paquetes preferido (interactivo si no se indica nombre)",
3279
+ "cli.pkg.help.list_installed_packages": "Listar los paquetes instalados",
3280
+ "cli.pkg.help.browse_all_available_packages": "Explorar todos los paquetes disponibles",
3281
+ "cli.pkg.help.install_package": "Instalar un paquete",
3282
+ "cli.pkg.help.remove_package": "Eliminar un paquete",
3283
+ "cli.pkg.help.show_all_published_versions": "Mostrar todas las versiones publicadas",
3284
+ "cli.pkg.help.check_available_updates": "Buscar actualizaciones disponibles",
3285
+ "cli.pkg.help.update_one_all_packages": "Actualizar uno o todos los paquetes",
3286
+ "cli.pkg.help.get_set_package_source": "Consultar o definir el origen de paquetes",
3287
+ "cli.pkg.help.install_qodalis_cli_guid": "Instalar @qodalis/cli-guid",
3288
+ "cli.pkg.help.install_multiple_packages": "Instalar varios paquetes",
3289
+ "cli.pkg.help.update_all_packages": "Actualizar todos los paquetes",
3290
+ "cli.pkg.browse.help.install_package": "para instalar un paquete",
3291
+ "cli.pkg.add.help.short_name": "Nombre corto",
3292
+ "cli.pkg.add.help.full_name": "Nombre completo",
3293
+ "cli.pkg.add.help.multiple_packages": "Varios paquetes",
3294
+ "cli.pkg.add.help.specific_version": "Versi\xF3n concreta",
3295
+ "cli.pkg.remove.help.remove_one_package": "Eliminar un paquete",
3296
+ "cli.pkg.remove.help.remove_multiple": "Eliminar varios",
3297
+ "cli.pkg.remove.help.short_alias": "Alias corto",
3298
+ "cli.pkg.versions.help.short_name": "Nombre corto",
3299
+ "cli.pkg.versions.help.full_name": "Nombre completo",
3300
+ "cli.pkg.check.help.apply_updates": "para aplicar las actualizaciones",
3301
+ "cli.pkg.update.help.update_latest": "Actualizar a la \xFAltima versi\xF3n",
3302
+ "cli.pkg.update.help.update_specific_version": "Actualizar a una versi\xF3n concreta",
3303
+ "cli.pkg.update.help.update_all_packages": "Actualizar todos los paquetes",
3304
+ "cli.pkg.update.help.install_specific_version": "Instalar una versi\xF3n concreta",
3305
+ "cli.pkg.source.help.change": "para cambiarlo",
3306
+ "cli.pkg.source.help.show_current_source": "Mostrar el origen actual",
3307
+ "cli.pkg.source.help.set_preferred_source": "Definir el origen preferido",
3308
+ "cli.pkg.help.install_package_2": "para instalar un paquete",
3309
+ // ── Ps ───────────────────────────────────────────────────────────
3310
+ "cli.ps.description": "Listar procesos en ejecuci\xF3n y recientes",
3311
+ "cli.ps.help.list_processes_terminal_commands": "Lista los procesos de este terminal: comandos, servicios en segundo plano, daemons y tareas. Los que est\xE1n en ejecuci\xF3n se muestran junto con los terminados, fallidos y detenidos recientemente (los \xFAltimos 50), con su c\xF3digo de salida y hace cu\xE1nto empezaron.",
3312
+ "cli.ps.help.all_processes_oldest_first": "Todos los procesos, del m\xE1s antiguo al m\xE1s nuevo",
3313
+ "cli.ps.help.what_running_now": "Qu\xE9 se est\xE1 ejecutando ahora",
3314
+ "cli.ps.help.stop_process_12_pid": "Detener el proceso 12 de la columna PID",
3315
+ // ── Cron ─────────────────────────────────────────────────────────
3316
+ "cli.cron.description": "Programar comandos para ejecutarse a intervalos repetidos",
3317
+ "cli.cron.add.description": "A\xF1adir una tarea cron: cron add <name> <interval> <command>",
3318
+ "cli.cron.list.description": "Listar todas las tareas cron",
3319
+ "cli.cron.remove.description": "Eliminar una tarea cron: cron remove <name>",
3320
+ "cli.cron.enable.description": "Activar una tarea cron pausada",
3321
+ "cli.cron.disable.description": "Pausar una tarea cron sin eliminarla",
3322
+ "cli.cron.help.run_command_again_again": "Ejecuta un comando una y otra vez a intervalos fijos mientras el terminal est\xE1 abierto. Las tareas se guardan: vuelven a iniciarse al arrancar el terminal y se pueden pausar sin eliminarlas.",
3323
+ "cli.cron.help.add_job": "A\xF1adir una tarea",
3324
+ "cli.cron.help.jobs_interval_status_run": "Tareas con intervalo, estado y n\xFAmero de ejecuciones (ls)",
3325
+ "cli.cron.help.pause_job": "Pausar una tarea",
3326
+ "cli.cron.help.resume_paused_job": "Reanudar una tarea pausada",
3327
+ "cli.cron.help.remove_job_rm_delete": "Eliminar una tarea (rm, delete)",
3328
+ "cli.cron.help.intervals_seconds_30_hours": "Intervalos: segundos (30), u horas, minutos y segundos (1h, 5m, 1h30m, 90s); m\xEDnimo 10 segundos.",
3329
+ "cli.cron.help.every_5_minutes": "Cada 5 minutos",
3330
+ "cli.cron.help.every_hour_half": "Cada hora y media",
3331
+ "cli.cron.help.pause": "Pausarla",
3332
+ // ── Binary ───────────────────────────────────────────────────────
3333
+ "cli.binary.long_description": "Codificar y decodificar cadenas binarias",
3334
+ "cli.binary.utf8_note": "Admite codificaci\xF3n de texto UTF-8",
3335
+ "cli.binary.encode_desc": "Texto a binario",
3336
+ "cli.binary.decode_desc": "Binario a texto",
3337
+ // ── Morse ────────────────────────────────────────────────────────
3338
+ "cli.morse.long_description": "Codificar y decodificar c\xF3digo Morse",
3339
+ "cli.morse.note": "Admite letras, n\xFAmeros y signos de puntuaci\xF3n comunes",
3340
+ "cli.morse.encode_desc": "Texto a Morse",
3341
+ "cli.morse.decode_desc": "Morse a texto",
3342
+ // ── Rot ──────────────────────────────────────────────────────────
3343
+ "cli.rot.long_description": "Aplicar el cifrado ROT (rotaci\xF3n) a un texto",
3344
+ "cli.rot.note": "Por defecto es ROT13 (autoinverso: aplicarlo dos veces devuelve el original)",
3345
+ "cli.rot.default_desc": "Aplicar ROT13",
3346
+ "cli.rot.shift_desc": "Aplicar ROT-N",
3347
+ // ── Awk ──────────────────────────────────────────────────────────
3348
+ "cli.awk.description": "B\xFAsqueda de patrones y procesamiento de texto",
3349
+ "cli.awk.help.process_text_records_fields": "Procesa texto como registros y campos: cada l\xEDnea se divide en campos $1, $2, ... ($0 es la l\xEDnea completa) y cada regla ejecuta su { action } en las l\xEDneas que coinciden. Admite bloques BEGIN y END, patrones /regex/ y de comparaci\xF3n de campos, print, variables, NR y NF. Ponga el programa entre comillas; uno sencillo tambi\xE9n funciona sin ellas (awk {print $1} file).",
3350
+ "cli.awk.help.run_program_over_file": "Ejecutar un programa sobre un archivo",
3351
+ "cli.awk.help.split_fields_instead_spaces": "Separar campos por <sep> en lugar de por espacios",
3352
+ "cli.awk.help.run_program_over_piped": "Ejecutar un programa sobre la entrada canalizada",
3353
+ "cli.awk.help.print_first_column": "Mostrar la primera columna",
3354
+ "cli.awk.help.second_column_csv": "Segunda columna de un CSV",
3355
+ "cli.awk.help.filter_rows_field": "Filtrar filas por un campo",
3356
+ "cli.awk.help.sum_second_column": "Sumar la segunda columna",
3357
+ // ── Basename ─────────────────────────────────────────────────────
3358
+ "cli.basename.description": "Quitar el directorio de una ruta",
3359
+ "cli.basename.help.print_last_part_path": "Muestra la \xFAltima parte de una ruta, el nombre del archivo o directorio, sin los directorios anteriores. Si se indica un sufijo, tambi\xE9n se quita del final.",
3360
+ "cli.basename.help.name_without_directories": "Nombre sin los directorios",
3361
+ "cli.basename.help.also_remove_trailing_suffix": "Quitar tambi\xE9n un sufijo final",
3362
+ "cli.basename.help.prints_notes_txt": "Muestra notes.txt",
3363
+ "cli.basename.help.prints_notes": "Muestra notes",
3364
+ "cli.basename.help.prints_user": "Muestra user",
3365
+ // ── Cat ──────────────────────────────────────────────────────────
3366
+ "cli.cat.description": "Mostrar el contenido de archivos",
3367
+ "cli.cat.help.print_contents_one_more": "Muestra el contenido de uno o m\xE1s archivos, unidos en orden, o de la entrada canalizada. Canalice la salida a otros comandos para buscar, ordenar o contar.",
3368
+ "cli.cat.help.print_files_one_after": "Mostrar archivos uno tras otro",
3369
+ "cli.cat.help.send_file_another_command": "Enviar un archivo a otro comando",
3370
+ "cli.cat.help.show_whole_file": "Mostrar el archivo completo",
3371
+ "cli.cat.help.show_only_lines_error": "Mostrar solo las l\xEDneas con error",
3372
+ "cli.cat.help.print_lines_sorted": "Mostrar las l\xEDneas ordenadas",
3373
+ // ── Cd ───────────────────────────────────────────────────────────
3374
+ "cli.cd.description": "Cambiar el directorio de trabajo actual",
3375
+ "cli.cd.help.change_current_directory_without": "Cambia el directorio actual. Sin ruta, va a su directorio personal. Las rutas pueden ser absolutas (/...), relativas a donde est\xE1, o empezar por ~ para el directorio personal.",
3376
+ "cli.cd.help.go_home_directory": "Ir a su directorio personal",
3377
+ "cli.cd.help.go_directory": "Entrar en un directorio",
3378
+ "cli.cd.help.go_up_one_level": "Subir un nivel",
3379
+ "cli.cd.help.go_docs_home": "Ir a docs en su directorio personal",
3380
+ "cli.cd.help.go_sibling_directory": "Ir a un directorio hermano",
3381
+ "cli.cd.help.go_root": "Ir a la ra\xEDz",
3382
+ // ── Chmod ────────────────────────────────────────────────────────
3383
+ "cli.chmod.description": "Cambiar los permisos de archivos",
3384
+ "cli.chmod.help.change_who_can_read": "Cambia qui\xE9n puede leer (r), escribir (w) y ejecutar (x) un archivo. Use un modo octal como 755 o uno simb\xF3lico: qui\xE9n (u usuario, g grupo, o otros, a todos), luego + para a\xF1adir, - para quitar o = para fijar, y despu\xE9s los permisos.",
3385
+ "cli.chmod.help.set_permissions": "Establecer permisos",
3386
+ "cli.chmod.help.apply_directory_everything": "Aplicar a un directorio y a todo su contenido",
3387
+ "cli.chmod.help.rw_r_r_owner": "rw-r--r--: el propietario escribe, los dem\xE1s leen",
3388
+ "cli.chmod.help.let_owner_execute": "Permitir que el propietario lo ejecute",
3389
+ "cli.chmod.help.take_away_write_group": "Quitar la escritura al grupo y a otros",
3390
+ "cli.chmod.help.set_whole_directory_tree": "Establecer un \xE1rbol de directorios completo",
3391
+ // ── Chown ────────────────────────────────────────────────────────
3392
+ "cli.chown.description": "Cambiar el propietario y el grupo de archivos",
3393
+ "cli.chown.help.change_owner_group_files": "Cambia el propietario y/o el grupo de los archivos. Indique usuario, usuario:grupo, usuario: (solo propietario) o :grupo (solo grupo).",
3394
+ "cli.chown.help.change_owner_group_if": "Cambiar el propietario y, si se indica, el grupo",
3395
+ "cli.chown.help.change_only_group": "Cambiar solo el grupo",
3396
+ "cli.chown.help.apply_directory_everything": "Aplicar a un directorio y a todo su contenido",
3397
+ "cli.chown.help.make_alice_owner": "Hacer a alice propietaria",
3398
+ "cli.chown.help.set_owner_group": "Establecer propietario y grupo",
3399
+ "cli.chown.help.give_bob_whole_directory": "Dar a bob un directorio completo",
3400
+ // ── Cp ───────────────────────────────────────────────────────────
3401
+ "cli.cp.description": "Copiar archivos y directorios",
3402
+ "cli.cp.help.copy_file_new_path": "Copia un archivo a una nueva ruta, o dentro de un directorio existente. Copiar un directorio requiere -r, que copia todo su contenido. Un archivo que ya exista en el destino se reemplaza.",
3403
+ "cli.cp.help.copy_file_new_name": "Copiar un archivo con un nombre nuevo",
3404
+ "cli.cp.help.copy_files_directory": "Copiar archivos a un directorio",
3405
+ "cli.cp.help.copy_directory_contents": "Copiar un directorio y su contenido",
3406
+ "cli.cp.help.make_backup_copy": "Hacer una copia de seguridad",
3407
+ "cli.cp.help.copy_docs": "Copiar a ~/docs",
3408
+ "cli.cp.help.duplicate_whole_directory": "Duplicar un directorio completo",
3409
+ // ── Cut ──────────────────────────────────────────────────────────
3410
+ "cli.cut.description": "Extraer columnas o campos de cada l\xEDnea de un archivo",
3411
+ "cli.cut.help.print_selected_parts_each": "Muestra partes seleccionadas de cada l\xEDnea: campos separados por un delimitador (-f, tabulador por defecto) o posiciones de caracteres (-c). Una lista puede ser de n\xFAmeros sueltos, rangos o ambos, como 1,3 o 2-4 o 3-.",
3412
+ "cli.cut.help.select_fields": "Seleccionar campos",
3413
+ "cli.cut.help.select_character_positions": "Seleccionar posiciones de caracteres",
3414
+ "cli.cut.help.cut_piped_input": "Cortar la entrada canalizada",
3415
+ "cli.cut.help.first_third_csv_column": "Primera y tercera columna de un CSV",
3416
+ "cli.cut.help.first_10_characters_each": "Los primeros 10 caracteres de cada l\xEDnea",
3417
+ "cli.cut.help.first_two_fields_split": "Los dos primeros campos separados por :",
3418
+ // ── Dirname ──────────────────────────────────────────────────────
3419
+ "cli.dirname.description": "Quitar el \xFAltimo componente de una ruta",
3420
+ "cli.dirname.help.print_directory_part_path": "Muestra la parte de directorio de una ruta, todo lo anterior a la \xFAltima /. Un nombre simple sin / da . (el directorio actual).",
3421
+ "cli.dirname.help.path_without_last_part": "La ruta sin su \xFAltima parte",
3422
+ "cli.dirname.help.prints_home_user": "Muestra /home/user",
3423
+ "cli.dirname.help.prints": "Muestra .",
3424
+ "cli.dirname.help.prints_2": "Muestra /",
3425
+ // ── Du ───────────────────────────────────────────────────────────
3426
+ "cli.du.description": "Estimar el espacio usado por archivos",
3427
+ "cli.du.help.show_how_much_space": "Muestra cu\xE1nto espacio usan los archivos y directorios, en bytes. Para un directorio, se lista cada subdirectorio con su tama\xF1o total; use -s para ver solo el total o -d para limitar la profundidad.",
3428
+ "cli.du.help.sizes_path_default_current": "Tama\xF1os de una ruta (por defecto: el directorio actual) y sus subdirectorios",
3429
+ "cli.du.help.only_total": "Solo el total",
3430
+ "cli.du.help.only_levels_deep": "Solo <n> niveles de profundidad",
3431
+ "cli.du.help.size_each_directory_docs": "Tama\xF1o de cada directorio en ~/docs",
3432
+ "cli.du.help.total_home_k_m": "Total de su directorio personal en K/M/G",
3433
+ "cli.du.help.size_each_top_level": "Tama\xF1o de cada carpeta de primer nivel",
3434
+ // ── Find ─────────────────────────────────────────────────────────
3435
+ "cli.find.description": "Buscar archivos y directorios por nombre o tipo",
3436
+ "cli.find.help.list_files_directories_under": "Lista archivos y directorios bajo una ruta (el directorio actual por defecto), buscando en todos los subdirectorios. La propia ruta de inicio se lista primero. Filtre por nombre con un patr\xF3n glob (* y ?; --name distingue may\xFAsculas, --iname no) o por tipo.",
3437
+ "cli.find.help.list_everything_under_path": "Listar todo bajo una ruta",
3438
+ "cli.find.help.match_names_against_glob": "Filtrar nombres con un patr\xF3n glob",
3439
+ "cli.find.help.same_ignoring_case": "Igual, sin distinguir may\xFAsculas",
3440
+ "cli.find.help.only_files_f_directories": "Solo archivos (f) o directorios (d)",
3441
+ "cli.find.help.list_everything_docs": "Listar todo en ~/docs",
3442
+ "cli.find.help.find_all_txt_files": "Buscar todos los archivos .txt",
3443
+ "cli.find.help.directories_near_top": "Directorios cercanos a la ra\xEDz",
3444
+ "cli.find.help.delete_all_tmp_files": "Eliminar todos los archivos .tmp",
3445
+ // ── Grep ─────────────────────────────────────────────────────────
3446
+ "cli.grep.description": "Buscar un patr\xF3n en el contenido de archivos",
3447
+ "cli.grep.help.print_lines_match_pattern": "Muestra las l\xEDneas que coinciden con un patr\xF3n. El patr\xF3n es una expresi\xF3n regular, las coincidencias se resaltan y la entrada puede ser archivos, directorios (con -r) o texto canalizado.",
3448
+ "cli.grep.help.search_one_more_files": "Buscar en uno o m\xE1s archivos",
3449
+ "cli.grep.help.search_every_file_under": "Buscar en todos los archivos de un directorio",
3450
+ "cli.grep.help.filter_piped_input": "Filtrar la entrada canalizada",
3451
+ "cli.grep.help.case_insensitive_search": "B\xFAsqueda sin distinguir may\xFAsculas",
3452
+ "cli.grep.help.find_todos_line_numbers": "Buscar TODO con n\xFAmeros de l\xEDnea",
3453
+ "cli.grep.help.hide_comment_lines": "Ocultar las l\xEDneas de comentario",
3454
+ "cli.grep.help.count_matching_lines": "Contar las l\xEDneas que coinciden",
3455
+ // ── Head ─────────────────────────────────────────────────────────
3456
+ "cli.head.description": "Mostrar las primeras l\xEDneas de un archivo",
3457
+ "cli.head.help.print_first_lines_file": "Muestra las primeras l\xEDneas de un archivo, 10 por defecto. Tambi\xE9n funciona con entrada canalizada. Con varios archivos, cada uno lleva un encabezado ==> name <==.",
3458
+ "cli.head.help.first_10_lines": "Las primeras 10 l\xEDneas",
3459
+ "cli.head.help.first_lines": "Las primeras <count> l\xEDneas",
3460
+ "cli.head.help.first_lines_piped_input": "Las primeras l\xEDneas de la entrada canalizada",
3461
+ "cli.head.help.show_start_file": "Mostrar el inicio de un archivo",
3462
+ "cli.head.help.first_3_lines_each": "Las primeras 3 l\xEDneas de cada archivo",
3463
+ "cli.head.help.first_20_lines_log": "Las primeras 20 l\xEDneas del registro",
3464
+ // ── Ln ───────────────────────────────────────────────────────────
3465
+ "cli.ln.description": "Crear enlaces simb\xF3licos",
3466
+ "cli.ln.help.create_symbolic_link_new": "Crea un enlace simb\xF3lico: una nueva ruta que apunta a otro archivo o directorio. Solo se admiten enlaces simb\xF3licos (-s) y el destino no tiene que existir todav\xEDa.",
3467
+ "cli.ln.help.create_pointing": "Crear <link> apuntando a <target>",
3468
+ "cli.ln.help.shortcut_file": "Acceso directo a un archivo",
3469
+ "cli.ln.help.shortcut_directory": "Acceso directo a un directorio",
3470
+ // ── Mkdir ────────────────────────────────────────────────────────
3471
+ "cli.mkdir.description": "Crear directorios",
3472
+ "cli.mkdir.help.create_new_directory_p": "Crea un nuevo directorio. Con -p, tambi\xE9n se crean los directorios padre que falten.",
3473
+ "cli.mkdir.help.create_one_more_directories": "Crear uno o m\xE1s directorios",
3474
+ "cli.mkdir.help.create_directory_missing_parents": "Crear un directorio y sus padres que falten",
3475
+ "cli.mkdir.help.create_projects_current_directory": "Crear projects en el directorio actual",
3476
+ "cli.mkdir.help.create_whole_path_once": "Crear toda la ruta de una vez",
3477
+ // ── Mv ───────────────────────────────────────────────────────────
3478
+ "cli.mv.description": "Mover o renombrar archivos y directorios",
3479
+ "cli.mv.help.move_rename_file_directory": "Mueve o renombra un archivo o directorio. Si el destino es un directorio existente, el origen se mueve dentro de \xE9l; si no, se renombra. Un archivo que ya exista en el destino se reemplaza.",
3480
+ "cli.mv.help.rename_file_directory": "Renombrar un archivo o directorio",
3481
+ "cli.mv.help.move_them_directory": "Moverlos a un directorio",
3482
+ "cli.mv.help.rename_file": "Renombrar un archivo",
3483
+ "cli.mv.help.move_docs": "Moverlo a ~/docs",
3484
+ "cli.mv.help.rename_directory": "Renombrar un directorio",
3485
+ // ── Paste ────────────────────────────────────────────────────────
3486
+ "cli.paste.description": "Combinar l\xEDneas de archivos en paralelo",
3487
+ "cli.paste.help.join_files_side_side": "Une archivos en paralelo: la l\xEDnea 1 de cada archivo va en una l\xEDnea de salida, separadas por un tabulador, luego la l\xEDnea 2, y as\xED sucesivamente. Con -s, cada archivo se une en una sola l\xEDnea. La entrada canalizada se lee como el archivo - (o como \xFAnica entrada si no se indica ning\xFAn archivo); -d toma una lista de delimitadores que se usan por turnos.",
3488
+ "cli.paste.help.merge_files_line_line": "Combinar archivos l\xEDnea a l\xEDnea",
3489
+ "cli.paste.help.join_all_lines_file": "Unir todas las l\xEDneas de un archivo en una",
3490
+ "cli.paste.help.merge_piped_input_file": "Combinar la entrada canalizada con un archivo",
3491
+ "cli.paste.help.two_columns_tab_separated": "Dos columnas separadas por tabulador",
3492
+ "cli.paste.help.merge_comma_separated": "Combinar separando por comas",
3493
+ "cli.paste.help.turn_list_one_csv": "Convertir una lista en una l\xEDnea CSV",
3494
+ // ── Pwd ──────────────────────────────────────────────────────────
3495
+ "cli.pwd.description": "Mostrar el directorio de trabajo actual",
3496
+ "cli.pwd.help.print_full_path_directory": "Muestra la ruta completa del directorio en el que est\xE1. Las rutas relativas de otros comandos parten de aqu\xED.",
3497
+ "cli.pwd.help.show_current_directory": "Mostrar el directorio actual",
3498
+ "cli.pwd.help.example_home_user": "Por ejemplo /home/user",
3499
+ "cli.pwd.help.prints_home_user_docs": "Muestra /home/user/docs",
3500
+ // ── Rm ───────────────────────────────────────────────────────────
3501
+ "cli.rm.description": "Eliminar archivos o directorios",
3502
+ "cli.rm.help.delete_file_directories_only": "Elimina un archivo. Los directorios solo se eliminan con -r, que borra todo su contenido. Los archivos eliminados no se pueden recuperar.",
3503
+ "cli.rm.help.delete_one_more_files": "Eliminar uno o m\xE1s archivos",
3504
+ "cli.rm.help.delete_directory_contents": "Eliminar un directorio y su contenido",
3505
+ "cli.rm.help.delete_without_error_if": "Eliminar sin error si no existe",
3506
+ "cli.rm.help.delete_one_file": "Eliminar un archivo",
3507
+ "cli.rm.help.delete_whole_directory": "Eliminar un directorio completo",
3508
+ "cli.rm.help.quiet_if_file_does": "Sin avisos si el archivo no existe",
3509
+ // ── Rmdir ────────────────────────────────────────────────────────
3510
+ "cli.rmdir.description": "Eliminar directorios vac\xEDos",
3511
+ "cli.rmdir.help.remove_empty_directory_refuses": "Elimina un directorio vac\xEDo. Se niega a eliminar un directorio que a\xFAn contiene archivos; use rm -r para eso.",
3512
+ "cli.rmdir.help.remove_empty_directories": "Eliminar directorios vac\xEDos",
3513
+ "cli.rmdir.help.remove_directory_current_one": "Eliminar un directorio dentro del actual",
3514
+ "cli.rmdir.help.remove_full_path": "Eliminar por ruta completa",
3515
+ // ── Sed ──────────────────────────────────────────────────────────
3516
+ "cli.sed.description": "Editor de flujo para filtrar y transformar texto",
3517
+ "cli.sed.help.edit_text_line_line": "Edita texto l\xEDnea a l\xEDnea con un script: sustituir (s/old/new/), eliminar (d), mostrar (p) o salir (q), opcionalmente limitado a un n\xFAmero de l\xEDnea, un rango (1,5, 3,$ o /start/,/end/) o las l\xEDneas que coinciden con /regex/; ! despu\xE9s de una direcci\xF3n la invierte y ; separa comandos. El reemplazo puede usar & (la coincidencia) y \\1 a \\9 (grupos, escritos \\(...\\) o, con -E, (...)). Lee archivos o entrada canalizada y muestra el resultado, o reescribe los archivos con -i.",
3518
+ "cli.sed.help.print_edited_file": "Mostrar el archivo editado",
3519
+ "cli.sed.help.save_edits_file": "Guardar las ediciones en el archivo",
3520
+ "cli.sed.help.print_only_selected_lines": "Mostrar solo las l\xEDneas seleccionadas",
3521
+ "cli.sed.help.edit_piped_input": "Editar la entrada canalizada",
3522
+ "cli.sed.help.replace_every_cat_dog": "Sustituir cada cat por dog",
3523
+ "cli.sed.help.edit_file_place": "Editar el archivo en su sitio",
3524
+ "cli.sed.help.drop_comment_lines": "Descartar las l\xEDneas de comentario",
3525
+ "cli.sed.help.print_lines_1_5": "Mostrar las l\xEDneas 1 a 5",
3526
+ "cli.sed.help.swap_two_words": "Intercambiar dos palabras",
3527
+ // ── Sh ───────────────────────────────────────────────────────────
3528
+ "cli.sh.description": "Ejecutar un archivo de script",
3529
+ "cli.sh.help.requires_execute": "(requiere permiso de ejecuci\xF3n)",
3530
+ "cli.sh.help.script_syntax": "Sintaxis de scripts:",
3531
+ "cli.sh.help.comments": "Las l\xEDneas que empiezan por # son comentarios",
3532
+ "cli.sh.help.several_commands": "Varios comandos en una l\xEDnea",
3533
+ "cli.sh.help.assignment": "Asignaci\xF3n de variables",
3534
+ "cli.sh.help.substitution": "Sustituci\xF3n de variables",
3535
+ "cli.sh.help.stop_on_error": "Detener en caso de error (por defecto)",
3536
+ "cli.sh.help.continue_on_errors": "Continuar en caso de errores",
3537
+ "cli.sh.help.exit": "Detener el script con estado n",
3538
+ "cli.sh.help.control_flow": "Control de flujo:",
3539
+ "cli.sh.help.until": "(until cmd: lo contrario)",
3540
+ "cli.sh.help.break_continue": "Salir / saltar en un bucle",
3541
+ "cli.sh.help.negate": "Negar el estado de salida",
3542
+ "cli.sh.help.conditions": "Las condiciones son comandos:",
3543
+ "cli.sh.help.conditions_status": "(estado 0 = verdadero; v\xE9ase help test). Los bucles se detienen tras 10000 iteraciones",
3544
+ "cli.sh.help.conditions_loops": "de while/until; Ctrl+C detiene el script.",
3545
+ "cli.sh.help.example_script": "Script de ejemplo:",
3546
+ // ── Sort ─────────────────────────────────────────────────────────
3547
+ "cli.sort.description": "Ordenar las l\xEDneas de archivos de texto",
3548
+ "cli.sort.help.sort_lines_file_piped": "Ordena las l\xEDneas de un archivo o de la entrada canalizada, alfab\xE9ticamente por defecto. Ordene num\xE9ricamente, a la inversa, por un campo, o descarte duplicados. Varios archivos se ordenan juntos en una sola lista.",
3549
+ "cli.sort.help.sort_lines_alphabetically": "Ordenar l\xEDneas alfab\xE9ticamente",
3550
+ "cli.sort.help.sort_field_split": "Ordenar por el campo <n>, separado por <sep>",
3551
+ "cli.sort.help.sort_piped_input": "Ordenar la entrada canalizada",
3552
+ "cli.sort.help.z": "De la A a la Z",
3553
+ "cli.sort.help.largest_number_first": "El n\xFAmero mayor primero",
3554
+ "cli.sort.help.sort_csv_second_column": "Ordenar un CSV por su segunda columna",
3555
+ "cli.sort.help.sorted_without_duplicates": "Ordenado, sin duplicados",
3556
+ // ── Stat ─────────────────────────────────────────────────────────
3557
+ "cli.stat.description": "Mostrar los metadatos de un archivo o directorio",
3558
+ "cli.stat.help.show_details_about_files": "Muestra detalles de archivos o directorios: ruta completa, tama\xF1o, tipo, permisos, propietario, grupo, y cu\xE1ndo se cre\xF3 y se modific\xF3 por \xFAltima vez.",
3559
+ "cli.stat.help.show_details_each_path": "Mostrar los detalles de cada ruta",
3560
+ "cli.stat.help.details_one_file": "Detalles de un archivo",
3561
+ "cli.stat.help.several_paths_once": "Varias rutas a la vez",
3562
+ // ── Tac ──────────────────────────────────────────────────────────
3563
+ "cli.tac.description": "Mostrar un archivo con las l\xEDneas en orden inverso",
3564
+ "cli.tac.help.print_file_lines_reverse": "Muestra un archivo con sus l\xEDneas en orden inverso, la \xFAltima primero. Tambi\xE9n funciona con entrada canalizada.",
3565
+ "cli.tac.help.print_file_bottom_top": "Mostrar un archivo de abajo arriba",
3566
+ "cli.tac.help.reverse_piped_input": "Invertir la entrada canalizada",
3567
+ "cli.tac.help.newest_log_lines_first": "Las l\xEDneas m\xE1s recientes del registro primero",
3568
+ "cli.tac.help.reverse_list": "Invertir una lista",
3569
+ // ── Tail ─────────────────────────────────────────────────────────
3570
+ "cli.tail.description": "Mostrar las \xFAltimas l\xEDneas de un archivo",
3571
+ "cli.tail.help.print_last_lines_file": "Muestra las \xFAltimas l\xEDneas de un archivo, 10 por defecto. Tambi\xE9n funciona con entrada canalizada. Con varios archivos, cada uno lleva un encabezado ==> name <==.",
3572
+ "cli.tail.help.last_10_lines": "Las \xFAltimas 10 l\xEDneas",
3573
+ "cli.tail.help.last_lines": "Las \xFAltimas <count> l\xEDneas",
3574
+ "cli.tail.help.last_lines_piped_input": "Las \xFAltimas l\xEDneas de la entrada canalizada",
3575
+ "cli.tail.help.show_end_log": "Mostrar el final de un registro",
3576
+ "cli.tail.help.last_5_lines": "Las \xFAltimas 5 l\xEDneas",
3577
+ "cli.tail.help.last_20_lines_log": "Las \xFAltimas 20 l\xEDneas del registro",
3578
+ // ── Tee ──────────────────────────────────────────────────────────
3579
+ "cli.tee.description": "Copiar la entrada canalizada a archivos y a la salida",
3580
+ "cli.tee.help.pass_piped_input_through": "Deja pasar la entrada canalizada sin cambios y guarda una copia en cada archivo indicado, sobrescribi\xE9ndolos o a\xF1adiendo con -a. Como el tee de Unix, solo lee entrada canalizada: para copiar un archivo, canal\xEDcelo con cat.",
3581
+ "cli.tee.help.show_piped_output_save": "Mostrar la salida canalizada y guardarla",
3582
+ "cli.tee.help.append_instead_overwriting": "A\xF1adir en lugar de sobrescribir",
3583
+ "cli.tee.help.show_save_copy": "Mostrar y guardar una copia",
3584
+ "cli.tee.help.add_line_log": "A\xF1adir una l\xEDnea a un registro",
3585
+ "cli.tee.help.copy_source_txt_txt": "Copiar source.txt a a.txt y b.txt",
3586
+ // ── Touch ────────────────────────────────────────────────────────
3587
+ "cli.touch.description": "Crear un archivo vac\xEDo o actualizar su marca de tiempo",
3588
+ "cli.touch.help.create_empty_file_update": "Crea un archivo vac\xEDo, o actualiza la fecha de modificaci\xF3n de un archivo que ya existe. El directorio padre debe existir.",
3589
+ "cli.touch.help.create_files_refresh_their": "Crear los archivos, o actualizar sus marcas de tiempo",
3590
+ "cli.touch.help.create_empty_notes_txt": "Crear un notes.txt vac\xEDo",
3591
+ "cli.touch.help.create_file_docs": "Crear un archivo en ~/docs",
3592
+ // ── Tr ───────────────────────────────────────────────────────────
3593
+ "cli.tr.description": "Traducir o eliminar caracteres de la entrada canalizada",
3594
+ "cli.tr.help.translate_characters_set1_matching": "Traduce caracteres de SET1 a los caracteres correspondientes de SET2, los elimina (-d) o reduce las repeticiones a uno (-s). Los conjuntos pueden usar rangos como a-z y clases como [:upper:], [:lower:], [:digit:], [:alpha:], [:alnum:] y [:space:]. Se entienden las secuencias de escape \\n, \\t y \\\\. Como el tr de Unix, solo lee entrada canalizada y no admite archivos como operandos: para transformar un archivo, canal\xEDcelo con cat.",
3595
+ "cli.tr.help.replace_characters": "Reemplazar caracteres",
3596
+ "cli.tr.help.delete_characters": "Eliminar caracteres",
3597
+ "cli.tr.help.squeeze_repeated_characters": "Reducir caracteres repetidos",
3598
+ "cli.tr.help.convert_file_upper_case": "Convertir un archivo a may\xFAsculas",
3599
+ "cli.tr.help.upper_case_piped_text": "Pasar a may\xFAsculas el texto canalizado",
3600
+ "cli.tr.help.remove_all_digits": "Eliminar todos los d\xEDgitos",
3601
+ "cli.tr.help.collapse_runs_spaces": "Reducir series de espacios",
3602
+ // ── Tree ─────────────────────────────────────────────────────────
3603
+ "cli.tree.description": "Mostrar la estructura de directorios en \xE1rbol",
3604
+ "cli.tree.help.draw_directory_everything_below": "Dibuja un directorio y todo lo que contiene como un \xE1rbol, con los directorios primero, seguido del n\xFAmero de directorios y archivos. Por defecto, el directorio actual.",
3605
+ "cli.tree.help.show_whole_tree": "Mostrar el \xE1rbol completo",
3606
+ "cli.tree.help.only_levels_deep": "Solo <n> niveles de profundidad",
3607
+ "cli.tree.help.tree_current_directory": "\xC1rbol del directorio actual",
3608
+ "cli.tree.help.tree_docs": "\xC1rbol de ~/docs",
3609
+ "cli.tree.help.top_two_levels_only": "Solo los dos primeros niveles",
3610
+ // ── Uniq ─────────────────────────────────────────────────────────
3611
+ "cli.uniq.description": "Filtrar las l\xEDneas duplicadas adyacentes de un archivo",
3612
+ "cli.uniq.help.collapse_repeated_lines_next": "Reduce a una las l\xEDneas repetidas que est\xE1n contiguas. Solo se fusionan los duplicados adyacentes, as\xED que ordene antes la entrada para detectarlos todos.",
3613
+ "cli.uniq.help.drop_adjacent_duplicate_lines": "Descartar las l\xEDneas duplicadas adyacentes",
3614
+ "cli.uniq.help.filter_piped_input": "Filtrar la entrada canalizada",
3615
+ "cli.uniq.help.collapse_repeated_lines": "Reducir las l\xEDneas repetidas",
3616
+ "cli.uniq.help.count_how_often_each": "Contar cu\xE1ntas veces aparece cada l\xEDnea",
3617
+ "cli.uniq.help.show_only_duplicated_lines": "Mostrar solo las l\xEDneas duplicadas",
3618
+ // ── Wc ───────────────────────────────────────────────────────────
3619
+ "cli.wc.description": "Mostrar el n\xFAmero de l\xEDneas, palabras y caracteres",
3620
+ "cli.wc.help.count_lines_words_characters": "Cuenta l\xEDneas, palabras y caracteres en archivos o en la entrada canalizada. Con varios archivos, al final se muestra una l\xEDnea de total.",
3621
+ "cli.wc.help.lines_words_characters": "L\xEDneas, palabras y caracteres",
3622
+ "cli.wc.help.only_line_count": "Solo el n\xFAmero de l\xEDneas",
3623
+ "cli.wc.help.count_piped_input": "Contar la entrada canalizada",
3624
+ "cli.wc.help.all_three_counts": "Los tres recuentos",
3625
+ "cli.wc.help.line_counts_total": "Recuento de l\xEDneas con un total",
3626
+ "cli.wc.help.how_many_lines_mention": "Cu\xE1ntas l\xEDneas mencionan error",
3627
+ // ── Xargs ────────────────────────────────────────────────────────
3628
+ "cli.xargs.description": "Construir y ejecutar comandos a partir de la entrada de un archivo",
3629
+ "cli.xargs.help.run_command_arguments_taken": "Ejecuta un comando con argumentos tomados de la entrada, separados por espacios o saltos de l\xEDnea. Por defecto todos se a\xF1aden a un solo comando; -n lo ejecuta por lotes y -I lo ejecuta una vez por l\xEDnea, sustituyendo un marcador. Las opciones de xargs van antes del comando; todo lo que sigue, incluidos los flags, pertenece al comando. La entrada es texto canalizado o, sin canalizaci\xF3n, el \xFAltimo archivo indicado.",
3630
+ "cli.xargs.help.append_input_lines": "A\xF1adir las l\xEDneas de entrada a <cmd>",
3631
+ "cli.xargs.help.run_once_per_line": "Ejecutar <cmd> una vez por l\xEDnea",
3632
+ "cli.xargs.help.read_arguments_file": "Leer los argumentos de un archivo",
3633
+ "cli.xargs.help.delete_every_tmp_file": "Eliminar todos los archivos .tmp",
3634
+ "cli.xargs.help.copy_each_listed_file": "Copiar cada archivo listado",
3635
+ "cli.xargs.help.one_mkdir_per_line": "Un mkdir por l\xEDnea",
3636
+ "cli.xargs.help.inner_command_keeps_flags": "El comando interno conserva sus flags",
3637
+ // ── Markdown ─────────────────────────────────────────────────────
3638
+ "cli.md.description": "Mostrar Markdown en el terminal",
3639
+ "cli.md.help.show_markdown_formatted_terminal": "Muestra Markdown con formato en el terminal: encabezados, negrita y cursiva, listas, citas, c\xF3digo y enlaces. Pase el texto en l\xEDnea (con o sin comillas, \\n inicia una nueva l\xEDnea) o canal\xEDcelo desde otro comando.",
3640
+ "cli.md.help.render_inline_text": "Mostrar texto en l\xEDnea",
3641
+ "cli.md.help.same_optional_render_verb": "Igual, con el verbo opcional render (tambi\xE9n preview, view)",
3642
+ "cli.md.help.render_output_command": "Mostrar la salida de un comando",
3643
+ "cli.md.help.heading": "Un encabezado",
3644
+ "cli.md.help.several_lines": "Varias l\xEDneas",
3645
+ "cli.md.help.piped_text": "Texto canalizado",
3646
+ "cli.md.help.same_using_aliases": "Igual, usando alias",
3647
+ // ── Todo ─────────────────────────────────────────────────────────
3648
+ "cli.todo.description": "Gestione sus tareas desde el terminal. A\xF1ada, liste, edite, complete y elimine elementos TODO.",
3649
+ "cli.todo.ls.description": "Listar los elementos TODO",
3650
+ "cli.todo.add.description": "A\xF1adir una nueva tarea",
3651
+ "cli.todo.edit.description": "Editar el texto o la fecha de vencimiento de una tarea",
3652
+ "cli.todo.done.description": "Marcar una tarea como hecha",
3653
+ "cli.todo.toggle.description": "Alternar una tarea entre hecha y pendiente",
3654
+ "cli.todo.rm.description": "Eliminar una tarea por ID",
3655
+ "cli.todo.help.commands": "Comandos:",
3656
+ "cli.todo.help.list_all": "Listar todas las tareas",
3657
+ "cli.todo.help.list_pending": "Listar solo las tareas pendientes",
3658
+ "cli.todo.help.list_completed": "Listar solo las tareas completadas",
3659
+ "cli.todo.help.list_overdue": "Listar solo las tareas vencidas",
3660
+ "cli.todo.help.add": "A\xF1adir una nueva tarea",
3661
+ "cli.todo.help.add_due": "A\xF1adir con fecha de vencimiento",
3662
+ "cli.todo.help.edit": "Editar una tarea",
3663
+ "cli.todo.help.done": "Marcar una tarea como hecha",
3664
+ "cli.todo.help.toggle": "Alternar hecha/pendiente",
3665
+ "cli.todo.help.remove": "Eliminar una tarea",
3666
+ "cli.todo.help.remove_all": "Eliminar todas las tareas",
3667
+ "cli.todo.help.due_formats": "Formatos de fecha de vencimiento:",
3668
+ // ── True ─────────────────────────────────────────────────────────
3669
+ "cli.true.description": "No hacer nada, con \xE9xito (estado de salida 0)",
3670
+ // ── False ────────────────────────────────────────────────────────
3671
+ "cli.false.description": "No hacer nada, sin \xE9xito (estado de salida 1)",
3672
+ // ── Htop ─────────────────────────────────────────────────────────
3673
+ "cli.htop.description": "Monitor interactivo de procesos y servicios"
2921
3674
  };
2922
3675
 
2923
3676
  // src/public-api.ts