@task-mcp/shared 1.0.20 → 1.0.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (167) hide show
  1. package/package.json +1 -6
  2. package/dist/algorithms/critical-path.d.ts +0 -46
  3. package/dist/algorithms/critical-path.d.ts.map +0 -1
  4. package/dist/algorithms/critical-path.js +0 -320
  5. package/dist/algorithms/critical-path.js.map +0 -1
  6. package/dist/algorithms/critical-path.test.d.ts +0 -2
  7. package/dist/algorithms/critical-path.test.d.ts.map +0 -1
  8. package/dist/algorithms/critical-path.test.js +0 -194
  9. package/dist/algorithms/critical-path.test.js.map +0 -1
  10. package/dist/algorithms/dependency-integrity.d.ts +0 -81
  11. package/dist/algorithms/dependency-integrity.d.ts.map +0 -1
  12. package/dist/algorithms/dependency-integrity.js +0 -207
  13. package/dist/algorithms/dependency-integrity.js.map +0 -1
  14. package/dist/algorithms/dependency-integrity.test.d.ts +0 -2
  15. package/dist/algorithms/dependency-integrity.test.d.ts.map +0 -1
  16. package/dist/algorithms/dependency-integrity.test.js +0 -309
  17. package/dist/algorithms/dependency-integrity.test.js.map +0 -1
  18. package/dist/algorithms/index.d.ts +0 -5
  19. package/dist/algorithms/index.d.ts.map +0 -1
  20. package/dist/algorithms/index.js +0 -5
  21. package/dist/algorithms/index.js.map +0 -1
  22. package/dist/algorithms/tech-analysis.d.ts +0 -106
  23. package/dist/algorithms/tech-analysis.d.ts.map +0 -1
  24. package/dist/algorithms/tech-analysis.js +0 -344
  25. package/dist/algorithms/tech-analysis.js.map +0 -1
  26. package/dist/algorithms/tech-analysis.test.d.ts +0 -2
  27. package/dist/algorithms/tech-analysis.test.d.ts.map +0 -1
  28. package/dist/algorithms/tech-analysis.test.js +0 -338
  29. package/dist/algorithms/tech-analysis.test.js.map +0 -1
  30. package/dist/algorithms/topological-sort.d.ts +0 -41
  31. package/dist/algorithms/topological-sort.d.ts.map +0 -1
  32. package/dist/algorithms/topological-sort.js +0 -165
  33. package/dist/algorithms/topological-sort.js.map +0 -1
  34. package/dist/algorithms/topological-sort.test.d.ts +0 -2
  35. package/dist/algorithms/topological-sort.test.d.ts.map +0 -1
  36. package/dist/algorithms/topological-sort.test.js +0 -162
  37. package/dist/algorithms/topological-sort.test.js.map +0 -1
  38. package/dist/index.d.ts +0 -4
  39. package/dist/index.d.ts.map +0 -1
  40. package/dist/index.js +0 -7
  41. package/dist/index.js.map +0 -1
  42. package/dist/schemas/inbox.d.ts +0 -55
  43. package/dist/schemas/inbox.d.ts.map +0 -1
  44. package/dist/schemas/inbox.js +0 -25
  45. package/dist/schemas/inbox.js.map +0 -1
  46. package/dist/schemas/index.d.ts +0 -7
  47. package/dist/schemas/index.d.ts.map +0 -1
  48. package/dist/schemas/index.js +0 -17
  49. package/dist/schemas/index.js.map +0 -1
  50. package/dist/schemas/project.d.ts +0 -177
  51. package/dist/schemas/project.d.ts.map +0 -1
  52. package/dist/schemas/project.js +0 -56
  53. package/dist/schemas/project.js.map +0 -1
  54. package/dist/schemas/response-format.d.ts +0 -148
  55. package/dist/schemas/response-format.d.ts.map +0 -1
  56. package/dist/schemas/response-format.js +0 -18
  57. package/dist/schemas/response-format.js.map +0 -1
  58. package/dist/schemas/response-schema.d.ts +0 -307
  59. package/dist/schemas/response-schema.d.ts.map +0 -1
  60. package/dist/schemas/response-schema.js +0 -75
  61. package/dist/schemas/response-schema.js.map +0 -1
  62. package/dist/schemas/response-schema.test.d.ts +0 -2
  63. package/dist/schemas/response-schema.test.d.ts.map +0 -1
  64. package/dist/schemas/response-schema.test.js +0 -256
  65. package/dist/schemas/response-schema.test.js.map +0 -1
  66. package/dist/schemas/state.d.ts +0 -17
  67. package/dist/schemas/state.d.ts.map +0 -1
  68. package/dist/schemas/state.js +0 -17
  69. package/dist/schemas/state.js.map +0 -1
  70. package/dist/schemas/task.d.ts +0 -881
  71. package/dist/schemas/task.d.ts.map +0 -1
  72. package/dist/schemas/task.js +0 -189
  73. package/dist/schemas/task.js.map +0 -1
  74. package/dist/schemas/view.d.ts +0 -143
  75. package/dist/schemas/view.d.ts.map +0 -1
  76. package/dist/schemas/view.js +0 -48
  77. package/dist/schemas/view.js.map +0 -1
  78. package/dist/utils/dashboard-renderer.d.ts +0 -93
  79. package/dist/utils/dashboard-renderer.d.ts.map +0 -1
  80. package/dist/utils/dashboard-renderer.js +0 -424
  81. package/dist/utils/dashboard-renderer.js.map +0 -1
  82. package/dist/utils/dashboard-renderer.test.d.ts +0 -2
  83. package/dist/utils/dashboard-renderer.test.d.ts.map +0 -1
  84. package/dist/utils/dashboard-renderer.test.js +0 -774
  85. package/dist/utils/dashboard-renderer.test.js.map +0 -1
  86. package/dist/utils/date.d.ts +0 -94
  87. package/dist/utils/date.d.ts.map +0 -1
  88. package/dist/utils/date.js +0 -323
  89. package/dist/utils/date.js.map +0 -1
  90. package/dist/utils/date.test.d.ts +0 -2
  91. package/dist/utils/date.test.d.ts.map +0 -1
  92. package/dist/utils/date.test.js +0 -276
  93. package/dist/utils/date.test.js.map +0 -1
  94. package/dist/utils/hierarchy.d.ts +0 -102
  95. package/dist/utils/hierarchy.d.ts.map +0 -1
  96. package/dist/utils/hierarchy.js +0 -236
  97. package/dist/utils/hierarchy.js.map +0 -1
  98. package/dist/utils/hierarchy.test.d.ts +0 -2
  99. package/dist/utils/hierarchy.test.d.ts.map +0 -1
  100. package/dist/utils/hierarchy.test.js +0 -436
  101. package/dist/utils/hierarchy.test.js.map +0 -1
  102. package/dist/utils/id.d.ts +0 -60
  103. package/dist/utils/id.d.ts.map +0 -1
  104. package/dist/utils/id.js +0 -118
  105. package/dist/utils/id.js.map +0 -1
  106. package/dist/utils/id.test.d.ts +0 -2
  107. package/dist/utils/id.test.d.ts.map +0 -1
  108. package/dist/utils/id.test.js +0 -193
  109. package/dist/utils/id.test.js.map +0 -1
  110. package/dist/utils/index.d.ts +0 -12
  111. package/dist/utils/index.d.ts.map +0 -1
  112. package/dist/utils/index.js +0 -34
  113. package/dist/utils/index.js.map +0 -1
  114. package/dist/utils/natural-language.d.ts +0 -57
  115. package/dist/utils/natural-language.d.ts.map +0 -1
  116. package/dist/utils/natural-language.js +0 -211
  117. package/dist/utils/natural-language.js.map +0 -1
  118. package/dist/utils/natural-language.test.d.ts +0 -2
  119. package/dist/utils/natural-language.test.d.ts.map +0 -1
  120. package/dist/utils/natural-language.test.js +0 -197
  121. package/dist/utils/natural-language.test.js.map +0 -1
  122. package/dist/utils/priority-queue.d.ts +0 -17
  123. package/dist/utils/priority-queue.d.ts.map +0 -1
  124. package/dist/utils/priority-queue.js +0 -62
  125. package/dist/utils/priority-queue.js.map +0 -1
  126. package/dist/utils/priority-queue.test.d.ts +0 -2
  127. package/dist/utils/priority-queue.test.d.ts.map +0 -1
  128. package/dist/utils/priority-queue.test.js +0 -82
  129. package/dist/utils/priority-queue.test.js.map +0 -1
  130. package/dist/utils/projection.d.ts +0 -65
  131. package/dist/utils/projection.d.ts.map +0 -1
  132. package/dist/utils/projection.js +0 -180
  133. package/dist/utils/projection.js.map +0 -1
  134. package/dist/utils/projection.test.d.ts +0 -2
  135. package/dist/utils/projection.test.d.ts.map +0 -1
  136. package/dist/utils/projection.test.js +0 -336
  137. package/dist/utils/projection.test.js.map +0 -1
  138. package/dist/utils/terminal-ui.d.ts +0 -208
  139. package/dist/utils/terminal-ui.d.ts.map +0 -1
  140. package/dist/utils/terminal-ui.js +0 -611
  141. package/dist/utils/terminal-ui.js.map +0 -1
  142. package/dist/utils/terminal-ui.test.d.ts +0 -2
  143. package/dist/utils/terminal-ui.test.d.ts.map +0 -1
  144. package/dist/utils/terminal-ui.test.js +0 -683
  145. package/dist/utils/terminal-ui.test.js.map +0 -1
  146. package/dist/utils/workspace.d.ts +0 -100
  147. package/dist/utils/workspace.d.ts.map +0 -1
  148. package/dist/utils/workspace.js +0 -173
  149. package/dist/utils/workspace.js.map +0 -1
  150. package/dist/utils/workspace.test.d.ts +0 -2
  151. package/dist/utils/workspace.test.d.ts.map +0 -1
  152. package/dist/utils/workspace.test.js +0 -97
  153. package/dist/utils/workspace.test.js.map +0 -1
  154. package/src/algorithms/critical-path.test.ts +0 -241
  155. package/src/algorithms/dependency-integrity.test.ts +0 -348
  156. package/src/algorithms/tech-analysis.test.ts +0 -413
  157. package/src/algorithms/topological-sort.test.ts +0 -190
  158. package/src/schemas/response-schema.test.ts +0 -314
  159. package/src/utils/dashboard-renderer.test.ts +0 -983
  160. package/src/utils/date.test.ts +0 -329
  161. package/src/utils/hierarchy.test.ts +0 -505
  162. package/src/utils/id.test.ts +0 -235
  163. package/src/utils/natural-language.test.ts +0 -242
  164. package/src/utils/priority-queue.test.ts +0 -103
  165. package/src/utils/projection.test.ts +0 -425
  166. package/src/utils/terminal-ui.test.ts +0 -831
  167. package/src/utils/workspace.test.ts +0 -125
@@ -1,611 +0,0 @@
1
- /**
2
- * Terminal UI utilities for task-mcp
3
- * Zero-dependency ANSI colors, box drawing, and layout helpers
4
- * Supports CJK (Korean, Chinese, Japanese) character width calculation
5
- */
6
- // =============================================================================
7
- // ANSI Escape Codes
8
- // =============================================================================
9
- const ESC = "\x1b[";
10
- const RESET = `${ESC}0m`;
11
- // Foreground color codes
12
- const FG = {
13
- black: 30,
14
- red: 31,
15
- green: 32,
16
- yellow: 33,
17
- blue: 34,
18
- magenta: 35,
19
- cyan: 36,
20
- white: 37,
21
- gray: 90,
22
- brightRed: 91,
23
- brightGreen: 92,
24
- brightYellow: 93,
25
- brightBlue: 94,
26
- brightMagenta: 95,
27
- brightCyan: 96,
28
- brightWhite: 97,
29
- };
30
- // Style codes
31
- const STYLE = {
32
- bold: 1,
33
- dim: 2,
34
- italic: 3,
35
- underline: 4,
36
- inverse: 7,
37
- strikethrough: 9,
38
- };
39
- /**
40
- * Apply color to text
41
- */
42
- export function color(text, colorName) {
43
- return `${ESC}${FG[colorName]}m${text}${RESET}`;
44
- }
45
- /**
46
- * Apply style to text
47
- */
48
- export function style(text, styleName) {
49
- return `${ESC}${STYLE[styleName]}m${text}${RESET}`;
50
- }
51
- /**
52
- * Combine color and style
53
- */
54
- export function styled(text, colorName, styleName) {
55
- if (styleName) {
56
- return `${ESC}${STYLE[styleName]};${FG[colorName]}m${text}${RESET}`;
57
- }
58
- return color(text, colorName);
59
- }
60
- // =============================================================================
61
- // Color Helper Functions
62
- // =============================================================================
63
- export const c = {
64
- // Basic styles
65
- reset: (s) => `${s}${RESET}`,
66
- bold: (s) => style(s, "bold"),
67
- dim: (s) => style(s, "dim"),
68
- italic: (s) => style(s, "italic"),
69
- underline: (s) => style(s, "underline"),
70
- // Colors
71
- black: (s) => color(s, "black"),
72
- red: (s) => color(s, "red"),
73
- green: (s) => color(s, "green"),
74
- yellow: (s) => color(s, "yellow"),
75
- blue: (s) => color(s, "blue"),
76
- magenta: (s) => color(s, "magenta"),
77
- cyan: (s) => color(s, "cyan"),
78
- white: (s) => color(s, "white"),
79
- gray: (s) => color(s, "gray"),
80
- // Bright colors
81
- brightRed: (s) => color(s, "brightRed"),
82
- brightGreen: (s) => color(s, "brightGreen"),
83
- brightYellow: (s) => color(s, "brightYellow"),
84
- brightBlue: (s) => color(s, "brightBlue"),
85
- brightMagenta: (s) => color(s, "brightMagenta"),
86
- brightCyan: (s) => color(s, "brightCyan"),
87
- brightWhite: (s) => color(s, "brightWhite"),
88
- // Semantic colors
89
- success: (s) => color(s, "green"),
90
- error: (s) => color(s, "red"),
91
- warning: (s) => color(s, "yellow"),
92
- info: (s) => color(s, "cyan"),
93
- muted: (s) => color(s, "gray"),
94
- highlight: (s) => color(s, "brightCyan"),
95
- label: (s) => styled(s, "cyan", "bold"),
96
- title: (s) => styled(s, "brightWhite", "bold"),
97
- value: (s) => color(s, "white"),
98
- };
99
- // =============================================================================
100
- // Box Drawing Characters
101
- // =============================================================================
102
- export const BOX = {
103
- // Single line
104
- topLeft: "┌",
105
- topRight: "┐",
106
- bottomLeft: "└",
107
- bottomRight: "┘",
108
- horizontal: "─",
109
- vertical: "│",
110
- teeRight: "├",
111
- teeLeft: "┤",
112
- teeDown: "┬",
113
- teeUp: "┴",
114
- cross: "┼",
115
- // Double line
116
- dblTopLeft: "╔",
117
- dblTopRight: "╗",
118
- dblBottomLeft: "╚",
119
- dblBottomRight: "╝",
120
- dblHorizontal: "═",
121
- dblVertical: "║",
122
- // Rounded corners
123
- rTopLeft: "╭",
124
- rTopRight: "╮",
125
- rBottomLeft: "╰",
126
- rBottomRight: "╯",
127
- };
128
- // =============================================================================
129
- // String Utilities
130
- // =============================================================================
131
- /**
132
- * Pre-compiled regex for stripping ANSI escape codes (compiled once for performance)
133
- * Matches all ANSI escape sequences including:
134
- * - SGR (Select Graphic Rendition) codes: ESC[...m (colors, styles)
135
- * - CSI (Control Sequence Introducer) codes: ESC[...X where X is any letter
136
- * - OSC (Operating System Command) codes: ESC]...BEL or ESC]...ESC\
137
- */
138
- const ANSI_REGEX = /\x1b(?:\[[0-9;]*[A-Za-z]|\].*?(?:\x07|\x1b\\))/g;
139
- /**
140
- * Strip all ANSI escape codes from string
141
- */
142
- export function stripAnsi(str) {
143
- return str.replace(ANSI_REGEX, "");
144
- }
145
- /**
146
- * Check if a character is full-width (CJK, Korean, emoji, etc.)
147
- * Full-width characters take 2 columns in terminal
148
- */
149
- export function isFullWidth(char) {
150
- const code = char.codePointAt(0);
151
- if (code === undefined)
152
- return false;
153
- return (
154
- // CJK and Korean
155
- (code >= 0x1100 && code <= 0x115f) || // Hangul Jamo
156
- (code >= 0x2e80 && code <= 0x9fff) || // CJK Radicals, Kangxi, Ideographs
157
- (code >= 0xac00 && code <= 0xd7af) || // Hangul Syllables
158
- (code >= 0xf900 && code <= 0xfaff) || // CJK Compatibility Ideographs
159
- (code >= 0xfe10 && code <= 0xfe1f) || // Vertical Forms
160
- (code >= 0xfe30 && code <= 0xfe6f) || // CJK Compatibility Forms
161
- (code >= 0xff00 && code <= 0xff60) || // Fullwidth ASCII
162
- (code >= 0xffe0 && code <= 0xffe6) || // Fullwidth Symbols
163
- (code >= 0x20000 && code <= 0x2ffff) || // CJK Extension B, C, D, E, F
164
- (code >= 0x30000 && code <= 0x3ffff) || // CJK Extension G, H, I
165
- // Symbols (typically wide in terminals)
166
- (code >= 0x2600 && code <= 0x26ff) || // Misc Symbols (sun, moon, stars, etc.)
167
- (code >= 0x2700 && code <= 0x27bf) || // Dingbats
168
- // Emoji ranges (comprehensive coverage)
169
- (code >= 0x1f1e0 && code <= 0x1f1ff) || // Regional Indicator Symbols (flags)
170
- (code >= 0x1f300 && code <= 0x1f5ff) || // Misc Symbols & Pictographs
171
- (code >= 0x1f600 && code <= 0x1f64f) || // Emoticons (faces)
172
- (code >= 0x1f680 && code <= 0x1f6ff) || // Transport & Map Symbols
173
- (code >= 0x1f700 && code <= 0x1f77f) || // Alchemical Symbols
174
- (code >= 0x1f780 && code <= 0x1f7ff) || // Geometric Shapes Extended
175
- (code >= 0x1f800 && code <= 0x1f8ff) || // Supplemental Arrows-C
176
- (code >= 0x1f900 && code <= 0x1f9ff) || // Supplemental Symbols & Pictographs
177
- (code >= 0x1fa00 && code <= 0x1fa6f) || // Chess Symbols
178
- (code >= 0x1fa70 && code <= 0x1faff) || // Symbols & Pictographs Extended-A
179
- (code >= 0x1fb00 && code <= 0x1fbff) || // Symbols for Legacy Computing
180
- // Additional emoji-related
181
- (code >= 0x231a && code <= 0x231b) || // Watch, Hourglass
182
- (code >= 0x23e9 && code <= 0x23f3) || // Media control symbols
183
- (code >= 0x23f8 && code <= 0x23fa) || // Media control symbols
184
- (code >= 0x25aa && code <= 0x25ab) || // Squares
185
- (code >= 0x25b6 && code === 0x25b6) || // Play button
186
- (code >= 0x25c0 && code === 0x25c0) || // Reverse button
187
- (code >= 0x25fb && code <= 0x25fe) || // Squares
188
- (code >= 0x2614 && code <= 0x2615) || // Umbrella, Hot beverage
189
- (code >= 0x2648 && code <= 0x2653) || // Zodiac
190
- (code >= 0x267f && code === 0x267f) || // Wheelchair
191
- (code >= 0x2693 && code === 0x2693) || // Anchor
192
- (code >= 0x26a1 && code === 0x26a1) || // High voltage
193
- (code >= 0x26aa && code <= 0x26ab) || // Circles
194
- (code >= 0x26bd && code <= 0x26be) || // Sports
195
- (code >= 0x26c4 && code <= 0x26c5) || // Snowman, Sun
196
- (code >= 0x26ce && code === 0x26ce) || // Ophiuchus
197
- (code >= 0x26d4 && code === 0x26d4) || // No entry
198
- (code >= 0x26ea && code === 0x26ea) || // Church
199
- (code >= 0x26f2 && code <= 0x26f3) || // Fountain, Golf
200
- (code >= 0x26f5 && code === 0x26f5) || // Sailboat
201
- (code >= 0x26fa && code === 0x26fa) || // Tent
202
- (code >= 0x26fd && code === 0x26fd) || // Fuel pump
203
- (code >= 0x2702 && code === 0x2702) || // Scissors
204
- (code >= 0x2705 && code === 0x2705) || // Check mark
205
- (code >= 0x2708 && code <= 0x270d) || // Airplane to Writing hand
206
- (code >= 0x270f && code === 0x270f) || // Pencil
207
- (code >= 0x2712 && code === 0x2712) || // Black nib
208
- (code >= 0x2714 && code === 0x2714) || // Check mark
209
- (code >= 0x2716 && code === 0x2716) || // X mark
210
- (code >= 0x271d && code === 0x271d) || // Latin cross
211
- (code >= 0x2721 && code === 0x2721) || // Star of David
212
- (code >= 0x2728 && code === 0x2728) || // Sparkles
213
- (code >= 0x2733 && code <= 0x2734) || // Eight spoked asterisk
214
- (code >= 0x2744 && code === 0x2744) || // Snowflake
215
- (code >= 0x2747 && code === 0x2747) || // Sparkle
216
- (code >= 0x274c && code === 0x274c) || // Cross mark
217
- (code >= 0x274e && code === 0x274e) || // Cross mark
218
- (code >= 0x2753 && code <= 0x2755) || // Question marks
219
- (code >= 0x2757 && code === 0x2757) || // Exclamation
220
- (code >= 0x2763 && code <= 0x2764) || // Heart exclamation, Heart
221
- (code >= 0x2795 && code <= 0x2797) || // Plus, Minus, Division
222
- (code >= 0x27a1 && code === 0x27a1) || // Right arrow
223
- (code >= 0x27b0 && code === 0x27b0) || // Curly loop
224
- (code >= 0x27bf && code === 0x27bf) || // Double curly loop
225
- (code >= 0x2934 && code <= 0x2935) || // Arrows
226
- (code >= 0x2b05 && code <= 0x2b07) || // Arrows
227
- (code >= 0x2b1b && code <= 0x2b1c) || // Squares
228
- (code >= 0x2b50 && code === 0x2b50) || // Star
229
- (code >= 0x2b55 && code === 0x2b55) || // Circle
230
- (code >= 0x3030 && code === 0x3030) || // Wavy dash
231
- (code >= 0x303d && code === 0x303d) || // Part alternation mark
232
- (code >= 0x3297 && code === 0x3297) || // Circled Ideograph Congratulation
233
- (code >= 0x3299 && code === 0x3299) // Circled Ideograph Secret
234
- );
235
- }
236
- /**
237
- * Get display width of string (excluding ANSI codes, CJK = 2 columns)
238
- */
239
- export function displayWidth(str) {
240
- const stripped = stripAnsi(str);
241
- let width = 0;
242
- for (const char of stripped) {
243
- width += isFullWidth(char) ? 2 : 1;
244
- }
245
- return width;
246
- }
247
- // Alias for compatibility
248
- export const visibleLength = displayWidth;
249
- /**
250
- * Pad string to width (accounting for display width)
251
- */
252
- export function pad(str, width, align = "left") {
253
- const len = displayWidth(str);
254
- const diff = width - len;
255
- if (diff <= 0)
256
- return str;
257
- switch (align) {
258
- case "right":
259
- return " ".repeat(diff) + str;
260
- case "center": {
261
- const left = Math.floor(diff / 2);
262
- return " ".repeat(left) + str + " ".repeat(diff - left);
263
- }
264
- default:
265
- return str + " ".repeat(diff);
266
- }
267
- }
268
- // Aliases for compatibility
269
- export const padEnd = (str, width) => pad(str, width, "left");
270
- export const padStart = (str, width) => pad(str, width, "right");
271
- export const center = (str, width) => pad(str, width, "center");
272
- /**
273
- * Truncate string to max display width
274
- */
275
- export function truncateStr(str, maxLen, suffix = "...") {
276
- const stripped = stripAnsi(str);
277
- if (displayWidth(stripped) <= maxLen)
278
- return str;
279
- const suffixWidth = displayWidth(suffix);
280
- let width = 0;
281
- let result = "";
282
- for (const char of stripped) {
283
- const charWidth = isFullWidth(char) ? 2 : 1;
284
- if (width + charWidth > maxLen - suffixWidth)
285
- break;
286
- result += char;
287
- width += charWidth;
288
- }
289
- return result + suffix;
290
- }
291
- /**
292
- * Create a horizontal line
293
- */
294
- export function hline(width, char = BOX.horizontal) {
295
- return char.repeat(width);
296
- }
297
- export function progressBar(current, total, options = {}) {
298
- const { width = 20, filled = "█", empty = "░", showPercent = true, filledColor = "green", emptyColor = "gray", } = options;
299
- const percent = total > 0 ? Math.round((current / total) * 100) : 0;
300
- const filledCount = Math.round((percent / 100) * width);
301
- const emptyCount = width - filledCount;
302
- const bar = color(filled.repeat(filledCount), filledColor) + color(empty.repeat(emptyCount), emptyColor);
303
- return showPercent ? `${bar} ${percent}%` : bar;
304
- }
305
- /**
306
- * Create a box around content (string input, string output)
307
- */
308
- export function box(content, options = {}) {
309
- const { padding = 1, borderColor = "cyan", title, rounded = true } = options;
310
- const lines = content.split("\n");
311
- const maxLen = Math.max(...lines.map(l => displayWidth(stripAnsi(l))), title ? title.length + 2 : 0);
312
- const innerWidth = options.width ? options.width - 2 - padding * 2 : maxLen + padding * 2;
313
- const tl = rounded ? BOX.rTopLeft : BOX.topLeft;
314
- const tr = rounded ? BOX.rTopRight : BOX.topRight;
315
- const bl = rounded ? BOX.rBottomLeft : BOX.bottomLeft;
316
- const br = rounded ? BOX.rBottomRight : BOX.bottomRight;
317
- const h = BOX.horizontal;
318
- const v = BOX.vertical;
319
- const applyBorder = (s) => color(s, borderColor);
320
- // Top border with optional title
321
- let top;
322
- if (title) {
323
- const titlePart = ` ${title} `;
324
- const remaining = innerWidth - titlePart.length;
325
- const leftPad = Math.floor(remaining / 2);
326
- const rightPad = remaining - leftPad;
327
- top = applyBorder(tl + h.repeat(leftPad)) + c.bold(titlePart) + applyBorder(h.repeat(rightPad) + tr);
328
- }
329
- else {
330
- top = applyBorder(tl + h.repeat(innerWidth) + tr);
331
- }
332
- // Padding lines
333
- const padLine = applyBorder(v) + " ".repeat(innerWidth) + applyBorder(v);
334
- const paddingLines = Array(padding).fill(padLine);
335
- // Content lines
336
- const contentLines = lines.map(line => {
337
- const lineWidth = displayWidth(stripAnsi(line));
338
- const padRight = innerWidth - lineWidth - padding;
339
- return applyBorder(v) + " ".repeat(padding) + line + " ".repeat(Math.max(0, padRight)) + applyBorder(v);
340
- });
341
- // Bottom border
342
- const bottom = applyBorder(bl + h.repeat(innerWidth) + br);
343
- return [top, ...paddingLines, ...contentLines, ...paddingLines, bottom].join("\n");
344
- }
345
- /**
346
- * Draw a box around content (array input, array output)
347
- * For MCP server compatibility
348
- */
349
- export function drawBox(lines, options = {}) {
350
- const { title, padding = 1, borderColor = "gray" } = options;
351
- let maxContentWidth = 0;
352
- for (const line of lines) {
353
- maxContentWidth = Math.max(maxContentWidth, displayWidth(line));
354
- }
355
- const innerWidth = options.width ? options.width - 2 - padding * 2 : maxContentWidth;
356
- const boxWidth = innerWidth + 2 + padding * 2;
357
- const result = [];
358
- const padStr = " ".repeat(padding);
359
- const applyBorder = (s) => color(s, borderColor);
360
- // Top border with optional title
361
- if (title) {
362
- const titleStr = ` ${title} `;
363
- const remainingWidth = boxWidth - 2 - displayWidth(titleStr);
364
- const leftBorder = Math.floor(remainingWidth / 2);
365
- const rightBorder = remainingWidth - leftBorder;
366
- result.push(applyBorder(BOX.topLeft) +
367
- applyBorder(BOX.horizontal.repeat(leftBorder)) +
368
- c.label(titleStr) +
369
- applyBorder(BOX.horizontal.repeat(rightBorder)) +
370
- applyBorder(BOX.topRight));
371
- }
372
- else {
373
- result.push(applyBorder(BOX.topLeft) +
374
- applyBorder(BOX.horizontal.repeat(boxWidth - 2)) +
375
- applyBorder(BOX.topRight));
376
- }
377
- // Content lines
378
- for (const line of lines) {
379
- result.push(applyBorder(BOX.vertical) +
380
- padStr +
381
- padEnd(line, innerWidth) +
382
- padStr +
383
- applyBorder(BOX.vertical));
384
- }
385
- // Bottom border
386
- result.push(applyBorder(BOX.bottomLeft) +
387
- applyBorder(BOX.horizontal.repeat(boxWidth - 2)) +
388
- applyBorder(BOX.bottomRight));
389
- return result;
390
- }
391
- // =============================================================================
392
- // Side-by-Side Layout
393
- // =============================================================================
394
- /**
395
- * Place multiple boxes side by side (string input, string output)
396
- */
397
- export function sideBySide(boxes, gap = 2) {
398
- const boxLines = boxes.map(b => b.split("\n"));
399
- const maxHeight = Math.max(...boxLines.map(lines => lines.length));
400
- const boxWidths = boxLines.map(lines => Math.max(...lines.map(l => displayWidth(l))));
401
- // Pad each box to max height
402
- const paddedBoxLines = boxLines.map((lines, i) => {
403
- const width = boxWidths[i] ?? 0;
404
- while (lines.length < maxHeight) {
405
- lines.push(" ".repeat(width));
406
- }
407
- return lines.map(line => {
408
- const lineWidth = displayWidth(line);
409
- if (lineWidth < width) {
410
- return line + " ".repeat(width - lineWidth);
411
- }
412
- return line;
413
- });
414
- });
415
- // Combine lines horizontally
416
- const result = [];
417
- const gapStr = " ".repeat(gap);
418
- for (let i = 0; i < maxHeight; i++) {
419
- const lineParts = paddedBoxLines.map(lines => lines[i] ?? "");
420
- result.push(lineParts.join(gapStr));
421
- }
422
- return result.join("\n");
423
- }
424
- /**
425
- * Merge two boxes side by side (array input, array output)
426
- * For MCP server compatibility
427
- */
428
- export function sideBySideArrays(leftLines, rightLines, gap = 2) {
429
- const leftWidth = leftLines.length > 0
430
- ? Math.max(...leftLines.map(displayWidth))
431
- : 0;
432
- const maxLines = Math.max(leftLines.length, rightLines.length);
433
- const result = [];
434
- const gapStr = " ".repeat(gap);
435
- const emptyLeft = " ".repeat(leftWidth);
436
- for (let i = 0; i < maxLines; i++) {
437
- const left = leftLines[i];
438
- const right = rightLines[i] ?? "";
439
- if (left !== undefined) {
440
- result.push(padEnd(left, leftWidth) + gapStr + right);
441
- }
442
- else {
443
- result.push(emptyLeft + gapStr + right);
444
- }
445
- }
446
- return result;
447
- }
448
- export function table(data, columns, options = {}) {
449
- const { headerColor = "cyan", borderColor = "gray" } = options;
450
- // Calculate column widths
451
- const widths = columns.map(col => {
452
- const headerWidth = displayWidth(col.header);
453
- const maxDataWidth = Math.max(...data.map(row => {
454
- const val = col.format ? col.format(row[col.key], row) : String(row[col.key] ?? "");
455
- return displayWidth(val);
456
- }), 0);
457
- return col.width ?? Math.max(headerWidth, maxDataWidth);
458
- });
459
- const border = color(BOX.vertical, borderColor);
460
- const hBorder = color(BOX.horizontal, borderColor);
461
- // Header row
462
- const headerRow = columns
463
- .map((col, i) => color(pad(col.header, widths[i] ?? 0, col.align), headerColor))
464
- .join(` ${border} `);
465
- // Separator
466
- const separator = widths.map(w => hBorder.repeat(w)).join(color(`─${BOX.cross}─`, borderColor));
467
- // Data rows
468
- const dataRows = data.map(row => columns
469
- .map((col, i) => {
470
- const w = widths[i] ?? 0;
471
- const val = col.format ? col.format(row[col.key], row) : String(row[col.key] ?? "");
472
- return pad(truncateStr(val, w), w, col.align);
473
- })
474
- .join(` ${border} `));
475
- return [headerRow, separator, ...dataRows].join("\n");
476
- }
477
- /**
478
- * Render table with full borders (array output)
479
- * For MCP server compatibility
480
- */
481
- export function renderTable(columns, rows) {
482
- const colWidths = columns.map((col) => {
483
- const headerWidth = col.header.length;
484
- const maxValueWidth = Math.max(...rows.map((row) => String(row[col.key] ?? "").length));
485
- return col.width ?? Math.max(headerWidth, maxValueWidth);
486
- });
487
- const result = [];
488
- // Header row
489
- const headerCells = columns.map((col, i) => c.label(center(col.header, colWidths[i] ?? 0)));
490
- result.push(c.muted(BOX.vertical) + headerCells.join(c.muted(BOX.vertical)) + c.muted(BOX.vertical));
491
- // Separator
492
- const separator = columns.map((_, i) => BOX.horizontal.repeat(colWidths[i] ?? 0));
493
- result.push(c.muted(BOX.teeRight) +
494
- c.muted(separator.join(BOX.cross)) +
495
- c.muted(BOX.teeLeft));
496
- // Data rows
497
- for (const row of rows) {
498
- const cells = columns.map((col, i) => {
499
- const w = colWidths[i] ?? 0;
500
- const value = String(row[col.key] ?? "");
501
- const colorFn = col.format;
502
- const colored = colorFn ? colorFn(value, row) : value;
503
- switch (col.align) {
504
- case "center":
505
- return center(String(colored), w);
506
- case "right":
507
- return padStart(String(colored), w);
508
- default:
509
- return padEnd(String(colored), w);
510
- }
511
- });
512
- result.push(c.muted(BOX.vertical) + cells.join(c.muted(BOX.vertical)) + c.muted(BOX.vertical));
513
- }
514
- // Top border
515
- const topBorder = c.muted(BOX.topLeft) +
516
- c.muted(colWidths.map((w) => BOX.horizontal.repeat(w)).join(BOX.teeDown)) +
517
- c.muted(BOX.topRight);
518
- // Bottom border
519
- const bottomBorder = c.muted(BOX.bottomLeft) +
520
- c.muted(colWidths.map((w) => BOX.horizontal.repeat(w)).join(BOX.teeUp)) +
521
- c.muted(BOX.bottomRight);
522
- return [topBorder, ...result, bottomBorder];
523
- }
524
- // =============================================================================
525
- // Status & Priority Formatters
526
- // =============================================================================
527
- export const statusColors = {
528
- pending: c.yellow,
529
- in_progress: c.cyan,
530
- completed: c.green,
531
- blocked: c.red,
532
- deferred: c.muted,
533
- cancelled: c.muted,
534
- };
535
- export const statusIcons = {
536
- pending: "○",
537
- in_progress: "◐",
538
- completed: "●",
539
- blocked: "⊘",
540
- deferred: "◇",
541
- cancelled: "✕",
542
- };
543
- export const icons = {
544
- // Status
545
- pending: c.yellow("○"),
546
- in_progress: c.blue("◐"),
547
- completed: c.green("✓"),
548
- blocked: c.red("✗"),
549
- cancelled: c.gray("⊘"),
550
- // Priority
551
- critical: c.red("!!!"),
552
- high: c.yellow("!!"),
553
- medium: c.blue("!"),
554
- low: c.gray("·"),
555
- // Misc
556
- arrow: c.cyan("→"),
557
- bullet: c.gray("•"),
558
- check: c.green("✓"),
559
- cross: c.red("✗"),
560
- warning: c.yellow("⚠"),
561
- info: c.cyan("ℹ"),
562
- };
563
- export function formatStatus(status) {
564
- const icon = statusIcons[status] ?? "?";
565
- const colorFn = statusColors[status] ?? c.white;
566
- return colorFn(`${icon} ${status}`);
567
- }
568
- export const priorityColors = {
569
- critical: c.brightRed,
570
- high: c.yellow,
571
- medium: c.cyan,
572
- low: c.green,
573
- };
574
- export function formatPriority(priority) {
575
- const colorFn = priorityColors[priority] ?? c.white;
576
- return colorFn(priority);
577
- }
578
- export function formatDependencies(deps) {
579
- if (deps.length === 0)
580
- return c.muted("None");
581
- return c.magenta(deps.join(", "));
582
- }
583
- // =============================================================================
584
- // Banner
585
- // =============================================================================
586
- /**
587
- * ASCII art text banner
588
- */
589
- export function banner(text) {
590
- const letters = {
591
- T: ["████", " ██ ", " ██ ", " ██ ", " ██ "],
592
- A: [" ██ ", "████", "██ █", "████", "██ █"],
593
- S: ["████", "██ ", "████", " ██", "████"],
594
- K: ["██ █", "███ ", "██ ", "███ ", "██ █"],
595
- M: ["█ █", "██ ██", "█ █ █", "█ █", "█ █"],
596
- C: ["████", "██ ", "██ ", "██ ", "████"],
597
- P: ["████", "██ █", "████", "██ ", "██ "],
598
- " ": [" ", " ", " ", " ", " "],
599
- };
600
- const chars = text.toUpperCase().split("");
601
- const lines = ["", "", "", "", ""];
602
- const defaultLetter = [" ", " ", " ", " ", " "];
603
- for (const char of chars) {
604
- const letterLines = letters[char] ?? defaultLetter;
605
- for (let i = 0; i < 5; i++) {
606
- lines[i] += (letterLines[i] ?? "") + " ";
607
- }
608
- }
609
- return lines.map(l => c.cyan(l)).join("\n");
610
- }
611
- //# sourceMappingURL=terminal-ui.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"terminal-ui.js","sourceRoot":"","sources":["../../src/utils/terminal-ui.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=terminal-ui.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"terminal-ui.test.d.ts","sourceRoot":"","sources":["../../src/utils/terminal-ui.test.ts"],"names":[],"mappings":""}