4runr-os 2.1.12 → 2.1.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
File without changes
@@ -11,7 +11,8 @@ import type { LayoutSpec, LayoutRect } from './computeLayout.js';
11
11
  */
12
12
  export declare function mkBox(screen: Widgets.Screen, rect: LayoutRect, label: string, safeW: number, safeH: number, topGuard?: number): Widgets.Box;
13
13
  /**
14
- * Apply layout - create all boxes from spec (MK2 Hotfix: Pass topGuard)
14
+ * Apply layout - create all boxes from spec
15
+ * Handles wide (3-column), compact (2-column), and narrow (1-column) modes
15
16
  */
16
17
  export declare function applyLayout(screen: Widgets.Screen, spec: LayoutSpec): Widgets.Box[];
17
18
  //# sourceMappingURL=applyLayout.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"applyLayout.d.ts","sourceRoot":"","sources":["../../../src/tui_mk2/layout/applyLayout.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAgB,EAAE,KAAK,OAAO,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGjE;;GAEG;AACH,wBAAgB,KAAK,CACnB,MAAM,EAAE,OAAO,CAAC,MAAM,EACtB,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,QAAQ,GAAE,MAAU,GACnB,OAAO,CAAC,GAAG,CAkBb;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAkBnF"}
1
+ {"version":3,"file":"applyLayout.d.ts","sourceRoot":"","sources":["../../../src/tui_mk2/layout/applyLayout.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAgB,EAAE,KAAK,OAAO,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGjE;;GAEG;AACH,wBAAgB,KAAK,CACnB,MAAM,EAAE,OAAO,CAAC,MAAM,EACtB,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,QAAQ,GAAE,MAAU,GACnB,OAAO,CAAC,GAAG,CAkBb;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAgCnF"}
@@ -28,19 +28,38 @@ export function mkBox(screen, rect, label, safeW, safeH, topGuard = 0) {
28
28
  });
29
29
  }
30
30
  /**
31
- * Apply layout - create all boxes from spec (MK2 Hotfix: Pass topGuard)
31
+ * Apply layout - create all boxes from spec
32
+ * Handles wide (3-column), compact (2-column), and narrow (1-column) modes
32
33
  */
33
34
  export function applyLayout(screen, spec) {
34
35
  const boxes = [];
35
- // Left column
36
- boxes.push(mkBox(screen, spec.rects.posture, 'POSTURE', spec.safeW, spec.safeH, spec.topGuard));
37
- boxes.push(mkBox(screen, spec.rects.resources, 'RESOURCES', spec.safeW, spec.safeH, spec.topGuard));
38
- boxes.push(mkBox(screen, spec.rects.assets, 'ASSETS', spec.safeW, spec.safeH, spec.topGuard));
39
- // Center column
40
- boxes.push(mkBox(screen, spec.rects.operations, 'OPERATIONS', spec.safeW, spec.safeH, spec.topGuard));
41
- // Right column
42
- boxes.push(mkBox(screen, spec.rects.network, 'NETWORK', spec.safeW, spec.safeH, spec.topGuard));
43
- boxes.push(mkBox(screen, spec.rects.capabilities, 'CAPABILITIES', spec.safeW, spec.safeH, spec.topGuard));
36
+ if (spec.mode === 'wide') {
37
+ // Wide: 3 columns (left: posture/resources/assets, center: operations, right: network/capabilities)
38
+ boxes.push(mkBox(screen, spec.rects.posture, 'POSTURE', spec.safeW, spec.safeH, spec.topGuard));
39
+ boxes.push(mkBox(screen, spec.rects.resources, 'RESOURCES', spec.safeW, spec.safeH, spec.topGuard));
40
+ boxes.push(mkBox(screen, spec.rects.assets, 'ASSETS', spec.safeW, spec.safeH, spec.topGuard));
41
+ boxes.push(mkBox(screen, spec.rects.operations, 'OPERATIONS', spec.safeW, spec.safeH, spec.topGuard));
42
+ boxes.push(mkBox(screen, spec.rects.network, 'NETWORK', spec.safeW, spec.safeH, spec.topGuard));
43
+ boxes.push(mkBox(screen, spec.rects.capabilities, 'CAPABILITIES', spec.safeW, spec.safeH, spec.topGuard));
44
+ }
45
+ else if (spec.mode === 'compact') {
46
+ // Compact: 2 columns (left: posture/resources/assets, right: operations/network/capabilities)
47
+ boxes.push(mkBox(screen, spec.rects.posture, 'POSTURE', spec.safeW, spec.safeH, spec.topGuard));
48
+ boxes.push(mkBox(screen, spec.rects.resources, 'RESOURCES', spec.safeW, spec.safeH, spec.topGuard));
49
+ boxes.push(mkBox(screen, spec.rects.assets, 'ASSETS', spec.safeW, spec.safeH, spec.topGuard));
50
+ boxes.push(mkBox(screen, spec.rects.operations, 'OPERATIONS', spec.safeW, spec.safeH, spec.topGuard));
51
+ boxes.push(mkBox(screen, spec.rects.network, 'NETWORK', spec.safeW, spec.safeH, spec.topGuard));
52
+ boxes.push(mkBox(screen, spec.rects.capabilities, 'CAPABILITIES', spec.safeW, spec.safeH, spec.topGuard));
53
+ }
54
+ else {
55
+ // Narrow: 1 column (all panels stacked)
56
+ boxes.push(mkBox(screen, spec.rects.posture, 'POSTURE', spec.safeW, spec.safeH, spec.topGuard));
57
+ boxes.push(mkBox(screen, spec.rects.resources, 'RESOURCES', spec.safeW, spec.safeH, spec.topGuard));
58
+ boxes.push(mkBox(screen, spec.rects.assets, 'ASSETS', spec.safeW, spec.safeH, spec.topGuard));
59
+ boxes.push(mkBox(screen, spec.rects.operations, 'OPERATIONS', spec.safeW, spec.safeH, spec.topGuard));
60
+ boxes.push(mkBox(screen, spec.rects.network, 'NETWORK', spec.safeW, spec.safeH, spec.topGuard));
61
+ boxes.push(mkBox(screen, spec.rects.capabilities, 'CAPABILITIES', spec.safeW, spec.safeH, spec.topGuard));
62
+ }
44
63
  // Note: COMMAND is created separately as a textbox (see mk2App.ts)
45
64
  return boxes;
46
65
  }
@@ -1 +1 @@
1
- {"version":3,"file":"applyLayout.js","sourceRoot":"","sources":["../../../src/tui_mk2/layout/applyLayout.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,OAAyB,MAAM,aAAa,CAAC;AAEpD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD;;GAEG;AACH,MAAM,UAAU,KAAK,CACnB,MAAsB,EACtB,IAAgB,EAChB,KAAa,EACb,KAAa,EACb,KAAa,EACb,WAAmB,CAAC;IAEpB,sDAAsD;IACtD,aAAa,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;IAE5C,OAAO,OAAO,CAAC,GAAG,CAAC;QACjB,MAAM,EAAE,MAAM;QACd,GAAG,EAAE,IAAI,CAAC,CAAC;QACX,IAAI,EAAE,IAAI,CAAC,CAAC;QACZ,KAAK,EAAE,IAAI,CAAC,CAAC;QACb,MAAM,EAAE,IAAI,CAAC,CAAC;QACd,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;QACxB,KAAK,EAAE,IAAI,KAAK,GAAG,EAAG,gCAAgC;QACtD,IAAI,EAAE,KAAK;QACX,KAAK,EAAE;YACL,EAAE,EAAE,MAAM;YACV,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE;SACvB;KACK,CAAgB,CAAC;AAC3B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,MAAsB,EAAE,IAAgB;IAClE,MAAM,KAAK,GAAkB,EAAE,CAAC;IAEhC,cAAc;IACd,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAChG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,WAAW,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IACpG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAE9F,gBAAgB;IAChB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,YAAY,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEtG,eAAe;IACf,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAChG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,cAAc,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAE1G,mEAAmE;IAEnE,OAAO,KAAK,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"applyLayout.js","sourceRoot":"","sources":["../../../src/tui_mk2/layout/applyLayout.ts"],"names":[],"mappings":"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"}
@@ -1,21 +1,25 @@
1
1
  /**
2
- * MK2 Phase 1B: Layout Spec - Hard Numbers + Clamps
2
+ * MK2 Layout Engine - Deterministic layout computation
3
3
  *
4
- * All layout computed from safe canvas + invariants
5
- * No percentages until stable - use clamped fixed numbers
4
+ * Fixed layout engine that ensures no overflow:
5
+ * - All boxes must satisfy: x + w <= safeW (so maxX = x + w - 1 <= safeW - 1)
6
+ * - Accounts for gutters and borders
7
+ * - Supports wide (3-column), compact (2-column), and narrow (1-column) layouts
6
8
  */
7
- export declare const RIGHT_GUARD = 4;
8
- export declare const BOTTOM_GUARD = 3;
9
+ export declare const SAFE_RIGHT_MARGIN = 2;
10
+ export declare const SAFE_BOTTOM_MARGIN = 1;
9
11
  export declare const TOP_GUARD = 1;
10
- export declare const GUTTER = 1;
11
- export declare const PAD = 0;
12
+ export declare const GUTTER_X = 1;
13
+ export declare const GUTTER_Y = 1;
12
14
  export interface LayoutRect {
13
15
  x: number;
14
16
  y: number;
15
17
  w: number;
16
18
  h: number;
17
19
  }
20
+ export type LayoutMode = 'wide' | 'compact' | 'narrow';
18
21
  export interface LayoutSpec {
22
+ mode: LayoutMode;
19
23
  safeW: number;
20
24
  safeH: number;
21
25
  cols: number;
@@ -42,14 +46,20 @@ export interface LayoutSpec {
42
46
  };
43
47
  }
44
48
  /**
45
- * Compute safe canvas dimensions (MK2 Hotfix: Account for TOP_GUARD)
49
+ * Compute safe canvas dimensions
46
50
  */
47
51
  export declare function getSafeCanvas(cols: number, rows: number): {
48
52
  safeW: number;
49
53
  safeH: number;
50
54
  };
55
+ /**
56
+ * Validate layout - check if all rects fit within safe bounds
57
+ * Rule: x + w <= safeW (so maxX = x + w - 1 <= safeW - 1)
58
+ */
59
+ export declare function validateLayout(layout: LayoutSpec): string[];
51
60
  /**
52
61
  * Compute layout spec from screen dimensions
62
+ * Minimums: 80 cols / 20 rows (absolute), 90 cols / 22 rows (narrow), 100 cols / 30 rows (compact), 160 cols / 40 rows (wide)
53
63
  */
54
64
  export declare function computeLayout(cols: number, rows: number): LayoutSpec;
55
65
  //# sourceMappingURL=computeLayout.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"computeLayout.d.ts","sourceRoot":"","sources":["../../../src/tui_mk2/layout/computeLayout.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,eAAO,MAAM,WAAW,IAAI,CAAC;AAC7B,eAAO,MAAM,YAAY,IAAI,CAAC;AAC9B,eAAO,MAAM,SAAS,IAAI,CAAC;AAC3B,eAAO,MAAM,MAAM,IAAI,CAAC;AACxB,eAAO,MAAM,GAAG,IAAI,CAAC;AAErB,MAAM,WAAW,UAAU;IACzB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE;QACL,OAAO,EAAE,UAAU,CAAC;QACpB,SAAS,EAAE,UAAU,CAAC;QACtB,MAAM,EAAE,UAAU,CAAC;QACnB,UAAU,EAAE,UAAU,CAAC;QACvB,OAAO,EAAE,UAAU,CAAC;QACpB,YAAY,EAAE,UAAU,CAAC;QACzB,OAAO,EAAE,UAAU,CAAC;KACrB,CAAC;CACH;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAI1F;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,CA2HpE"}
1
+ {"version":3,"file":"computeLayout.d.ts","sourceRoot":"","sources":["../../../src/tui_mk2/layout/computeLayout.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,eAAO,MAAM,iBAAiB,IAAI,CAAC;AACnC,eAAO,MAAM,kBAAkB,IAAI,CAAC;AACpC,eAAO,MAAM,SAAS,IAAI,CAAC;AAC3B,eAAO,MAAM,QAAQ,IAAI,CAAC;AAC1B,eAAO,MAAM,QAAQ,IAAI,CAAC;AAE1B,MAAM,WAAW,UAAU;IACzB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAC;AAEvD,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE;QACL,OAAO,EAAE,UAAU,CAAC;QACpB,SAAS,EAAE,UAAU,CAAC;QACtB,MAAM,EAAE,UAAU,CAAC;QACnB,UAAU,EAAE,UAAU,CAAC;QACvB,OAAO,EAAE,UAAU,CAAC;QACpB,YAAY,EAAE,UAAU,CAAC;QACzB,OAAO,EAAE,UAAU,CAAC;KACrB,CAAC;CACH;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAI1F;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,EAAE,CAyB3D;AA+JD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,CAiDpE"}
@@ -1,134 +1,235 @@
1
1
  /**
2
- * MK2 Phase 1B: Layout Spec - Hard Numbers + Clamps
2
+ * MK2 Layout Engine - Deterministic layout computation
3
3
  *
4
- * All layout computed from safe canvas + invariants
5
- * No percentages until stable - use clamped fixed numbers
4
+ * Fixed layout engine that ensures no overflow:
5
+ * - All boxes must satisfy: x + w <= safeW (so maxX = x + w - 1 <= safeW - 1)
6
+ * - Accounts for gutters and borders
7
+ * - Supports wide (3-column), compact (2-column), and narrow (1-column) layouts
6
8
  */
7
- import { clamp } from './invariants.js';
8
- // Constants (MK2 Hotfix: Increased guards to kill scrollbars in browser terminals)
9
- export const RIGHT_GUARD = 4; // reserve last col + extra (was 2)
10
- export const BOTTOM_GUARD = 3; // reserve last row + extra (was 2)
11
- export const TOP_GUARD = 1; // reserve top row for debug overlay
12
- export const GUTTER = 1;
13
- export const PAD = 0; // keep 0 for now; padding causes drift
9
+ // Constants
10
+ export const SAFE_RIGHT_MARGIN = 2; // Reserve right edge (prevents scrollbars)
11
+ export const SAFE_BOTTOM_MARGIN = 1; // Reserve bottom edge
12
+ export const TOP_GUARD = 1; // Reserve top row for debug overlay
13
+ export const GUTTER_X = 1; // Horizontal gutter between columns
14
+ export const GUTTER_Y = 1; // Vertical gutter between rows
14
15
  /**
15
- * Compute safe canvas dimensions (MK2 Hotfix: Account for TOP_GUARD)
16
+ * Compute safe canvas dimensions
16
17
  */
17
18
  export function getSafeCanvas(cols, rows) {
18
- const safeW = Math.max(0, cols - RIGHT_GUARD);
19
- const safeH = Math.max(0, rows - TOP_GUARD - BOTTOM_GUARD);
19
+ const safeW = Math.max(0, cols - SAFE_RIGHT_MARGIN);
20
+ const safeH = Math.max(0, rows - TOP_GUARD - SAFE_BOTTOM_MARGIN);
20
21
  return { safeW, safeH };
21
22
  }
22
23
  /**
23
- * Compute layout spec from screen dimensions
24
+ * Validate layout - check if all rects fit within safe bounds
25
+ * Rule: x + w <= safeW (so maxX = x + w - 1 <= safeW - 1)
24
26
  */
25
- export function computeLayout(cols, rows) {
26
- // Safe canvas
27
- const { safeW, safeH } = getSafeCanvas(cols, rows);
28
- // Minimum terminal size check
29
- const MIN_COLS = 120;
30
- const MIN_ROWS = 35;
31
- if (cols < MIN_COLS || rows < MIN_ROWS) {
32
- throw new Error(`Terminal too small: ${cols}x${rows} (minimum ${MIN_COLS}x${MIN_ROWS})`);
27
+ export function validateLayout(layout) {
28
+ const errors = [];
29
+ const { safeW, safeH, topGuard } = layout;
30
+ for (const [name, rect] of Object.entries(layout.rects)) {
31
+ if (rect.x < 0) {
32
+ errors.push(`${name}: x=${rect.x} < 0`);
33
+ }
34
+ if (rect.y < topGuard) {
35
+ errors.push(`${name}: y=${rect.y} < topGuard=${topGuard}`);
36
+ }
37
+ if (rect.w < 1 || rect.h < 1) {
38
+ errors.push(`${name}: invalid size w=${rect.w} h=${rect.h}`);
39
+ }
40
+ // Check: x + w <= safeW (ensures maxX = x + w - 1 <= safeW - 1)
41
+ if (rect.x + rect.w > safeW) {
42
+ errors.push(`${name}: x+w=${rect.x + rect.w} > safeW=${safeW} (overflow=${rect.x + rect.w - safeW})`);
43
+ }
44
+ const maxY = topGuard + safeH;
45
+ if (rect.y + rect.h > maxY) {
46
+ errors.push(`${name}: y+h=${rect.y + rect.h} > maxY=${maxY} (overflow=${rect.y + rect.h - maxY})`);
47
+ }
33
48
  }
34
- // Column widths (clamped)
35
- let leftW = clamp(Math.floor(safeW * 0.18), 26, 34);
36
- let rightW = clamp(Math.floor(safeW * 0.20), 26, 36);
37
- let centerW = safeW - leftW - rightW - (GUTTER * 2);
38
- // If center too small, shrink side columns
49
+ return errors;
50
+ }
51
+ /**
52
+ * Compute wide 3-column layout
53
+ * Guarantees: leftX + leftW + GUTTER_X + centerW + GUTTER_X + rightW <= safeW
54
+ */
55
+ function computeWideLayout(cols, rows, safeW, safeH) {
56
+ const LEFT_W = 30;
57
+ const RIGHT_W = 30;
58
+ // Calculate center width ensuring total <= safeW - 1 (off-by-one safety)
59
+ // Total width = LEFT_W + GUTTER_X + centerW + GUTTER_X + RIGHT_W
60
+ // We need: total <= safeW - 1
61
+ // So: centerW <= safeW - LEFT_W - RIGHT_W - GUTTER_X * 2 - 1
62
+ const centerW = safeW - LEFT_W - RIGHT_W - (GUTTER_X * 2) - 1;
39
63
  if (centerW < 40) {
40
- const deficit = 40 - centerW;
41
- const shrinkLeft = Math.min(deficit, leftW - 22);
42
- leftW -= shrinkLeft;
43
- const shrinkRight = Math.min(deficit - shrinkLeft, rightW - 22);
44
- rightW -= shrinkRight;
45
- centerW = safeW - leftW - rightW - (GUTTER * 2);
64
+ throw new Error('Center too narrow for wide layout');
46
65
  }
47
- // X positions
48
66
  const leftX = 0;
49
- const centerX = leftW + GUTTER;
50
- const rightX = leftW + GUTTER + centerW + GUTTER;
51
- // Bottom command bar height
52
- const cmdH = 3; // 1 border top + 1 input row + 1 bottom spacing
53
- // Usable height (above command bar)
54
- const usableH = safeH - cmdH - GUTTER; // leave gutter above command
55
- // Vertical layout heights
56
- // Left stack: posture=9, resources=12, assets=remaining
67
+ const centerX = LEFT_W + GUTTER_X;
68
+ const rightX = LEFT_W + GUTTER_X + centerW + GUTTER_X;
69
+ // Verify: rightX + RIGHT_W = LEFT_W + GUTTER_X + centerW + GUTTER_X + RIGHT_W
70
+ // = LEFT_W + RIGHT_W + centerW + GUTTER_X * 2
71
+ // = safeW - 1 <= safeW ✓
72
+ const cmdH = 3;
73
+ const usableH = safeH - cmdH - GUTTER_Y;
57
74
  const postureH = 9;
58
75
  const resourcesH = 12;
59
- const assetsH = Math.max(6, usableH - postureH - resourcesH - (GUTTER * 2));
60
- // Right stack: network=12, capabilities=remaining
76
+ const assetsH = Math.max(6, usableH - postureH - resourcesH - (GUTTER_Y * 2));
61
77
  const networkH = 12;
62
- const capabilitiesH = Math.max(6, usableH - networkH - GUTTER);
63
- // Center: operations takes full usable height
78
+ const capabilitiesH = Math.max(6, usableH - networkH - GUTTER_Y);
64
79
  const operationsH = Math.max(6, usableH);
65
- // Y positions (MK2 Hotfix: Account for TOP_GUARD)
66
- const leftY = TOP_GUARD; // Start after debug overlay line
80
+ const leftY = TOP_GUARD;
67
81
  const centerY = TOP_GUARD;
68
82
  const rightY = TOP_GUARD;
69
83
  const cmdY = TOP_GUARD + safeH - cmdH;
70
- // Build rects
71
84
  const rects = {
72
- posture: {
73
- x: leftX,
74
- y: leftY,
75
- w: leftW,
76
- h: postureH,
77
- },
78
- resources: {
79
- x: leftX,
80
- y: leftY + postureH + GUTTER,
81
- w: leftW,
82
- h: resourcesH,
83
- },
84
- assets: {
85
- x: leftX,
86
- y: leftY + postureH + GUTTER + resourcesH + GUTTER,
87
- w: leftW,
88
- h: assetsH,
89
- },
90
- operations: {
91
- x: centerX,
92
- y: centerY,
93
- w: centerW,
94
- h: operationsH,
95
- },
96
- network: {
97
- x: rightX,
98
- y: rightY,
99
- w: rightW,
100
- h: networkH,
101
- },
102
- capabilities: {
103
- x: rightX,
104
- y: rightY + networkH + GUTTER,
105
- w: rightW,
106
- h: capabilitiesH,
107
- },
108
- command: {
109
- x: 0,
110
- y: cmdY,
111
- w: safeW - 1, // MK2 Hotfix: Shrink by 1 for breathing room
112
- h: cmdH,
113
- },
85
+ posture: { x: leftX, y: leftY, w: LEFT_W, h: postureH },
86
+ resources: { x: leftX, y: leftY + postureH + GUTTER_Y, w: LEFT_W, h: resourcesH },
87
+ assets: { x: leftX, y: leftY + postureH + GUTTER_Y + resourcesH + GUTTER_Y, w: LEFT_W, h: assetsH },
88
+ operations: { x: centerX, y: centerY, w: centerW, h: operationsH },
89
+ network: { x: rightX, y: rightY, w: RIGHT_W, h: networkH },
90
+ capabilities: { x: rightX, y: rightY + networkH + GUTTER_Y, w: RIGHT_W, h: capabilitiesH },
91
+ command: { x: 0, y: cmdY, w: safeW - 1, h: cmdH },
92
+ };
93
+ return {
94
+ mode: 'wide',
95
+ safeW, safeH, cols, rows,
96
+ leftW: LEFT_W, centerW, rightW: RIGHT_W,
97
+ leftX, centerX, rightX,
98
+ cmdH, usableH,
99
+ topGuard: TOP_GUARD,
100
+ rightGuard: SAFE_RIGHT_MARGIN,
101
+ bottomGuard: SAFE_BOTTOM_MARGIN,
102
+ rects,
103
+ };
104
+ }
105
+ /**
106
+ * Compute compact 2-column layout
107
+ */
108
+ function computeCompactLayout(cols, rows, safeW, safeH) {
109
+ const LEFT_W = Math.floor(safeW * 0.35);
110
+ const RIGHT_W = safeW - LEFT_W - GUTTER_X - 1; // -1 for off-by-one safety
111
+ const leftX = 0;
112
+ const rightX = LEFT_W + GUTTER_X;
113
+ const cmdH = 3;
114
+ const usableH = safeH - cmdH - GUTTER_Y;
115
+ const leftY = TOP_GUARD;
116
+ const rightY = TOP_GUARD;
117
+ const cmdY = TOP_GUARD + safeH - cmdH;
118
+ const leftStackH = Math.floor((usableH - GUTTER_Y * 2) / 3);
119
+ const postureH = leftStackH;
120
+ const resourcesH = leftStackH;
121
+ const assetsH = usableH - postureH - resourcesH - (GUTTER_Y * 2);
122
+ const operationsH = Math.floor(usableH * 0.6);
123
+ const networkH = Math.floor((usableH - operationsH - GUTTER_Y) / 2);
124
+ const capabilitiesH = usableH - operationsH - networkH - GUTTER_Y;
125
+ const rects = {
126
+ posture: { x: leftX, y: leftY, w: LEFT_W, h: postureH },
127
+ resources: { x: leftX, y: leftY + postureH + GUTTER_Y, w: LEFT_W, h: resourcesH },
128
+ assets: { x: leftX, y: leftY + postureH + GUTTER_Y + resourcesH + GUTTER_Y, w: LEFT_W, h: assetsH },
129
+ operations: { x: rightX, y: rightY, w: RIGHT_W, h: operationsH },
130
+ network: { x: rightX, y: rightY + operationsH + GUTTER_Y, w: RIGHT_W, h: networkH },
131
+ capabilities: { x: rightX, y: rightY + operationsH + GUTTER_Y + networkH + GUTTER_Y, w: RIGHT_W, h: capabilitiesH },
132
+ command: { x: 0, y: cmdY, w: safeW - 1, h: cmdH },
133
+ };
134
+ return {
135
+ mode: 'compact',
136
+ safeW, safeH, cols, rows,
137
+ leftW: LEFT_W, centerW: 0, rightW: RIGHT_W,
138
+ leftX, centerX: 0, rightX,
139
+ cmdH, usableH,
140
+ topGuard: TOP_GUARD,
141
+ rightGuard: SAFE_RIGHT_MARGIN,
142
+ bottomGuard: SAFE_BOTTOM_MARGIN,
143
+ rects,
144
+ };
145
+ }
146
+ /**
147
+ * Compute narrow 1-column layout (for very small terminals)
148
+ */
149
+ function computeNarrowLayout(cols, rows, safeW, safeH) {
150
+ const cmdH = 3;
151
+ const usableH = safeH - cmdH - GUTTER_Y;
152
+ const cmdY = TOP_GUARD + safeH - cmdH;
153
+ // Single column, full width
154
+ const colW = safeW - 1; // -1 for off-by-one safety
155
+ const colX = 0;
156
+ // Stack all panels vertically
157
+ // Operations gets more space (1.5x), others share remaining space
158
+ const operationsH = Math.floor(usableH * 0.3); // 30% for operations
159
+ const remainingH = usableH - operationsH - GUTTER_Y * 5;
160
+ const smallPanelH = Math.floor(remainingH / 5); // 5 other panels
161
+ let currentY = TOP_GUARD;
162
+ const rects = {
163
+ posture: { x: colX, y: currentY, w: colW, h: smallPanelH },
164
+ resources: { x: colX, y: currentY + smallPanelH + GUTTER_Y, w: colW, h: smallPanelH },
165
+ assets: { x: colX, y: currentY + (smallPanelH + GUTTER_Y) * 2, w: colW, h: smallPanelH },
166
+ operations: { x: colX, y: currentY + (smallPanelH + GUTTER_Y) * 3, w: colW, h: operationsH },
167
+ network: { x: colX, y: currentY + (smallPanelH + GUTTER_Y) * 3 + operationsH + GUTTER_Y, w: colW, h: smallPanelH },
168
+ capabilities: { x: colX, y: currentY + (smallPanelH + GUTTER_Y) * 3 + operationsH + GUTTER_Y + smallPanelH + GUTTER_Y, w: colW, h: smallPanelH },
169
+ command: { x: 0, y: cmdY, w: safeW - 1, h: cmdH },
114
170
  };
115
171
  return {
116
- safeW,
117
- safeH,
118
- cols,
119
- rows,
120
- leftW,
121
- centerW,
122
- rightW,
123
- leftX,
124
- centerX,
125
- rightX,
126
- cmdH,
127
- usableH,
172
+ mode: 'narrow',
173
+ safeW, safeH, cols, rows,
174
+ leftW: colW, centerW: 0, rightW: 0,
175
+ leftX: colX, centerX: 0, rightX: 0,
176
+ cmdH, usableH,
128
177
  topGuard: TOP_GUARD,
129
- rightGuard: RIGHT_GUARD,
130
- bottomGuard: BOTTOM_GUARD,
178
+ rightGuard: SAFE_RIGHT_MARGIN,
179
+ bottomGuard: SAFE_BOTTOM_MARGIN,
131
180
  rects,
132
181
  };
133
182
  }
183
+ /**
184
+ * Compute layout spec from screen dimensions
185
+ * Minimums: 80 cols / 20 rows (absolute), 90 cols / 22 rows (narrow), 100 cols / 30 rows (compact), 160 cols / 40 rows (wide)
186
+ */
187
+ export function computeLayout(cols, rows) {
188
+ const { safeW, safeH } = getSafeCanvas(cols, rows);
189
+ // Absolute minimum: too small for anything
190
+ if (cols < 80 || rows < 20) {
191
+ throw new Error(`Terminal too small: ${cols}x${rows} (minimum 80x20)`);
192
+ }
193
+ // Try wide layout (160+ cols, 40+ rows)
194
+ if (cols >= 160 && rows >= 40) {
195
+ try {
196
+ const layout = computeWideLayout(cols, rows, safeW, safeH);
197
+ const errors = validateLayout(layout);
198
+ if (errors.length === 0) {
199
+ return layout;
200
+ }
201
+ }
202
+ catch {
203
+ // Fall through to compact
204
+ }
205
+ }
206
+ // Try compact layout (100+ cols, 30+ rows)
207
+ if (cols >= 100 && rows >= 30) {
208
+ try {
209
+ const layout = computeCompactLayout(cols, rows, safeW, safeH);
210
+ const errors = validateLayout(layout);
211
+ if (errors.length === 0) {
212
+ return layout;
213
+ }
214
+ }
215
+ catch {
216
+ // Fall through to narrow
217
+ }
218
+ }
219
+ // Try narrow layout (90+ cols, 22+ rows)
220
+ if (cols >= 90 && rows >= 22) {
221
+ try {
222
+ const layout = computeNarrowLayout(cols, rows, safeW, safeH);
223
+ const errors = validateLayout(layout);
224
+ if (errors.length === 0) {
225
+ return layout;
226
+ }
227
+ }
228
+ catch {
229
+ // Terminal is too small
230
+ }
231
+ }
232
+ // Too small for any layout
233
+ throw new Error(`Terminal too small: ${cols}x${rows} (minimum 90x22 for narrow layout)`);
234
+ }
134
235
  //# sourceMappingURL=computeLayout.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"computeLayout.js","sourceRoot":"","sources":["../../../src/tui_mk2/layout/computeLayout.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"computeLayout.js","sourceRoot":"","sources":["../../../src/tui_mk2/layout/computeLayout.ts"],"names":[],"mappings":"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"}
@@ -10,8 +10,8 @@ export interface Box {
10
10
  h: number;
11
11
  }
12
12
  /**
13
- * Assert that a box fits within safe canvas bounds (MK2 Hotfix: Stricter clamping with >=)
14
- * Throws error if box touches or exceeds bounds - this prevents scrollbars in browser terminals
13
+ * Assert that a box fits within safe canvas bounds
14
+ * Rule: x + w <= safeW (ensures maxX = x + w - 1 <= safeW - 1)
15
15
  */
16
16
  export declare function assertBoxFits(box: Box, safeW: number, safeH: number, topGuard?: number): void;
17
17
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"invariants.d.ts","sourceRoot":"","sources":["../../../src/tui_mk2/layout/invariants.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,GAAG;IAClB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAU,GAAG,IAAI,CA+BhG;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAErE"}
1
+ {"version":3,"file":"invariants.d.ts","sourceRoot":"","sources":["../../../src/tui_mk2/layout/invariants.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,GAAG;IAClB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAU,GAAG,IAAI,CA4BhG;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAErE"}
@@ -4,27 +4,25 @@
4
4
  * Crash early if layout math is wrong - don't hack around it.
5
5
  */
6
6
  /**
7
- * Assert that a box fits within safe canvas bounds (MK2 Hotfix: Stricter clamping with >=)
8
- * Throws error if box touches or exceeds bounds - this prevents scrollbars in browser terminals
7
+ * Assert that a box fits within safe canvas bounds
8
+ * Rule: x + w <= safeW (ensures maxX = x + w - 1 <= safeW - 1)
9
9
  */
10
10
  export function assertBoxFits(box, safeW, safeH, topGuard = 0) {
11
11
  if (box.x < 0 || box.y < topGuard) {
12
12
  throw new Error(`Box negative position: x=${box.x} y=${box.y} (must be x>=0, y>=${topGuard})`);
13
13
  }
14
- if (box.w <= 0 || box.h <= 0) {
15
- throw new Error(`Box non-positive size: w=${box.w} h=${box.h} (must be > 0)`);
14
+ if (box.w < 1 || box.h < 1) {
15
+ throw new Error(`Box invalid size: w=${box.w} h=${box.h} (must be >= 1)`);
16
16
  }
17
- const maxX = box.x + box.w;
18
- const maxY = box.y + box.h;
19
- const safeMaxY = topGuard + safeH;
20
- // MK2 Hotfix: Use >= (not >) to prevent touching the edge (causes scrollbars)
21
- if (maxX >= safeW) {
22
- throw new Error(`Box touches/overflows X: maxX=${maxX} >= safeW=${safeW} ` +
23
- `(box: x=${box.x} w=${box.w} overflow=${maxX - safeW})`);
17
+ // Check: x + w <= safeW (ensures maxX = x + w - 1 <= safeW - 1)
18
+ if (box.x + box.w > safeW) {
19
+ throw new Error(`Box overflows X: x+w=${box.x + box.w} > safeW=${safeW} ` +
20
+ `(box: x=${box.x} w=${box.w} overflow=${box.x + box.w - safeW})`);
24
21
  }
25
- if (maxY >= safeMaxY) {
26
- throw new Error(`Box touches/overflows Y: maxY=${maxY} >= safeMaxY=${safeMaxY} ` +
27
- `(box: y=${box.y} h=${box.h} topGuard=${topGuard} overflow=${maxY - safeMaxY})`);
22
+ const safeMaxY = topGuard + safeH;
23
+ if (box.y + box.h > safeMaxY) {
24
+ throw new Error(`Box overflows Y: y+h=${box.y + box.h} > safeMaxY=${safeMaxY} ` +
25
+ `(box: y=${box.y} h=${box.h} topGuard=${topGuard} overflow=${box.y + box.h - safeMaxY})`);
28
26
  }
29
27
  }
30
28
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"invariants.js","sourceRoot":"","sources":["../../../src/tui_mk2/layout/invariants.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,GAAQ,EAAE,KAAa,EAAE,KAAa,EAAE,WAAmB,CAAC;IACxF,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,QAAQ,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CACb,4BAA4B,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,sBAAsB,QAAQ,GAAG,CAC9E,CAAC;IACJ,CAAC;IAED,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CACb,4BAA4B,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,gBAAgB,CAC7D,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IAC3B,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IAC3B,MAAM,QAAQ,GAAG,QAAQ,GAAG,KAAK,CAAC;IAElC,8EAA8E;IAC9E,IAAI,IAAI,IAAI,KAAK,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CACb,iCAAiC,IAAI,aAAa,KAAK,GAAG;YAC1D,WAAW,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,aAAa,IAAI,GAAG,KAAK,GAAG,CACxD,CAAC;IACJ,CAAC;IAED,IAAI,IAAI,IAAI,QAAQ,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CACb,iCAAiC,IAAI,gBAAgB,QAAQ,GAAG;YAChE,WAAW,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,aAAa,QAAQ,aAAa,IAAI,GAAG,QAAQ,GAAG,CAChF,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,KAAK,CAAC,KAAa,EAAE,GAAW,EAAE,GAAW;IAC3D,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;AAC7C,CAAC"}
1
+ {"version":3,"file":"invariants.js","sourceRoot":"","sources":["../../../src/tui_mk2/layout/invariants.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,GAAQ,EAAE,KAAa,EAAE,KAAa,EAAE,WAAmB,CAAC;IACxF,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,QAAQ,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CACb,4BAA4B,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,sBAAsB,QAAQ,GAAG,CAC9E,CAAC;IACJ,CAAC;IAED,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CACb,uBAAuB,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,iBAAiB,CACzD,CAAC;IACJ,CAAC;IAED,gEAAgE;IAChE,IAAI,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CACb,wBAAwB,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,YAAY,KAAK,GAAG;YACzD,WAAW,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,aAAa,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CACjE,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,QAAQ,GAAG,KAAK,CAAC;IAClC,IAAI,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,QAAQ,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CACb,wBAAwB,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,eAAe,QAAQ,GAAG;YAC/D,WAAW,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,aAAa,QAAQ,aAAa,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,QAAQ,GAAG,CACzF,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,KAAK,CAAC,KAAa,EAAE,GAAW,EAAE,GAAW;IAC3D,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;AAC7C,CAAC"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * MK2 Layout Engine - Single Source of Truth for Layout Computation
3
+ *
4
+ * This engine properly accounts for:
5
+ * - Borders (consume 2 cols/rows)
6
+ * - Safe margins (browser terminals need extra space)
7
+ * - Gutters between panels
8
+ * - Compact layout fallback for small terminals
9
+ */
10
+ export interface LayoutRect {
11
+ x: number;
12
+ y: number;
13
+ w: number;
14
+ h: number;
15
+ }
16
+ export type LayoutMode = 'wide' | 'compact';
17
+ export interface LayoutSpec {
18
+ mode: LayoutMode;
19
+ safeW: number;
20
+ safeH: number;
21
+ cols: number;
22
+ rows: number;
23
+ rects: {
24
+ posture: LayoutRect;
25
+ resources: LayoutRect;
26
+ assets: LayoutRect;
27
+ operations: LayoutRect;
28
+ network: LayoutRect;
29
+ capabilities: LayoutRect;
30
+ command: LayoutRect;
31
+ };
32
+ debug: {
33
+ leftW: number;
34
+ centerW: number;
35
+ rightW: number;
36
+ leftX: number;
37
+ centerX: number;
38
+ rightX: number;
39
+ rightEdge: number;
40
+ };
41
+ }
42
+ export declare const SAFE_RIGHT_MARGIN = 2;
43
+ export declare const SAFE_BOTTOM_MARGIN = 1;
44
+ export declare const TOP_GUARD = 1;
45
+ export declare const GUTTER_X = 1;
46
+ export declare const GUTTER_Y = 1;
47
+ export declare const BORDER_PAD_X = 2;
48
+ export declare const BORDER_PAD_Y = 2;
49
+ export declare const MIN_CENTER_W = 60;
50
+ export declare const MIN_TERMINAL_COLS = 120;
51
+ export declare const MIN_TERMINAL_ROWS = 30;
52
+ /**
53
+ * Compute safe drawing area (accounts for margins)
54
+ */
55
+ export declare function getSafeCanvas(cols: number, rows: number): {
56
+ safeW: number;
57
+ safeH: number;
58
+ };
59
+ /**
60
+ * Validate that all rects fit within safe bounds
61
+ */
62
+ export declare function validateLayout(spec: LayoutSpec): {
63
+ valid: boolean;
64
+ errors: string[];
65
+ };
66
+ /**
67
+ * Compute layout - main entry point
68
+ */
69
+ export declare function computeLayout(cols: number, rows: number): LayoutSpec;
70
+ //# sourceMappingURL=layoutEngine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layoutEngine.d.ts","sourceRoot":"","sources":["../../../src/tui_mk2/layout/layoutEngine.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,WAAW,UAAU;IACzB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,SAAS,CAAC;AAE5C,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE;QACL,OAAO,EAAE,UAAU,CAAC;QACpB,SAAS,EAAE,UAAU,CAAC;QACtB,MAAM,EAAE,UAAU,CAAC;QACnB,UAAU,EAAE,UAAU,CAAC;QACvB,OAAO,EAAE,UAAU,CAAC;QACpB,YAAY,EAAE,UAAU,CAAC;QACzB,OAAO,EAAE,UAAU,CAAC;KACrB,CAAC;IAEF,KAAK,EAAE;QACL,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAGD,eAAO,MAAM,iBAAiB,IAAI,CAAC;AACnC,eAAO,MAAM,kBAAkB,IAAI,CAAC;AACpC,eAAO,MAAM,SAAS,IAAI,CAAC;AAC3B,eAAO,MAAM,QAAQ,IAAI,CAAC;AAC1B,eAAO,MAAM,QAAQ,IAAI,CAAC;AAC1B,eAAO,MAAM,YAAY,IAAI,CAAC;AAC9B,eAAO,MAAM,YAAY,IAAI,CAAC;AAG9B,eAAO,MAAM,YAAY,KAAK,CAAC;AAC/B,eAAO,MAAM,iBAAiB,MAAM,CAAC;AACrC,eAAO,MAAM,iBAAiB,KAAK,CAAC;AAEpC;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAI1F;AAwOD;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,UAAU,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAyBrF;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,CAsCpE"}
@@ -0,0 +1,297 @@
1
+ /**
2
+ * MK2 Layout Engine - Single Source of Truth for Layout Computation
3
+ *
4
+ * This engine properly accounts for:
5
+ * - Borders (consume 2 cols/rows)
6
+ * - Safe margins (browser terminals need extra space)
7
+ * - Gutters between panels
8
+ * - Compact layout fallback for small terminals
9
+ */
10
+ // Constants - DO NOT CHANGE without testing
11
+ export const SAFE_RIGHT_MARGIN = 2; // Browser terminals need 2 cols
12
+ export const SAFE_BOTTOM_MARGIN = 1; // Reserve bottom row
13
+ export const TOP_GUARD = 1; // Reserve top row for debug overlay
14
+ export const GUTTER_X = 1; // Horizontal spacing between columns
15
+ export const GUTTER_Y = 1; // Vertical spacing between panels
16
+ export const BORDER_PAD_X = 2; // Left + right border consume 2 cols
17
+ export const BORDER_PAD_Y = 2; // Top + bottom border consume 2 rows
18
+ // Minimum sizes
19
+ export const MIN_CENTER_W = 60; // Minimum center column width
20
+ export const MIN_TERMINAL_COLS = 120;
21
+ export const MIN_TERMINAL_ROWS = 30; // Reduced from 35 for graceful degradation
22
+ /**
23
+ * Compute safe drawing area (accounts for margins)
24
+ */
25
+ export function getSafeCanvas(cols, rows) {
26
+ const safeW = Math.max(0, cols - SAFE_RIGHT_MARGIN);
27
+ const safeH = Math.max(0, rows - TOP_GUARD - SAFE_BOTTOM_MARGIN);
28
+ return { safeW, safeH };
29
+ }
30
+ /**
31
+ * Clamp a value between min and max
32
+ */
33
+ function clamp(value, min, max) {
34
+ return Math.max(min, Math.min(max, value));
35
+ }
36
+ /**
37
+ * Compute wide layout (3 columns)
38
+ */
39
+ function computeWideLayout(cols, rows, safeW, safeH) {
40
+ // Column widths (percentage-based with clamps)
41
+ let leftW = clamp(Math.floor(safeW * 0.18), 26, 34);
42
+ let rightW = clamp(Math.floor(safeW * 0.20), 26, 34);
43
+ let centerW = safeW - leftW - rightW - (GUTTER_X * 2);
44
+ // If center too small, shrink side columns
45
+ if (centerW < MIN_CENTER_W) {
46
+ const deficit = MIN_CENTER_W - centerW;
47
+ const shrinkLeft = Math.min(deficit, leftW - 22);
48
+ leftW -= shrinkLeft;
49
+ const shrinkRight = Math.min(deficit - shrinkLeft, rightW - 22);
50
+ rightW -= shrinkRight;
51
+ centerW = safeW - leftW - rightW - (GUTTER_X * 2);
52
+ }
53
+ // Validate center is still big enough
54
+ if (centerW < MIN_CENTER_W) {
55
+ return null; // Fall back to compact
56
+ }
57
+ // X positions
58
+ const leftX = 0;
59
+ const centerX = leftW + GUTTER_X;
60
+ const rightX = leftW + GUTTER_X + centerW + GUTTER_X;
61
+ // Validate right edge doesn't exceed safeW
62
+ const rightEdge = rightX + rightW;
63
+ if (rightEdge > safeW) {
64
+ // Shrink center to make room
65
+ const overflow = rightEdge - safeW;
66
+ centerW = Math.max(MIN_CENTER_W, centerW - overflow);
67
+ const newRightX = leftW + GUTTER_X + centerW + GUTTER_X;
68
+ const newRightEdge = newRightX + rightW;
69
+ if (newRightEdge > safeW) {
70
+ // Still doesn't fit - shrink right column
71
+ rightW = safeW - newRightX;
72
+ if (rightW < 22) {
73
+ return null; // Fall back to compact
74
+ }
75
+ }
76
+ }
77
+ // Command bar height
78
+ const cmdH = 3;
79
+ const usableH = safeH - cmdH - GUTTER_Y;
80
+ // Left stack heights
81
+ const postureH = clamp(Math.floor(usableH * 0.22), 8, 12);
82
+ const resourcesH = clamp(Math.floor(usableH * 0.22), 8, 12);
83
+ const assetsH = Math.max(6, usableH - postureH - resourcesH - (GUTTER_Y * 2));
84
+ // Right stack heights
85
+ const networkH = clamp(Math.floor(usableH * 0.45), 10, 14);
86
+ const capabilitiesH = Math.max(6, usableH - networkH - GUTTER_Y);
87
+ // Center height
88
+ const operationsH = Math.max(6, usableH);
89
+ // Y positions (account for TOP_GUARD)
90
+ const leftY = TOP_GUARD;
91
+ const centerY = TOP_GUARD;
92
+ const rightY = TOP_GUARD;
93
+ const cmdY = TOP_GUARD + safeH - cmdH;
94
+ // Build rects
95
+ const rects = {
96
+ posture: {
97
+ x: leftX,
98
+ y: leftY,
99
+ w: leftW,
100
+ h: postureH,
101
+ },
102
+ resources: {
103
+ x: leftX,
104
+ y: leftY + postureH + GUTTER_Y,
105
+ w: leftW,
106
+ h: resourcesH,
107
+ },
108
+ assets: {
109
+ x: leftX,
110
+ y: leftY + postureH + GUTTER_Y + resourcesH + GUTTER_Y,
111
+ w: leftW,
112
+ h: assetsH,
113
+ },
114
+ operations: {
115
+ x: centerX,
116
+ y: centerY,
117
+ w: centerW,
118
+ h: operationsH,
119
+ },
120
+ network: {
121
+ x: rightX,
122
+ y: rightY,
123
+ w: rightW,
124
+ h: networkH,
125
+ },
126
+ capabilities: {
127
+ x: rightX,
128
+ y: rightY + networkH + GUTTER_Y,
129
+ w: rightW,
130
+ h: capabilitiesH,
131
+ },
132
+ command: {
133
+ x: 0,
134
+ y: cmdY,
135
+ w: safeW - 1, // Shrink by 1 for breathing room
136
+ h: cmdH,
137
+ },
138
+ };
139
+ return {
140
+ mode: 'wide',
141
+ safeW,
142
+ safeH,
143
+ cols,
144
+ rows,
145
+ rects,
146
+ debug: {
147
+ leftW,
148
+ centerW,
149
+ rightW,
150
+ leftX,
151
+ centerX,
152
+ rightX,
153
+ rightEdge: rightX + rightW,
154
+ },
155
+ };
156
+ }
157
+ /**
158
+ * Compute compact layout (vertical stack for small terminals)
159
+ */
160
+ function computeCompactLayout(cols, rows, safeW, safeH) {
161
+ // Compact: Stack everything vertically
162
+ // Top: OPERATIONS (biggest)
163
+ // Middle: NETWORK + CAPABILITIES (side by side)
164
+ // Bottom: POSTURE + RESOURCES + ASSETS (stacked)
165
+ const cmdH = 3;
166
+ const usableH = safeH - cmdH - GUTTER_Y;
167
+ // Operations takes 50% of usable height
168
+ const operationsH = Math.floor(usableH * 0.5);
169
+ // Middle section: NETWORK and CAPABILITIES side by side
170
+ const middleH = Math.floor(usableH * 0.3);
171
+ const middleW = Math.floor((safeW - GUTTER_X) / 2);
172
+ // Bottom section: POSTURE, RESOURCES, ASSETS stacked
173
+ const bottomH = usableH - operationsH - middleH - (GUTTER_Y * 2);
174
+ const bottomPanelH = Math.floor(bottomH / 3);
175
+ const y = TOP_GUARD;
176
+ const cmdY = TOP_GUARD + safeH - cmdH;
177
+ const rects = {
178
+ operations: {
179
+ x: 0,
180
+ y: y,
181
+ w: safeW - 1,
182
+ h: operationsH,
183
+ },
184
+ network: {
185
+ x: 0,
186
+ y: y + operationsH + GUTTER_Y,
187
+ w: middleW,
188
+ h: middleH,
189
+ },
190
+ capabilities: {
191
+ x: middleW + GUTTER_X,
192
+ y: y + operationsH + GUTTER_Y,
193
+ w: safeW - middleW - GUTTER_X - 1,
194
+ h: middleH,
195
+ },
196
+ posture: {
197
+ x: 0,
198
+ y: y + operationsH + GUTTER_Y + middleH + GUTTER_Y,
199
+ w: safeW - 1,
200
+ h: bottomPanelH,
201
+ },
202
+ resources: {
203
+ x: 0,
204
+ y: y + operationsH + GUTTER_Y + middleH + GUTTER_Y + bottomPanelH + GUTTER_Y,
205
+ w: safeW - 1,
206
+ h: bottomPanelH,
207
+ },
208
+ assets: {
209
+ x: 0,
210
+ y: y + operationsH + GUTTER_Y + middleH + GUTTER_Y + (bottomPanelH * 2) + (GUTTER_Y * 2),
211
+ w: safeW - 1,
212
+ h: Math.max(6, bottomH - (bottomPanelH * 2) - (GUTTER_Y * 2)),
213
+ },
214
+ command: {
215
+ x: 0,
216
+ y: cmdY,
217
+ w: safeW - 1,
218
+ h: cmdH,
219
+ },
220
+ };
221
+ return {
222
+ mode: 'compact',
223
+ safeW,
224
+ safeH,
225
+ cols,
226
+ rows,
227
+ rects,
228
+ debug: {
229
+ leftW: 0,
230
+ centerW: safeW - 1,
231
+ rightW: 0,
232
+ leftX: 0,
233
+ centerX: 0,
234
+ rightX: 0,
235
+ rightEdge: safeW - 1,
236
+ },
237
+ };
238
+ }
239
+ /**
240
+ * Validate that all rects fit within safe bounds
241
+ */
242
+ export function validateLayout(spec) {
243
+ const errors = [];
244
+ for (const [name, rect] of Object.entries(spec.rects)) {
245
+ const maxX = rect.x + rect.w;
246
+ const maxY = rect.y + rect.h;
247
+ if (rect.x < 0) {
248
+ errors.push(`${name}: x=${rect.x} < 0`);
249
+ }
250
+ if (rect.y < TOP_GUARD) {
251
+ errors.push(`${name}: y=${rect.y} < TOP_GUARD=${TOP_GUARD}`);
252
+ }
253
+ if (maxX > spec.safeW) {
254
+ errors.push(`${name}: maxX=${maxX} > safeW=${spec.safeW} (x=${rect.x} w=${rect.w})`);
255
+ }
256
+ if (maxY > spec.safeH + TOP_GUARD) {
257
+ errors.push(`${name}: maxY=${maxY} > safeMaxY=${spec.safeH + TOP_GUARD} (y=${rect.y} h=${rect.h})`);
258
+ }
259
+ }
260
+ return {
261
+ valid: errors.length === 0,
262
+ errors,
263
+ };
264
+ }
265
+ /**
266
+ * Compute layout - main entry point
267
+ */
268
+ export function computeLayout(cols, rows) {
269
+ // Minimum terminal size check (but don't hard fail - use compact)
270
+ if (cols < MIN_TERMINAL_COLS || rows < MIN_TERMINAL_ROWS) {
271
+ // Try compact layout even for very small terminals
272
+ const { safeW, safeH } = getSafeCanvas(cols, rows);
273
+ if (safeW < 40 || safeH < 10) {
274
+ throw new Error(`Terminal too small: ${cols}x${rows} (minimum ${MIN_TERMINAL_COLS}x${MIN_TERMINAL_ROWS})`);
275
+ }
276
+ }
277
+ const { safeW, safeH } = getSafeCanvas(cols, rows);
278
+ // Try wide layout first
279
+ const wideLayout = computeWideLayout(cols, rows, safeW, safeH);
280
+ if (wideLayout) {
281
+ // Validate wide layout
282
+ const validation = validateLayout(wideLayout);
283
+ if (validation.valid) {
284
+ return wideLayout;
285
+ }
286
+ // If validation fails, fall back to compact
287
+ }
288
+ // Fall back to compact layout
289
+ const compactLayout = computeCompactLayout(cols, rows, safeW, safeH);
290
+ const validation = validateLayout(compactLayout);
291
+ if (!validation.valid) {
292
+ // Even compact doesn't fit - this is a real error
293
+ throw new Error(`Layout validation failed: ${validation.errors.join('; ')}`);
294
+ }
295
+ return compactLayout;
296
+ }
297
+ //# sourceMappingURL=layoutEngine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layoutEngine.js","sourceRoot":"","sources":["../../../src/tui_mk2/layout/layoutEngine.ts"],"names":[],"mappings":"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"}
@@ -36,6 +36,7 @@ export declare class MK2App {
36
36
  private destroyAll;
37
37
  /**
38
38
  * Create error box for terminal too small
39
+ * Shows required minimum and detected size, keeps app running
39
40
  */
40
41
  private createErrorBox;
41
42
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"mk2App.d.ts","sourceRoot":"","sources":["../../src/tui_mk2/mk2App.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAQH,qBAAa,MAAM;IACjB,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,KAAK,CAAqB;IAClC,OAAO,CAAC,YAAY,CAA4B;IAChD,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,aAAa,CAA4B;;IAMjD;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAU5B;;OAEG;IACH,OAAO,CAAC,MAAM;IAgHd;;OAEG;IACH,OAAO,CAAC,SAAS;IAgBjB;;OAEG;YACW,YAAY;IAM1B;;OAEG;IACH,OAAO,CAAC,UAAU;IAsDlB;;OAEG;IACH,OAAO,CAAC,cAAc;IAsBtB;;OAEG;IACH,IAAI,IAAI,IAAI;CAGb;AAED;;GAEG;AACH,wBAAsB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAuB9C"}
1
+ {"version":3,"file":"mk2App.d.ts","sourceRoot":"","sources":["../../src/tui_mk2/mk2App.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAQH,qBAAa,MAAM;IACjB,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,KAAK,CAAqB;IAClC,OAAO,CAAC,YAAY,CAA4B;IAChD,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,aAAa,CAA4B;;IAMjD;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAU5B;;OAEG;IACH,OAAO,CAAC,MAAM;IA4Hd;;OAEG;IACH,OAAO,CAAC,SAAS;IAgBjB;;OAEG;YACW,YAAY;IAM1B;;OAEG;IACH,OAAO,CAAC,UAAU;IAsDlB;;;OAGG;IACH,OAAO,CAAC,cAAc;IA4CtB;;OAEG;IACH,IAAI,IAAI,IAAI;CAGb;AAED;;GAEG;AACH,wBAAsB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAuB9C"}
@@ -127,11 +127,22 @@ export class MK2App {
127
127
  }, 30);
128
128
  }
129
129
  catch (error) {
130
- // Terminal too small - show error box
130
+ // Terminal too small - show error overlay (don't crash)
131
131
  const { safeW, safeH } = getSafeCanvas(cols, rows);
132
- const errorBox = this.createErrorBox(screen, error instanceof Error ? error.message : String(error), safeW, safeH);
132
+ const errorMsg = error instanceof Error ? error.message : String(error);
133
+ const errorBox = this.createErrorBox(screen, errorMsg, cols, rows, safeW, safeH);
133
134
  screen.append(errorBox);
134
135
  screen.render();
136
+ // Keep app running so resizing fixes it
137
+ // Set up resize handler to retry layout
138
+ screen.on('resize', () => {
139
+ const newCols = screen.width || 80;
140
+ const newRows = screen.height || 24;
141
+ // Retry render on resize
142
+ setTimeout(() => {
143
+ this.render();
144
+ }, 100);
145
+ });
135
146
  }
136
147
  }
137
148
  /**
@@ -216,24 +227,38 @@ export class MK2App {
216
227
  }
217
228
  /**
218
229
  * Create error box for terminal too small
230
+ * Shows required minimum and detected size, keeps app running
219
231
  */
220
- createErrorBox(screen, message, safeW, safeH) {
221
- const errorW = Math.min(60, safeW - 4);
222
- const errorH = 5;
223
- const errorX = Math.floor((safeW - errorW) / 2);
224
- const errorY = Math.floor((safeH - errorH) / 2);
232
+ createErrorBox(screen, message, cols, rows, safeW, safeH) {
233
+ // Extract minimum requirements from error message if possible
234
+ const minMatch = message.match(/minimum (\d+)x(\d+)/);
235
+ const minCols = minMatch ? parseInt(minMatch[1], 10) : 80;
236
+ const minRows = minMatch ? parseInt(minMatch[2], 10) : 25;
237
+ const errorW = Math.min(70, Math.max(50, cols - 10));
238
+ const errorH = 8;
239
+ const errorX = Math.max(0, Math.floor((cols - errorW) / 2));
240
+ const errorY = Math.max(0, Math.floor((rows - errorH) / 2));
241
+ const content = [
242
+ ' TERMINAL TOO SMALL ',
243
+ '',
244
+ `Detected: ${cols} x ${rows}`,
245
+ `Required: ${minCols} x ${minRows}`,
246
+ '',
247
+ 'Resize terminal to continue',
248
+ 'App will auto-reload on resize',
249
+ ].join('\n');
225
250
  return blessed.box({
226
251
  parent: screen,
227
252
  top: errorY,
228
253
  left: errorX,
229
254
  width: errorW,
230
255
  height: errorH,
231
- content: message,
256
+ content,
232
257
  border: { type: 'line' },
233
258
  tags: false,
234
259
  style: {
235
- fg: 'red',
236
- border: { fg: 'red' },
260
+ fg: 'yellow',
261
+ border: { fg: 'yellow' },
237
262
  },
238
263
  });
239
264
  }
@@ -1 +1 @@
1
- {"version":3,"file":"mk2App.js","sourceRoot":"","sources":["../../src/tui_mk2/mk2App.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mk2App.js","sourceRoot":"","sources":["../../src/tui_mk2/mk2App.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "4runr-os",
3
- "version": "2.1.12",
3
+ "version": "2.1.13",
4
4
  "type": "module",
5
5
  "description": "4Runr AI Agent OS - Interactive terminal for managing AI agents",
6
6
  "main": "dist/index.js",
@@ -9,12 +9,6 @@
9
9
  "4runr-os": "dist/index.js",
10
10
  "4r": "dist/index.js"
11
11
  },
12
- "scripts": {
13
- "build": "tsc",
14
- "dev": "tsc --watch",
15
- "prepublishOnly": "npm run build",
16
- "tui:mk1": "cross-env TUI_MK1=1 TUI_DEBUG=1 TUI_ALLOW_STDOUT=1 TERM=xterm-256color node dist/index.js"
17
- },
18
12
  "keywords": [
19
13
  "4runr",
20
14
  "ai",
@@ -44,5 +38,10 @@
44
38
  },
45
39
  "publishConfig": {
46
40
  "access": "public"
41
+ },
42
+ "scripts": {
43
+ "build": "tsc",
44
+ "dev": "tsc --watch",
45
+ "tui:mk1": "cross-env TUI_MK1=1 TUI_DEBUG=1 TUI_ALLOW_STDOUT=1 TERM=xterm-256color node dist/index.js"
47
46
  }
48
- }
47
+ }