@tacuchi/agent-workflow-cli 8.0.0 → 9.1.0

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 (185) hide show
  1. package/dist/application/self/install-skill.d.ts +2 -0
  2. package/dist/application/self/install-skill.d.ts.map +1 -1
  3. package/dist/application/self/install-skill.js +75 -3
  4. package/dist/application/self/install-skill.js.map +1 -1
  5. package/dist/application/self/uninstall.d.ts.map +1 -1
  6. package/dist/application/self/uninstall.js +37 -1
  7. package/dist/application/self/uninstall.js.map +1 -1
  8. package/dist/cli/main.js +0 -0
  9. package/dist/cli/tui/app.d.ts.map +1 -1
  10. package/dist/cli/tui/app.js +149 -72
  11. package/dist/cli/tui/app.js.map +1 -1
  12. package/dist/cli/tui/components/activity-feed.d.ts +16 -0
  13. package/dist/cli/tui/components/activity-feed.d.ts.map +1 -0
  14. package/dist/cli/tui/components/activity-feed.js +35 -0
  15. package/dist/cli/tui/components/activity-feed.js.map +1 -0
  16. package/dist/cli/tui/components/command-palette.d.ts +1 -1
  17. package/dist/cli/tui/components/command-palette.d.ts.map +1 -1
  18. package/dist/cli/tui/components/command-palette.js +5 -5
  19. package/dist/cli/tui/components/command-palette.js.map +1 -1
  20. package/dist/cli/tui/components/confirm-banner.d.ts +10 -0
  21. package/dist/cli/tui/components/confirm-banner.d.ts.map +1 -0
  22. package/dist/cli/tui/components/confirm-banner.js +11 -0
  23. package/dist/cli/tui/components/confirm-banner.js.map +1 -0
  24. package/dist/cli/tui/components/detail-panel.d.ts +34 -0
  25. package/dist/cli/tui/components/detail-panel.d.ts.map +1 -0
  26. package/dist/cli/tui/components/detail-panel.js +83 -0
  27. package/dist/cli/tui/components/detail-panel.js.map +1 -0
  28. package/dist/cli/tui/components/family-card.d.ts +5 -1
  29. package/dist/cli/tui/components/family-card.d.ts.map +1 -1
  30. package/dist/cli/tui/components/family-card.js +35 -4
  31. package/dist/cli/tui/components/family-card.js.map +1 -1
  32. package/dist/cli/tui/components/home-footer.d.ts +6 -0
  33. package/dist/cli/tui/components/home-footer.d.ts.map +1 -0
  34. package/dist/cli/tui/components/home-footer.js +22 -0
  35. package/dist/cli/tui/components/home-footer.js.map +1 -0
  36. package/dist/cli/tui/components/home-header.d.ts +9 -0
  37. package/dist/cli/tui/components/home-header.d.ts.map +1 -0
  38. package/dist/cli/tui/components/home-header.js +9 -0
  39. package/dist/cli/tui/components/home-header.js.map +1 -0
  40. package/dist/cli/tui/components/inline-wizard.d.ts +19 -0
  41. package/dist/cli/tui/components/inline-wizard.d.ts.map +1 -0
  42. package/dist/cli/tui/components/inline-wizard.js +16 -0
  43. package/dist/cli/tui/components/inline-wizard.js.map +1 -0
  44. package/dist/cli/tui/components/list-row.d.ts +11 -3
  45. package/dist/cli/tui/components/list-row.d.ts.map +1 -1
  46. package/dist/cli/tui/components/list-row.js +71 -13
  47. package/dist/cli/tui/components/list-row.js.map +1 -1
  48. package/dist/cli/tui/components/page-head.d.ts +8 -16
  49. package/dist/cli/tui/components/page-head.d.ts.map +1 -1
  50. package/dist/cli/tui/components/page-head.js +21 -14
  51. package/dist/cli/tui/components/page-head.js.map +1 -1
  52. package/dist/cli/tui/components/phase-card.d.ts +2 -1
  53. package/dist/cli/tui/components/phase-card.d.ts.map +1 -1
  54. package/dist/cli/tui/components/phase-card.js +9 -4
  55. package/dist/cli/tui/components/phase-card.js.map +1 -1
  56. package/dist/cli/tui/components/quick-actions.d.ts +9 -0
  57. package/dist/cli/tui/components/quick-actions.d.ts.map +1 -0
  58. package/dist/cli/tui/components/quick-actions.js +9 -0
  59. package/dist/cli/tui/components/quick-actions.js.map +1 -0
  60. package/dist/cli/tui/components/section-head.d.ts +10 -0
  61. package/dist/cli/tui/components/section-head.d.ts.map +1 -0
  62. package/dist/cli/tui/components/section-head.js +8 -0
  63. package/dist/cli/tui/components/section-head.js.map +1 -0
  64. package/dist/cli/tui/components/sidebar.d.ts +27 -0
  65. package/dist/cli/tui/components/sidebar.d.ts.map +1 -0
  66. package/dist/cli/tui/components/sidebar.js +37 -0
  67. package/dist/cli/tui/components/sidebar.js.map +1 -0
  68. package/dist/cli/tui/components/stat-tile.d.ts +4 -2
  69. package/dist/cli/tui/components/stat-tile.d.ts.map +1 -1
  70. package/dist/cli/tui/components/stat-tile.js +9 -8
  71. package/dist/cli/tui/components/stat-tile.js.map +1 -1
  72. package/dist/cli/tui/components/tabs-config.d.ts +18 -0
  73. package/dist/cli/tui/components/tabs-config.d.ts.map +1 -0
  74. package/dist/cli/tui/components/tabs-config.js +7 -0
  75. package/dist/cli/tui/components/tabs-config.js.map +1 -0
  76. package/dist/cli/tui/components/toast-stack.d.ts +3 -3
  77. package/dist/cli/tui/components/toast-stack.js +3 -3
  78. package/dist/cli/tui/data/activity.d.ts +21 -0
  79. package/dist/cli/tui/data/activity.d.ts.map +1 -0
  80. package/dist/cli/tui/data/activity.js +83 -0
  81. package/dist/cli/tui/data/activity.js.map +1 -0
  82. package/dist/cli/tui/tabs/mcp-tab.d.ts +3 -11
  83. package/dist/cli/tui/tabs/mcp-tab.d.ts.map +1 -1
  84. package/dist/cli/tui/tabs/mcp-tab.js +112 -85
  85. package/dist/cli/tui/tabs/mcp-tab.js.map +1 -1
  86. package/dist/cli/tui/tabs/project-tab.d.ts +0 -11
  87. package/dist/cli/tui/tabs/project-tab.d.ts.map +1 -1
  88. package/dist/cli/tui/tabs/project-tab.js +38 -78
  89. package/dist/cli/tui/tabs/project-tab.js.map +1 -1
  90. package/dist/cli/tui/tabs/skills-tab.d.ts +1 -21
  91. package/dist/cli/tui/tabs/skills-tab.d.ts.map +1 -1
  92. package/dist/cli/tui/tabs/skills-tab.js +65 -85
  93. package/dist/cli/tui/tabs/skills-tab.js.map +1 -1
  94. package/dist/cli/tui/tabs/status-tab.d.ts +4 -1
  95. package/dist/cli/tui/tabs/status-tab.d.ts.map +1 -1
  96. package/dist/cli/tui/tabs/status-tab.js +50 -11
  97. package/dist/cli/tui/tabs/status-tab.js.map +1 -1
  98. package/dist/cli/tui/tabs/workflow-tab.d.ts +3 -1
  99. package/dist/cli/tui/tabs/workflow-tab.d.ts.map +1 -1
  100. package/dist/cli/tui/tabs/workflow-tab.js +31 -15
  101. package/dist/cli/tui/tabs/workflow-tab.js.map +1 -1
  102. package/dist/cli/tui/theme.d.ts +75 -55
  103. package/dist/cli/tui/theme.d.ts.map +1 -1
  104. package/dist/cli/tui/theme.js +75 -50
  105. package/dist/cli/tui/theme.js.map +1 -1
  106. package/dist/domain/harnesses.d.ts.map +1 -1
  107. package/dist/domain/harnesses.js +6 -1
  108. package/dist/domain/harnesses.js.map +1 -1
  109. package/package.json +1 -1
  110. package/dist/cli/commands/orchestration.d.ts +0 -5
  111. package/dist/cli/commands/orchestration.d.ts.map +0 -1
  112. package/dist/cli/commands/orchestration.js +0 -84
  113. package/dist/cli/commands/orchestration.js.map +0 -1
  114. package/dist/cli/commands/wave2-extras.d.ts +0 -7
  115. package/dist/cli/commands/wave2-extras.d.ts.map +0 -1
  116. package/dist/cli/commands/wave2-extras.js +0 -87
  117. package/dist/cli/commands/wave2-extras.js.map +0 -1
  118. package/dist/cli/commands/wave2-final.d.ts +0 -8
  119. package/dist/cli/commands/wave2-final.d.ts.map +0 -1
  120. package/dist/cli/commands/wave2-final.js +0 -134
  121. package/dist/cli/commands/wave2-final.js.map +0 -1
  122. package/dist/cli/commands/wave4d-simple.d.ts +0 -6
  123. package/dist/cli/commands/wave4d-simple.d.ts.map +0 -1
  124. package/dist/cli/commands/wave4d-simple.js +0 -138
  125. package/dist/cli/commands/wave4d-simple.js.map +0 -1
  126. package/dist/cli/tui/components/action-modal.d.ts +0 -33
  127. package/dist/cli/tui/components/action-modal.d.ts.map +0 -1
  128. package/dist/cli/tui/components/action-modal.js +0 -41
  129. package/dist/cli/tui/components/action-modal.js.map +0 -1
  130. package/dist/cli/tui/components/confirm-modal.d.ts +0 -12
  131. package/dist/cli/tui/components/confirm-modal.d.ts.map +0 -1
  132. package/dist/cli/tui/components/confirm-modal.js +0 -18
  133. package/dist/cli/tui/components/confirm-modal.js.map +0 -1
  134. package/dist/cli/tui/components/connections-grid.d.ts +0 -8
  135. package/dist/cli/tui/components/connections-grid.d.ts.map +0 -1
  136. package/dist/cli/tui/components/connections-grid.js +0 -55
  137. package/dist/cli/tui/components/connections-grid.js.map +0 -1
  138. package/dist/cli/tui/components/connections-table.d.ts +0 -5
  139. package/dist/cli/tui/components/connections-table.d.ts.map +0 -1
  140. package/dist/cli/tui/components/connections-table.js +0 -11
  141. package/dist/cli/tui/components/connections-table.js.map +0 -1
  142. package/dist/cli/tui/components/footer.d.ts +0 -4
  143. package/dist/cli/tui/components/footer.d.ts.map +0 -1
  144. package/dist/cli/tui/components/footer.js +0 -6
  145. package/dist/cli/tui/components/footer.js.map +0 -1
  146. package/dist/cli/tui/components/frame-box.d.ts +0 -10
  147. package/dist/cli/tui/components/frame-box.d.ts.map +0 -1
  148. package/dist/cli/tui/components/frame-box.js +0 -9
  149. package/dist/cli/tui/components/frame-box.js.map +0 -1
  150. package/dist/cli/tui/components/header.d.ts +0 -14
  151. package/dist/cli/tui/components/header.d.ts.map +0 -1
  152. package/dist/cli/tui/components/header.js +0 -21
  153. package/dist/cli/tui/components/header.js.map +0 -1
  154. package/dist/cli/tui/components/host-chip.d.ts +0 -28
  155. package/dist/cli/tui/components/host-chip.d.ts.map +0 -1
  156. package/dist/cli/tui/components/host-chip.js +0 -35
  157. package/dist/cli/tui/components/host-chip.js.map +0 -1
  158. package/dist/cli/tui/components/keymap-bar.d.ts +0 -17
  159. package/dist/cli/tui/components/keymap-bar.d.ts.map +0 -1
  160. package/dist/cli/tui/components/keymap-bar.js +0 -13
  161. package/dist/cli/tui/components/keymap-bar.js.map +0 -1
  162. package/dist/cli/tui/components/pill.d.ts +0 -16
  163. package/dist/cli/tui/components/pill.d.ts.map +0 -1
  164. package/dist/cli/tui/components/pill.js +0 -24
  165. package/dist/cli/tui/components/pill.js.map +0 -1
  166. package/dist/cli/tui/components/sectioned-menu.d.ts +0 -24
  167. package/dist/cli/tui/components/sectioned-menu.d.ts.map +0 -1
  168. package/dist/cli/tui/components/sectioned-menu.js +0 -72
  169. package/dist/cli/tui/components/sectioned-menu.js.map +0 -1
  170. package/dist/cli/tui/components/tab-bar.d.ts +0 -23
  171. package/dist/cli/tui/components/tab-bar.d.ts.map +0 -1
  172. package/dist/cli/tui/components/tab-bar.js +0 -17
  173. package/dist/cli/tui/components/tab-bar.js.map +0 -1
  174. package/dist/cli/tui/screens/main-menu.d.ts +0 -8
  175. package/dist/cli/tui/screens/main-menu.d.ts.map +0 -1
  176. package/dist/cli/tui/screens/main-menu.js +0 -24
  177. package/dist/cli/tui/screens/main-menu.js.map +0 -1
  178. package/dist/cli/tui/screens/mcp-done.d.ts +0 -10
  179. package/dist/cli/tui/screens/mcp-done.d.ts.map +0 -1
  180. package/dist/cli/tui/screens/mcp-done.js +0 -24
  181. package/dist/cli/tui/screens/mcp-done.js.map +0 -1
  182. package/dist/cli/tui/screens/mcp-wizard.d.ts +0 -10
  183. package/dist/cli/tui/screens/mcp-wizard.d.ts.map +0 -1
  184. package/dist/cli/tui/screens/mcp-wizard.js +0 -97
  185. package/dist/cli/tui/screens/mcp-wizard.js.map +0 -1
@@ -0,0 +1,83 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Box, Text } from "ink";
3
+ import { colors, icons } from "../theme.js";
4
+ const DEFAULT_WIDTH = 38;
5
+ const DEFAULT_FOOTER = [
6
+ { key: "⏎", label: "apply" },
7
+ { key: "↑↓", label: "action" },
8
+ { key: "esc", label: "close" },
9
+ ];
10
+ // Separator entre name y description en la misma línea.
11
+ const NAME_DESC_SEP = " · ";
12
+ function toneColor(tone) {
13
+ switch (tone) {
14
+ case "ok":
15
+ return colors.ok;
16
+ case "warn":
17
+ return colors.warn;
18
+ case "accent":
19
+ return colors.accent;
20
+ case "err":
21
+ return colors.err;
22
+ case "dim":
23
+ return colors.dim;
24
+ case "purple":
25
+ return colors.purple;
26
+ case "info":
27
+ return colors.info;
28
+ default:
29
+ return colors.dim;
30
+ }
31
+ }
32
+ export function DetailPanel({ width = DEFAULT_WIDTH, header, statePill, actions, focusedAction, footer = DEFAULT_FOOTER, banner, }) {
33
+ return (_jsxs(Box, { flexDirection: "column", width: width, paddingLeft: 1, children: [_jsxs(Box, { flexDirection: "row", children: [header.glyph ? (_jsxs(_Fragment, { children: [_jsx(Text, { color: colors.accent, children: header.glyph }), _jsx(Text, { children: " " })] })) : null, _jsx(Text, { color: colors.bright, bold: true, children: header.name }), _jsx(Box, { flexGrow: 1 }), statePill ? _jsx(Text, { color: toneColor(statePill.tone), children: statePill.label }) : null] }), header.meta ? (_jsx(Box, { children: _jsx(Text, { color: colors.dim, children: header.meta }) })) : null, _jsx(Box, { marginTop: 1, flexDirection: "column", children: banner ? (banner) : (_jsxs(_Fragment, { children: [_jsx(Text, { color: colors.mute, children: "ACTIONS" }), _jsx(Box, { flexDirection: "column", marginTop: 0, children: actions.map((a, i) => (_jsx(DetailActionRow, { action: a, focused: i === focusedAction }, a.name))) })] })) }), _jsxs(Box, { marginTop: 1, flexDirection: "column", children: [_jsx(Text, { color: colors.borderFaint, children: "─".repeat(width - 2) }), _jsx(DetailFooter, { entries: footer })] })] }));
34
+ }
35
+ // Width interior del detail panel: DEFAULT_WIDTH - paddingLeft - safety.
36
+ const DETAIL_INNER_WIDTH = DEFAULT_WIDTH - 3;
37
+ const ACTION_INNER_PAD = 1;
38
+ function DetailActionRow({ action, focused, }) {
39
+ const nameColor = focused
40
+ ? action.danger
41
+ ? colors.err
42
+ : colors.bright
43
+ : action.danger
44
+ ? colors.err
45
+ : colors.text;
46
+ const descColor = focused
47
+ ? action.danger
48
+ ? colors.err
49
+ : colors.accentSoft
50
+ : action.danger
51
+ ? colors.faint
52
+ : colors.dim;
53
+ const focusBarColor = focused ? (action.danger ? colors.err : colors.accent) : colors.faint;
54
+ const bg = focused ? colors.bgHighlight : undefined;
55
+ const bgProp = bg ? { backgroundColor: bg } : {};
56
+ const innerPad = " ".repeat(ACTION_INNER_PAD);
57
+ // Layout 1 línea: bar + gap + pad + name + sep + desc + spacer + pad.
58
+ // El focus bar va AFUERA del bg (como list-row); bg empieza en el inner pad.
59
+ const FOCUS_OUTER = 2; // bar + gap
60
+ const nameLen = [...action.name].length;
61
+ const sepLen = action.description ? NAME_DESC_SEP.length : 0;
62
+ const fixedLen = FOCUS_OUTER + ACTION_INNER_PAD * 2 + nameLen;
63
+ const availableForDesc = Math.max(0, DETAIL_INNER_WIDTH - fixedLen - sepLen - 1);
64
+ let displayDesc = action.description ?? "";
65
+ if (action.description && [...action.description].length > availableForDesc) {
66
+ if (availableForDesc <= 1) {
67
+ displayDesc = "";
68
+ }
69
+ else {
70
+ displayDesc = `${action.description.slice(0, availableForDesc - 1)}…`;
71
+ }
72
+ }
73
+ const descLen = displayDesc ? [...displayDesc].length : 0;
74
+ const sepActualLen = displayDesc ? sepLen : 0;
75
+ const usedLen = fixedLen + sepActualLen + descLen;
76
+ const spacerLen = Math.max(1, DETAIL_INNER_WIDTH - usedLen);
77
+ const spacer = " ".repeat(spacerLen);
78
+ return (_jsxs(Box, { flexDirection: "row", marginTop: 0, children: [_jsx(Text, { color: focusBarColor, bold: focused, children: focused ? icons.focusBar : " " }), _jsx(Text, { children: " " }), _jsx(Text, { ...bgProp, children: innerPad }), _jsx(Text, { ...bgProp, color: nameColor, bold: focused, children: action.name }), displayDesc ? (_jsxs(_Fragment, { children: [_jsx(Text, { ...bgProp, color: colors.dim, children: NAME_DESC_SEP }), _jsx(Text, { ...bgProp, color: descColor, wrap: "truncate-end", children: displayDesc })] })) : null, _jsx(Text, { ...bgProp, wrap: "truncate-end", children: spacer }), _jsx(Text, { ...bgProp, children: innerPad })] }));
79
+ }
80
+ function DetailFooter({ entries }) {
81
+ return (_jsx(Box, { flexDirection: "row", children: entries.map((e, i) => (_jsxs(Box, { marginRight: i < entries.length - 1 ? 3 : 0, children: [_jsx(Text, { color: colors.accent, children: e.key }), _jsxs(Text, { color: colors.faint, children: [" ", e.label] })] }, `${e.key}-${e.label}`))) }));
82
+ }
83
+ //# sourceMappingURL=detail-panel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detail-panel.js","sourceRoot":"","sources":["../../../../src/cli/tui/components/detail-panel.tsx"],"names":[],"mappings":"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"}
@@ -5,6 +5,10 @@ export interface FamilyCardData {
5
5
  }
6
6
  export interface FamilyCardProps {
7
7
  family: FamilyCardData;
8
+ expanded?: boolean;
9
+ active?: boolean;
10
+ /** Ancho fijado por el parent (columna derecha del workflow tab). */
11
+ widthHint?: number;
8
12
  }
9
- export declare function FamilyCard({ family }: FamilyCardProps): import("react/jsx-runtime").JSX.Element;
13
+ export declare function FamilyCard({ family, expanded, active, widthHint, }: FamilyCardProps): import("react/jsx-runtime").JSX.Element;
10
14
  //# sourceMappingURL=family-card.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"family-card.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/components/family-card.tsx"],"names":[],"mappings":"AAGA,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,cAAc,CAAC;CACxB;AAED,wBAAgB,UAAU,CAAC,EAAE,MAAM,EAAE,EAAE,eAAe,2CAyBrD"}
1
+ {"version":3,"file":"family-card.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/components/family-card.tsx"],"names":[],"mappings":"AAGA,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,cAAc,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,qEAAqE;IACrE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAMD,wBAAgB,UAAU,CAAC,EACzB,MAAM,EACN,QAAgB,EAChB,MAAc,EACd,SAAS,GACV,EAAE,eAAe,2CAgEjB"}
@@ -1,7 +1,38 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Box, Text } from "ink";
3
- import { colors } from "../theme.js";
4
- export function FamilyCard({ family }) {
5
- return (_jsxs(Box, { flexDirection: "column", borderStyle: "round", borderColor: colors.border, paddingX: 1, flexGrow: 1, marginRight: 1, children: [_jsxs(Box, { children: [_jsx(Text, { color: colors.fgBright, bold: true, children: family.title }), _jsxs(Text, { color: colors.accent, children: [" ", family.items.length] })] }), _jsx(Box, { flexDirection: "column", children: family.items.map((cmd) => (_jsxs(Text, { color: colors.fg, children: ["\u00B7 ", cmd] }, cmd))) })] }));
2
+ import { Box, Text, useStdout } from "ink";
3
+ import { colors, icons } from "../theme.js";
4
+ const COLLAPSED_GLYPH = "▶";
5
+ const EXPANDED_GLYPH = "";
6
+ const INNER_PAD = 1;
7
+ export function FamilyCard({ family, expanded = false, active = false, widthHint, }) {
8
+ const { stdout } = useStdout();
9
+ const bg = active ? colors.bgHighlight : undefined;
10
+ const bgProp = bg ? { backgroundColor: bg } : {};
11
+ const innerPad = " ".repeat(INNER_PAD);
12
+ // Layout: bar + gap + pad + expand_glyph + space + title + space + count + pad.
13
+ // Bar va AFUERA del bg.
14
+ const FOCUS_OUTER = 2;
15
+ const titleLen = [...family.title].length;
16
+ const countStr = String(family.items.length);
17
+ const countLen = countStr.length;
18
+ const used = FOCUS_OUTER + INNER_PAD * 2 + 1 + 1 + titleLen + 1 + countLen;
19
+ const termCols = stdout?.columns ?? 100;
20
+ // Overhead aproximado (sin sidebar — v9.1.0 palette-home):
21
+ // ScreenFrame (6) + Main paddingX (2) + right column paddingLeft (1) = 9.
22
+ // Restamos 9 para que el spacer sea generoso; truncate-end recorta si pasa
23
+ // el borde real.
24
+ const fallbackColWidth = Math.max(20, Math.floor((termCols - 9) / 2));
25
+ const colWidth = widthHint ?? fallbackColWidth;
26
+ const spacerLen = Math.max(1, colWidth - used);
27
+ const spacer = " ".repeat(spacerLen);
28
+ const expandGlyph = expanded ? EXPANDED_GLYPH : COLLAPSED_GLYPH;
29
+ // Una sola Text con bg uniforme (incluso el focus bar tiene bg) — evita
30
+ // los problemas de mixing bg/no-bg Texts en una row que provocan blank lines
31
+ // entre rows.
32
+ const headerRow = (_jsxs(Text, { wrap: "truncate-end", children: [_jsx(Text, { ...bgProp, color: active ? colors.accent : colors.faint, children: active ? icons.focusBar : " " }), _jsxs(Text, { ...bgProp, children: [innerPad, _jsx(Text, { color: colors.accent, bold: true, children: expandGlyph }), " ", _jsx(Text, { color: colors.bright, bold: true, children: family.title }), " ", _jsx(Text, { color: colors.accent, children: countStr }), spacer, innerPad] })] }));
33
+ if (expanded) {
34
+ return (_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [headerRow, _jsx(Box, { marginLeft: 5, flexDirection: "column", children: family.items.map((cmd) => (_jsxs(Text, { color: colors.dim, children: ["\u00B7 ", cmd] }, cmd))) })] }));
35
+ }
36
+ return headerRow;
6
37
  }
7
38
  //# sourceMappingURL=family-card.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"family-card.js","sourceRoot":"","sources":["../../../../src/cli/tui/components/family-card.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAYrC,MAAM,UAAU,UAAU,CAAC,EAAE,MAAM,EAAmB;IACpD,OAAO,CACL,MAAC,GAAG,IACF,aAAa,EAAC,QAAQ,EACtB,WAAW,EAAC,OAAO,EACnB,WAAW,EAAE,MAAM,CAAC,MAAM,EAC1B,QAAQ,EAAE,CAAC,EACX,QAAQ,EAAE,CAAC,EACX,WAAW,EAAE,CAAC,aAEd,MAAC,GAAG,eACF,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,EAAE,IAAI,kBAC/B,MAAM,CAAC,KAAK,GACR,EACP,MAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,kBAAI,MAAM,CAAC,KAAK,CAAC,MAAM,IAAQ,IACrD,EACN,KAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,YACxB,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CACzB,MAAC,IAAI,IAAW,KAAK,EAAE,MAAM,CAAC,EAAE,wBAC3B,GAAG,KADG,GAAG,CAEP,CACR,CAAC,GACE,IACF,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"family-card.js","sourceRoot":"","sources":["../../../../src/cli/tui/components/family-card.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export type HomeFooterContext = "palette" | "tab";
2
+ export interface HomeFooterProps {
3
+ context: HomeFooterContext;
4
+ }
5
+ export declare function HomeFooter({ context }: HomeFooterProps): import("react/jsx-runtime").JSX.Element;
6
+ //# sourceMappingURL=home-footer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"home-footer.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/components/home-footer.tsx"],"names":[],"mappings":"AAIA,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,KAAK,CAAC;AAElD,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,iBAAiB,CAAC;CAC5B;AAmBD,wBAAgB,UAAU,CAAC,EAAE,OAAO,EAAE,EAAE,eAAe,2CAqBtD"}
@@ -0,0 +1,22 @@
1
+ import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
+ import { Box, Text } from "ink";
3
+ import { colors } from "../theme.js";
4
+ const PALETTE_KEYS = [
5
+ { key: "↑↓", action: "navigate" },
6
+ { key: "⏎", action: "run" },
7
+ { key: "esc", action: "clear/back" },
8
+ { key: "?", action: "help" },
9
+ { key: "q", action: "quit" },
10
+ ];
11
+ const TAB_KEYS = [
12
+ { key: "^K", action: "home" },
13
+ { key: "1-5", action: "tabs" },
14
+ { key: "?", action: "help" },
15
+ { key: "q", action: "quit" },
16
+ ];
17
+ const DOT = "·";
18
+ export function HomeFooter({ context }) {
19
+ const keys = context === "palette" ? PALETTE_KEYS : TAB_KEYS;
20
+ return (_jsx(Box, { children: _jsx(Text, { wrap: "truncate-end", children: keys.map((entry, idx) => (_jsxs(Text, { children: [idx > 0 ? (_jsxs(Text, { color: colors.faint, children: [" ", DOT, " "] })) : null, _jsx(Text, { color: colors.accent, children: entry.key }), _jsxs(Text, { color: colors.dim, children: [" ", entry.action] })] }, `${entry.key}-${entry.action}`))) }) }));
21
+ }
22
+ //# sourceMappingURL=home-footer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"home-footer.js","sourceRoot":"","sources":["../../../../src/cli/tui/components/home-footer.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AASrC,MAAM,YAAY,GAAkB;IAClC,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE;IACjC,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE;IAC3B,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE;IACpC,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE;IAC5B,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE;CAC7B,CAAC;AAEF,MAAM,QAAQ,GAAkB;IAC9B,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE;IAC7B,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE;IAC9B,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE;IAC5B,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE;CAC7B,CAAC;AAEF,MAAM,GAAG,GAAG,GAAG,CAAC;AAEhB,MAAM,UAAU,UAAU,CAAC,EAAE,OAAO,EAAmB;IACrD,MAAM,IAAI,GAAG,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC7D,OAAO,CACL,KAAC,GAAG,cACF,KAAC,IAAI,IAAC,IAAI,EAAC,cAAc,YACtB,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,CACxB,MAAC,IAAI,eACF,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CACT,MAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,KAAK,aACtB,IAAI,EACJ,GAAG,EACH,IAAI,IACA,CACR,CAAC,CAAC,CAAC,IAAI,EACR,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,YAAG,KAAK,CAAC,GAAG,GAAQ,EAC9C,MAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,GAAG,kBAAI,KAAK,CAAC,MAAM,IAAQ,KATtC,GAAG,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,MAAM,EAAE,CAUlC,CACR,CAAC,GACG,GACH,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { WorkspaceContext } from "./tabs-config.js";
2
+ export interface HomeHeaderProps {
3
+ brand: string;
4
+ version: string;
5
+ handle?: string;
6
+ workspaceContext: WorkspaceContext;
7
+ }
8
+ export declare function HomeHeader({ brand, version, handle, workspaceContext, }: HomeHeaderProps): import("react/jsx-runtime").JSX.Element;
9
+ //# sourceMappingURL=home-header.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"home-header.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/components/home-header.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,gBAAgB,CAAC;CACpC;AAKD,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,OAAO,EACP,MAAuB,EACvB,gBAAgB,GACjB,EAAE,eAAe,2CAgCjB"}
@@ -0,0 +1,9 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Box, Text } from "ink";
3
+ import { colors, icons } from "../theme.js";
4
+ const DEFAULT_HANDLE = "@tacuchi";
5
+ const DOT = "·";
6
+ export function HomeHeader({ brand, version, handle = DEFAULT_HANDLE, workspaceContext, }) {
7
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Text, { wrap: "truncate-end", children: [_jsx(Text, { color: colors.accent, bold: true, children: icons.brand }), _jsxs(Text, { color: colors.bright, bold: true, children: [" ", brand] }), _jsxs(Text, { color: colors.faint, children: [" ", "v", version, " ", DOT, " ", handle] })] }), _jsxs(Text, { wrap: "truncate-end", children: [_jsx(Text, { color: colors.text, children: workspaceContext.modeLabel }), _jsxs(Text, { color: colors.faint, children: [" ", DOT, " "] }), _jsx(Text, { color: colors.dim, children: workspaceContext.branchLabel }), _jsxs(Text, { color: colors.faint, children: [" ", DOT, " "] }), _jsx(Text, { color: colors.dim, children: workspaceContext.sessionsLabel })] })] }));
8
+ }
9
+ //# sourceMappingURL=home-header.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"home-header.js","sourceRoot":"","sources":["../../../../src/cli/tui/components/home-header.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAU5C,MAAM,cAAc,GAAG,UAAU,CAAC;AAClC,MAAM,GAAG,GAAG,GAAG,CAAC;AAEhB,MAAM,UAAU,UAAU,CAAC,EACzB,KAAK,EACL,OAAO,EACP,MAAM,GAAG,cAAc,EACvB,gBAAgB,GACA;IAChB,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,MAAC,IAAI,IAAC,IAAI,EAAC,cAAc,aACvB,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,kBAC7B,KAAK,CAAC,KAAK,GACP,EACP,MAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,mBAC7B,GAAG,EACH,KAAK,IACD,EACP,MAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,KAAK,aACtB,IAAI,OAAG,OAAO,OAAG,GAAG,OAAG,MAAM,IACzB,IACF,EACP,MAAC,IAAI,IAAC,IAAI,EAAC,cAAc,aACvB,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,IAAI,YAAG,gBAAgB,CAAC,SAAS,GAAQ,EAC7D,MAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,KAAK,aACtB,IAAI,EACJ,GAAG,EACH,IAAI,IACA,EACP,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,GAAG,YAAG,gBAAgB,CAAC,WAAW,GAAQ,EAC9D,MAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,KAAK,aACtB,IAAI,EACJ,GAAG,EACH,IAAI,IACA,EACP,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,GAAG,YAAG,gBAAgB,CAAC,aAAa,GAAQ,IAC3D,IACH,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,19 @@
1
+ export interface InlineWizardField {
2
+ label: string;
3
+ value: string;
4
+ /** When true, the field shows a blinking caret at the end (visual only — Ink doesn't animate). */
5
+ active?: boolean;
6
+ }
7
+ export interface InlineWizardProps {
8
+ step: number;
9
+ totalSteps: number;
10
+ stepLabel: string;
11
+ fields: InlineWizardField[];
12
+ /** Live preview block (e.g. JSON). Multi-line string with \n separators. */
13
+ preview?: string;
14
+ /** Override default footer. */
15
+ footer?: string;
16
+ width?: number;
17
+ }
18
+ export declare function InlineWizard({ step, totalSteps, stepLabel, fields, preview, footer, width, }: InlineWizardProps): import("react/jsx-runtime").JSX.Element;
19
+ //# sourceMappingURL=inline-wizard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inline-wizard.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/components/inline-wizard.tsx"],"names":[],"mappings":"AAGA,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,kGAAkG;IAClG,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,iBAAiB,EAAE,CAAC;IAC5B,4EAA4E;IAC5E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,+BAA+B;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAID,wBAAgB,YAAY,CAAC,EAC3B,IAAI,EACJ,UAAU,EACV,SAAS,EACT,MAAM,EACN,OAAO,EACP,MAAuB,EACvB,KAAU,GACX,EAAE,iBAAiB,2CA4BnB"}
@@ -0,0 +1,16 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Box, Text } from "ink";
3
+ import { colors, icons } from "../theme.js";
4
+ const DEFAULT_FOOTER = "⏎ register · tab back to step 1 · esc cancel";
5
+ export function InlineWizard({ step, totalSteps, stepLabel, fields, preview, footer = DEFAULT_FOOTER, width = 56, }) {
6
+ return (_jsxs(Box, { flexDirection: "row", marginTop: 1, children: [_jsx(Box, { children: _jsx(Text, { color: colors.accent, children: icons.focusBar }) }), _jsxs(Box, { flexDirection: "column", paddingLeft: 1, flexGrow: 1, children: [_jsxs(Box, { children: [_jsxs(Text, { color: colors.accent, children: ["Step ", step, " of ", totalSteps, " \u00B7", " "] }), _jsx(Text, { color: colors.accent, bold: true, children: stepLabel.toUpperCase() })] }), fields.map((f) => (_jsx(WizardFieldRow, { field: f, width: width }, f.label))), preview ? _jsx(PreviewBlock, { content: preview }) : null, _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: colors.dim, children: footer }) })] })] }));
7
+ }
8
+ function WizardFieldRow({ field, width, }) {
9
+ const labelText = `${field.label}: `;
10
+ return (_jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsx(Text, { color: colors.mute, children: field.label.toUpperCase() }), _jsxs(Box, { children: [_jsx(Text, { color: colors.dim, children: "┌" }), _jsx(Text, { color: colors.dim, children: "─".repeat(Math.max(0, width - 4)) }), _jsx(Text, { color: colors.dim, children: "┐" })] }), _jsxs(Box, { children: [_jsx(Text, { color: colors.dim, children: "│ " }), _jsx(Text, { color: colors.bright, children: field.value }), field.active ? _jsx(Text, { color: colors.accent, children: icons.caret }) : null, _jsx(Box, { flexGrow: 1 }), _jsx(Text, { color: colors.dim, children: " │" })] }), _jsxs(Box, { children: [_jsx(Text, { color: colors.dim, children: "└" }), _jsx(Text, { color: colors.dim, children: "─".repeat(Math.max(0, width - 4)) }), _jsx(Text, { color: colors.dim, children: "┘" })] }), _jsx(Text, { color: colors.faint, children: labelText })] }));
11
+ }
12
+ function PreviewBlock({ content }) {
13
+ const lines = content.split("\n");
14
+ return (_jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsx(Text, { color: colors.mute, children: "PREVIEW \u00B7 profile.json" }), lines.map((line, idx) => (_jsx(Text, { color: colors.dim, children: line }, `prev-${idx}-${line.slice(0, 8)}`)))] }));
15
+ }
16
+ //# sourceMappingURL=inline-wizard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inline-wizard.js","sourceRoot":"","sources":["../../../../src/cli/tui/components/inline-wizard.tsx"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- export type MetaTone = "ok" | "warn" | "accent" | "dim" | "err";
1
+ export type MetaTone = "ok" | "warn" | "accent" | "dim" | "err" | "purple" | "info";
2
2
  export interface MetaChip {
3
3
  label: string;
4
4
  tone?: MetaTone;
@@ -8,6 +8,7 @@ export interface StatePill {
8
8
  tone?: MetaTone;
9
9
  }
10
10
  export interface ListRowProps {
11
+ /** Glyph at left after focus bar; e.g. ▤ (db) for MCP, ◆ (host) for Skills. */
11
12
  icon?: string;
12
13
  iconActive?: boolean;
13
14
  title: string;
@@ -16,7 +17,14 @@ export interface ListRowProps {
16
17
  state?: StatePill;
17
18
  chevron?: boolean;
18
19
  active?: boolean;
19
- last?: boolean;
20
+ /** When true, the row is rendered dimmed (e.g. inline wizard backdrop). */
21
+ dimmed?: boolean;
22
+ /**
23
+ * Ancho disponible del row (en cells). Si se pasa, se usa exactamente.
24
+ * Pasalo desde el parent (que sabe si el detail panel está abierto).
25
+ * Fallback: termCols - 36.
26
+ */
27
+ widthHint?: number;
20
28
  }
21
- export declare function ListRow({ icon, iconActive, title, subtitle, meta, state, chevron, active, }: ListRowProps): import("react/jsx-runtime").JSX.Element;
29
+ export declare function ListRow({ icon, iconActive, title, subtitle, meta, state, chevron, active, dimmed, widthHint, }: ListRowProps): import("react/jsx-runtime").JSX.Element;
22
30
  //# sourceMappingURL=list-row.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"list-row.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/components/list-row.tsx"],"names":[],"mappings":"AAGA,MAAM,MAAM,QAAQ,GAAG,IAAI,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,GAAG,KAAK,CAAC;AAEhE,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,QAAQ,CAAC;CACjB;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,QAAQ,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAC;IAClB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAyBD,wBAAgB,OAAO,CAAC,EACtB,IAAiB,EACjB,UAAkB,EAClB,KAAK,EACL,QAAQ,EACR,IAAS,EACT,KAAK,EACL,OAAe,EACf,MAAc,GACf,EAAE,YAAY,2CA0Cd"}
1
+ {"version":3,"file":"list-row.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/components/list-row.tsx"],"names":[],"mappings":"AAGA,MAAM,MAAM,QAAQ,GAAG,IAAI,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEpF,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,QAAQ,CAAC;CACjB;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,QAAQ,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,+EAA+E;IAC/E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAC;IAClB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,2EAA2E;IAC3E,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA6BD,wBAAgB,OAAO,CAAC,EACtB,IAAmB,EACnB,UAAkB,EAClB,KAAK,EACL,QAAQ,EACR,IAAS,EACT,KAAK,EACL,OAAe,EACf,MAAc,EACd,MAAc,EACd,SAAS,GACV,EAAE,YAAY,2CAwHd"}
@@ -1,27 +1,85 @@
1
- import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
- import { Box, Text } from "ink";
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Box, Text, useStdout } from "ink";
3
3
  import { colors, icons } from "../theme.js";
4
+ // Padding interno (en cells) que se aplica DENTRO del marker bg, a cada lado
5
+ // del contenido. Hace que el bg no se vea pegado a las letras.
6
+ const INNER_PAD = 1;
4
7
  function toneColor(tone) {
5
8
  switch (tone) {
6
9
  case "ok":
7
- return colors.success;
10
+ return colors.ok;
8
11
  case "warn":
9
- return colors.warning;
12
+ return colors.warn;
10
13
  case "accent":
11
14
  return colors.accent;
12
15
  case "err":
13
- return colors.error;
16
+ return colors.err;
17
+ case "purple":
18
+ return colors.purple;
19
+ case "info":
20
+ return colors.info;
14
21
  default:
15
- return colors.fgSubtle;
22
+ return colors.dim;
16
23
  }
17
24
  }
18
- function Chip({ label, tone }) {
19
- return (_jsx(Box, { marginRight: 1, children: _jsxs(Text, { color: toneColor(tone), children: ["[", label, "]"] }) }));
25
+ function approxWidth(s) {
26
+ return [...s].length;
20
27
  }
21
- export function ListRow({ icon = icons.plug, iconActive = false, title, subtitle, meta = [], state, chevron = false, active = false, }) {
22
- const cursor = active ? icons.play : " ";
23
- const iconColor = iconActive ? colors.accent : colors.fgSubtle;
24
- const titleColor = active ? colors.accent : colors.fgBright;
25
- return (_jsxs(Box, { flexDirection: "row", paddingX: 0, children: [_jsx(Box, { width: 2, children: _jsx(Text, { color: colors.accent, bold: true, children: cursor }) }), _jsx(Box, { width: 3, children: _jsx(Text, { color: iconColor, children: icon }) }), _jsxs(Box, { flexDirection: "column", flexGrow: 1, minWidth: 0, children: [_jsx(Text, { color: titleColor, bold: active, children: title }), subtitle ? _jsx(Text, { color: colors.fgSubtle, children: subtitle }) : null] }), meta.length > 0 ? (_jsx(Box, { flexDirection: "row", marginX: 1, children: meta.map((m, i) => (_jsx(Chip, { ...m }, `${m.label}-${i}`))) })) : null, state ? (_jsx(Box, { marginRight: 1, children: _jsx(Text, { color: toneColor(state.tone), bold: true, children: state.label }) })) : null, chevron ? (_jsx(Box, { width: 2, children: _jsx(Text, { color: colors.fgSubtle, children: icons.chevron }) })) : null] }));
28
+ export function ListRow({ icon = icons.bullet, iconActive = false, title, subtitle, meta = [], state, chevron = false, active = false, dimmed = false, widthHint, }) {
29
+ const { stdout } = useStdout();
30
+ const focused = active && !dimmed;
31
+ const bg = focused ? colors.bgHighlight : undefined;
32
+ const bgProp = bg ? { backgroundColor: bg } : {};
33
+ const focusBarColor = focused ? colors.accent : colors.faint;
34
+ const iconColor = dimmed
35
+ ? colors.faint
36
+ : focused
37
+ ? colors.accent
38
+ : iconActive
39
+ ? colors.accent
40
+ : colors.dim;
41
+ const titleColor = dimmed ? colors.faint : colors.bright;
42
+ const subColor = dimmed ? colors.faint : focused ? colors.accentSoft : colors.dim;
43
+ const metaBaseColor = focused ? colors.accentSoft : undefined;
44
+ const stateColor = dimmed ? colors.faint : focused ? colors.bright : toneColor(state?.tone);
45
+ const chevronColor = dimmed ? colors.faint : focused ? colors.accent : colors.dim;
46
+ // Available: widthHint del parent o fallback (termCols - overhead).
47
+ const fallbackOverhead = 36;
48
+ const available = widthHint !== undefined ? widthHint : Math.max(8, (stdout?.columns ?? 100) - fallbackOverhead);
49
+ // RightLen — content alineado a la derecha. Siempre full (no truncar).
50
+ const rightLen = meta.reduce((a, m) => a + approxWidth(m.label) + 1, 0) +
51
+ (state ? approxWidth(state.label) + 1 : 0) +
52
+ (chevron ? 2 : 0) +
53
+ INNER_PAD;
54
+ // Pre-truncar subtitle si excede el ancho disponible. Title se preserva.
55
+ // fixedLeft incluye el focus-bar (1) + gap (1) afuera del bg, + INNER_PAD
56
+ // (1) dentro del bg + icon (1) + space (1) + title.
57
+ const FOCUS_OUTER = 2; // bar + gap
58
+ const fixedLeft = FOCUS_OUTER + INNER_PAD + 2 + approxWidth(title);
59
+ const subtitleSpaceBefore = subtitle ? 1 : 0;
60
+ const availableForSubtitle = Math.max(0, available - fixedLeft - subtitleSpaceBefore - rightLen - 1);
61
+ let displaySubtitle = subtitle ?? "";
62
+ if (subtitle && approxWidth(subtitle) > availableForSubtitle) {
63
+ if (availableForSubtitle <= 1) {
64
+ displaySubtitle = "";
65
+ }
66
+ else {
67
+ displaySubtitle = `${subtitle.slice(0, availableForSubtitle - 1)}…`;
68
+ }
69
+ }
70
+ // LeftLen recalculado con el subtitle ya truncado.
71
+ // Incluye focus bar (1) + gap (1) afuera del bg + inner_pad + 2 (icon+space)
72
+ // + title + (space + subtitle)? para fines de spacer.
73
+ const leftLen = FOCUS_OUTER +
74
+ INNER_PAD +
75
+ 2 +
76
+ approxWidth(title) +
77
+ (displaySubtitle ? approxWidth(displaySubtitle) + 1 : 0);
78
+ const spacerLen = Math.max(1, available - leftLen - rightLen);
79
+ const spacer = " ".repeat(spacerLen);
80
+ const innerPad = " ".repeat(INNER_PAD);
81
+ return (_jsx(Box, { flexDirection: "column", children: _jsxs(Box, { flexDirection: "row", paddingX: 0, children: [_jsx(Text, { color: focusBarColor, bold: focused, children: focused ? icons.focusBar : " " }), _jsx(Text, { children: " " }), _jsx(Text, { ...bgProp, children: innerPad }), _jsx(Text, { ...bgProp, color: iconColor, bold: focused, children: icon }), _jsx(Text, { ...bgProp, children: " " }), _jsx(Text, { ...bgProp, color: titleColor, bold: focused, children: title }), displaySubtitle ? (_jsxs(_Fragment, { children: [_jsx(Text, { ...bgProp, children: " " }), _jsx(Text, { ...bgProp, color: subColor, bold: focused, wrap: "truncate-end", children: displaySubtitle })] })) : null, _jsx(Text, { ...bgProp, wrap: "truncate-end", children: spacer }), meta.length > 0
82
+ ? meta.map((m, i) => (_jsxs(Box, { children: [_jsx(Text, { ...bgProp, color: metaBaseColor ?? toneColor(m.tone), bold: focused, children: m.label }), _jsx(Text, { ...bgProp, children: " " })] }, `${m.label}-${i}`)))
83
+ : null, state ? (_jsx(Text, { ...bgProp, color: stateColor, bold: focused || !dimmed, children: state.label })) : null, chevron ? (_jsxs(_Fragment, { children: [_jsx(Text, { ...bgProp, children: " " }), _jsx(Text, { ...bgProp, color: chevronColor, bold: focused, children: icons.chevron })] })) : null, _jsx(Text, { ...bgProp, children: innerPad })] }) }));
26
84
  }
27
85
  //# sourceMappingURL=list-row.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"list-row.js","sourceRoot":"","sources":["../../../../src/cli/tui/components/list-row.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"list-row.js","sourceRoot":"","sources":["../../../../src/cli/tui/components/list-row.tsx"],"names":[],"mappings":"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"}
@@ -1,27 +1,19 @@
1
1
  import type { ReactNode } from "react";
2
- import { type PillTone } from "./pill.js";
2
+ export type PageHeadTone = "accent" | "ok" | "warn" | "err" | "dim" | "mute";
3
3
  export interface PageHeadProps {
4
4
  /** Título principal */
5
5
  title: string;
6
- /** Pill opcional al lado del título (counter, status, mode) */
6
+ /** Counter / status inline next to title texto coloreado sin brackets. */
7
7
  count?: {
8
8
  label: string;
9
- tone?: PillTone;
9
+ tone?: PageHeadTone;
10
10
  };
11
- /** Subtítulo descriptivo inline · color fgSubtle. Mismo concepto del TabPage del prototipo. */
11
+ /** Subtítulo descriptivo inline · color dim. */
12
12
  desc?: string;
13
- /** Acción opcional alineada a la derecha (típicamente un botón primario en accent bold). */
13
+ /** Right-side meta o acción primaria. */
14
14
  action?: ReactNode;
15
+ /** Compact: sin margin bottom (consumido por sub-headers internos). */
16
+ compact?: boolean;
15
17
  }
16
- /**
17
- * PageHead — header unificado de cada tab.
18
- *
19
- * Layout:
20
- * `<title bold> [count pill] <desc dim> <action>`
21
- *
22
- * Match con `TabPage` del handoff (variant-palette.jsx ~líneas 286-314): título +
23
- * count + desc en una línea con la acción primaria pegada a la derecha. Mantiene
24
- * proporciones del prototipo respetando límites de Ink (flex, sin gap CSS).
25
- */
26
- export declare function PageHead({ title, count, desc, action }: PageHeadProps): import("react/jsx-runtime").JSX.Element;
18
+ export declare function PageHead({ title, count, desc, action, compact }: PageHeadProps): import("react/jsx-runtime").JSX.Element;
27
19
  //# sourceMappingURL=page-head.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"page-head.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/components/page-head.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,EAAQ,KAAK,QAAQ,EAAE,MAAM,WAAW,CAAC;AAEhD,MAAM,WAAW,aAAa;IAC5B,uBAAuB;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,+DAA+D;IAC/D,KAAK,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,QAAQ,CAAA;KAAE,CAAC;IAC3C,+FAA+F;IAC/F,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,4FAA4F;IAC5F,MAAM,CAAC,EAAE,SAAS,CAAC;CACpB;AAED;;;;;;;;;GASG;AACH,wBAAgB,QAAQ,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,aAAa,2CAuBrE"}
1
+ {"version":3,"file":"page-head.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/components/page-head.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,IAAI,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;AAE7E,MAAM,WAAW,aAAa;IAC5B,uBAAuB;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,4EAA4E;IAC5E,KAAK,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,YAAY,CAAA;KAAE,CAAC;IAC/C,gDAAgD;IAChD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,yCAAyC;IACzC,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,uEAAuE;IACvE,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAqBD,wBAAgB,QAAQ,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,OAAe,EAAE,EAAE,aAAa,2CAwBtF"}
@@ -1,18 +1,25 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { Box, Text } from "ink";
3
3
  import { colors } from "../theme.js";
4
- import { Pill } from "./pill.js";
5
- /**
6
- * PageHead — header unificado de cada tab.
7
- *
8
- * Layout:
9
- * `<title bold> [count pill] <desc dim> <action>`
10
- *
11
- * Match con `TabPage` del handoff (variant-palette.jsx ~líneas 286-314): título +
12
- * count + desc en una línea con la acción primaria pegada a la derecha. Mantiene
13
- * proporciones del prototipo respetando límites de Ink (flex, sin gap CSS).
14
- */
15
- export function PageHead({ title, count, desc, action }) {
16
- return (_jsxs(Box, { marginBottom: 1, flexDirection: "row", children: [_jsx(Text, { color: colors.fgBright, bold: true, children: title }), count ? (_jsx(Box, { marginLeft: 1, children: _jsx(Pill, { tone: count.tone ?? "muted", preserveCase: true, children: count.label }) })) : null, desc ? (_jsx(Box, { marginLeft: 1, flexGrow: 1, children: _jsx(Text, { color: colors.fgSubtle, children: desc }) })) : (_jsx(Box, { flexGrow: 1 })), action ? _jsx(Box, { children: action }) : null] }));
4
+ function toneColor(tone) {
5
+ switch (tone) {
6
+ case "accent":
7
+ return colors.accent;
8
+ case "ok":
9
+ return colors.ok;
10
+ case "warn":
11
+ return colors.warn;
12
+ case "err":
13
+ return colors.err;
14
+ case "dim":
15
+ return colors.dim;
16
+ case "mute":
17
+ return colors.mute;
18
+ default:
19
+ return colors.accent;
20
+ }
21
+ }
22
+ export function PageHead({ title, count, desc, action, compact = false }) {
23
+ return (_jsxs(Box, { marginBottom: compact ? 0 : 1, flexDirection: "row", children: [_jsx(Text, { color: colors.bright, bold: true, children: title }), count ? (_jsxs(_Fragment, { children: [_jsx(Text, { children: " " }), _jsx(Text, { color: toneColor(count.tone), bold: true, children: count.label })] })) : null, desc ? (_jsxs(_Fragment, { children: [_jsx(Text, { children: " " }), _jsx(Text, { color: colors.dim, children: desc })] })) : null, _jsx(Box, { flexGrow: 1 }), action ? _jsx(Box, { children: action }) : null] }));
17
24
  }
18
25
  //# sourceMappingURL=page-head.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"page-head.js","sourceRoot":"","sources":["../../../../src/cli/tui/components/page-head.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAEhC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,IAAI,EAAiB,MAAM,WAAW,CAAC;AAahD;;;;;;;;;GASG;AACH,MAAM,UAAU,QAAQ,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAiB;IACpE,OAAO,CACL,MAAC,GAAG,IAAC,YAAY,EAAE,CAAC,EAAE,aAAa,EAAC,KAAK,aACvC,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,EAAE,IAAI,kBAC/B,KAAK,GACD,EACN,KAAK,CAAC,CAAC,CAAC,CACP,KAAC,GAAG,IAAC,UAAU,EAAE,CAAC,YAChB,KAAC,IAAI,IAAC,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,OAAO,EAAE,YAAY,kBAC5C,KAAK,CAAC,KAAK,GACP,GACH,CACP,CAAC,CAAC,CAAC,IAAI,EACP,IAAI,CAAC,CAAC,CAAC,CACN,KAAC,GAAG,IAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,YAC7B,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,YAAG,IAAI,GAAQ,GACvC,CACP,CAAC,CAAC,CAAC,CACF,KAAC,GAAG,IAAC,QAAQ,EAAE,CAAC,GAAI,CACrB,EACA,MAAM,CAAC,CAAC,CAAC,KAAC,GAAG,cAAE,MAAM,GAAO,CAAC,CAAC,CAAC,IAAI,IAChC,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"page-head.js","sourceRoot":"","sources":["../../../../src/cli/tui/components/page-head.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAEhC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAiBrC,SAAS,SAAS,CAAC,IAAmB;IACpC,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,QAAQ;YACX,OAAO,MAAM,CAAC,MAAM,CAAC;QACvB,KAAK,IAAI;YACP,OAAO,MAAM,CAAC,EAAE,CAAC;QACnB,KAAK,MAAM;YACT,OAAO,MAAM,CAAC,IAAI,CAAC;QACrB,KAAK,KAAK;YACR,OAAO,MAAM,CAAC,GAAG,CAAC;QACpB,KAAK,KAAK;YACR,OAAO,MAAM,CAAC,GAAG,CAAC;QACpB,KAAK,MAAM;YACT,OAAO,MAAM,CAAC,IAAI,CAAC;QACrB;YACE,OAAO,MAAM,CAAC,MAAM,CAAC;IACzB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,GAAG,KAAK,EAAiB;IACrF,OAAO,CACL,MAAC,GAAG,IAAC,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,aAAa,EAAC,KAAK,aACrD,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,kBAC7B,KAAK,GACD,EACN,KAAK,CAAC,CAAC,CAAC,CACP,8BACE,KAAC,IAAI,oBAAS,EACd,KAAC,IAAI,IAAC,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,kBACrC,KAAK,CAAC,KAAK,GACP,IACN,CACJ,CAAC,CAAC,CAAC,IAAI,EACP,IAAI,CAAC,CAAC,CAAC,CACN,8BACE,KAAC,IAAI,oBAAS,EACd,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,GAAG,YAAG,IAAI,GAAQ,IACrC,CACJ,CAAC,CAAC,CAAC,IAAI,EACR,KAAC,GAAG,IAAC,QAAQ,EAAE,CAAC,GAAI,EACnB,MAAM,CAAC,CAAC,CAAC,KAAC,GAAG,cAAE,MAAM,GAAO,CAAC,CAAC,CAAC,IAAI,IAChC,CACP,CAAC;AACJ,CAAC"}
@@ -9,6 +9,7 @@ export interface PhaseCardData {
9
9
  }
10
10
  export interface PhaseCardProps {
11
11
  phase: PhaseCardData;
12
+ active?: boolean;
12
13
  }
13
- export declare function PhaseCard({ phase }: PhaseCardProps): import("react/jsx-runtime").JSX.Element;
14
+ export declare function PhaseCard({ phase, active }: PhaseCardProps): import("react/jsx-runtime").JSX.Element;
14
15
  //# sourceMappingURL=phase-card.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"phase-card.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/components/phase-card.tsx"],"names":[],"mappings":"AAGA,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,aAAa,CAAC;CACtB;AAED,wBAAgB,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,cAAc,2CA+ClD"}
1
+ {"version":3,"file":"phase-card.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/components/phase-card.tsx"],"names":[],"mappings":"AAGA,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,aAAa,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAOD,wBAAgB,SAAS,CAAC,EAAE,KAAK,EAAE,MAAc,EAAE,EAAE,cAAc,2CAyDlE"}