4runr-os 2.0.35 → 2.0.37

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 (81) hide show
  1. package/dist/collectors/collector_feed.d.ts.map +1 -1
  2. package/dist/collectors/collector_feed.js +6 -1
  3. package/dist/collectors/collector_feed.js.map +1 -1
  4. package/dist/core/commandExecutor.d.ts +56 -0
  5. package/dist/core/commandExecutor.d.ts.map +1 -0
  6. package/dist/core/commandExecutor.js +161 -0
  7. package/dist/core/commandExecutor.js.map +1 -0
  8. package/dist/core/commandRegistry.d.ts +72 -0
  9. package/dist/core/commandRegistry.d.ts.map +1 -0
  10. package/dist/core/commandRegistry.js +53 -0
  11. package/dist/core/commandRegistry.js.map +1 -0
  12. package/dist/core/commands/size.d.ts +23 -0
  13. package/dist/core/commands/size.d.ts.map +1 -0
  14. package/dist/core/commands/size.js +211 -0
  15. package/dist/core/commands/size.js.map +1 -0
  16. package/dist/core/eventBus.d.ts +29 -14
  17. package/dist/core/eventBus.d.ts.map +1 -1
  18. package/dist/core/eventBus.js +56 -23
  19. package/dist/core/eventBus.js.map +1 -1
  20. package/dist/core/opEvent.d.ts +16 -0
  21. package/dist/core/opEvent.d.ts.map +1 -0
  22. package/dist/core/opEvent.js +8 -0
  23. package/dist/core/opEvent.js.map +1 -0
  24. package/dist/index.js +19 -3
  25. package/dist/index.js.map +1 -1
  26. package/dist/ui/v3/commands/commandEngine.js +16 -2
  27. package/dist/ui/v3/commands/commandEngine.js.map +1 -1
  28. package/dist/ui/v3/index.js +32 -11
  29. package/dist/ui/v3/index.js.map +1 -1
  30. package/dist/ui/v3/ui/layout/phase1Layout.d.ts.map +1 -1
  31. package/dist/ui/v3/ui/layout/phase1Layout.js +3 -2
  32. package/dist/ui/v3/ui/layout/phase1Layout.js.map +1 -1
  33. package/dist/ui/v4/engine/renderFrame.d.ts +47 -0
  34. package/dist/ui/v4/engine/renderFrame.d.ts.map +1 -0
  35. package/dist/ui/v4/engine/renderFrame.js +653 -0
  36. package/dist/ui/v4/engine/renderFrame.js.map +1 -0
  37. package/dist/ui/v4/engine/resizeController.d.ts +48 -0
  38. package/dist/ui/v4/engine/resizeController.d.ts.map +1 -0
  39. package/dist/ui/v4/engine/resizeController.js +285 -0
  40. package/dist/ui/v4/engine/resizeController.js.map +1 -0
  41. package/dist/ui/v4/engine/safeViewport.d.ts +47 -0
  42. package/dist/ui/v4/engine/safeViewport.d.ts.map +1 -0
  43. package/dist/ui/v4/engine/safeViewport.js +123 -0
  44. package/dist/ui/v4/engine/safeViewport.js.map +1 -0
  45. package/dist/ui/v4/engine/terminalProfile.d.ts +56 -0
  46. package/dist/ui/v4/engine/terminalProfile.d.ts.map +1 -0
  47. package/dist/ui/v4/engine/terminalProfile.js +115 -0
  48. package/dist/ui/v4/engine/terminalProfile.js.map +1 -0
  49. package/dist/ui/v4/index.d.ts +28 -0
  50. package/dist/ui/v4/index.d.ts.map +1 -0
  51. package/dist/ui/v4/index.js +993 -0
  52. package/dist/ui/v4/index.js.map +1 -0
  53. package/dist/ui/v4/layout/layoutEngine.d.ts +62 -0
  54. package/dist/ui/v4/layout/layoutEngine.d.ts.map +1 -0
  55. package/dist/ui/v4/layout/layoutEngine.js +294 -0
  56. package/dist/ui/v4/layout/layoutEngine.js.map +1 -0
  57. package/dist/ui/v4/runtime/keepAlive.d.ts +21 -0
  58. package/dist/ui/v4/runtime/keepAlive.d.ts.map +1 -0
  59. package/dist/ui/v4/runtime/keepAlive.js +149 -0
  60. package/dist/ui/v4/runtime/keepAlive.js.map +1 -0
  61. package/dist/ui/v4/runtime/logger.d.ts +35 -0
  62. package/dist/ui/v4/runtime/logger.d.ts.map +1 -0
  63. package/dist/ui/v4/runtime/logger.js +109 -0
  64. package/dist/ui/v4/runtime/logger.js.map +1 -0
  65. package/dist/ui/v5/index.d.ts +24 -0
  66. package/dist/ui/v5/index.d.ts.map +1 -0
  67. package/dist/ui/v5/index.js +123 -0
  68. package/dist/ui/v5/index.js.map +1 -0
  69. package/dist/ui/v5/runtime/keepAlive.d.ts +37 -0
  70. package/dist/ui/v5/runtime/keepAlive.d.ts.map +1 -0
  71. package/dist/ui/v5/runtime/keepAlive.js +122 -0
  72. package/dist/ui/v5/runtime/keepAlive.js.map +1 -0
  73. package/dist/ui/v5/runtime/restoreTerminal.d.ts +34 -0
  74. package/dist/ui/v5/runtime/restoreTerminal.d.ts.map +1 -0
  75. package/dist/ui/v5/runtime/restoreTerminal.js +100 -0
  76. package/dist/ui/v5/runtime/restoreTerminal.js.map +1 -0
  77. package/dist/ui/v5/runtime/stdoutGuard.d.ts +42 -0
  78. package/dist/ui/v5/runtime/stdoutGuard.d.ts.map +1 -0
  79. package/dist/ui/v5/runtime/stdoutGuard.js +154 -0
  80. package/dist/ui/v5/runtime/stdoutGuard.js.map +1 -0
  81. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderFrame.js","sourceRoot":"","sources":["../../../../src/ui/v4/engine/renderFrame.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * V4 Atomic Resize Controller
3
+ *
4
+ * ⚠️ FROZEN: This file is part of V4 TUI which is FROZEN.
5
+ * DO NOT MODIFY. Development moved to V5.
6
+ * See FROZEN.md in v4 directory.
7
+ *
8
+ * Turns chaotic resize events into stable commit points.
9
+ *
10
+ * Rules:
11
+ * - Debounce resize bursts
12
+ * - Verify stability (double-check dimensions)
13
+ * - Atomic redraw (teardown + rebuild OR hard clear + full redraw)
14
+ * - Always restore focus after commit
15
+ * - Lock during commit to prevent concurrent operations
16
+ */
17
+ export type TerminalSize = {
18
+ cols: number;
19
+ rows: number;
20
+ };
21
+ export type ResizeCallback = (size: TerminalSize) => Promise<void> | void;
22
+ /**
23
+ * Single source of truth for terminal dimensions
24
+ *
25
+ * NOTE: For layout calculations, use getSafeViewport() instead (Rule 1)
26
+ * This function is kept for backward compatibility and resize detection.
27
+ */
28
+ export declare function getTerminalSize(screen?: any): TerminalSize;
29
+ /**
30
+ * Initialize resize controller
31
+ */
32
+ export declare function initResizeController(screen: any, callback: ResizeCallback): void;
33
+ /**
34
+ * Get resize stats
35
+ */
36
+ export declare function getResizeStats(): {
37
+ eventCount: number;
38
+ commitCount: number;
39
+ droppedEventCount: number;
40
+ lastResizeAt: number | null;
41
+ lastCommittedSize: TerminalSize | null;
42
+ isCommitting: boolean;
43
+ };
44
+ /**
45
+ * Destroy resize controller
46
+ */
47
+ export declare function destroyResizeController(): void;
48
+ //# sourceMappingURL=resizeController.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resizeController.d.ts","sourceRoot":"","sources":["../../../../src/ui/v4/engine/resizeController.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAOH,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,CAAC,IAAI,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAE1E;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,MAAM,CAAC,EAAE,GAAG,GAAG,YAAY,CA8B1D;AAyOD;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,cAAc,GAAG,IAAI,CAMhF;AAED;;GAEG;AACH,wBAAgB,cAAc;gBA5Dd,MAAM;iBACL,MAAM;uBACA,MAAM;kBACX,MAAM,GAAG,IAAI;uBACR,YAAY,GAAG,IAAI;kBACxB,OAAO;EAgExB;AAED;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,IAAI,CAK9C"}
@@ -0,0 +1,285 @@
1
+ /**
2
+ * V4 Atomic Resize Controller
3
+ *
4
+ * ⚠️ FROZEN: This file is part of V4 TUI which is FROZEN.
5
+ * DO NOT MODIFY. Development moved to V5.
6
+ * See FROZEN.md in v4 directory.
7
+ *
8
+ * Turns chaotic resize events into stable commit points.
9
+ *
10
+ * Rules:
11
+ * - Debounce resize bursts
12
+ * - Verify stability (double-check dimensions)
13
+ * - Atomic redraw (teardown + rebuild OR hard clear + full redraw)
14
+ * - Always restore focus after commit
15
+ * - Lock during commit to prevent concurrent operations
16
+ */
17
+ /**
18
+ * Step 1: Debug helper - uses tuiDebug (stderr/file, gated by TUI_DEBUG=1)
19
+ */
20
+ import { tuiDebug as dbg, tuiError } from '../runtime/logger.js';
21
+ /**
22
+ * Single source of truth for terminal dimensions
23
+ *
24
+ * NOTE: For layout calculations, use getSafeViewport() instead (Rule 1)
25
+ * This function is kept for backward compatibility and resize detection.
26
+ */
27
+ export function getTerminalSize(screen) {
28
+ // Priority 1: screen.program.cols/rows (most accurate for blessed)
29
+ if (screen?.program?.cols && screen?.program?.rows) {
30
+ return {
31
+ cols: screen.program.cols,
32
+ rows: screen.program.rows,
33
+ };
34
+ }
35
+ // Priority 2: screen.width/height (blessed fallback)
36
+ if (screen?.width && screen?.height) {
37
+ return {
38
+ cols: screen.width,
39
+ rows: screen.height,
40
+ };
41
+ }
42
+ // Priority 3: process.stdout.columns/rows (Node.js fallback)
43
+ if (process.stdout.columns && process.stdout.rows) {
44
+ return {
45
+ cols: process.stdout.columns,
46
+ rows: process.stdout.rows,
47
+ };
48
+ }
49
+ // Default fallback
50
+ return {
51
+ cols: 80,
52
+ rows: 24,
53
+ };
54
+ }
55
+ /**
56
+ * Resize Controller State
57
+ */
58
+ class ResizeController {
59
+ debounceTimer = null;
60
+ isCommitting = false; // Lock during commit
61
+ lastCommittedSize = null;
62
+ pendingSize = null;
63
+ commitCallback = null;
64
+ screen = null;
65
+ // Stats (for debugging)
66
+ eventCount = 0;
67
+ commitCount = 0;
68
+ droppedEventCount = 0;
69
+ lastResizeAt = null;
70
+ DEBOUNCE_MS = 120;
71
+ /**
72
+ * Initialize resize controller
73
+ */
74
+ init(screen, callback) {
75
+ this.screen = screen;
76
+ this.commitCallback = callback;
77
+ // Bind to all resize sources
78
+ if (screen && typeof screen.on === 'function') {
79
+ screen.on('resize', () => this.handleResizeEvent('screen'));
80
+ }
81
+ if (typeof process.stdout.on === 'function') {
82
+ process.stdout.on('resize', () => this.handleResizeEvent('stdout'));
83
+ }
84
+ if (typeof process.on === 'function') {
85
+ process.on('SIGWINCH', () => this.handleResizeEvent('SIGWINCH'));
86
+ }
87
+ if (screen?.program && typeof screen.program.on === 'function') {
88
+ screen.program.on('resize', () => this.handleResizeEvent('program'));
89
+ }
90
+ }
91
+ /**
92
+ * Handle resize event
93
+ */
94
+ handleResizeEvent(source) {
95
+ this.eventCount++;
96
+ this.lastResizeAt = Date.now();
97
+ // If commit is in progress, schedule another commit after current one finishes
98
+ if (this.isCommitting) {
99
+ this.droppedEventCount++;
100
+ // Schedule a new commit after current one (will be handled by debounce)
101
+ return;
102
+ }
103
+ // Get current size
104
+ const currentSize = getTerminalSize(this.screen);
105
+ // If same as last committed, ignore
106
+ if (this.lastCommittedSize &&
107
+ this.lastCommittedSize.cols === currentSize.cols &&
108
+ this.lastCommittedSize.rows === currentSize.rows) {
109
+ return;
110
+ }
111
+ // Store pending size
112
+ this.pendingSize = currentSize;
113
+ // Cancel existing debounce timer
114
+ if (this.debounceTimer) {
115
+ clearTimeout(this.debounceTimer);
116
+ this.debounceTimer = null;
117
+ }
118
+ // Schedule debounced commit
119
+ this.debounceTimer = setTimeout(() => {
120
+ this.debounceTimer = null;
121
+ this.commitResize();
122
+ }, this.DEBOUNCE_MS);
123
+ }
124
+ /**
125
+ * Commit resize (atomic operation with stable size verification)
126
+ *
127
+ * Fullscreen toggles can report intermediate sizes.
128
+ * Use a double-read with 50ms wait (up to 2 cycles) to ensure stability.
129
+ */
130
+ async commitResize(cycle = 0) {
131
+ if (!this.pendingSize || !this.commitCallback || this.isCommitting) {
132
+ return;
133
+ }
134
+ // Set lock
135
+ this.isCommitting = true;
136
+ try {
137
+ // Step 1: Read dimensions at commit time
138
+ const size1 = getTerminalSize(this.screen);
139
+ // Step 2: Wait 50ms (let terminal/blessed stabilize)
140
+ await new Promise(resolve => setTimeout(resolve, 50));
141
+ // Step 3: Read dimensions again
142
+ const size2 = getTerminalSize(this.screen);
143
+ // Step 4: Verify stability (only commit if unchanged)
144
+ if (size1.cols !== size2.cols || size1.rows !== size2.rows) {
145
+ // Dimensions changed during verification
146
+ if (cycle < 2) {
147
+ // Try one more cycle (up to 2 cycles total)
148
+ this.pendingSize = size2;
149
+ this.isCommitting = false; // Release lock for retry
150
+ setTimeout(() => this.commitResize(cycle + 1), 50);
151
+ return;
152
+ }
153
+ else {
154
+ // After 2 cycles, use the latest size
155
+ this.pendingSize = size2;
156
+ }
157
+ }
158
+ // Step 5: Use the stable dimensions
159
+ const stableSize = size1;
160
+ // Step 6: Only commit if different from last committed
161
+ if (this.lastCommittedSize &&
162
+ this.lastCommittedSize.cols === stableSize.cols &&
163
+ this.lastCommittedSize.rows === stableSize.rows) {
164
+ // No change, skip commit
165
+ this.pendingSize = null;
166
+ return;
167
+ }
168
+ // Step 7: Atomic commit (callback handles teardown + rebuild)
169
+ // A) Render Guard: catch errors to prevent black screen
170
+ try {
171
+ await this.commitCallback(stableSize);
172
+ }
173
+ catch (error) {
174
+ // Render failed - display error to user (don't leave black screen)
175
+ // A) Log to stderr only (never stdout)
176
+ const errorMsg = error instanceof Error ? error.message : String(error);
177
+ const viewport = getTerminalSize(this.screen);
178
+ dbg('RENDER ERROR:', errorMsg);
179
+ dbg(`Last safe viewport: ${viewport.cols}x${viewport.rows}`);
180
+ dbg('Press Ctrl+C to exit');
181
+ // Also try to show on screen if possible
182
+ const program = this.screen.program;
183
+ if (program && typeof program.write === 'function') {
184
+ try {
185
+ program.write('\r\n\x1b[31m[V4 RENDER ERROR]\x1b[0m\r\n');
186
+ program.write(`Error: ${errorMsg}\r\n`);
187
+ program.write(`Last safe viewport: ${viewport.cols}x${viewport.rows}\r\n`);
188
+ program.write(`Press Ctrl+C to exit\r\n`);
189
+ program.flush();
190
+ }
191
+ catch {
192
+ // Ignore if write fails
193
+ }
194
+ }
195
+ // Don't update committed size on error - allow retry
196
+ throw error;
197
+ }
198
+ // Step 8: Update last committed size
199
+ this.lastCommittedSize = stableSize;
200
+ this.commitCount++;
201
+ this.pendingSize = null;
202
+ }
203
+ catch (error) {
204
+ // Log error but don't break resize system
205
+ if (process.env.DEBUG_NO_TUI === '1') {
206
+ tuiError('[ResizeController] Commit error:', error);
207
+ }
208
+ }
209
+ finally {
210
+ // Release lock
211
+ this.isCommitting = false;
212
+ }
213
+ }
214
+ /**
215
+ * Get resize stats (for debugging)
216
+ */
217
+ getStats() {
218
+ return {
219
+ eventCount: this.eventCount,
220
+ commitCount: this.commitCount,
221
+ droppedEventCount: this.droppedEventCount,
222
+ lastResizeAt: this.lastResizeAt,
223
+ lastCommittedSize: this.lastCommittedSize,
224
+ isCommitting: this.isCommitting,
225
+ };
226
+ }
227
+ /**
228
+ * Force immediate commit (for testing)
229
+ */
230
+ async forceCommit() {
231
+ if (this.debounceTimer) {
232
+ clearTimeout(this.debounceTimer);
233
+ this.debounceTimer = null;
234
+ }
235
+ await this.commitResize();
236
+ }
237
+ /**
238
+ * Cleanup (remove listeners)
239
+ */
240
+ destroy() {
241
+ if (this.debounceTimer) {
242
+ clearTimeout(this.debounceTimer);
243
+ this.debounceTimer = null;
244
+ }
245
+ this.screen = null;
246
+ this.commitCallback = null;
247
+ }
248
+ }
249
+ /**
250
+ * Global resize controller instance
251
+ */
252
+ let resizeController = null;
253
+ /**
254
+ * Initialize resize controller
255
+ */
256
+ export function initResizeController(screen, callback) {
257
+ if (resizeController) {
258
+ resizeController.destroy();
259
+ }
260
+ resizeController = new ResizeController();
261
+ resizeController.init(screen, callback);
262
+ }
263
+ /**
264
+ * Get resize stats
265
+ */
266
+ export function getResizeStats() {
267
+ return resizeController?.getStats() || {
268
+ eventCount: 0,
269
+ commitCount: 0,
270
+ droppedEventCount: 0,
271
+ lastResizeAt: null,
272
+ lastCommittedSize: null,
273
+ isCommitting: false,
274
+ };
275
+ }
276
+ /**
277
+ * Destroy resize controller
278
+ */
279
+ export function destroyResizeController() {
280
+ if (resizeController) {
281
+ resizeController.destroy();
282
+ resizeController = null;
283
+ }
284
+ }
285
+ //# sourceMappingURL=resizeController.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resizeController.js","sourceRoot":"","sources":["../../../../src/ui/v4/engine/resizeController.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * ⚠️ FROZEN: This file is part of V4 TUI which is FROZEN.
3
+ * DO NOT MODIFY. Development moved to V5.
4
+ * See FROZEN.md in v4 directory.
5
+ *
6
+ * Safe Viewport - "Forever Fix" for CloudShell Horizontal Scrollbar
7
+ *
8
+ * HARD INVARIANT: No widget may draw at x >= safeCols
9
+ *
10
+ * Deliverable 1: Safe Viewport Contract
11
+ * - Browser/CloudShell detection
12
+ * - Environment variable overrides
13
+ * - Minimum clamping
14
+ * - Comprehensive debug info
15
+ */
16
+ import type { Widgets } from 'neo-blessed';
17
+ export interface SafeViewport {
18
+ cols: number;
19
+ rows: number;
20
+ rawCols: number;
21
+ rawRows: number;
22
+ screenCols: number;
23
+ stdoutCols: number;
24
+ envCols: number;
25
+ isBrowserTerminal: boolean;
26
+ platform: string;
27
+ term: string;
28
+ rightMargin: number;
29
+ bottomMargin: number;
30
+ }
31
+ /**
32
+ * Get safe viewport dimensions from screen
33
+ *
34
+ * Deliverable 1: Safe Viewport Contract
35
+ *
36
+ * Rules:
37
+ * - safeCols = min(screen.cols, stdout.cols, env.COLUMNS) - RIGHT_MARGIN
38
+ * - safeRows = min(screen.rows, stdout.rows, env.LINES) - BOTTOM_MARGIN
39
+ * - Clamp: safeCols >= 60, safeRows >= 20 (if smaller, narrow mode will handle)
40
+ *
41
+ * Margins:
42
+ * - Default: RIGHT_MARGIN=1, BOTTOM_MARGIN=1
43
+ * - Browser terminals: RIGHT_MARGIN=2, BOTTOM_MARGIN=1
44
+ * - Override via env: TUI_SAFE_RIGHT_MARGIN, TUI_SAFE_BOTTOM_MARGIN
45
+ */
46
+ export declare function getSafeViewport(screen: Widgets.Screen): SafeViewport;
47
+ //# sourceMappingURL=safeViewport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"safeViewport.d.ts","sourceRoot":"","sources":["../../../../src/ui/v4/engine/safeViewport.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAG3C,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAEhB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB;AAoED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,GAAG,YAAY,CAsCpE"}
@@ -0,0 +1,123 @@
1
+ /**
2
+ * ⚠️ FROZEN: This file is part of V4 TUI which is FROZEN.
3
+ * DO NOT MODIFY. Development moved to V5.
4
+ * See FROZEN.md in v4 directory.
5
+ *
6
+ * Safe Viewport - "Forever Fix" for CloudShell Horizontal Scrollbar
7
+ *
8
+ * HARD INVARIANT: No widget may draw at x >= safeCols
9
+ *
10
+ * Deliverable 1: Safe Viewport Contract
11
+ * - Browser/CloudShell detection
12
+ * - Environment variable overrides
13
+ * - Minimum clamping
14
+ * - Comprehensive debug info
15
+ */
16
+ import * as os from 'os';
17
+ /**
18
+ * Detect if running in browser terminal (CloudShell/xterm.js)
19
+ *
20
+ * Heuristics:
21
+ * - AWS_EXECUTION_ENV indicates CloudShell
22
+ * - TERM_PROGRAM undefined + stdout.cols == screen.cols (web terminals often match)
23
+ * - TUI_BROWSER_SAFE=1 env var (manual override)
24
+ */
25
+ function detectBrowserTerminal(screen) {
26
+ // Manual override
27
+ if (process.env.TUI_BROWSER_SAFE === '1') {
28
+ return true;
29
+ }
30
+ // AWS CloudShell detection
31
+ if (process.env.AWS_EXECUTION_ENV) {
32
+ return true;
33
+ }
34
+ // Heuristic: web terminals often have TERM_PROGRAM undefined
35
+ // and stdout.cols matches screen.cols exactly
36
+ const screenCols = screen.cols || screen.width || screen.program?.cols || 80;
37
+ const stdoutCols = process.stdout.columns;
38
+ if (!process.env.TERM_PROGRAM && stdoutCols && stdoutCols === screenCols) {
39
+ return true;
40
+ }
41
+ return false;
42
+ }
43
+ /**
44
+ * Get effective terminal dimensions (minimum of all sources)
45
+ *
46
+ * CloudShell often reports different widths in different sources.
47
+ * We take the minimum to be safe.
48
+ */
49
+ function getEffectiveColsRows(screen) {
50
+ // Get all column sources
51
+ const screenCols = screen.cols || screen.width || screen.program?.cols || 80;
52
+ const stdoutCols = process.stdout.columns ?? Infinity;
53
+ const envCols = Number(process.env.COLUMNS) || Infinity;
54
+ // Get all row sources
55
+ const screenRows = screen.rows || screen.height || screen.program?.rows || 24;
56
+ const stdoutRows = process.stdout.rows ?? Infinity;
57
+ const envRows = Number(process.env.LINES) || Infinity;
58
+ // Take minimum of all sources (CloudShell safety)
59
+ const effectiveCols = Math.min(screenCols, stdoutCols, envCols);
60
+ const effectiveRows = Math.min(screenRows, stdoutRows, envRows);
61
+ return {
62
+ cols: effectiveCols,
63
+ rows: effectiveRows,
64
+ details: {
65
+ screenCols,
66
+ stdoutCols,
67
+ envCols,
68
+ screenRows,
69
+ stdoutRows,
70
+ envRows,
71
+ },
72
+ };
73
+ }
74
+ /**
75
+ * Get safe viewport dimensions from screen
76
+ *
77
+ * Deliverable 1: Safe Viewport Contract
78
+ *
79
+ * Rules:
80
+ * - safeCols = min(screen.cols, stdout.cols, env.COLUMNS) - RIGHT_MARGIN
81
+ * - safeRows = min(screen.rows, stdout.rows, env.LINES) - BOTTOM_MARGIN
82
+ * - Clamp: safeCols >= 60, safeRows >= 20 (if smaller, narrow mode will handle)
83
+ *
84
+ * Margins:
85
+ * - Default: RIGHT_MARGIN=1, BOTTOM_MARGIN=1
86
+ * - Browser terminals: RIGHT_MARGIN=2, BOTTOM_MARGIN=1
87
+ * - Override via env: TUI_SAFE_RIGHT_MARGIN, TUI_SAFE_BOTTOM_MARGIN
88
+ */
89
+ export function getSafeViewport(screen) {
90
+ // Detect browser terminal
91
+ const isBrowserTerminal = detectBrowserTerminal(screen);
92
+ // Get effective dimensions (minimum of all sources)
93
+ const { cols: effectiveCols, rows: effectiveRows, details } = getEffectiveColsRows(screen);
94
+ // Determine margins
95
+ // D) CloudShell-specific safety margins - increase to 2 for browser terminals
96
+ // Env var overrides take precedence
97
+ const rightMargin = process.env.TUI_SAFE_RIGHT_MARGIN
98
+ ? Number(process.env.TUI_SAFE_RIGHT_MARGIN)
99
+ : (isBrowserTerminal ? 3 : 1); // Browser terminals (CloudShell) need margin=3 to prevent scrollbar
100
+ const bottomMargin = process.env.TUI_SAFE_BOTTOM_MARGIN
101
+ ? Number(process.env.TUI_SAFE_BOTTOM_MARGIN)
102
+ : (isBrowserTerminal ? 2 : 1); // D) Increase bottom margin to 2 for CloudShell
103
+ // Apply margins (HARD INVARIANT: treat last column as "radioactive")
104
+ // A) Use safe terminal size helper: safeCols = Math.max(1, effectiveCols - rightMargin)
105
+ // But also enforce minimum of 60 for usability
106
+ const safeCols = Math.max(60, Math.max(1, effectiveCols - rightMargin));
107
+ const safeRows = Math.max(20, effectiveRows - bottomMargin);
108
+ return {
109
+ cols: safeCols,
110
+ rows: safeRows,
111
+ rawCols: effectiveCols,
112
+ rawRows: effectiveRows,
113
+ screenCols: details.screenCols,
114
+ stdoutCols: details.stdoutCols === Infinity ? 0 : details.stdoutCols,
115
+ envCols: details.envCols === Infinity ? 0 : details.envCols,
116
+ isBrowserTerminal,
117
+ platform: os.platform(),
118
+ term: process.env.TERM || 'unknown',
119
+ rightMargin,
120
+ bottomMargin,
121
+ };
122
+ }
123
+ //# sourceMappingURL=safeViewport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"safeViewport.js","sourceRoot":"","sources":["../../../../src/ui/v4/engine/safeViewport.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * ⚠️ FROZEN: This file is part of V4 TUI which is FROZEN.
3
+ * DO NOT MODIFY. Development moved to V5.
4
+ * See FROZEN.md in v4 directory.
5
+ *
6
+ * Terminal Profile - Detects terminal capabilities and safe mode
7
+ *
8
+ * Safe mode is enabled when:
9
+ * - Terminal doesn't support Unicode
10
+ * - Terminal has very limited capabilities
11
+ * - Running in constrained environments (CI, etc.)
12
+ */
13
+ import type { Widgets } from 'neo-blessed';
14
+ export interface TerminalProfile {
15
+ isSafeMode: boolean;
16
+ safeCols: number;
17
+ safeRows: number;
18
+ supportsUnicode: boolean;
19
+ supportsBorders: boolean;
20
+ platform: string;
21
+ term: string;
22
+ }
23
+ /**
24
+ * Get safe terminal dimensions
25
+ *
26
+ * safeCols = Math.max(1, screen.cols - 1)
27
+ * safeRows = screen.rows
28
+ */
29
+ export declare function getSafeTerminalSize(screen: Widgets.Screen | {
30
+ cols: number;
31
+ rows: number;
32
+ }): {
33
+ cols: number;
34
+ rows: number;
35
+ };
36
+ /**
37
+ * Get terminal profile
38
+ */
39
+ export declare function getTerminalProfile(screen: Widgets.Screen): TerminalProfile;
40
+ /**
41
+ * Get ASCII border characters (for safe mode)
42
+ */
43
+ export declare function getBorderChars(useAscii: boolean): {
44
+ horizontal: string;
45
+ vertical: string;
46
+ topLeft: string;
47
+ topRight: string;
48
+ bottomLeft: string;
49
+ bottomRight: string;
50
+ leftT: string;
51
+ rightT: string;
52
+ topT: string;
53
+ bottomT: string;
54
+ cross: string;
55
+ };
56
+ //# sourceMappingURL=terminalProfile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminalProfile.d.ts","sourceRoot":"","sources":["../../../../src/ui/v4/engine/terminalProfile.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,OAAO,CAAC;IACzB,eAAe,EAAE,OAAO,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAS3H;AA2CD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,GAAG,eAAe,CAiB1E;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,OAAO,GAAG;IACjD,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf,CA+BA"}