maestro-flow 0.3.32 → 0.3.34

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 (241) hide show
  1. package/.claude/commands/learn-retro.md +1 -1
  2. package/.claude/commands/maestro-composer.md +2 -2
  3. package/.claude/commands/maestro-ralph-execute.md +1 -1
  4. package/.claude/commands/maestro-ralph.md +11 -11
  5. package/.claude/commands/maestro-verify.md +1 -1
  6. package/.claude/commands/maestro.md +1 -2
  7. package/.claude/commands/quality-auto-test.md +124 -0
  8. package/.claude/commands/quality-refactor.md +1 -1
  9. package/.claude/commands/quality-test.md +3 -3
  10. package/.codex/skills/learn-retro/SKILL.md +1 -1
  11. package/.codex/skills/maestro/SKILL.md +1 -1
  12. package/.codex/skills/maestro-link-coordinate/SKILL.md +1 -1
  13. package/.codex/skills/maestro-milestone-audit/SKILL.md +9 -1
  14. package/.codex/skills/maestro-plan/SKILL.md +72 -6
  15. package/.codex/skills/maestro-ralph/SKILL.md +159 -159
  16. package/.codex/skills/maestro-roadmap/SKILL.md +31 -5
  17. package/.codex/skills/maestro-verify/SKILL.md +1 -1
  18. package/.codex/skills/quality-auto-test/SKILL.md +547 -0
  19. package/.codex/skills/quality-debug/SKILL.md +18 -6
  20. package/.codex/skills/quality-refactor/SKILL.md +8 -1
  21. package/.codex/skills/quality-sync/SKILL.md +23 -4
  22. package/.codex/skills/quality-test/SKILL.md +498 -166
  23. package/dashboard/dist-server/src/config/cli-tools-config.js +5 -20
  24. package/dashboard/dist-server/src/config/cli-tools-config.js.map +1 -1
  25. package/dashboard/dist-server/src/config/cli-tools-defaults.json +17 -0
  26. package/dist/src/commands/config.d.ts.map +1 -1
  27. package/dist/src/commands/config.js +168 -32
  28. package/dist/src/commands/config.js.map +1 -1
  29. package/dist/src/commands/hooks.d.ts +9 -0
  30. package/dist/src/commands/hooks.d.ts.map +1 -1
  31. package/dist/src/commands/hooks.js +1 -1
  32. package/dist/src/commands/hooks.js.map +1 -1
  33. package/dist/src/commands/install.js +1 -1
  34. package/dist/src/commands/install.js.map +1 -1
  35. package/dist/src/commands/overlay.js +1 -1
  36. package/dist/src/commands/overlay.js.map +1 -1
  37. package/dist/src/commands/tools.d.ts.map +1 -1
  38. package/dist/src/commands/tools.js +7 -17
  39. package/dist/src/commands/tools.js.map +1 -1
  40. package/dist/src/commands/uninstall.js +1 -1
  41. package/dist/src/commands/uninstall.js.map +1 -1
  42. package/dist/src/config/cli-tools-config.d.ts.map +1 -1
  43. package/dist/src/config/cli-tools-config.js +5 -20
  44. package/dist/src/config/cli-tools-config.js.map +1 -1
  45. package/dist/src/config/cli-tools-defaults.json +17 -0
  46. package/dist/src/tui/config-ui/ConfigHub.d.ts +14 -0
  47. package/dist/src/tui/config-ui/ConfigHub.d.ts.map +1 -0
  48. package/dist/src/tui/config-ui/ConfigHub.js +125 -0
  49. package/dist/src/tui/config-ui/ConfigHub.js.map +1 -0
  50. package/dist/src/tui/config-ui/ConfigSourcesView.d.ts +6 -0
  51. package/dist/src/tui/config-ui/ConfigSourcesView.d.ts.map +1 -0
  52. package/dist/src/tui/config-ui/ConfigSourcesView.js +25 -0
  53. package/dist/src/tui/config-ui/ConfigSourcesView.js.map +1 -0
  54. package/dist/src/tui/config-ui/HooksPanel.d.ts +6 -0
  55. package/dist/src/tui/config-ui/HooksPanel.d.ts.map +1 -0
  56. package/dist/src/tui/config-ui/HooksPanel.js +92 -0
  57. package/dist/src/tui/config-ui/HooksPanel.js.map +1 -0
  58. package/dist/src/tui/config-ui/SkillConfigDashboard.d.ts +9 -0
  59. package/dist/src/tui/config-ui/SkillConfigDashboard.d.ts.map +1 -0
  60. package/dist/src/tui/config-ui/SkillConfigDashboard.js +64 -0
  61. package/dist/src/tui/config-ui/SkillConfigDashboard.js.map +1 -0
  62. package/dist/src/tui/config-ui/SkillParamEditor.d.ts +12 -0
  63. package/dist/src/tui/config-ui/SkillParamEditor.d.ts.map +1 -0
  64. package/dist/src/tui/config-ui/SkillParamEditor.js +162 -0
  65. package/dist/src/tui/config-ui/SkillParamEditor.js.map +1 -0
  66. package/dist/src/tui/config-ui/SkillsList.d.ts +12 -0
  67. package/dist/src/tui/config-ui/SkillsList.d.ts.map +1 -0
  68. package/dist/src/tui/config-ui/SkillsList.js +91 -0
  69. package/dist/src/tui/config-ui/SkillsList.js.map +1 -0
  70. package/dist/src/tui/config-ui/SpecPanel.d.ts +6 -0
  71. package/dist/src/tui/config-ui/SpecPanel.d.ts.map +1 -0
  72. package/dist/src/tui/config-ui/SpecPanel.js +79 -0
  73. package/dist/src/tui/config-ui/SpecPanel.js.map +1 -0
  74. package/dist/src/tui/config-ui/index.d.ts +23 -0
  75. package/dist/src/tui/config-ui/index.d.ts.map +1 -0
  76. package/dist/src/tui/config-ui/index.js +34 -0
  77. package/dist/src/tui/config-ui/index.js.map +1 -0
  78. package/dist/src/tui/index.d.ts +7 -0
  79. package/dist/src/tui/index.d.ts.map +1 -0
  80. package/dist/src/tui/index.js +10 -0
  81. package/dist/src/tui/index.js.map +1 -0
  82. package/dist/src/tui/install-ui/BackupConfig.d.ts +10 -0
  83. package/dist/src/tui/install-ui/BackupConfig.d.ts.map +1 -0
  84. package/dist/src/tui/install-ui/BackupConfig.js +46 -0
  85. package/dist/src/tui/install-ui/BackupConfig.js.map +1 -0
  86. package/dist/src/tui/install-ui/BlueprintPreview.d.ts +9 -0
  87. package/dist/src/tui/install-ui/BlueprintPreview.d.ts.map +1 -0
  88. package/dist/src/tui/install-ui/BlueprintPreview.js +65 -0
  89. package/dist/src/tui/install-ui/BlueprintPreview.js.map +1 -0
  90. package/dist/src/tui/install-ui/BlueprintPreview.logic.d.ts +33 -0
  91. package/dist/src/tui/install-ui/BlueprintPreview.logic.d.ts.map +1 -0
  92. package/dist/src/tui/install-ui/BlueprintPreview.logic.js +51 -0
  93. package/dist/src/tui/install-ui/BlueprintPreview.logic.js.map +1 -0
  94. package/dist/src/tui/install-ui/ComponentGrid.d.ts +13 -0
  95. package/dist/src/tui/install-ui/ComponentGrid.d.ts.map +1 -0
  96. package/dist/src/tui/install-ui/ComponentGrid.js +75 -0
  97. package/dist/src/tui/install-ui/ComponentGrid.js.map +1 -0
  98. package/dist/src/tui/install-ui/ComponentGrid.logic.d.ts +31 -0
  99. package/dist/src/tui/install-ui/ComponentGrid.logic.d.ts.map +1 -0
  100. package/dist/src/tui/install-ui/ComponentGrid.logic.js +58 -0
  101. package/dist/src/tui/install-ui/ComponentGrid.logic.js.map +1 -0
  102. package/dist/src/tui/install-ui/ConfigPanel.d.ts +11 -0
  103. package/dist/src/tui/install-ui/ConfigPanel.d.ts.map +1 -0
  104. package/dist/src/tui/install-ui/ConfigPanel.js +35 -0
  105. package/dist/src/tui/install-ui/ConfigPanel.js.map +1 -0
  106. package/dist/src/tui/install-ui/CyberItem.d.ts +18 -0
  107. package/dist/src/tui/install-ui/CyberItem.d.ts.map +1 -0
  108. package/dist/src/tui/install-ui/CyberItem.js +33 -0
  109. package/dist/src/tui/install-ui/CyberItem.js.map +1 -0
  110. package/dist/src/tui/install-ui/CyberdeckBlueprint.d.ts +7 -0
  111. package/dist/src/tui/install-ui/CyberdeckBlueprint.d.ts.map +1 -0
  112. package/dist/src/tui/install-ui/CyberdeckBlueprint.js +91 -0
  113. package/dist/src/tui/install-ui/CyberdeckBlueprint.js.map +1 -0
  114. package/dist/src/tui/install-ui/ExecutionView.d.ts +12 -0
  115. package/dist/src/tui/install-ui/ExecutionView.d.ts.map +1 -0
  116. package/dist/src/tui/install-ui/ExecutionView.js +154 -0
  117. package/dist/src/tui/install-ui/ExecutionView.js.map +1 -0
  118. package/dist/src/tui/install-ui/GradientHeader.d.ts +8 -0
  119. package/dist/src/tui/install-ui/GradientHeader.d.ts.map +1 -0
  120. package/dist/src/tui/install-ui/GradientHeader.js +18 -0
  121. package/dist/src/tui/install-ui/GradientHeader.js.map +1 -0
  122. package/dist/src/tui/install-ui/HooksConfig.d.ts +8 -0
  123. package/dist/src/tui/install-ui/HooksConfig.d.ts.map +1 -0
  124. package/dist/src/tui/install-ui/HooksConfig.js +35 -0
  125. package/dist/src/tui/install-ui/HooksConfig.js.map +1 -0
  126. package/dist/src/tui/install-ui/InstallConfirm.d.ts +27 -0
  127. package/dist/src/tui/install-ui/InstallConfirm.d.ts.map +1 -0
  128. package/dist/src/tui/install-ui/InstallConfirm.js +25 -0
  129. package/dist/src/tui/install-ui/InstallConfirm.js.map +1 -0
  130. package/dist/src/tui/install-ui/InstallExecution.d.ts +21 -0
  131. package/dist/src/tui/install-ui/InstallExecution.d.ts.map +1 -0
  132. package/dist/src/tui/install-ui/InstallExecution.js +154 -0
  133. package/dist/src/tui/install-ui/InstallExecution.js.map +1 -0
  134. package/dist/src/tui/install-ui/InstallFlow.d.ts +14 -0
  135. package/dist/src/tui/install-ui/InstallFlow.d.ts.map +1 -0
  136. package/dist/src/tui/install-ui/InstallFlow.js +186 -0
  137. package/dist/src/tui/install-ui/InstallFlow.js.map +1 -0
  138. package/dist/src/tui/install-ui/InstallHub.d.ts +33 -0
  139. package/dist/src/tui/install-ui/InstallHub.d.ts.map +1 -0
  140. package/dist/src/tui/install-ui/InstallHub.js +97 -0
  141. package/dist/src/tui/install-ui/InstallHub.js.map +1 -0
  142. package/dist/src/tui/install-ui/InstallResult.d.ts +7 -0
  143. package/dist/src/tui/install-ui/InstallResult.d.ts.map +1 -0
  144. package/dist/src/tui/install-ui/InstallResult.js +15 -0
  145. package/dist/src/tui/install-ui/InstallResult.js.map +1 -0
  146. package/dist/src/tui/install-ui/McpConfig.d.ts +12 -0
  147. package/dist/src/tui/install-ui/McpConfig.d.ts.map +1 -0
  148. package/dist/src/tui/install-ui/McpConfig.js +69 -0
  149. package/dist/src/tui/install-ui/McpConfig.js.map +1 -0
  150. package/dist/src/tui/install-ui/ResultDashboard.d.ts +8 -0
  151. package/dist/src/tui/install-ui/ResultDashboard.d.ts.map +1 -0
  152. package/dist/src/tui/install-ui/ResultDashboard.js +17 -0
  153. package/dist/src/tui/install-ui/ResultDashboard.js.map +1 -0
  154. package/dist/src/tui/install-ui/ReviewPanel.d.ts +19 -0
  155. package/dist/src/tui/install-ui/ReviewPanel.d.ts.map +1 -0
  156. package/dist/src/tui/install-ui/ReviewPanel.js +25 -0
  157. package/dist/src/tui/install-ui/ReviewPanel.js.map +1 -0
  158. package/dist/src/tui/install-ui/ShortcutFooter.d.ts +7 -0
  159. package/dist/src/tui/install-ui/ShortcutFooter.d.ts.map +1 -0
  160. package/dist/src/tui/install-ui/ShortcutFooter.js +15 -0
  161. package/dist/src/tui/install-ui/ShortcutFooter.js.map +1 -0
  162. package/dist/src/tui/install-ui/StatuslineConfig.d.ts +11 -0
  163. package/dist/src/tui/install-ui/StatuslineConfig.d.ts.map +1 -0
  164. package/dist/src/tui/install-ui/StatuslineConfig.js +39 -0
  165. package/dist/src/tui/install-ui/StatuslineConfig.js.map +1 -0
  166. package/dist/src/tui/install-ui/StepSelector.d.ts +14 -0
  167. package/dist/src/tui/install-ui/StepSelector.d.ts.map +1 -0
  168. package/dist/src/tui/install-ui/StepSelector.js +46 -0
  169. package/dist/src/tui/install-ui/StepSelector.js.map +1 -0
  170. package/dist/src/tui/install-ui/index.d.ts +8 -0
  171. package/dist/src/tui/install-ui/index.d.ts.map +1 -0
  172. package/dist/src/tui/install-ui/index.js +10 -0
  173. package/dist/src/tui/install-ui/index.js.map +1 -0
  174. package/dist/src/tui/install-ui/types.d.ts +35 -0
  175. package/dist/src/tui/install-ui/types.d.ts.map +1 -0
  176. package/dist/src/tui/install-ui/types.js +25 -0
  177. package/dist/src/tui/install-ui/types.js.map +1 -0
  178. package/dist/src/tui/overlay-ui/OverlayList.d.ts +37 -0
  179. package/dist/src/tui/overlay-ui/OverlayList.d.ts.map +1 -0
  180. package/dist/src/tui/overlay-ui/OverlayList.js +146 -0
  181. package/dist/src/tui/overlay-ui/OverlayList.js.map +1 -0
  182. package/dist/src/tui/overlay-ui/index.d.ts +18 -0
  183. package/dist/src/tui/overlay-ui/index.d.ts.map +1 -0
  184. package/dist/src/tui/overlay-ui/index.js +204 -0
  185. package/dist/src/tui/overlay-ui/index.js.map +1 -0
  186. package/dist/src/tui/render.d.ts +13 -0
  187. package/dist/src/tui/render.d.ts.map +1 -0
  188. package/dist/src/tui/render.js +31 -0
  189. package/dist/src/tui/render.js.map +1 -0
  190. package/dist/src/tui/tools-ui/CommandReference.d.ts +7 -0
  191. package/dist/src/tui/tools-ui/CommandReference.d.ts.map +1 -0
  192. package/dist/src/tui/tools-ui/CommandReference.js +33 -0
  193. package/dist/src/tui/tools-ui/CommandReference.js.map +1 -0
  194. package/dist/src/tui/tools-ui/ConfigSources.d.ts +6 -0
  195. package/dist/src/tui/tools-ui/ConfigSources.d.ts.map +1 -0
  196. package/dist/src/tui/tools-ui/ConfigSources.js +27 -0
  197. package/dist/src/tui/tools-ui/ConfigSources.js.map +1 -0
  198. package/dist/src/tui/tools-ui/RegisterSettings.d.ts +8 -0
  199. package/dist/src/tui/tools-ui/RegisterSettings.d.ts.map +1 -0
  200. package/dist/src/tui/tools-ui/RegisterSettings.js +125 -0
  201. package/dist/src/tui/tools-ui/RegisterSettings.js.map +1 -0
  202. package/dist/src/tui/tools-ui/RoleMappings.d.ts +9 -0
  203. package/dist/src/tui/tools-ui/RoleMappings.d.ts.map +1 -0
  204. package/dist/src/tui/tools-ui/RoleMappings.js +104 -0
  205. package/dist/src/tui/tools-ui/RoleMappings.js.map +1 -0
  206. package/dist/src/tui/tools-ui/ToolsDashboard.d.ts +8 -0
  207. package/dist/src/tui/tools-ui/ToolsDashboard.d.ts.map +1 -0
  208. package/dist/src/tui/tools-ui/ToolsDashboard.js +60 -0
  209. package/dist/src/tui/tools-ui/ToolsDashboard.js.map +1 -0
  210. package/dist/src/tui/tools-ui/ToolsOverview.d.ts +9 -0
  211. package/dist/src/tui/tools-ui/ToolsOverview.d.ts.map +1 -0
  212. package/dist/src/tui/tools-ui/ToolsOverview.js +84 -0
  213. package/dist/src/tui/tools-ui/ToolsOverview.js.map +1 -0
  214. package/dist/src/tui/tools-ui/index.d.ts +3 -0
  215. package/dist/src/tui/tools-ui/index.d.ts.map +1 -0
  216. package/dist/src/tui/tools-ui/index.js +6 -0
  217. package/dist/src/tui/tools-ui/index.js.map +1 -0
  218. package/dist/src/tui/uninstall-ui/UninstallFlow.d.ts +7 -0
  219. package/dist/src/tui/uninstall-ui/UninstallFlow.d.ts.map +1 -0
  220. package/dist/src/tui/uninstall-ui/UninstallFlow.js +189 -0
  221. package/dist/src/tui/uninstall-ui/UninstallFlow.js.map +1 -0
  222. package/dist/src/tui/uninstall-ui/index.d.ts +3 -0
  223. package/dist/src/tui/uninstall-ui/index.d.ts.map +1 -0
  224. package/dist/src/tui/uninstall-ui/index.js +6 -0
  225. package/dist/src/tui/uninstall-ui/index.js.map +1 -0
  226. package/package.json +1 -1
  227. package/workflows/auto-test.md +682 -0
  228. package/workflows/business-test.md +570 -0
  229. package/workflows/integration-test.md +1 -1
  230. package/workflows/maestro.codex.md +4 -3
  231. package/workflows/maestro.md +5 -4
  232. package/workflows/status.md +2 -2
  233. package/workflows/test.md +1 -1
  234. package/workflows/verify.md +1 -1
  235. package/.claude/commands/quality-business-test.md +0 -110
  236. package/.claude/commands/quality-integration-test.md +0 -67
  237. package/.claude/commands/quality-test-gen.md +0 -68
  238. package/.codex/skills/maestro-ralph-execute/SKILL.md +0 -219
  239. package/.codex/skills/quality-business-test/SKILL.md +0 -218
  240. package/.codex/skills/quality-integration-test/SKILL.md +0 -427
  241. package/.codex/skills/quality-test-gen/SKILL.md +0 -352
@@ -0,0 +1,69 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useState, useCallback } from 'react';
3
+ import { Box, Text, useInput } from 'ink';
4
+ import { TextInput } from '@inkjs/ui';
5
+ import { MCP_TOOLS } from '../../commands/install-backend.js';
6
+ import { t } from '../../i18n/index.js';
7
+ export function McpConfig({ enabled, tools, projectRoot, mode, onEnableChange, onToolsChange, onRootChange, }) {
8
+ const [editingRoot, setEditingRoot] = useState(false);
9
+ const [rootInput, setRootInput] = useState(projectRoot);
10
+ // Index 0 = enable toggle, 1..N = tools
11
+ const [index, setIndex] = useState(0);
12
+ const totalRows = enabled ? 1 + MCP_TOOLS.length : 1;
13
+ const toggleTool = useCallback((toolIndex) => {
14
+ if (toolIndex < 0 || toolIndex >= MCP_TOOLS.length)
15
+ return;
16
+ const toolName = MCP_TOOLS[toolIndex];
17
+ if (tools.includes(toolName)) {
18
+ onToolsChange(tools.filter((t) => t !== toolName));
19
+ }
20
+ else {
21
+ onToolsChange([...tools, toolName]);
22
+ }
23
+ }, [tools, onToolsChange]);
24
+ useInput((input, key) => {
25
+ if (editingRoot)
26
+ return;
27
+ if (key.upArrow) {
28
+ setIndex((i) => (i <= 0 ? totalRows - 1 : i - 1));
29
+ }
30
+ else if (key.downArrow) {
31
+ setIndex((i) => (i >= totalRows - 1 ? 0 : i + 1));
32
+ }
33
+ else if (input === ' ') {
34
+ if (index === 0) {
35
+ onEnableChange(!enabled);
36
+ }
37
+ else {
38
+ toggleTool(index - 1);
39
+ }
40
+ }
41
+ else if (input === 'y' || input === 'Y') {
42
+ onEnableChange(true);
43
+ }
44
+ else if (input === 'n' || input === 'N') {
45
+ onEnableChange(false);
46
+ }
47
+ else if (input === 'r' || input === 'R') {
48
+ setEditingRoot(true);
49
+ }
50
+ else {
51
+ const num = parseInt(input, 10);
52
+ if (!isNaN(num) && num >= 1 && num <= MCP_TOOLS.length && enabled) {
53
+ toggleTool(num - 1);
54
+ }
55
+ }
56
+ });
57
+ const handleRootSubmit = useCallback((value) => {
58
+ onRootChange(value);
59
+ setEditingRoot(false);
60
+ }, [onRootChange]);
61
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { bold: true, color: "cyan", children: t.install.mcpTitle }), _jsxs(Box, { marginTop: 1, children: [_jsxs(Text, { color: index === 0 ? 'cyan' : undefined, children: [t.install.mcpEnable, ' '] }), _jsx(Text, { color: enabled ? 'green' : 'yellow', bold: true, children: enabled ? t.install.mcpYes : t.install.mcpNo }), _jsx(Text, { dimColor: true, children: " [y/n/Space]" })] }), enabled && (_jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsx(Text, { bold: true, children: t.install.mcpTools }), _jsx(Box, { flexDirection: "column", marginTop: 1, children: MCP_TOOLS.map((tool, i) => {
62
+ const checked = tools.includes(tool);
63
+ const hl = index === i + 1;
64
+ return (_jsxs(Box, { children: [_jsxs(Text, { color: hl ? 'cyan' : 'gray', children: ["[", i + 1, "]"] }), _jsxs(Text, { color: checked ? 'green' : 'gray', children: [" ", checked ? '[x]' : '[ ]', " "] }), _jsx(Text, { color: hl ? 'cyan' : undefined, bold: hl, children: tool })] }, tool));
65
+ }) }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { dimColor: true, children: t.install.mcpToolsEnabled
66
+ .replace('{enabled}', String(tools.length))
67
+ .replace('{total}', String(MCP_TOOLS.length)) }) }), mode === 'project' && (_jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsxs(Text, { children: [t.install.mcpProjectRoot, ' ', editingRoot ? (_jsx(TextInput, { placeholder: projectRoot || process.cwd(), defaultValue: projectRoot, onSubmit: handleRootSubmit, onChange: setRootInput })) : (_jsx(Text, { color: "cyan", children: projectRoot || t.install.mcpProjectRootDefault }))] }), !editingRoot && (_jsx(Text, { dimColor: true, children: t.install.mcpEditRoot }))] }))] })), _jsx(Box, { marginTop: 1, children: _jsxs(Text, { dimColor: true, children: ["[Up/Down] Navigate [Space/1-", MCP_TOOLS.length, "] Toggle [y/n] Enable [Enter] Done [Esc] Back"] }) })] }));
68
+ }
69
+ //# sourceMappingURL=McpConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"McpConfig.js","sourceRoot":"","sources":["../../../../src/tui/install-ui/McpConfig.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { type InstallResult } from './types.js';
2
+ interface ResultDashboardProps {
3
+ result: InstallResult;
4
+ onClose: () => void;
5
+ }
6
+ export declare function ResultDashboard({ result, onClose }: ResultDashboardProps): import("react/jsx-runtime").JSX.Element;
7
+ export {};
8
+ //# sourceMappingURL=ResultDashboard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResultDashboard.d.ts","sourceRoot":"","sources":["../../../../src/tui/install-ui/ResultDashboard.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAMhD,UAAU,oBAAoB;IAC5B,MAAM,EAAE,aAAa,CAAC;IACtB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAWD,wBAAgB,eAAe,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,oBAAoB,2CA6DxE"}
@@ -0,0 +1,17 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Box, Text, useInput, useApp } from 'ink';
3
+ function Row({ label, value }) {
4
+ return (_jsxs(Box, { children: [_jsx(Text, { color: "cyan", children: label.padEnd(13) }), _jsx(Text, { color: "green", children: value })] }));
5
+ }
6
+ export function ResultDashboard({ result, onClose }) {
7
+ const { exit } = useApp();
8
+ useInput((_input, key) => {
9
+ if (key.return) {
10
+ onClose();
11
+ exit();
12
+ }
13
+ });
14
+ const { totalStats, manifestPath, mcpRegistered, hookResult, disabledRestored, overlaysApplied } = result;
15
+ return (_jsxs(Box, { flexDirection: "column", paddingX: 1, children: [_jsxs(Box, { flexDirection: "column", borderStyle: "round", borderColor: "green", paddingX: 1, children: [_jsx(Text, { bold: true, color: "green", children: "Installation Complete" }), _jsx(Row, { label: "Files:", value: `${totalStats.files} installed` }), totalStats.dirs > 0 && (_jsx(Row, { label: "Dirs:", value: `${totalStats.dirs} created` })), totalStats.skipped > 0 && (_jsx(Row, { label: "Preserved:", value: `${totalStats.skipped} settings files` })), disabledRestored > 0 && (_jsx(Row, { label: "Disabled:", value: `${disabledRestored} items restored` })), overlaysApplied > 0 && (_jsx(Row, { label: "Overlays:", value: `${overlaysApplied} applied` })), mcpRegistered && (_jsx(Row, { label: "MCP:", value: "maestro-tools registered" })), hookResult && (_jsx(Row, { label: "Hooks:", value: `${hookResult.level} (${hookResult.installedHooks.length} hooks)` })), _jsxs(Box, { children: [_jsx(Text, { color: "cyan", children: 'Manifest:'.padEnd(13) }), _jsx(Text, { dimColor: true, children: manifestPath })] })] }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { dimColor: true, children: "Restart Claude Code or IDE to pick up changes." }) }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { dimColor: true, children: "Press Enter to exit." }) })] }));
16
+ }
17
+ //# sourceMappingURL=ResultDashboard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResultDashboard.js","sourceRoot":"","sources":["../../../../src/tui/install-ui/ResultDashboard.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAYlD,SAAS,GAAG,CAAC,EAAE,KAAK,EAAE,KAAK,EAAoC;IAC7D,OAAO,CACL,MAAC,GAAG,eACF,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,YAAE,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,GAAQ,EAC5C,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,YAAE,KAAK,GAAQ,IAC9B,CACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,EAAE,MAAM,EAAE,OAAO,EAAwB;IACvE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC;IAE1B,QAAQ,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;QACvB,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YACf,OAAO,EAAE,CAAC;YACV,IAAI,EAAE,CAAC;QACT,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,gBAAgB,EAAE,eAAe,EAAE,GAC9F,MAAM,CAAC;IAET,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,QAAQ,EAAE,CAAC,aACrC,MAAC,GAAG,IACF,aAAa,EAAC,QAAQ,EACtB,WAAW,EAAC,OAAO,EACnB,WAAW,EAAC,OAAO,EACnB,QAAQ,EAAE,CAAC,aAEX,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,OAAO,sCAEjB,EACP,KAAC,GAAG,IAAC,KAAK,EAAC,QAAQ,EAAC,KAAK,EAAE,GAAG,UAAU,CAAC,KAAK,YAAY,GAAI,EAC7D,UAAU,CAAC,IAAI,GAAG,CAAC,IAAI,CACtB,KAAC,GAAG,IAAC,KAAK,EAAC,OAAO,EAAC,KAAK,EAAE,GAAG,UAAU,CAAC,IAAI,UAAU,GAAI,CAC3D,EACA,UAAU,CAAC,OAAO,GAAG,CAAC,IAAI,CACzB,KAAC,GAAG,IAAC,KAAK,EAAC,YAAY,EAAC,KAAK,EAAE,GAAG,UAAU,CAAC,OAAO,iBAAiB,GAAI,CAC1E,EACA,gBAAgB,GAAG,CAAC,IAAI,CACvB,KAAC,GAAG,IAAC,KAAK,EAAC,WAAW,EAAC,KAAK,EAAE,GAAG,gBAAgB,iBAAiB,GAAI,CACvE,EACA,eAAe,GAAG,CAAC,IAAI,CACtB,KAAC,GAAG,IAAC,KAAK,EAAC,WAAW,EAAC,KAAK,EAAE,GAAG,eAAe,UAAU,GAAI,CAC/D,EACA,aAAa,IAAI,CAChB,KAAC,GAAG,IAAC,KAAK,EAAC,MAAM,EAAC,KAAK,EAAC,0BAA0B,GAAG,CACtD,EACA,UAAU,IAAI,CACb,KAAC,GAAG,IACF,KAAK,EAAC,QAAQ,EACd,KAAK,EAAE,GAAG,UAAU,CAAC,KAAK,KAAK,UAAU,CAAC,cAAc,CAAC,MAAM,SAAS,GACxE,CACH,EACD,MAAC,GAAG,eACF,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,YAAE,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,GAAQ,EAClD,KAAC,IAAI,IAAC,QAAQ,kBAAE,YAAY,GAAQ,IAChC,IACF,EAEN,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,YACf,KAAC,IAAI,IAAC,QAAQ,qEAAsD,GAChE,EAEN,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,YACf,KAAC,IAAI,IAAC,QAAQ,2CAA4B,GACtC,IACF,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,19 @@
1
+ interface ReviewPanelProps {
2
+ config: {
3
+ mode: 'global' | 'project';
4
+ projectPath: string;
5
+ selectedIds: string[];
6
+ mcpEnabled: boolean;
7
+ mcpTools: string[];
8
+ mcpProjectRoot: string;
9
+ hookLevel: string;
10
+ doBackup: boolean;
11
+ };
12
+ componentLabels: string[];
13
+ fileCount: number;
14
+ onConfirm: () => void;
15
+ onBack: () => void;
16
+ }
17
+ export declare function ReviewPanel({ config, componentLabels, fileCount, onConfirm, onBack, }: ReviewPanelProps): import("react/jsx-runtime").JSX.Element;
18
+ export {};
19
+ //# sourceMappingURL=ReviewPanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReviewPanel.d.ts","sourceRoot":"","sources":["../../../../src/tui/install-ui/ReviewPanel.tsx"],"names":[],"mappings":"AAOA,UAAU,gBAAgB;IACxB,MAAM,EAAE;QACN,IAAI,EAAE,QAAQ,GAAG,SAAS,CAAC;QAC3B,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,MAAM,EAAE,CAAC;QACtB,UAAU,EAAE,OAAO,CAAC;QACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,cAAc,EAAE,MAAM,CAAC;QACvB,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,OAAO,CAAC;KACnB,CAAC;IACF,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,wBAAgB,WAAW,CAAC,EAC1B,MAAM,EACN,eAAe,EACf,SAAS,EACT,SAAS,EACT,MAAM,GACP,EAAE,gBAAgB,2CA0ElB"}
@@ -0,0 +1,25 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Box, Text, useInput } from 'ink';
3
+ export function ReviewPanel({ config, componentLabels, fileCount, onConfirm, onBack, }) {
4
+ useInput((_input, key) => {
5
+ if (key.return) {
6
+ onConfirm();
7
+ return;
8
+ }
9
+ if (key.escape) {
10
+ onBack();
11
+ return;
12
+ }
13
+ });
14
+ const targetDir = config.mode === 'global'
15
+ ? '~/.maestro/ + ~/.claude/'
16
+ : config.projectPath || './';
17
+ const componentsStr = componentLabels.length > 0
18
+ ? componentLabels.join(', ')
19
+ : 'None';
20
+ const mcpStr = config.mcpEnabled
21
+ ? `${config.mcpTools.length} tools enabled`
22
+ : 'disabled';
23
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { bold: true, color: "cyan", children: "Installation Summary" }), _jsxs(Box, { flexDirection: "column", borderStyle: "round", borderColor: "cyan", paddingX: 1, marginTop: 1, children: [_jsxs(Box, { children: [_jsxs(Text, { bold: true, children: ["Mode:", ' '] }), _jsx(Text, { children: config.mode })] }), _jsxs(Box, { children: [_jsxs(Text, { bold: true, children: ["Target:", ' '] }), _jsx(Text, { children: targetDir })] }), _jsxs(Box, { children: [_jsxs(Text, { bold: true, children: ["Components:", ' '] }), _jsx(Text, { children: componentsStr })] }), _jsxs(Box, { children: [_jsxs(Text, { bold: true, children: ["Files:", ' '] }), _jsxs(Text, { children: [fileCount, " total"] })] }), _jsxs(Box, { children: [_jsxs(Text, { bold: true, children: ["MCP:", ' '] }), _jsx(Text, { children: mcpStr })] }), _jsxs(Box, { children: [_jsxs(Text, { bold: true, children: ["Hooks:", ' '] }), _jsx(Text, { children: config.hookLevel })] }), _jsxs(Box, { children: [_jsxs(Text, { bold: true, children: ["Backup:", ' '] }), _jsx(Text, { children: config.doBackup ? 'yes' : 'no' })] })] }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { dimColor: true, children: "Enter to install, Esc to go back" }) })] }));
24
+ }
25
+ //# sourceMappingURL=ReviewPanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReviewPanel.js","sourceRoot":"","sources":["../../../../src/tui/install-ui/ReviewPanel.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAuB1C,MAAM,UAAU,WAAW,CAAC,EAC1B,MAAM,EACN,eAAe,EACf,SAAS,EACT,SAAS,EACT,MAAM,GACW;IACjB,QAAQ,CACN,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;QACd,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YACf,SAAS,EAAE,CAAC;YACZ,OAAO;QACT,CAAC;QACD,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YACf,MAAM,EAAE,CAAC;YACT,OAAO;QACT,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,KAAK,QAAQ;QACxC,CAAC,CAAC,0BAA0B;QAC5B,CAAC,CAAC,MAAM,CAAC,WAAW,IAAI,IAAI,CAAC;IAE/B,MAAM,aAAa,GAAG,eAAe,CAAC,MAAM,GAAG,CAAC;QAC9C,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;QAC5B,CAAC,CAAC,MAAM,CAAC;IAEX,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU;QAC9B,CAAC,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,gBAAgB;QAC3C,CAAC,CAAC,UAAU,CAAC;IAEf,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,MAAM,qCAEhB,EAEP,MAAC,GAAG,IACF,aAAa,EAAC,QAAQ,EACtB,WAAW,EAAC,OAAO,EACnB,WAAW,EAAC,MAAM,EAClB,QAAQ,EAAE,CAAC,EACX,SAAS,EAAE,CAAC,aAEZ,MAAC,GAAG,eACF,MAAC,IAAI,IAAC,IAAI,4BAAO,UAAU,IAAQ,EACnC,KAAC,IAAI,cAAE,MAAM,CAAC,IAAI,GAAQ,IACtB,EACN,MAAC,GAAG,eACF,MAAC,IAAI,IAAC,IAAI,8BAAS,QAAQ,IAAQ,EACnC,KAAC,IAAI,cAAE,SAAS,GAAQ,IACpB,EACN,MAAC,GAAG,eACF,MAAC,IAAI,IAAC,IAAI,kCAAa,IAAI,IAAQ,EACnC,KAAC,IAAI,cAAE,aAAa,GAAQ,IACxB,EACN,MAAC,GAAG,eACF,MAAC,IAAI,IAAC,IAAI,6BAAQ,SAAS,IAAQ,EACnC,MAAC,IAAI,eAAE,SAAS,cAAc,IAC1B,EACN,MAAC,GAAG,eACF,MAAC,IAAI,IAAC,IAAI,2BAAM,UAAU,IAAQ,EAClC,KAAC,IAAI,cAAE,MAAM,GAAQ,IACjB,EACN,MAAC,GAAG,eACF,MAAC,IAAI,IAAC,IAAI,6BAAQ,QAAQ,IAAQ,EAClC,KAAC,IAAI,cAAE,MAAM,CAAC,SAAS,GAAQ,IAC3B,EACN,MAAC,GAAG,eACF,MAAC,IAAI,IAAC,IAAI,8BAAS,OAAO,IAAQ,EAClC,KAAC,IAAI,cAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,GAAQ,IACzC,IACF,EAEN,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,YACf,KAAC,IAAI,IAAC,QAAQ,uDAAwC,GAClD,IACF,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { type WizardStep } from './types.js';
2
+ interface ShortcutFooterProps {
3
+ currentStep: WizardStep;
4
+ }
5
+ export declare function ShortcutFooter({ currentStep }: ShortcutFooterProps): import("react/jsx-runtime").JSX.Element;
6
+ export {};
7
+ //# sourceMappingURL=ShortcutFooter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ShortcutFooter.d.ts","sourceRoot":"","sources":["../../../../src/tui/install-ui/ShortcutFooter.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAM7C,UAAU,mBAAmB;IAC3B,WAAW,EAAE,UAAU,CAAC;CACzB;AAWD,wBAAgB,cAAc,CAAC,EAAE,WAAW,EAAE,EAAE,mBAAmB,2CAQlE"}
@@ -0,0 +1,15 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Box, Text } from 'ink';
3
+ const STEP_HINTS = {
4
+ mode: '[G]lobal [P]roject [Enter] Next',
5
+ components: '[1-9] Toggle [A]ll [N]one [Enter] Next [Esc] Back',
6
+ config: '[Enter] Next [Esc] Back',
7
+ review: '[Enter] Install [Esc] Back',
8
+ executing: 'Installing... please wait',
9
+ complete: '[Enter] Exit',
10
+ };
11
+ export function ShortcutFooter({ currentStep }) {
12
+ const hint = STEP_HINTS[currentStep];
13
+ return (_jsx(Box, { paddingX: 1, children: _jsx(Text, { dimColor: true, children: hint }) }));
14
+ }
15
+ //# sourceMappingURL=ShortcutFooter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ShortcutFooter.js","sourceRoot":"","sources":["../../../../src/tui/install-ui/ShortcutFooter.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAWhC,MAAM,UAAU,GAA+B;IAC7C,IAAI,EAAE,mCAAmC;IACzC,UAAU,EAAE,uDAAuD;IACnE,MAAM,EAAE,0BAA0B;IAClC,MAAM,EAAE,6BAA6B;IACrC,SAAS,EAAE,2BAA2B;IACtC,QAAQ,EAAE,cAAc;CACzB,CAAC;AAEF,MAAM,UAAU,cAAc,CAAC,EAAE,WAAW,EAAuB;IACjE,MAAM,IAAI,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;IAErC,OAAO,CACL,KAAC,GAAG,IAAC,QAAQ,EAAE,CAAC,YACd,KAAC,IAAI,IAAC,QAAQ,kBAAE,IAAI,GAAQ,GACxB,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,11 @@
1
+ interface StatuslineConfigProps {
2
+ enabled: boolean;
3
+ theme: string;
4
+ /** Currently detected statusline command, or null */
5
+ detected: string | null;
6
+ onToggle: (v: boolean) => void;
7
+ onThemeChange: (v: string) => void;
8
+ }
9
+ export declare function StatuslineConfig({ enabled, theme, detected, onToggle, onThemeChange, }: StatuslineConfigProps): import("react/jsx-runtime").JSX.Element;
10
+ export {};
11
+ //# sourceMappingURL=StatuslineConfig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StatuslineConfig.d.ts","sourceRoot":"","sources":["../../../../src/tui/install-ui/StatuslineConfig.tsx"],"names":[],"mappings":"AAiBA,UAAU,qBAAqB;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,qDAAqD;IACrD,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAC/B,aAAa,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CACpC;AAED,wBAAgB,gBAAgB,CAAC,EAC/B,OAAO,EAAE,KAAK,EAAE,QAAQ,EACxB,QAAQ,EAAE,aAAa,GACxB,EAAE,qBAAqB,2CAoEvB"}
@@ -0,0 +1,39 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Box, Text, useInput } from 'ink';
3
+ import { t } from '../../i18n/index.js';
4
+ import { THEME_NAMES } from '../../hooks/constants.js';
5
+ // ---------------------------------------------------------------------------
6
+ // StatuslineConfig — Statusline toggle + theme selection
7
+ // ---------------------------------------------------------------------------
8
+ const THEME_LABELS = {
9
+ notion: { label: 'Notion', desc: '柔和暖色,Catppuccin 风格' },
10
+ cyberpunk: { label: 'Cyberpunk', desc: '霓虹高对比,赛博朋克' },
11
+ pastel: { label: 'Fresh Pastel', desc: '柔和粉蓝绿,小清新' },
12
+ nord: { label: 'Nord', desc: '北欧冰蓝,沉稳冷调' },
13
+ monokai: { label: 'Monokai', desc: '经典编辑器,高辨识' },
14
+ };
15
+ export function StatuslineConfig({ enabled, theme, detected, onToggle, onThemeChange, }) {
16
+ useInput((input) => {
17
+ if (!enabled) {
18
+ if (input === 'y' || input === 'Y')
19
+ onToggle(true);
20
+ else if (input === 'n' || input === 'N')
21
+ onToggle(false);
22
+ return;
23
+ }
24
+ // Theme selection: 1-5
25
+ const idx = parseInt(input, 10) - 1;
26
+ if (idx >= 0 && idx < THEME_NAMES.length) {
27
+ onThemeChange(THEME_NAMES[idx]);
28
+ }
29
+ // Back to toggle
30
+ else if (input === 'n' || input === 'N')
31
+ onToggle(false);
32
+ });
33
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { bold: true, color: "cyan", children: t.install.statuslineTitle }), detected && (_jsxs(Box, { marginTop: 1, flexDirection: "column", children: [_jsx(Text, { color: "yellow", children: t.install.statuslineCurrentLabel }), _jsxs(Text, { dimColor: true, children: [" ", detected] })] })), _jsxs(Box, { marginTop: 1, children: [_jsxs(Text, { children: [t.install.statuslineInstallPrompt, " "] }), _jsx(Text, { color: enabled ? 'green' : 'yellow', bold: true, children: enabled ? '[Yes]' : '[No]' }), _jsx(Text, { dimColor: true, children: " [y/n]" })] }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { dimColor: true, children: t.install.statuslineDesc }) }), detected && enabled && (_jsx(Box, { marginTop: 1, children: _jsx(Text, { color: "yellow", children: t.install.statuslineOverwriteWarn }) })), enabled && (_jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsx(Text, { bold: true, children: "Color Theme:" }), THEME_NAMES.map((name, i) => {
34
+ const info = THEME_LABELS[name] ?? { label: name, desc: '' };
35
+ const selected = theme === name;
36
+ return (_jsxs(Box, { marginLeft: 1, children: [_jsx(Text, { color: selected ? 'green' : 'gray', children: selected ? '● ' : '○ ' }), _jsxs(Text, { color: selected ? 'green' : undefined, bold: selected, children: ["[", i + 1, "] ", info.label] }), _jsxs(Text, { dimColor: true, children: [" ", info.desc] })] }, name));
37
+ })] }))] }));
38
+ }
39
+ //# sourceMappingURL=StatuslineConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StatuslineConfig.js","sourceRoot":"","sources":["../../../../src/tui/install-ui/StatuslineConfig.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ export interface StepDef {
2
+ id: string;
3
+ label: string;
4
+ description: string;
5
+ }
6
+ interface StepSelectorProps {
7
+ steps: StepDef[];
8
+ selectedIds: string[];
9
+ onSelectionChange: (ids: string[]) => void;
10
+ onDone: () => void;
11
+ }
12
+ export declare function StepSelector({ steps, selectedIds, onSelectionChange, onDone }: StepSelectorProps): import("react/jsx-runtime").JSX.Element;
13
+ export {};
14
+ //# sourceMappingURL=StepSelector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StepSelector.d.ts","sourceRoot":"","sources":["../../../../src/tui/install-ui/StepSelector.tsx"],"names":[],"mappings":"AAOA,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,iBAAiB;IACzB,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,iBAAiB,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAC3C,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,wBAAgB,YAAY,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,EAAE,EAAE,iBAAiB,2CA0DhG"}
@@ -0,0 +1,46 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useState } from 'react';
3
+ import { Box, Text, useInput } from 'ink';
4
+ export function StepSelector({ steps, selectedIds, onSelectionChange, onDone }) {
5
+ const [index, setIndex] = useState(0);
6
+ useInput((input, key) => {
7
+ if (key.upArrow) {
8
+ setIndex((i) => (i <= 0 ? steps.length - 1 : i - 1));
9
+ }
10
+ else if (key.downArrow) {
11
+ setIndex((i) => (i >= steps.length - 1 ? 0 : i + 1));
12
+ }
13
+ else if (input === ' ') {
14
+ const id = steps[index].id;
15
+ const next = selectedIds.includes(id)
16
+ ? selectedIds.filter((s) => s !== id)
17
+ : [...selectedIds, id];
18
+ onSelectionChange(next);
19
+ }
20
+ else if (input === 'a' || input === 'A') {
21
+ onSelectionChange(steps.map((s) => s.id));
22
+ }
23
+ else if (input === 'n' || input === 'N') {
24
+ onSelectionChange([]);
25
+ }
26
+ else if (key.return) {
27
+ onDone();
28
+ }
29
+ else {
30
+ const num = parseInt(input, 10);
31
+ if (!isNaN(num) && num >= 1 && num <= steps.length) {
32
+ const id = steps[num - 1].id;
33
+ const next = selectedIds.includes(id)
34
+ ? selectedIds.filter((s) => s !== id)
35
+ : [...selectedIds, id];
36
+ onSelectionChange(next);
37
+ }
38
+ }
39
+ });
40
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { bold: true, color: "cyan", children: "Select Installation Steps" }), _jsx(Box, { flexDirection: "column", marginTop: 1, children: steps.map((step, i) => {
41
+ const selected = selectedIds.includes(step.id);
42
+ const highlighted = i === index;
43
+ return (_jsxs(Box, { children: [_jsxs(Text, { color: highlighted ? 'cyan' : 'gray', children: ["[", i + 1, "]"] }), _jsxs(Text, { color: selected ? 'green' : 'gray', children: [" ", selected ? '[x]' : '[ ]', " "] }), _jsx(Text, { color: highlighted ? 'cyan' : undefined, bold: highlighted, children: step.label }), _jsxs(Text, { dimColor: true, children: [" \u2014 ", step.description] })] }, step.id));
44
+ }) }), _jsx(Box, { marginTop: 1, children: _jsxs(Text, { dimColor: true, children: ["[Space] Toggle [1-", steps.length, "] Quick toggle [A]ll [N]one [Enter] Next"] }) })] }));
45
+ }
46
+ //# sourceMappingURL=StepSelector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StepSelector.js","sourceRoot":"","sources":["../../../../src/tui/install-ui/StepSelector.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export declare function runInstallWizard(pkgRoot: string, version: string): Promise<void>;
2
+ export interface InstallFlowOptions {
3
+ initialStep?: 'mode' | 'hub' | 'components_config' | 'hooks_config' | 'mcp_config' | 'statusline_config' | 'backup_config' | 'confirm';
4
+ initialMode?: 'global' | 'project';
5
+ initialStepIds?: string[];
6
+ }
7
+ export declare function runInstallFlow(pkgRoot: string, version: string, options?: InstallFlowOptions): Promise<void>;
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/tui/install-ui/index.ts"],"names":[],"mappings":"AAEA,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CAGf;AAED,MAAM,WAAW,kBAAkB;IACjC,WAAW,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,mBAAmB,GAAG,cAAc,GAAG,YAAY,GAAG,mBAAmB,GAAG,eAAe,GAAG,SAAS,CAAC;IACvI,WAAW,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IACnC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,wBAAsB,cAAc,CAClC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,IAAI,CAAC,CAGf"}
@@ -0,0 +1,10 @@
1
+ import { renderTui } from '../render.js';
2
+ export async function runInstallWizard(pkgRoot, version) {
3
+ const { CyberdeckBlueprint } = await import('./CyberdeckBlueprint.js');
4
+ await renderTui(CyberdeckBlueprint, { pkgRoot, version });
5
+ }
6
+ export async function runInstallFlow(pkgRoot, version, options) {
7
+ const { InstallFlow } = await import('./InstallFlow.js');
8
+ await renderTui(InstallFlow, { pkgRoot, version, ...options });
9
+ }
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/tui/install-ui/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,OAAe,EACf,OAAe;IAEf,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAC;IACvE,MAAM,SAAS,CAAC,kBAAkB,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;AAC5D,CAAC;AAQD,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,OAAe,EACf,OAAe,EACf,OAA4B;IAE5B,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;IACzD,MAAM,SAAS,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;AACjE,CAAC"}
@@ -0,0 +1,35 @@
1
+ export type WizardStep = 'mode' | 'components' | 'config' | 'review' | 'executing' | 'complete';
2
+ export declare const WIZARD_STEPS: readonly WizardStep[];
3
+ export interface InstallConfig {
4
+ mode: 'global' | 'project';
5
+ projectPath: string;
6
+ selectedIds: string[];
7
+ mcpEnabled: boolean;
8
+ mcpTools: string[];
9
+ mcpProjectRoot: string;
10
+ hookLevel: 'none' | 'minimal' | 'standard' | 'full';
11
+ doBackup: boolean;
12
+ /** Install statusline separately (default: false) */
13
+ installStatusline: boolean;
14
+ /** Backup CLAUDE.md before overwrite (default: true) */
15
+ backupClaudeMd: boolean;
16
+ /** Backup all replaced files (default: false) */
17
+ backupAll: boolean;
18
+ }
19
+ export declare const DEFAULT_INSTALL_CONFIG: InstallConfig;
20
+ export interface InstallResult {
21
+ totalStats: {
22
+ files: number;
23
+ dirs: number;
24
+ skipped: number;
25
+ };
26
+ manifestPath: string;
27
+ mcpRegistered: boolean;
28
+ hookResult: {
29
+ installedHooks: string[];
30
+ level: string;
31
+ } | null;
32
+ disabledRestored: number;
33
+ overlaysApplied: number;
34
+ }
35
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/tui/install-ui/types.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,YAAY,GAAG,QAAQ,GAAG,QAAQ,GAAG,WAAW,GAAG,UAAU,CAAC;AAEhG,eAAO,MAAM,YAAY,EAAE,SAAS,UAAU,EAO7C,CAAC;AAEF,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,GAAG,MAAM,CAAC;IACpD,QAAQ,EAAE,OAAO,CAAC;IAClB,qDAAqD;IACrD,iBAAiB,EAAE,OAAO,CAAC;IAC3B,wDAAwD;IACxD,cAAc,EAAE,OAAO,CAAC;IACxB,iDAAiD;IACjD,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,eAAO,MAAM,sBAAsB,EAAE,aAYpC,CAAC;AAMF,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7D,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,OAAO,CAAC;IACvB,UAAU,EAAE;QAAE,cAAc,EAAE,MAAM,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC/D,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;CACzB"}
@@ -0,0 +1,25 @@
1
+ // ---------------------------------------------------------------------------
2
+ // Types for the install wizard TUI (CyberdeckBlueprint)
3
+ // ---------------------------------------------------------------------------
4
+ export const WIZARD_STEPS = [
5
+ 'mode',
6
+ 'components',
7
+ 'config',
8
+ 'review',
9
+ 'executing',
10
+ 'complete',
11
+ ];
12
+ export const DEFAULT_INSTALL_CONFIG = {
13
+ mode: 'global',
14
+ projectPath: '',
15
+ selectedIds: [],
16
+ mcpEnabled: true,
17
+ mcpTools: [],
18
+ mcpProjectRoot: '',
19
+ hookLevel: 'none',
20
+ doBackup: false,
21
+ installStatusline: false,
22
+ backupClaudeMd: true,
23
+ backupAll: false,
24
+ };
25
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/tui/install-ui/types.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,wDAAwD;AACxD,8EAA8E;AAI9E,MAAM,CAAC,MAAM,YAAY,GAA0B;IACjD,MAAM;IACN,YAAY;IACZ,QAAQ;IACR,QAAQ;IACR,WAAW;IACX,UAAU;CACX,CAAC;AAmBF,MAAM,CAAC,MAAM,sBAAsB,GAAkB;IACnD,IAAI,EAAE,QAAQ;IACd,WAAW,EAAE,EAAE;IACf,WAAW,EAAE,EAAE;IACf,UAAU,EAAE,IAAI;IAChB,QAAQ,EAAE,EAAE;IACZ,cAAc,EAAE,EAAE;IAClB,SAAS,EAAE,MAAM;IACjB,QAAQ,EAAE,KAAK;IACf,iBAAiB,EAAE,KAAK;IACxB,cAAc,EAAE,IAAI;IACpB,SAAS,EAAE,KAAK;CACjB,CAAC"}
@@ -0,0 +1,37 @@
1
+ import type { OverlayFile } from '../../core/overlay/types.js';
2
+ export interface LoadError {
3
+ path: string;
4
+ errors: string[];
5
+ }
6
+ export interface OverlayAppliedState {
7
+ name: string;
8
+ appliedScopes: string[];
9
+ }
10
+ export interface SectionMarker {
11
+ overlayName: string;
12
+ patchIdx: number;
13
+ line: number;
14
+ description: string;
15
+ }
16
+ export interface TargetSection {
17
+ name: string;
18
+ openLine: number;
19
+ closeLine: number;
20
+ }
21
+ export interface TargetInfo {
22
+ name: string;
23
+ /** Which CLI this target belongs to. */
24
+ cli: 'claude' | 'codex';
25
+ sections: TargetSection[];
26
+ markers: SectionMarker[];
27
+ }
28
+ export interface OverlayListProps {
29
+ overlays: OverlayFile[];
30
+ errors: LoadError[];
31
+ appliedState: Map<string, OverlayAppliedState>;
32
+ targets: TargetInfo[];
33
+ interactive: boolean;
34
+ onDelete: (name: string) => void;
35
+ }
36
+ export declare function OverlayList({ overlays: initialOverlays, errors, appliedState: initialApplied, targets: initialTargets, interactive, onDelete, }: OverlayListProps): import("react/jsx-runtime").JSX.Element;
37
+ //# sourceMappingURL=OverlayList.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OverlayList.d.ts","sourceRoot":"","sources":["../../../../src/tui/overlay-ui/OverlayList.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAE/D,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAMD,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,wCAAwC;IACxC,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC;IACxB,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,OAAO,EAAE,aAAa,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IAC/C,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAClC;AAgJD,wBAAgB,WAAW,CAAC,EAC1B,QAAQ,EAAE,eAAe,EACzB,MAAM,EACN,YAAY,EAAE,cAAc,EAC5B,OAAO,EAAE,cAAc,EACvB,WAAW,EACX,QAAQ,GACT,EAAE,gBAAgB,2CA+IlB"}