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 @@
1
+ {"version":3,"file":"SpecPanel.js","sourceRoot":"","sources":["../../../../src/tui/config-ui/SpecPanel.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ export type ConfigInitialView = 'dashboard' | 'skills' | 'editor' | 'sources';
2
+ export type DelegateInitialView = 'dashboard' | 'tools' | 'roles' | 'register' | 'reference' | 'sources';
3
+ export type ConfigHubTab = 'Skills' | 'Delegate' | 'Hooks' | 'Overlay' | 'Specs' | 'Install';
4
+ /** Unified config hub — tab-based switcher between all config panels. */
5
+ export declare function runConfigHub(options?: {
6
+ initialTab?: ConfigHubTab;
7
+ skillsInitialView?: ConfigInitialView;
8
+ editSkill?: string;
9
+ delegateInitialView?: DelegateInitialView;
10
+ }): Promise<void>;
11
+ /** Skills config TUI — direct entry. */
12
+ export declare function runConfigTui(initialView?: ConfigInitialView, editSkill?: string): Promise<void>;
13
+ /** Delegate config TUI — direct entry. */
14
+ export declare function runDelegateConfigTui(initialView?: DelegateInitialView): Promise<void>;
15
+ /** Hooks panel — direct entry. */
16
+ export declare function runHooksTui(): Promise<void>;
17
+ /** Overlay panel — direct entry. */
18
+ export declare function runOverlayTui(): Promise<void>;
19
+ /** Specs panel — direct entry. */
20
+ export declare function runSpecsTui(): Promise<void>;
21
+ /** Install panel — direct entry. */
22
+ export declare function runInstallTui(): Promise<void>;
23
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/tui/config-ui/index.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,iBAAiB,GAAG,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;AAC9E,MAAM,MAAM,mBAAmB,GAAG,WAAW,GAAG,OAAO,GAAG,OAAO,GAAG,UAAU,GAAG,WAAW,GAAG,SAAS,CAAC;AACzG,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;AAE7F,yEAAyE;AACzE,wBAAsB,YAAY,CAAC,OAAO,CAAC,EAAE;IAC3C,UAAU,CAAC,EAAE,YAAY,CAAC;IAC1B,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;CAC3C,GAAG,OAAO,CAAC,IAAI,CAAC,CAOhB;AAED,wCAAwC;AACxC,wBAAsB,YAAY,CAChC,WAAW,GAAE,iBAA+B,EAC5C,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAEf;AAED,0CAA0C;AAC1C,wBAAsB,oBAAoB,CACxC,WAAW,GAAE,mBAAiC,GAC7C,OAAO,CAAC,IAAI,CAAC,CAEf;AAED,kCAAkC;AAClC,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAEjD;AAED,oCAAoC;AACpC,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAEnD;AAED,kCAAkC;AAClC,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAEjD;AAED,oCAAoC;AACpC,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAEnD"}
@@ -0,0 +1,34 @@
1
+ import { renderTui } from '../render.js';
2
+ /** Unified config hub — tab-based switcher between all config panels. */
3
+ export async function runConfigHub(options) {
4
+ const { ConfigHub } = await import('./ConfigHub.js');
5
+ await renderTui(ConfigHub, {
6
+ workDir: process.cwd(),
7
+ ...options,
8
+ });
9
+ }
10
+ /** Skills config TUI — direct entry. */
11
+ export async function runConfigTui(initialView = 'dashboard', editSkill) {
12
+ return runConfigHub({ initialTab: 'Skills', skillsInitialView: initialView, editSkill });
13
+ }
14
+ /** Delegate config TUI — direct entry. */
15
+ export async function runDelegateConfigTui(initialView = 'dashboard') {
16
+ return runConfigHub({ initialTab: 'Delegate', delegateInitialView: initialView });
17
+ }
18
+ /** Hooks panel — direct entry. */
19
+ export async function runHooksTui() {
20
+ return runConfigHub({ initialTab: 'Hooks' });
21
+ }
22
+ /** Overlay panel — direct entry. */
23
+ export async function runOverlayTui() {
24
+ return runConfigHub({ initialTab: 'Overlay' });
25
+ }
26
+ /** Specs panel — direct entry. */
27
+ export async function runSpecsTui() {
28
+ return runConfigHub({ initialTab: 'Specs' });
29
+ }
30
+ /** Install panel — direct entry. */
31
+ export async function runInstallTui() {
32
+ return runConfigHub({ initialTab: 'Install' });
33
+ }
34
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/tui/config-ui/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAMzC,yEAAyE;AACzE,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAKlC;IACC,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAErD,MAAM,SAAS,CAAC,SAAS,EAAE;QACzB,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE;QACtB,GAAG,OAAO;KACX,CAAC,CAAC;AACL,CAAC;AAED,wCAAwC;AACxC,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,cAAiC,WAAW,EAC5C,SAAkB;IAElB,OAAO,YAAY,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,iBAAiB,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,CAAC;AAC3F,CAAC;AAED,0CAA0C;AAC1C,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,cAAmC,WAAW;IAE9C,OAAO,YAAY,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,mBAAmB,EAAE,WAAW,EAAE,CAAC,CAAC;AACpF,CAAC;AAED,kCAAkC;AAClC,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,OAAO,YAAY,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,CAAC;AAC/C,CAAC;AAED,oCAAoC;AACpC,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,OAAO,YAAY,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC;AACjD,CAAC;AAED,kCAAkC;AAClC,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,OAAO,YAAY,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,CAAC;AAC/C,CAAC;AAED,oCAAoC;AACpC,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,OAAO,YAAY,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC;AACjD,CAAC"}
@@ -0,0 +1,7 @@
1
+ export { renderTui, type RenderTuiOptions } from './render.js';
2
+ export { runConfigHub, runConfigTui, runDelegateConfigTui, runHooksTui, runOverlayTui, runSpecsTui, runInstallTui, type ConfigInitialView, type DelegateInitialView, type ConfigHubTab, } from './config-ui/index.js';
3
+ export { runToolsTui, type ToolsInitialView } from './tools-ui/index.js';
4
+ export { runInstallWizard, runInstallFlow, type InstallFlowOptions } from './install-ui/index.js';
5
+ export { runUninstallFlow } from './uninstall-ui/index.js';
6
+ export { runOverlayListUI } from './overlay-ui/index.js';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tui/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,KAAK,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,oBAAoB,EACpB,WAAW,EACX,aAAa,EACb,WAAW,EACX,aAAa,EACb,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACxB,KAAK,YAAY,GAClB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,KAAK,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAClG,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,10 @@
1
+ // ---------------------------------------------------------------------------
2
+ // Unified TUI barrel — single import point for all terminal UI modules.
3
+ // ---------------------------------------------------------------------------
4
+ export { renderTui } from './render.js';
5
+ export { runConfigHub, runConfigTui, runDelegateConfigTui, runHooksTui, runOverlayTui, runSpecsTui, runInstallTui, } from './config-ui/index.js';
6
+ export { runToolsTui } from './tools-ui/index.js';
7
+ export { runInstallWizard, runInstallFlow } from './install-ui/index.js';
8
+ export { runUninstallFlow } from './uninstall-ui/index.js';
9
+ export { runOverlayListUI } from './overlay-ui/index.js';
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tui/index.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,wEAAwE;AACxE,8EAA8E;AAE9E,OAAO,EAAE,SAAS,EAAyB,MAAM,aAAa,CAAC;AAC/D,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,oBAAoB,EACpB,WAAW,EACX,aAAa,EACb,WAAW,EACX,aAAa,GAId,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,WAAW,EAAyB,MAAM,qBAAqB,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAA2B,MAAM,uBAAuB,CAAC;AAClG,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,10 @@
1
+ interface BackupConfigProps {
2
+ backupClaudeMd: boolean;
3
+ backupAll: boolean;
4
+ existingFileCount: number;
5
+ onClaudeMdChange: (v: boolean) => void;
6
+ onAllChange: (v: boolean) => void;
7
+ }
8
+ export declare function BackupConfig({ backupClaudeMd, backupAll, existingFileCount, onClaudeMdChange, onAllChange, }: BackupConfigProps): import("react/jsx-runtime").JSX.Element;
9
+ export {};
10
+ //# sourceMappingURL=BackupConfig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BackupConfig.d.ts","sourceRoot":"","sources":["../../../../src/tui/install-ui/BackupConfig.tsx"],"names":[],"mappings":"AAWA,UAAU,iBAAiB;IACzB,cAAc,EAAE,OAAO,CAAC;IACxB,SAAS,EAAE,OAAO,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,WAAW,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;CACnC;AAUD,wBAAgB,YAAY,CAAC,EAC3B,cAAc,EAAE,SAAS,EAAE,iBAAiB,EAC5C,gBAAgB,EAAE,WAAW,GAC9B,EAAE,iBAAiB,2CA6DnB"}
@@ -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
+ import { t } from '../../i18n/index.js';
5
+ export function BackupConfig({ backupClaudeMd, backupAll, existingFileCount, onClaudeMdChange, onAllChange, }) {
6
+ const options = [
7
+ {
8
+ id: 'claude-md',
9
+ label: t.install.backupOptClaudeMd,
10
+ desc: t.install.backupOptClaudeMdDesc,
11
+ value: backupClaudeMd,
12
+ toggle: onClaudeMdChange,
13
+ },
14
+ {
15
+ id: 'all',
16
+ label: t.install.backupOptAll,
17
+ desc: t.install.backupOptAllDesc.replace('{count}', String(existingFileCount)),
18
+ value: backupAll,
19
+ toggle: onAllChange,
20
+ },
21
+ ];
22
+ const [index, setIndex] = useState(0);
23
+ useInput((input, key) => {
24
+ if (key.upArrow) {
25
+ setIndex((i) => (i <= 0 ? options.length - 1 : i - 1));
26
+ }
27
+ else if (key.downArrow) {
28
+ setIndex((i) => (i >= options.length - 1 ? 0 : i + 1));
29
+ }
30
+ else if (input === ' ') {
31
+ options[index].toggle(!options[index].value);
32
+ }
33
+ else {
34
+ const num = parseInt(input, 10);
35
+ if (!isNaN(num) && num >= 1 && num <= options.length) {
36
+ const opt = options[num - 1];
37
+ opt.toggle(!opt.value);
38
+ }
39
+ }
40
+ });
41
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { bold: true, color: "cyan", children: t.install.backupTitle }), _jsx(Box, { flexDirection: "column", marginTop: 1, children: options.map((opt, i) => {
42
+ const hl = i === index;
43
+ return (_jsxs(Box, { children: [_jsxs(Text, { color: hl ? 'cyan' : 'gray', children: ["[", i + 1, "]"] }), _jsxs(Text, { color: opt.value ? 'green' : 'gray', children: [" ", opt.value ? '[x]' : '[ ]', " "] }), _jsx(Text, { color: hl ? 'cyan' : undefined, bold: hl, children: opt.label }), _jsxs(Text, { dimColor: true, children: [" \u2014 ", opt.desc] })] }, opt.id));
44
+ }) }), _jsx(Box, { marginTop: 1, children: _jsxs(Text, { dimColor: true, children: ["[Up/Down] Navigate [Space/1-", options.length, "] Toggle [Enter] Done [Esc] Back"] }) })] }));
45
+ }
46
+ //# sourceMappingURL=BackupConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BackupConfig.js","sourceRoot":"","sources":["../../../../src/tui/install-ui/BackupConfig.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ export type FileStatus = 'new' | 'exists' | 'preserved';
2
+ interface BlueprintPreviewProps {
3
+ mode: 'global' | 'project';
4
+ projectPath: string;
5
+ selectedIds: string[];
6
+ }
7
+ export declare function BlueprintPreview({ mode, projectPath, selectedIds }: BlueprintPreviewProps): import("react/jsx-runtime").JSX.Element;
8
+ export {};
9
+ //# sourceMappingURL=BlueprintPreview.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BlueprintPreview.d.ts","sourceRoot":"","sources":["../../../../src/tui/install-ui/BlueprintPreview.tsx"],"names":[],"mappings":"AAUA,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,QAAQ,GAAG,WAAW,CAAC;AAExD,UAAU,qBAAqB;IAC7B,IAAI,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAQD,wBAAgB,gBAAgB,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,EAAE,qBAAqB,2CAuFzF"}
@@ -0,0 +1,65 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useMemo } from 'react';
3
+ import { Box, Text, useStdout } from 'ink';
4
+ import { existsSync } from 'node:fs';
5
+ import { COMPONENT_DEFS } from '../../commands/install-backend.js';
6
+ import { buildTree } from './BlueprintPreview.logic.js';
7
+ const STATUS_COLOR = {
8
+ new: 'cyan',
9
+ exists: 'yellow',
10
+ preserved: 'gray',
11
+ };
12
+ export function BlueprintPreview({ mode, projectPath, selectedIds }) {
13
+ const { stdout } = useStdout();
14
+ const termRows = stdout?.rows ?? 24;
15
+ // Resolve selected defs to target info
16
+ const resolvedTargets = useMemo(() => {
17
+ const idSet = new Set(selectedIds);
18
+ return COMPONENT_DEFS
19
+ .filter((d) => idSet.has(d.id))
20
+ .map((def) => {
21
+ const targetDir = def.target(mode, projectPath);
22
+ // Determine status based on whether target already exists
23
+ const status = existsSync(targetDir) ? 'exists' : 'new';
24
+ return {
25
+ def,
26
+ targetDir,
27
+ fileCount: 0, // real counts come from scanning; label shown as fallback
28
+ status,
29
+ };
30
+ });
31
+ }, [selectedIds, mode, projectPath]);
32
+ const tree = useMemo(() => buildTree(resolvedTargets), [resolvedTargets]);
33
+ // Compute total files across groups
34
+ const totalFiles = useMemo(() => tree.reduce((sum, g) => sum + g.totalFiles, 0), [tree]);
35
+ // Empty selection
36
+ if (selectedIds.length === 0) {
37
+ return (_jsxs(Box, { flexDirection: "column", paddingX: 1, children: [_jsx(Text, { bold: true, color: "cyan", children: "Blueprint" }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { dimColor: true, children: "No components selected" }) })] }));
38
+ }
39
+ // Reserve 8 rows for header, border, total line, etc.
40
+ const availableHeight = Math.max(termRows - 8, 6);
41
+ // Flatten tree into renderable lines
42
+ const lines = [];
43
+ for (const group of tree) {
44
+ lines.push({ text: group.parentDir + '/', color: 'white' });
45
+ for (let i = 0; i < group.entries.length; i++) {
46
+ const isLast = i === group.entries.length - 1;
47
+ const branch = isLast ? '\u2514\u2500\u2500' : '\u251C\u2500\u2500';
48
+ const entry = group.entries[i];
49
+ const fileStr = entry.fileCount > 0
50
+ ? `(${entry.fileCount} files)`
51
+ : `(${entry.label})`;
52
+ const status = entry.status;
53
+ const color = status ? STATUS_COLOR[status] : 'cyan';
54
+ lines.push({
55
+ text: ` ${branch} ${entry.subPath} ${fileStr}`,
56
+ color,
57
+ });
58
+ }
59
+ }
60
+ const truncated = lines.length > availableHeight;
61
+ const visibleLines = truncated ? lines.slice(0, availableHeight) : lines;
62
+ const hiddenCount = lines.length - availableHeight;
63
+ return (_jsxs(Box, { flexDirection: "column", paddingX: 1, children: [_jsx(Text, { bold: true, color: "cyan", children: "Blueprint" }), _jsxs(Box, { flexDirection: "column", borderStyle: "round", borderColor: "gray", paddingX: 1, marginTop: 1, children: [visibleLines.map((line, i) => (_jsx(Text, { color: line.color, children: line.text }, i))), truncated && _jsxs(Text, { dimColor: true, children: ["[", hiddenCount, " more...]"] }), _jsxs(Text, { children: ["Total: ", selectedIds.length, " components", totalFiles > 0 ? `, ${totalFiles} files` : ''] })] })] }));
64
+ }
65
+ //# sourceMappingURL=BlueprintPreview.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BlueprintPreview.js","sourceRoot":"","sources":["../../../../src/tui/install-ui/BlueprintPreview.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import { type ComponentDef } from '../../commands/install-backend.js';
2
+ /** A group of components sharing the same parent directory. */
3
+ export interface TargetGroup {
4
+ parentDir: string;
5
+ entries: Array<{
6
+ subPath: string;
7
+ fileCount: number;
8
+ label: string;
9
+ status?: string;
10
+ }>;
11
+ totalFiles: number;
12
+ }
13
+ /**
14
+ * Resolve the parent directory from a full target path.
15
+ * Walks segments to find the one containing ".maestro", ".claude", or ".codex"
16
+ * and returns the path up to and including that segment.
17
+ */
18
+ export declare function resolveParentDir(targetDir: string): string;
19
+ /**
20
+ * Resolve the sub-path (after the parent directory) from a full target path.
21
+ */
22
+ export declare function resolveSubPath(targetDir: string): string;
23
+ /**
24
+ * Build a grouped tree from resolved component targets.
25
+ * Each group represents a parent directory (e.g. "~/.maestro", "~/.claude").
26
+ */
27
+ export declare function buildTree(defs: Array<{
28
+ def: ComponentDef;
29
+ targetDir: string;
30
+ fileCount: number;
31
+ status?: string;
32
+ }>): TargetGroup[];
33
+ //# sourceMappingURL=BlueprintPreview.logic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BlueprintPreview.logic.d.ts","sourceRoot":"","sources":["../../../../src/tui/install-ui/BlueprintPreview.logic.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAEtE,+DAA+D;AAC/D,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACvF,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAgB1D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAMxD;AAED;;;GAGG;AACH,wBAAgB,SAAS,CACvB,IAAI,EAAE,KAAK,CAAC;IAAE,GAAG,EAAE,YAAY,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,GACxF,WAAW,EAAE,CAgBf"}
@@ -0,0 +1,51 @@
1
+ // ---------------------------------------------------------------------------
2
+ // Pure tree-building logic extracted from BlueprintPreview for testability.
3
+ // ---------------------------------------------------------------------------
4
+ /**
5
+ * Resolve the parent directory from a full target path.
6
+ * Walks segments to find the one containing ".maestro", ".claude", or ".codex"
7
+ * and returns the path up to and including that segment.
8
+ */
9
+ export function resolveParentDir(targetDir) {
10
+ const normalized = targetDir.replace(/\\/g, '/');
11
+ const segments = normalized.split('/');
12
+ let parentEnd = 2;
13
+ for (let i = 1; i < segments.length; i++) {
14
+ if (segments[i].startsWith('.maestro') ||
15
+ segments[i].startsWith('.claude') ||
16
+ segments[i].startsWith('.codex')) {
17
+ parentEnd = i + 1;
18
+ break;
19
+ }
20
+ }
21
+ return segments.slice(0, parentEnd).join('/');
22
+ }
23
+ /**
24
+ * Resolve the sub-path (after the parent directory) from a full target path.
25
+ */
26
+ export function resolveSubPath(targetDir) {
27
+ const normalized = targetDir.replace(/\\/g, '/');
28
+ const parent = resolveParentDir(targetDir);
29
+ const parentSegments = parent.split('/').length;
30
+ const segments = normalized.split('/');
31
+ return segments.slice(parentSegments).join('/') || '.';
32
+ }
33
+ /**
34
+ * Build a grouped tree from resolved component targets.
35
+ * Each group represents a parent directory (e.g. "~/.maestro", "~/.claude").
36
+ */
37
+ export function buildTree(defs) {
38
+ const groupMap = new Map();
39
+ for (const { def, targetDir, fileCount, status } of defs) {
40
+ const parentDir = resolveParentDir(targetDir);
41
+ const subPath = resolveSubPath(targetDir);
42
+ if (!groupMap.has(parentDir)) {
43
+ groupMap.set(parentDir, { parentDir, entries: [], totalFiles: 0 });
44
+ }
45
+ const group = groupMap.get(parentDir);
46
+ group.entries.push({ subPath, fileCount, label: def.label, status });
47
+ group.totalFiles += fileCount;
48
+ }
49
+ return Array.from(groupMap.values());
50
+ }
51
+ //# sourceMappingURL=BlueprintPreview.logic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BlueprintPreview.logic.js","sourceRoot":"","sources":["../../../../src/tui/install-ui/BlueprintPreview.logic.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,4EAA4E;AAC5E,8EAA8E;AAW9E;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,SAAiB;IAChD,MAAM,UAAU,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACjD,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAEvC,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,IACE,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC;YAClC,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC;YACjC,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,EAChC,CAAC;YACD,SAAS,GAAG,CAAC,GAAG,CAAC,CAAC;YAClB,MAAM;QACR,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,SAAiB;IAC9C,MAAM,UAAU,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACjD,MAAM,MAAM,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;IAC3C,MAAM,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;IAChD,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACvC,OAAO,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC;AACzD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,SAAS,CACvB,IAAyF;IAEzF,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAuB,CAAC;IAEhD,KAAK,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC;QACzD,MAAM,SAAS,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAC9C,MAAM,OAAO,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;QAE1C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7B,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC;QACrE,CAAC;QACD,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;QACvC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QACrE,KAAK,CAAC,UAAU,IAAI,SAAS,CAAC;IAChC,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;AACvC,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { ScannedComponent } from '../../commands/install-backend.js';
2
+ export interface ComponentGridProps {
3
+ /** Scanned components from backend */
4
+ components: ScannedComponent[];
5
+ /** Currently selected component IDs */
6
+ selectedIds: string[];
7
+ /** Callback when selection changes */
8
+ onSelectionChange: (ids: string[]) => void;
9
+ /** Callback to advance to next wizard step */
10
+ onDone: () => void;
11
+ }
12
+ export declare function ComponentGrid({ components, selectedIds, onSelectionChange, onDone, }: ComponentGridProps): import("react/jsx-runtime").JSX.Element;
13
+ //# sourceMappingURL=ComponentGrid.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ComponentGrid.d.ts","sourceRoot":"","sources":["../../../../src/tui/install-ui/ComponentGrid.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAO1E,MAAM,WAAW,kBAAkB;IACjC,sCAAsC;IACtC,UAAU,EAAE,gBAAgB,EAAE,CAAC;IAC/B,uCAAuC;IACvC,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,sCAAsC;IACtC,iBAAiB,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAC3C,8CAA8C;IAC9C,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,wBAAgB,aAAa,CAAC,EAC5B,UAAU,EACV,WAAW,EACX,iBAAiB,EACjB,MAAM,GACP,EAAE,kBAAkB,2CAwHpB"}
@@ -0,0 +1,75 @@
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 { CyberItem } from './CyberItem.js';
5
+ import { toggleSelection, moveUp, moveDown, parseNumberKey, clampIndex, } from './ComponentGrid.logic.js';
6
+ import { t } from '../../i18n/index.js';
7
+ export function ComponentGrid({ components, selectedIds, onSelectionChange, onDone, }) {
8
+ const [selectedIndex, setSelectedIndex] = useState(0);
9
+ const count = components.length;
10
+ const safeIndex = clampIndex(selectedIndex, count);
11
+ const toggleId = useCallback((id) => {
12
+ onSelectionChange(toggleSelection(selectedIds, id));
13
+ }, [selectedIds, onSelectionChange]);
14
+ const toggleAt = useCallback((idx) => {
15
+ if (idx < 0 || idx >= count)
16
+ return;
17
+ const comp = components[idx];
18
+ if (!comp.available)
19
+ return;
20
+ toggleId(comp.def.id);
21
+ }, [components, count, toggleId]);
22
+ const selectAllAvailable = useCallback(() => {
23
+ const allIds = components.filter((c) => c.available).map((c) => c.def.id);
24
+ onSelectionChange(allIds);
25
+ }, [components, onSelectionChange]);
26
+ const handleDeselectAll = useCallback(() => {
27
+ onSelectionChange([]);
28
+ }, [onSelectionChange]);
29
+ useInput((input, key) => {
30
+ // Enter: advance
31
+ if (key.return) {
32
+ onDone();
33
+ return;
34
+ }
35
+ // Up arrow: move highlight up with wrapping
36
+ if (key.upArrow) {
37
+ setSelectedIndex((prev) => moveUp(prev, count));
38
+ return;
39
+ }
40
+ // Down arrow: move highlight down with wrapping
41
+ if (key.downArrow) {
42
+ setSelectedIndex((prev) => moveDown(prev, count));
43
+ return;
44
+ }
45
+ // Space: toggle highlighted item
46
+ if (input === ' ') {
47
+ toggleAt(safeIndex);
48
+ return;
49
+ }
50
+ // 'a': select all available
51
+ if (input === 'a' || input === 'A') {
52
+ selectAllAvailable();
53
+ return;
54
+ }
55
+ // 'n': deselect all
56
+ if (input === 'n' || input === 'N') {
57
+ handleDeselectAll();
58
+ return;
59
+ }
60
+ // Number keys '1'-'9': toggle corresponding component by 1-based index
61
+ const idx = parseNumberKey(input, count);
62
+ if (idx >= 0) {
63
+ toggleAt(idx);
64
+ return;
65
+ }
66
+ });
67
+ if (count === 0) {
68
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { bold: true, color: "cyan", children: t.install.componentsTitle }), _jsx(Text, { dimColor: true, children: t.install.componentsNone })] }));
69
+ }
70
+ const availableCount = components.filter((c) => c.available).length;
71
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { bold: true, color: "cyan", children: t.install.componentsTitle }), _jsx(Box, { flexDirection: "column", marginTop: 1, children: components.map((comp, i) => (_jsx(CyberItem, { index: i + 1, label: comp.def.label, fileCount: comp.fileCount, selected: selectedIds.includes(comp.def.id), available: comp.available, highlighted: i === safeIndex, description: comp.def.description }, comp.def.id))) }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { dimColor: true, children: t.install.componentsSelected
72
+ .replace('{selected}', String(selectedIds.length))
73
+ .replace('{total}', String(availableCount)) }) })] }));
74
+ }
75
+ //# sourceMappingURL=ComponentGrid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ComponentGrid.js","sourceRoot":"","sources":["../../../../src/tui/install-ui/ComponentGrid.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Toggle a single ID in the current selection array.
3
+ * Returns a new array (immutable).
4
+ */
5
+ export declare function toggleSelection(currentIds: string[], id: string): string[];
6
+ /**
7
+ * Select all available component IDs.
8
+ */
9
+ export declare function selectAllAvailable(availableIds: string[]): string[];
10
+ /**
11
+ * Deselect all.
12
+ */
13
+ export declare function deselectAll(): string[];
14
+ /**
15
+ * Move the highlight index up with wrapping.
16
+ */
17
+ export declare function moveUp(currentIndex: number, count: number): number;
18
+ /**
19
+ * Move the highlight index down with wrapping.
20
+ */
21
+ export declare function moveDown(currentIndex: number, count: number): number;
22
+ /**
23
+ * Parse a number key input ('1'-'9') into a 0-based index.
24
+ * Returns -1 if not a valid number key for the given component count.
25
+ */
26
+ export declare function parseNumberKey(input: string, count: number): number;
27
+ /**
28
+ * Clamp an index to valid range [0, max(count-1, 0)].
29
+ */
30
+ export declare function clampIndex(index: number, count: number): number;
31
+ //# sourceMappingURL=ComponentGrid.logic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ComponentGrid.logic.d.ts","sourceRoot":"","sources":["../../../../src/tui/install-ui/ComponentGrid.logic.ts"],"names":[],"mappings":"AAKA;;;GAGG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,CAI1E;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAEnE;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,MAAM,EAAE,CAEtC;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAGlE;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAGpE;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAInE;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAE/D"}
@@ -0,0 +1,58 @@
1
+ // ---------------------------------------------------------------------------
2
+ // Pure selection logic extracted from ComponentGrid for testability.
3
+ // ComponentGrid re-exports these for its own use.
4
+ // ---------------------------------------------------------------------------
5
+ /**
6
+ * Toggle a single ID in the current selection array.
7
+ * Returns a new array (immutable).
8
+ */
9
+ export function toggleSelection(currentIds, id) {
10
+ return currentIds.includes(id)
11
+ ? currentIds.filter((x) => x !== id)
12
+ : [...currentIds, id];
13
+ }
14
+ /**
15
+ * Select all available component IDs.
16
+ */
17
+ export function selectAllAvailable(availableIds) {
18
+ return [...availableIds];
19
+ }
20
+ /**
21
+ * Deselect all.
22
+ */
23
+ export function deselectAll() {
24
+ return [];
25
+ }
26
+ /**
27
+ * Move the highlight index up with wrapping.
28
+ */
29
+ export function moveUp(currentIndex, count) {
30
+ if (count === 0)
31
+ return 0;
32
+ return currentIndex <= 0 ? count - 1 : currentIndex - 1;
33
+ }
34
+ /**
35
+ * Move the highlight index down with wrapping.
36
+ */
37
+ export function moveDown(currentIndex, count) {
38
+ if (count === 0)
39
+ return 0;
40
+ return currentIndex >= count - 1 ? 0 : currentIndex + 1;
41
+ }
42
+ /**
43
+ * Parse a number key input ('1'-'9') into a 0-based index.
44
+ * Returns -1 if not a valid number key for the given component count.
45
+ */
46
+ export function parseNumberKey(input, count) {
47
+ const num = parseInt(input, 10);
48
+ if (isNaN(num) || num < 1 || num > 9 || num > count)
49
+ return -1;
50
+ return num - 1;
51
+ }
52
+ /**
53
+ * Clamp an index to valid range [0, max(count-1, 0)].
54
+ */
55
+ export function clampIndex(index, count) {
56
+ return Math.min(index, Math.max(0, count - 1));
57
+ }
58
+ //# sourceMappingURL=ComponentGrid.logic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ComponentGrid.logic.js","sourceRoot":"","sources":["../../../../src/tui/install-ui/ComponentGrid.logic.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,qEAAqE;AACrE,kDAAkD;AAClD,8EAA8E;AAE9E;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,UAAoB,EAAE,EAAU;IAC9D,OAAO,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;QACpC,CAAC,CAAC,CAAC,GAAG,UAAU,EAAE,EAAE,CAAC,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,YAAsB;IACvD,OAAO,CAAC,GAAG,YAAY,CAAC,CAAC;AAC3B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW;IACzB,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,MAAM,CAAC,YAAoB,EAAE,KAAa;IACxD,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IAC1B,OAAO,YAAY,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC;AAC1D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAC,YAAoB,EAAE,KAAa;IAC1D,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IAC1B,OAAO,YAAY,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC;AAC1D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,KAAa,EAAE,KAAa;IACzD,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAChC,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,KAAK;QAAE,OAAO,CAAC,CAAC,CAAC;IAC/D,OAAO,GAAG,GAAG,CAAC,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,KAAa,EAAE,KAAa;IACrD,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;AACjD,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { InstallConfig } from './types.js';
2
+ interface ConfigPanelProps {
3
+ config: InstallConfig;
4
+ onConfigChange: (config: Partial<InstallConfig>) => void;
5
+ onDone: () => void;
6
+ onBack: () => void;
7
+ existingManifest: boolean;
8
+ }
9
+ export declare function ConfigPanel({ config, onConfigChange, onDone, onBack, existingManifest, }: ConfigPanelProps): import("react/jsx-runtime").JSX.Element;
10
+ export {};
11
+ //# sourceMappingURL=ConfigPanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConfigPanel.d.ts","sourceRoot":"","sources":["../../../../src/tui/install-ui/ConfigPanel.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAShD,UAAU,gBAAgB;IACxB,MAAM,EAAE,aAAa,CAAC;IACtB,cAAc,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,aAAa,CAAC,KAAK,IAAI,CAAC;IACzD,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAKD,wBAAgB,WAAW,CAAC,EAC1B,MAAM,EACN,cAAc,EACd,MAAM,EACN,MAAM,EACN,gBAAgB,GACjB,EAAE,gBAAgB,2CAuFlB"}