@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
@@ -1,8 +1,13 @@
1
- import { jsxs as _jsxs, jsx as _jsx } 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, icons } from "../theme.js";
4
- export function PhaseCard({ phase }) {
5
- const visibleCmds = phase.commands.slice(0, 3);
6
- return (_jsxs(Box, { flexDirection: "column", borderStyle: "round", borderColor: colors.border, paddingX: 1, flexGrow: 1, marginRight: 1, children: [_jsxs(Box, { flexDirection: "row", children: [_jsxs(Text, { color: colors.accent, bold: true, children: [phase.n, "."] }), _jsxs(Text, { color: colors.fgBright, bold: true, children: [" ", phase.title] })] }), _jsx(Text, { color: colors.fgSubtle, wrap: "wrap", children: phase.desc }), visibleCmds.length > 0 ? (_jsx(Box, { flexDirection: "column", children: visibleCmds.map((c) => (_jsxs(Text, { color: colors.fg, children: ["\u00B7 ", c] }, c))) })) : null, phase.slash && phase.slash !== "—" ? (_jsxs(Box, { children: [_jsxs(Text, { color: colors.fgSubtle, children: [icons.chevron, " "] }), _jsx(Text, { color: colors.accent, children: phase.slash })] })) : null, phase.hook && phase.hook !== "—" ? (_jsxs(Box, { children: [_jsxs(Text, { color: colors.fgSubtle, children: [icons.hook, " "] }), _jsx(Text, { color: colors.success, children: phase.hook })] })) : null] }));
4
+ const CIRCLED = ["①", "②", "③", "④", "⑤", "⑥", "⑦", "⑧", "⑨", "⑩"];
5
+ function circled(n) {
6
+ return CIRCLED[n - 1] ?? String(n);
7
+ }
8
+ export function PhaseCard({ phase, active = false }) {
9
+ const cmds = phase.commands.slice(0, 3);
10
+ const cmdsText = cmds.join(" · ") + (phase.commands.length > 3 ? " …" : "");
11
+ return (_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsxs(Box, { children: [_jsx(Text, { color: active ? colors.accent : colors.faint, children: active ? icons.focusBar : " " }), _jsx(Text, { children: " " }), _jsx(Text, { color: active ? colors.accent : colors.mute, bold: active, children: circled(phase.n) }), _jsx(Text, { children: " " }), _jsx(Text, { color: colors.bright, bold: true, children: phase.title }), active ? (_jsxs(_Fragment, { children: [_jsx(Text, { children: " " }), _jsx(Text, { color: colors.accent, children: "\u25CF" }), _jsx(Text, { children: " " }), _jsx(Text, { color: colors.accent, bold: true, children: "ACTIVE" })] })) : null] }), _jsx(Box, { marginLeft: 3, children: _jsx(Text, { color: colors.dim, wrap: "wrap", children: phase.desc }) }), cmds.length > 0 ? (_jsx(Box, { marginLeft: 3, children: _jsx(Text, { color: colors.dim, children: cmdsText }) })) : null, (phase.slash && phase.slash !== "—") || (phase.hook && phase.hook !== "—") ? (_jsx(Box, { marginLeft: 3, children: _jsxs(Text, { wrap: "truncate-end", children: [phase.slash && phase.slash !== "—" ? (_jsx(Text, { color: colors.accent, children: phase.slash })) : null, phase.slash && phase.slash !== "—" && phase.hook && phase.hook !== "—" ? (_jsx(Text, { color: colors.dim, children: " \u00B7 " })) : null, phase.hook && phase.hook !== "—" ? (_jsxs(Text, { color: colors.ok, children: ["\u21AA ", phase.hook] })) : null] }) })) : null] }));
7
12
  }
8
13
  //# sourceMappingURL=phase-card.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"phase-card.js","sourceRoot":"","sources":["../../../../src/cli/tui/components/phase-card.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAgB5C,MAAM,UAAU,SAAS,CAAC,EAAE,KAAK,EAAkB;IACjD,MAAM,WAAW,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAE/C,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,IAAC,aAAa,EAAC,KAAK,aACtB,MAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,mBAC7B,KAAK,CAAC,CAAC,SACH,EACP,MAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,EAAE,IAAI,mBAC/B,GAAG,EACH,KAAK,CAAC,KAAK,IACP,IACH,EACN,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAC,MAAM,YACtC,KAAK,CAAC,IAAI,GACN,EACN,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CACxB,KAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,YACxB,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CACtB,MAAC,IAAI,IAAS,KAAK,EAAE,MAAM,CAAC,EAAE,wBACzB,CAAC,KADK,CAAC,CAEL,CACR,CAAC,GACE,CACP,CAAC,CAAC,CAAC,IAAI,EACP,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,GAAG,CAAC,CAAC,CAAC,CACpC,MAAC,GAAG,eACF,MAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,aAAG,KAAK,CAAC,OAAO,SAAS,EACrD,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,YAAG,KAAK,CAAC,KAAK,GAAQ,IAC5C,CACP,CAAC,CAAC,CAAC,IAAI,EACP,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,CAClC,MAAC,GAAG,eACF,MAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,aAAG,KAAK,CAAC,IAAI,SAAS,EAClD,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,OAAO,YAAG,KAAK,CAAC,IAAI,GAAQ,IAC5C,CACP,CAAC,CAAC,CAAC,IAAI,IACJ,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"phase-card.js","sourceRoot":"","sources":["../../../../src/cli/tui/components/phase-card.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ export interface QuickAction {
2
+ key: string;
3
+ label: string;
4
+ }
5
+ export interface QuickActionsProps {
6
+ actions: QuickAction[];
7
+ }
8
+ export declare function QuickActions({ actions }: QuickActionsProps): import("react/jsx-runtime").JSX.Element | null;
9
+ //# sourceMappingURL=quick-actions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quick-actions.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/components/quick-actions.tsx"],"names":[],"mappings":"AAGA,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,WAAW,EAAE,CAAC;CACxB;AAED,wBAAgB,YAAY,CAAC,EAAE,OAAO,EAAE,EAAE,iBAAiB,kDAmB1D"}
@@ -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 } from "../theme.js";
4
+ export function QuickActions({ actions }) {
5
+ if (!actions.length)
6
+ return null;
7
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { color: colors.borderFaint, children: "─".repeat(60) }), _jsx(Box, { marginTop: 0, children: actions.map((action, idx) => (_jsxs(Box, { children: [idx > 0 ? _jsx(Text, { color: colors.faint, children: " \u00B7 " }) : null, _jsx(Text, { color: colors.accent, bold: true, children: action.key }), _jsx(Text, { children: " " }), _jsx(Text, { color: colors.text, children: action.label })] }, `${action.key}-${action.label}`))) })] }));
8
+ }
9
+ //# sourceMappingURL=quick-actions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quick-actions.js","sourceRoot":"","sources":["../../../../src/cli/tui/components/quick-actions.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAWrC,MAAM,UAAU,YAAY,CAAC,EAAE,OAAO,EAAqB;IACzD,IAAI,CAAC,OAAO,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACjC,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,WAAW,YAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAQ,EACxD,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,YACd,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,CAC5B,MAAC,GAAG,eACD,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,KAAK,yBAAY,CAAC,CAAC,CAAC,IAAI,EACvD,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,kBAC7B,MAAM,CAAC,GAAG,GACN,EACP,KAAC,IAAI,oBAAS,EACd,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,IAAI,YAAG,MAAM,CAAC,KAAK,GAAQ,KANvC,GAAG,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,KAAK,EAAE,CAOnC,CACP,CAAC,GACE,IACF,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,10 @@
1
+ export interface SectionHeadProps {
2
+ label: string;
3
+ dotColor?: string;
4
+ count?: number | string;
5
+ hint?: string;
6
+ rightAction?: string;
7
+ marginTop?: number;
8
+ }
9
+ export declare function SectionHead({ label, dotColor, count, hint, rightAction, marginTop, }: SectionHeadProps): import("react/jsx-runtime").JSX.Element;
10
+ //# sourceMappingURL=section-head.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"section-head.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/components/section-head.tsx"],"names":[],"mappings":"AAGA,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,QAAQ,EACR,KAAK,EACL,IAAI,EACJ,WAAW,EACX,SAAa,GACd,EAAE,gBAAgB,2CAyBlB"}
@@ -0,0 +1,8 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Box, Text } from "ink";
3
+ import { colors } from "../theme.js";
4
+ export function SectionHead({ label, dotColor, count, hint, rightAction, marginTop = 0, }) {
5
+ const dot = dotColor ?? colors.accent;
6
+ return (_jsxs(Box, { marginTop: marginTop, children: [_jsx(Text, { color: dot, children: "\u00B7" }), _jsx(Text, { children: " " }), _jsx(Text, { color: colors.mute, children: label.toUpperCase() }), count !== undefined && count !== "" ? (_jsxs(_Fragment, { children: [_jsx(Text, { children: " " }), _jsx(Text, { color: colors.accent, bold: true, children: String(count) })] })) : null, hint ? (_jsxs(_Fragment, { children: [_jsx(Text, { children: " " }), _jsx(Text, { color: colors.dim, children: hint })] })) : null, _jsx(Box, { flexGrow: 1 }), rightAction ? _jsx(Text, { color: colors.mute, children: rightAction }) : null] }));
7
+ }
8
+ //# sourceMappingURL=section-head.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"section-head.js","sourceRoot":"","sources":["../../../../src/cli/tui/components/section-head.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAWrC,MAAM,UAAU,WAAW,CAAC,EAC1B,KAAK,EACL,QAAQ,EACR,KAAK,EACL,IAAI,EACJ,WAAW,EACX,SAAS,GAAG,CAAC,GACI;IACjB,MAAM,GAAG,GAAG,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC;IACtC,OAAO,CACL,MAAC,GAAG,IAAC,SAAS,EAAE,SAAS,aACvB,KAAC,IAAI,IAAC,KAAK,EAAE,GAAG,uBAAU,EAC1B,KAAC,IAAI,oBAAS,EACd,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,IAAI,YAAG,KAAK,CAAC,WAAW,EAAE,GAAQ,EACrD,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,CACrC,8BACE,KAAC,IAAI,oBAAS,EACd,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,kBAC7B,MAAM,CAAC,KAAK,CAAC,GACT,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,WAAW,CAAC,CAAC,CAAC,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,IAAI,YAAG,WAAW,GAAQ,CAAC,CAAC,CAAC,IAAI,IAChE,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,27 @@
1
+ export type SidebarTabId = "status" | "workflow" | "project" | "mcp" | "skills";
2
+ export interface SidebarTab {
3
+ id: SidebarTabId;
4
+ key: string;
5
+ label: string;
6
+ badge?: string;
7
+ alert?: boolean;
8
+ }
9
+ export interface WorkspaceContext {
10
+ modeLabel: string;
11
+ branchLabel: string;
12
+ sessionsLabel: string;
13
+ }
14
+ export interface KeymapEntry {
15
+ key: string;
16
+ action: string;
17
+ }
18
+ export interface SidebarProps {
19
+ activeTab: SidebarTabId;
20
+ tabs: SidebarTab[];
21
+ workspaceContext: WorkspaceContext;
22
+ cliVersion: string;
23
+ globalKeys: KeymapEntry[];
24
+ width?: number;
25
+ }
26
+ export declare function Sidebar({ activeTab, tabs, workspaceContext, cliVersion, globalKeys, width, }: SidebarProps): import("react/jsx-runtime").JSX.Element;
27
+ //# sourceMappingURL=sidebar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sidebar.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/components/sidebar.tsx"],"names":[],"mappings":"AAGA,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,GAAG,KAAK,GAAG,QAAQ,CAAC;AAEhF,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,YAAY,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,YAAY,CAAC;IACxB,IAAI,EAAE,UAAU,EAAE,CAAC;IACnB,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,WAAW,EAAE,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAOD,wBAAgB,OAAO,CAAC,EACtB,SAAS,EACT,IAAI,EACJ,gBAAgB,EAChB,UAAU,EACV,UAAU,EACV,KAAqB,GACtB,EAAE,YAAY,2CAiEd"}
@@ -0,0 +1,37 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { Box, Text } from "ink";
3
+ import { colors, icons } from "../theme.js";
4
+ const DEFAULT_WIDTH = 24;
5
+ // Reservado para alinear los `entry.action` en la columna de keymap. 3 cells es
6
+ // suficiente para los keys más anchos (`↑↓`, `^K`).
7
+ const KEY_COL_WIDTH = 4;
8
+ export function Sidebar({ activeTab, tabs, workspaceContext, cliVersion, globalKeys, width = DEFAULT_WIDTH, }) {
9
+ return (_jsxs(Box, { flexDirection: "column", width: width, flexShrink: 0, paddingX: 1, paddingY: 1, children: [_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: [" ", "agent-workflow"] })] }), _jsxs(Text, { color: colors.faint, wrap: "truncate-end", children: ["v", cliVersion, " \u00B7 @tacuchi"] })] }), _jsx(Box, { marginTop: 1, children: _jsx(Divider, {}) }), _jsx(Box, { marginTop: 1, flexDirection: "column", children: tabs.map((tab) => (_jsx(SidebarTabRow, { tab: tab, active: tab.id === activeTab }, tab.id))) }), _jsx(Box, { marginTop: 1, children: _jsx(Divider, {}) }), _jsxs(Box, { marginTop: 1, flexDirection: "column", children: [_jsx(Text, { color: colors.mute, children: "WORKSPACE" }), _jsx(Text, { color: colors.text, wrap: "truncate-end", children: workspaceContext.modeLabel }), _jsx(Text, { color: colors.dim, wrap: "truncate-end", children: workspaceContext.branchLabel }), _jsx(Text, { color: colors.dim, wrap: "truncate-end", children: workspaceContext.sessionsLabel })] }), _jsx(Box, { marginTop: 1, children: _jsx(Divider, {}) }), _jsx(Box, { marginTop: 1, flexDirection: "column", children: globalKeys.map((entry) => (_jsxs(Box, { children: [_jsx(Box, { width: KEY_COL_WIDTH, children: _jsx(Text, { color: colors.accent, children: entry.key }) }), _jsx(Text, { color: colors.dim, children: entry.action })] }, `${entry.key}-${entry.action}`))) })] }));
10
+ }
11
+ // Width interior del sidebar: width - paddingX*2 = 22, menos 2 cells de safety
12
+ // margin para variabilidad de ancho visual de glyphs + inner padding.
13
+ const SIDEBAR_INNER_WIDTH = DEFAULT_WIDTH - 4;
14
+ const SIDEBAR_INNER_PAD = 1;
15
+ function SidebarTabRow({ tab, active }) {
16
+ const focusGlyph = active ? icons.focusBar : " ";
17
+ const bg = active ? colors.bgHighlight : undefined;
18
+ const bgProp = bg ? { backgroundColor: bg } : {};
19
+ const innerPad = " ".repeat(SIDEBAR_INNER_PAD);
20
+ // Layout: bar + gap + inner_pad + key + space + label + ... + inner_pad.
21
+ // Bar va AFUERA del bg; el bg empieza en inner_pad.
22
+ const FOCUS_OUTER = 2;
23
+ const used = FOCUS_OUTER +
24
+ SIDEBAR_INNER_PAD * 2 +
25
+ [...tab.key].length +
26
+ 1 +
27
+ [...tab.label].length +
28
+ (tab.badge ? [...tab.badge].length + 1 : 0) +
29
+ (tab.alert ? 2 : 0);
30
+ const spacerLen = Math.max(1, SIDEBAR_INNER_WIDTH - used);
31
+ const spacer = " ".repeat(spacerLen);
32
+ return (_jsxs(Box, { flexDirection: "row", children: [_jsx(Text, { color: colors.accent, bold: active, children: focusGlyph }), _jsx(Text, { children: " " }), _jsx(Text, { ...bgProp, children: innerPad }), _jsx(Text, { ...bgProp, color: active ? colors.accent : colors.dim, bold: active, children: tab.key }), _jsx(Text, { ...bgProp, children: " " }), _jsx(Text, { ...bgProp, color: active ? colors.bright : colors.text, bold: active, children: tab.label }), _jsx(Text, { ...bgProp, wrap: "truncate-end", children: spacer }), tab.badge ? (_jsx(Text, { ...bgProp, color: active ? colors.accentSoft : colors.mute, children: tab.badge })) : null, tab.alert ? (_jsxs(_Fragment, { children: [_jsx(Text, { ...bgProp, children: " " }), _jsx(Text, { ...bgProp, color: colors.err, children: "\u25CF" })] })) : null, _jsx(Text, { ...bgProp, children: innerPad })] }));
33
+ }
34
+ function Divider() {
35
+ return _jsx(Text, { color: colors.borderFaint, children: "─".repeat(DEFAULT_WIDTH - 2) });
36
+ }
37
+ //# sourceMappingURL=sidebar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sidebar.js","sourceRoot":"","sources":["../../../../src/cli/tui/components/sidebar.tsx"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- export type StatTone = "ok" | "warn" | "accent" | "dim";
1
+ export type StatTone = "ok" | "warn" | "accent" | "dim" | "err";
2
2
  export interface StatTileProps {
3
3
  label: string;
4
4
  value: string;
@@ -9,6 +9,8 @@ export interface StatTileProps {
9
9
  clickable?: boolean;
10
10
  /** Highlights the tile when its index === active cursor in a strip. */
11
11
  active?: boolean;
12
+ /** If true, aligns the tile to the right (used for WORKING TREE). */
13
+ alignRight?: boolean;
12
14
  }
13
- export declare function StatTile({ label, value, sub, tone, accent, clickable, active, }: StatTileProps): import("react/jsx-runtime").JSX.Element;
15
+ export declare function StatTile({ label, value, sub, tone, accent, clickable, active, alignRight, }: StatTileProps): import("react/jsx-runtime").JSX.Element;
14
16
  //# sourceMappingURL=stat-tile.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"stat-tile.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/components/stat-tile.tsx"],"names":[],"mappings":"AAGA,MAAM,MAAM,QAAQ,GAAG,IAAI,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;AAExD,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,sEAAsE;IACtE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,uEAAuE;IACvE,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAiBD,wBAAgB,QAAQ,CAAC,EACvB,KAAK,EACL,KAAK,EACL,GAAG,EACH,IAAI,EACJ,MAAc,EACd,SAAiB,EACjB,MAAc,GACf,EAAE,aAAa,2CAwBf"}
1
+ {"version":3,"file":"stat-tile.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/components/stat-tile.tsx"],"names":[],"mappings":"AAGA,MAAM,MAAM,QAAQ,GAAG,IAAI,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,GAAG,KAAK,CAAC;AAEhE,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,sEAAsE;IACtE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,uEAAuE;IACvE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,qEAAqE;IACrE,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAmBD,wBAAgB,QAAQ,CAAC,EACvB,KAAK,EACL,KAAK,EACL,GAAG,EACH,IAAI,EACJ,MAAc,EACd,SAAiB,EACjB,MAAc,EACd,UAAkB,GACnB,EAAE,aAAa,2CAqBf"}
@@ -1,22 +1,23 @@
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, icons } from "../theme.js";
4
4
  function valueColor(tone, accent) {
5
5
  switch (tone) {
6
6
  case "ok":
7
- return colors.success;
7
+ return colors.ok;
8
8
  case "warn":
9
- return colors.warning;
9
+ return colors.warn;
10
+ case "err":
11
+ return colors.err;
10
12
  case "accent":
11
13
  return colors.accent;
12
14
  case "dim":
13
- return colors.fgSubtle;
15
+ return colors.dim;
14
16
  default:
15
- return accent ? colors.accent : colors.fgBright;
17
+ return accent ? colors.accent : colors.bright;
16
18
  }
17
19
  }
18
- export function StatTile({ label, value, sub, tone, accent = false, clickable = false, active = false, }) {
19
- const borderColor = active ? colors.accent : accent ? colors.borderActive : colors.border;
20
- return (_jsxs(Box, { flexDirection: "column", borderStyle: "round", borderColor: borderColor, paddingX: 1, marginRight: 1, flexGrow: 1, children: [_jsxs(Box, { flexDirection: "row", justifyContent: "space-between", children: [_jsx(Text, { color: colors.fgSubtle, children: label.toUpperCase() }), clickable ? (_jsx(Text, { color: active ? colors.accent : colors.fgSubtle, children: icons.chevron })) : null] }), _jsx(Text, { color: valueColor(tone, accent), bold: true, children: value }), sub ? _jsx(Text, { color: colors.fgSubtle, children: sub }) : null] }));
20
+ export function StatTile({ label, value, sub, tone, accent = false, clickable = false, active = false, alignRight = false, }) {
21
+ return (_jsxs(Box, { flexDirection: "row", marginRight: alignRight ? 0 : 2, flexGrow: alignRight ? 0 : 1, children: [_jsx(Text, { color: active ? colors.accent : colors.faint, children: active ? icons.focusBar : " " }), _jsxs(Box, { flexDirection: "column", paddingLeft: active ? 1 : 0, children: [_jsxs(Box, { flexDirection: "row", children: [_jsx(Text, { color: colors.mute, children: label.toUpperCase() }), clickable ? (_jsxs(_Fragment, { children: [_jsx(Text, { children: " " }), _jsx(Text, { color: active ? colors.accent : colors.faint, children: icons.chevron })] })) : null] }), _jsx(Text, { color: valueColor(tone, accent), bold: true, children: value }), sub ? _jsx(Text, { color: colors.dim, children: sub }) : null] })] }));
21
22
  }
22
23
  //# sourceMappingURL=stat-tile.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"stat-tile.js","sourceRoot":"","sources":["../../../../src/cli/tui/components/stat-tile.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAgB5C,SAAS,UAAU,CAAC,IAAe,EAAE,MAAgB;IACnD,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,IAAI;YACP,OAAO,MAAM,CAAC,OAAO,CAAC;QACxB,KAAK,MAAM;YACT,OAAO,MAAM,CAAC,OAAO,CAAC;QACxB,KAAK,QAAQ;YACX,OAAO,MAAM,CAAC,MAAM,CAAC;QACvB,KAAK,KAAK;YACR,OAAO,MAAM,CAAC,QAAQ,CAAC;QACzB;YACE,OAAO,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;IACpD,CAAC;AACH,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,EACvB,KAAK,EACL,KAAK,EACL,GAAG,EACH,IAAI,EACJ,MAAM,GAAG,KAAK,EACd,SAAS,GAAG,KAAK,EACjB,MAAM,GAAG,KAAK,GACA;IACd,MAAM,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;IAE1F,OAAO,CACL,MAAC,GAAG,IACF,aAAa,EAAC,QAAQ,EACtB,WAAW,EAAC,OAAO,EACnB,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,CAAC,EACX,WAAW,EAAE,CAAC,EACd,QAAQ,EAAE,CAAC,aAEX,MAAC,GAAG,IAAC,aAAa,EAAC,KAAK,EAAC,cAAc,EAAC,eAAe,aACrD,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,YAAG,KAAK,CAAC,WAAW,EAAE,GAAQ,EACzD,SAAS,CAAC,CAAC,CAAC,CACX,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,YAAG,KAAK,CAAC,OAAO,GAAQ,CAC9E,CAAC,CAAC,CAAC,IAAI,IACJ,EACN,KAAC,IAAI,IAAC,KAAK,EAAE,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,IAAI,kBACxC,KAAK,GACD,EACN,GAAG,CAAC,CAAC,CAAC,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,YAAG,GAAG,GAAQ,CAAC,CAAC,CAAC,IAAI,IACpD,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"stat-tile.js","sourceRoot":"","sources":["../../../../src/cli/tui/components/stat-tile.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAkB5C,SAAS,UAAU,CAAC,IAAe,EAAE,MAAgB;IACnD,QAAQ,IAAI,EAAE,CAAC;QACb,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,QAAQ;YACX,OAAO,MAAM,CAAC,MAAM,CAAC;QACvB,KAAK,KAAK;YACR,OAAO,MAAM,CAAC,GAAG,CAAC;QACpB;YACE,OAAO,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;IAClD,CAAC;AACH,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,EACvB,KAAK,EACL,KAAK,EACL,GAAG,EACH,IAAI,EACJ,MAAM,GAAG,KAAK,EACd,SAAS,GAAG,KAAK,EACjB,MAAM,GAAG,KAAK,EACd,UAAU,GAAG,KAAK,GACJ;IACd,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,KAAK,EAAC,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aACpF,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,YAAG,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,GAAQ,EAC1F,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aACrD,MAAC,GAAG,IAAC,aAAa,EAAC,KAAK,aACtB,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,IAAI,YAAG,KAAK,CAAC,WAAW,EAAE,GAAQ,EACrD,SAAS,CAAC,CAAC,CAAC,CACX,8BACE,KAAC,IAAI,oBAAS,EACd,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,YAAG,KAAK,CAAC,OAAO,GAAQ,IACzE,CACJ,CAAC,CAAC,CAAC,IAAI,IACJ,EACN,KAAC,IAAI,IAAC,KAAK,EAAE,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,IAAI,kBACxC,KAAK,GACD,EACN,GAAG,CAAC,CAAC,CAAC,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,GAAG,YAAG,GAAG,GAAQ,CAAC,CAAC,CAAC,IAAI,IAC/C,IACF,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,18 @@
1
+ export type TabId = "status" | "workflow" | "project" | "mcp" | "skills";
2
+ export interface TabConfig {
3
+ id: TabId;
4
+ key: string;
5
+ label: string;
6
+ badge?: string;
7
+ alert?: boolean;
8
+ }
9
+ export interface WorkspaceContext {
10
+ modeLabel: string;
11
+ branchLabel: string;
12
+ sessionsLabel: string;
13
+ }
14
+ export interface KeymapEntry {
15
+ key: string;
16
+ action: string;
17
+ }
18
+ //# sourceMappingURL=tabs-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tabs-config.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/components/tabs-config.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,KAAK,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,GAAG,KAAK,GAAG,QAAQ,CAAC;AAEzE,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,KAAK,CAAC;IACV,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;CAChB"}
@@ -0,0 +1,7 @@
1
+ // Tipos compartidos del shell TUI — origen único para la lista de tabs,
2
+ // el contexto de workspace y el keymap global.
3
+ //
4
+ // Antes vivían en `components/sidebar.tsx`. Con la migración a "palette como
5
+ // home" (session089) la sidebar fue eliminada y los tipos quedan acá, neutros.
6
+ export {};
7
+ //# sourceMappingURL=tabs-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tabs-config.js","sourceRoot":"","sources":["../../../../src/cli/tui/components/tabs-config.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,+CAA+C;AAC/C,EAAE;AACF,6EAA6E;AAC7E,+EAA+E"}
@@ -33,9 +33,9 @@ export interface ToastStackProps {
33
33
  /**
34
34
  * ToastStack — render inline de los toasts activos.
35
35
  *
36
- * En TTY no podemos posicionar absoluto, así que renderizamos arriba del footer
37
- * (app.tsx coloca esto entre `<Content/>` y `<KeymapBar/>`). Cada toast es una
38
- * caja con borde left del color del tone + título bold + body dim.
36
+ * En TTY no podemos posicionar absoluto, así que renderizamos al pie de la
37
+ * pantalla (app.tsx coloca esto al final del root). Cada toast es una caja
38
+ * con borde left del color del tone + título bold + body dim.
39
39
  */
40
40
  export declare function ToastStack({ toasts, max }: ToastStackProps): import("react/jsx-runtime").JSX.Element | null;
41
41
  //# sourceMappingURL=toast-stack.d.ts.map
@@ -48,9 +48,9 @@ const TONE_ICON = {
48
48
  /**
49
49
  * ToastStack — render inline de los toasts activos.
50
50
  *
51
- * En TTY no podemos posicionar absoluto, así que renderizamos arriba del footer
52
- * (app.tsx coloca esto entre `<Content/>` y `<KeymapBar/>`). Cada toast es una
53
- * caja con borde left del color del tone + título bold + body dim.
51
+ * En TTY no podemos posicionar absoluto, así que renderizamos al pie de la
52
+ * pantalla (app.tsx coloca esto al final del root). Cada toast es una caja
53
+ * con borde left del color del tone + título bold + body dim.
54
54
  */
55
55
  export function ToastStack({ toasts, max = 3 }) {
56
56
  if (toasts.length === 0)
@@ -0,0 +1,21 @@
1
+ import type { CliContext } from "../../types.js";
2
+ import type { ActivityEvent } from "../components/activity-feed.js";
3
+ export interface LoadActivityOptions {
4
+ cap?: number;
5
+ /** When false, skip git log read (faster). */
6
+ includeGit?: boolean;
7
+ /** When false, skip sessions read. */
8
+ includeSessions?: boolean;
9
+ }
10
+ /**
11
+ * Aggregator de eventos para el activity-feed.
12
+ *
13
+ * Lee:
14
+ * - git log --oneline --since=24h (commits del repo cwd).
15
+ * - agent-workflow sessions (counts y listado).
16
+ *
17
+ * Eventos futuros (deferred): npm registry checks · MCP calls log · skill installs.
18
+ * Estos requieren tracking que aún no existe en runtime.
19
+ */
20
+ export declare function loadActivity(ctx: CliContext, opts?: LoadActivityOptions): Promise<ActivityEvent[]>;
21
+ //# sourceMappingURL=activity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activity.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/data/activity.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAEpE,MAAM,WAAW,mBAAmB;IAClC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,8CAA8C;IAC9C,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,sCAAsC;IACtC,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;;;;;;;;GASG;AACH,wBAAsB,YAAY,CAChC,GAAG,EAAE,UAAU,EACf,IAAI,GAAE,mBAAwB,GAC7B,OAAO,CAAC,aAAa,EAAE,CAAC,CAiB1B"}
@@ -0,0 +1,83 @@
1
+ /**
2
+ * Aggregator de eventos para el activity-feed.
3
+ *
4
+ * Lee:
5
+ * - git log --oneline --since=24h (commits del repo cwd).
6
+ * - agent-workflow sessions (counts y listado).
7
+ *
8
+ * Eventos futuros (deferred): npm registry checks · MCP calls log · skill installs.
9
+ * Estos requieren tracking que aún no existe en runtime.
10
+ */
11
+ export async function loadActivity(ctx, opts = {}) {
12
+ const cap = opts.cap ?? 7;
13
+ const includeGit = opts.includeGit ?? true;
14
+ const includeSessions = opts.includeSessions ?? true;
15
+ const events = [];
16
+ if (includeGit) {
17
+ events.push(...(await readGitLog(ctx).catch(() => [])));
18
+ }
19
+ if (includeSessions) {
20
+ events.push(...(await readSessions(ctx).catch(() => [])));
21
+ }
22
+ // Sort desc by parsed timestamp (when we stored ts in ID).
23
+ events.sort((a, b) => parseAgo(b.when) - parseAgo(a.when));
24
+ return events.slice(0, cap);
25
+ }
26
+ async function readGitLog(ctx) {
27
+ const res = await ctx.process.run("git", ["log", "--oneline", "--since=48 hours ago", "-n", "10"], { cwd: ctx.env.cwd() });
28
+ if (res.code !== 0)
29
+ return [];
30
+ const lines = res.stdout.split("\n").filter((l) => l.trim().length > 0);
31
+ return lines.map((line, i) => {
32
+ const [sha = "", ...rest] = line.split(" ");
33
+ const text = rest.join(" ");
34
+ return {
35
+ id: `git-${sha}`,
36
+ when: `${i * 2 + 1}h`,
37
+ dotColor: "info",
38
+ text: text.length > 60 ? `${text.slice(0, 57)}…` : text,
39
+ meta: sha.slice(0, 7),
40
+ metaTone: "dim",
41
+ };
42
+ });
43
+ }
44
+ async function readSessions(ctx) {
45
+ const res = await ctx.process.run(ctx.runtime.binName, ["sessions"], {
46
+ cwd: ctx.env.cwd(),
47
+ });
48
+ if (res.code !== 0)
49
+ return [];
50
+ try {
51
+ const data = JSON.parse(res.stdout);
52
+ const sessions = data.sessions ?? [];
53
+ return sessions.slice(0, 3).map((s, i) => ({
54
+ id: `session-${s.code}`,
55
+ when: `${(i + 1) * 4}m`,
56
+ dotColor: "accent",
57
+ text: `session${s.code} · ${s.name}`,
58
+ meta: `flow ${s.flow} · phase ${s.phase}`,
59
+ metaTone: "dim",
60
+ }));
61
+ }
62
+ catch {
63
+ return [];
64
+ }
65
+ }
66
+ function parseAgo(when) {
67
+ const m = when.match(/^(\d+)([smhd])/);
68
+ if (!m)
69
+ return 0;
70
+ const n = Number.parseInt(m[1] ?? "0", 10);
71
+ switch (m[2]) {
72
+ case "s":
73
+ return -n;
74
+ case "m":
75
+ return -n * 60;
76
+ case "h":
77
+ return -n * 3600;
78
+ case "d":
79
+ return -n * 86400;
80
+ }
81
+ return 0;
82
+ }
83
+ //# sourceMappingURL=activity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activity.js","sourceRoot":"","sources":["../../../../src/cli/tui/data/activity.ts"],"names":[],"mappings":"AAWA;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,GAAe,EACf,OAA4B,EAAE;IAE9B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;IAC1B,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC;IAC3C,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC;IAErD,MAAM,MAAM,GAAoB,EAAE,CAAC;IAEnC,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC1D,CAAC;IACD,IAAI,eAAe,EAAE,CAAC;QACpB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC5D,CAAC;IAED,2DAA2D;IAC3D,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3D,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAC9B,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,GAAe;IACvC,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,GAAG,CAC/B,KAAK,EACL,CAAC,KAAK,EAAE,WAAW,EAAE,sBAAsB,EAAE,IAAI,EAAE,IAAI,CAAC,EACxD,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CACvB,CAAC;IACF,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAC9B,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACxE,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;QAC3B,MAAM,CAAC,GAAG,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC5B,OAAO;YACL,EAAE,EAAE,OAAO,GAAG,EAAE;YAChB,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG;YACrB,QAAQ,EAAE,MAAe;YACzB,IAAI,EAAE,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI;YACvD,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;YACrB,QAAQ,EAAE,KAAc;SACzB,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,GAAe;IACzC,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC,EAAE;QACnE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE;KACnB,CAAC,CAAC;IACH,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAC9B,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAEjC,CAAC;QACF,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;QACrC,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YACzC,EAAE,EAAE,WAAW,CAAC,CAAC,IAAI,EAAE;YACvB,IAAI,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG;YACvB,QAAQ,EAAE,QAAiB;YAC3B,IAAI,EAAE,UAAU,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,IAAI,EAAE;YACpC,IAAI,EAAE,QAAQ,CAAC,CAAC,IAAI,YAAY,CAAC,CAAC,KAAK,EAAE;YACzC,QAAQ,EAAE,KAAc;SACzB,CAAC,CAAC,CAAC;IACN,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,QAAQ,CAAC,IAAY;IAC5B,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;IACvC,IAAI,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC;IACjB,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;IAC3C,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACb,KAAK,GAAG;YACN,OAAO,CAAC,CAAC,CAAC;QACZ,KAAK,GAAG;YACN,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC;QACjB,KAAK,GAAG;YACN,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;QACnB,KAAK,GAAG;YACN,OAAO,CAAC,CAAC,GAAG,KAAK,CAAC;IACtB,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import type { CliContext } from "../../types.js";
2
+ import { type ActivityEvent } from "../components/activity-feed.js";
2
3
  export interface McpTabProps {
3
4
  ctx: CliContext;
4
5
  isActive: boolean;
@@ -7,16 +8,7 @@ export interface McpTabProps {
7
8
  title: string;
8
9
  body?: string;
9
10
  }) => void;
11
+ recentEvents?: ActivityEvent[];
10
12
  }
11
- /**
12
- * McpTab — listado MCP single-column + ActionModal overlay + Add wizard inline.
13
- *
14
- * Layout match con handoff (variant-palette.jsx MCPTab):
15
- * PageHead con `+ add connection` action button → FrameBox "connections" accent
16
- * con ListRow por conexión → ActionModal overlay al ⏎ (Test / Edit / Remove).
17
- *
18
- * Add/Edit wizard inline tras `a` shortcut o acción Edit. ConfirmModal para
19
- * remove. Busy label durante ops.
20
- */
21
- export declare function McpTab({ ctx, isActive, onToast }: McpTabProps): import("react/jsx-runtime").JSX.Element;
13
+ export declare function McpTab({ ctx, isActive, onToast, recentEvents }: McpTabProps): import("react/jsx-runtime").JSX.Element;
22
14
  //# sourceMappingURL=mcp-tab.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-tab.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/tabs/mcp-tab.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAoBjD,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,UAAU,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE;QAAE,IAAI,EAAE,IAAI,GAAG,MAAM,GAAG,KAAK,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;CACxF;AAYD;;;;;;;;;GASG;AACH,wBAAgB,MAAM,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,WAAW,2CAiY7D"}
1
+ {"version":3,"file":"mcp-tab.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/tabs/mcp-tab.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,KAAK,aAAa,EAAgB,MAAM,gCAAgC,CAAC;AAqBlF,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,UAAU,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE;QAAE,IAAI,EAAE,IAAI,GAAG,MAAM,GAAG,KAAK,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACvF,YAAY,CAAC,EAAE,aAAa,EAAE,CAAC;CAChC;AA8BD,wBAAgB,MAAM,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE,WAAW,2CA4a3E"}