@iinm/plain-agent 1.10.3 → 1.10.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@iinm/plain-agent",
3
- "version": "1.10.3",
3
+ "version": "1.10.4",
4
4
  "description": "A lightweight CLI-based coding agent",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -19,6 +19,7 @@
19
19
  "config",
20
20
  "src/**/*.mjs",
21
21
  "src/**/*.d.ts",
22
+ "src/**/*.json",
22
23
  "!src/**/*.test.mjs",
23
24
  "!src/**/*.test.*.mjs",
24
25
  "!src/**/*.playground.mjs",
@@ -0,0 +1,124 @@
1
+ [
2
+ [4352, 4447],
3
+ [8986, 8987],
4
+ [9001, 9002],
5
+ [9193, 9196],
6
+ [9200, 9200],
7
+ [9203, 9203],
8
+ [9725, 9726],
9
+ [9748, 9749],
10
+ [9776, 9783],
11
+ [9800, 9811],
12
+ [9855, 9855],
13
+ [9866, 9871],
14
+ [9875, 9875],
15
+ [9889, 9889],
16
+ [9898, 9899],
17
+ [9917, 9918],
18
+ [9924, 9925],
19
+ [9934, 9934],
20
+ [9940, 9940],
21
+ [9962, 9962],
22
+ [9970, 9971],
23
+ [9973, 9973],
24
+ [9978, 9978],
25
+ [9981, 9981],
26
+ [9989, 9989],
27
+ [9994, 9995],
28
+ [10024, 10024],
29
+ [10060, 10060],
30
+ [10062, 10062],
31
+ [10067, 10069],
32
+ [10071, 10071],
33
+ [10133, 10135],
34
+ [10160, 10160],
35
+ [10175, 10175],
36
+ [11035, 11036],
37
+ [11088, 11088],
38
+ [11093, 11093],
39
+ [11904, 11929],
40
+ [11931, 12019],
41
+ [12032, 12245],
42
+ [12272, 12350],
43
+ [12353, 12438],
44
+ [12441, 12543],
45
+ [12549, 12591],
46
+ [12593, 12686],
47
+ [12688, 12773],
48
+ [12783, 12830],
49
+ [12832, 12871],
50
+ [12880, 42124],
51
+ [42128, 42182],
52
+ [43360, 43388],
53
+ [44032, 55203],
54
+ [63744, 64255],
55
+ [65040, 65049],
56
+ [65072, 65106],
57
+ [65108, 65126],
58
+ [65128, 65131],
59
+ [65281, 65376],
60
+ [65504, 65510],
61
+ [94176, 94180],
62
+ [94192, 94193],
63
+ [94208, 100343],
64
+ [100352, 101589],
65
+ [101631, 101640],
66
+ [110576, 110579],
67
+ [110581, 110587],
68
+ [110589, 110590],
69
+ [110592, 110882],
70
+ [110898, 110898],
71
+ [110928, 110930],
72
+ [110933, 110933],
73
+ [110948, 110951],
74
+ [110960, 111355],
75
+ [119552, 119638],
76
+ [119648, 119670],
77
+ [126980, 126980],
78
+ [127183, 127183],
79
+ [127374, 127374],
80
+ [127377, 127386],
81
+ [127488, 127490],
82
+ [127504, 127547],
83
+ [127552, 127560],
84
+ [127568, 127569],
85
+ [127584, 127589],
86
+ [127744, 127776],
87
+ [127789, 127797],
88
+ [127799, 127868],
89
+ [127870, 127891],
90
+ [127904, 127946],
91
+ [127951, 127955],
92
+ [127968, 127984],
93
+ [127988, 127988],
94
+ [127992, 128062],
95
+ [128064, 128064],
96
+ [128066, 128252],
97
+ [128255, 128317],
98
+ [128331, 128334],
99
+ [128336, 128359],
100
+ [128378, 128378],
101
+ [128405, 128406],
102
+ [128420, 128420],
103
+ [128507, 128591],
104
+ [128640, 128709],
105
+ [128716, 128716],
106
+ [128720, 128722],
107
+ [128725, 128727],
108
+ [128732, 128735],
109
+ [128747, 128748],
110
+ [128756, 128764],
111
+ [128992, 129003],
112
+ [129008, 129008],
113
+ [129292, 129338],
114
+ [129340, 129349],
115
+ [129351, 129535],
116
+ [129648, 129660],
117
+ [129664, 129673],
118
+ [129679, 129734],
119
+ [129742, 129756],
120
+ [129759, 129769],
121
+ [129776, 129784],
122
+ [131072, 196605],
123
+ [196608, 262141]
124
+ ]
@@ -640,110 +640,32 @@ function wrapCell(text, width) {
640
640
  return lines;
641
641
  }
642
642
 
643
+ /**
644
+ * Sorted, merged [start, end] ranges of Unicode code points with
645
+ * East_Asian_Width property "W" (Wide) or "F" (Fullwidth).
646
+ *
647
+ * Generated by: node scripts/fetchEastAsianWideRanges.mjs
648
+ * Source: https://www.unicode.org/Public/16.0.0/ucd/EastAsianWidth.txt
649
+ */
650
+ import WIDE_RANGES from "./eastAsianWideRanges.json" with { type: "json" };
651
+
643
652
  /**
644
653
  * Check if a Unicode code point is a wide (double-width) character.
645
- * Extracted from charDisplayWidth for reuse in wrapCell.
654
+ * Uses binary search over the sorted WIDE_RANGES for efficiency.
646
655
  * @param {number} code
647
656
  * @returns {boolean}
648
657
  */
649
658
  function isWideChar(code) {
650
- return (
651
- (code >= 0x1100 && code <= 0x115f) ||
652
- (code >= 0x2e80 && code <= 0xa4cf) ||
653
- (code >= 0xac00 && code <= 0xd7a3) ||
654
- (code >= 0xf900 && code <= 0xfaff) ||
655
- (code >= 0xfe10 && code <= 0xfe19) ||
656
- (code >= 0xfe30 && code <= 0xfe6f) ||
657
- (code >= 0xff00 && code <= 0xff60) ||
658
- (code >= 0xffe0 && code <= 0xffe6) ||
659
- (code >= 0x2614 && code <= 0x2615) ||
660
- (code >= 0x2630 && code <= 0x2637) ||
661
- (code >= 0x2648 && code <= 0x2653) ||
662
- code === 0x267f ||
663
- (code >= 0x268a && code <= 0x268f) ||
664
- code === 0x2693 ||
665
- code === 0x26a1 ||
666
- (code >= 0x26aa && code <= 0x26ab) ||
667
- (code >= 0x26bd && code <= 0x26be) ||
668
- (code >= 0x26c4 && code <= 0x26c5) ||
669
- code === 0x26ce ||
670
- code === 0x26d4 ||
671
- code === 0x26ea ||
672
- (code >= 0x26f2 && code <= 0x26f3) ||
673
- code === 0x26f5 ||
674
- code === 0x26fa ||
675
- code === 0x26fd ||
676
- code === 0x2705 ||
677
- (code >= 0x270a && code <= 0x270b) ||
678
- code === 0x2728 ||
679
- code === 0x274c ||
680
- code === 0x274e ||
681
- (code >= 0x2753 && code <= 0x2755) ||
682
- code === 0x2757 ||
683
- (code >= 0x2795 && code <= 0x2797) ||
684
- code === 0x27b0 ||
685
- code === 0x27bf ||
686
- (code >= 0x2b1b && code <= 0x2b1c) ||
687
- code === 0x2b50 ||
688
- code === 0x2b55 ||
689
- (code >= 0x231a && code <= 0x231b) ||
690
- code === 0x2329 ||
691
- code === 0x232a ||
692
- (code >= 0x23e9 && code <= 0x23ec) ||
693
- code === 0x23f0 ||
694
- code === 0x23f3 ||
695
- code === 0x1f004 ||
696
- code === 0x1f0cf ||
697
- code === 0x1f18e ||
698
- (code >= 0x1f191 && code <= 0x1f19a) ||
699
- (code >= 0x1f200 && code <= 0x1f202) ||
700
- (code >= 0x1f210 && code <= 0x1f23b) ||
701
- (code >= 0x1f240 && code <= 0x1f248) ||
702
- (code >= 0x1f250 && code <= 0x1f251) ||
703
- (code >= 0x1f260 && code <= 0x1f265) ||
704
- (code >= 0x1f300 && code <= 0x1f320) ||
705
- (code >= 0x1f32d && code <= 0x1f335) ||
706
- (code >= 0x1f337 && code <= 0x1f37c) ||
707
- (code >= 0x1f37e && code <= 0x1f393) ||
708
- (code >= 0x1f3a0 && code <= 0x1f3ca) ||
709
- (code >= 0x1f3cf && code <= 0x1f3d3) ||
710
- (code >= 0x1f3e0 && code <= 0x1f3f0) ||
711
- code === 0x1f3f4 ||
712
- (code >= 0x1f3f8 && code <= 0x1f3fa) ||
713
- (code >= 0x1f3fb && code <= 0x1f3ff) ||
714
- (code >= 0x1f400 && code <= 0x1f43e) ||
715
- code === 0x1f440 ||
716
- (code >= 0x1f442 && code <= 0x1f4fc) ||
717
- (code >= 0x1f4ff && code <= 0x1f53d) ||
718
- (code >= 0x1f54b && code <= 0x1f54e) ||
719
- (code >= 0x1f550 && code <= 0x1f567) ||
720
- code === 0x1f57a ||
721
- (code >= 0x1f595 && code <= 0x1f596) ||
722
- code === 0x1f5a4 ||
723
- (code >= 0x1f5fb && code <= 0x1f5ff) ||
724
- (code >= 0x1f600 && code <= 0x1f64f) ||
725
- (code >= 0x1f680 && code <= 0x1f6c5) ||
726
- code === 0x1f6cc ||
727
- (code >= 0x1f6d0 && code <= 0x1f6d2) ||
728
- (code >= 0x1f6d5 && code <= 0x1f6d8) ||
729
- (code >= 0x1f6dc && code <= 0x1f6df) ||
730
- (code >= 0x1f6eb && code <= 0x1f6ec) ||
731
- (code >= 0x1f6f4 && code <= 0x1f6fc) ||
732
- (code >= 0x1f7e0 && code <= 0x1f7eb) ||
733
- code === 0x1f7f0 ||
734
- (code >= 0x1f90c && code <= 0x1f93a) ||
735
- (code >= 0x1f93c && code <= 0x1f945) ||
736
- (code >= 0x1f947 && code <= 0x1f9ff) ||
737
- (code >= 0x1fa70 && code <= 0x1fa7c) ||
738
- (code >= 0x1fa80 && code <= 0x1fa8a) ||
739
- (code >= 0x1fa8e && code <= 0x1fac6) ||
740
- code === 0x1fac8 ||
741
- (code >= 0x1facd && code <= 0x1fadc) ||
742
- (code >= 0x1fadf && code <= 0x1faea) ||
743
- (code >= 0x1faef && code <= 0x1faf8) ||
744
- (code >= 0x20000 && code <= 0x2fffd) ||
745
- (code >= 0x30000 && code <= 0x3fffd)
746
- );
659
+ let lo = 0;
660
+ let hi = WIDE_RANGES.length - 1;
661
+ while (lo <= hi) {
662
+ const mid = (lo + hi) >>> 1;
663
+ const [start, end] = WIDE_RANGES[mid];
664
+ if (code < start) hi = mid - 1;
665
+ else if (code > end) lo = mid + 1;
666
+ else return true;
667
+ }
668
+ return false;
747
669
  }
748
670
 
749
671
  /**