dmux 3.1.1 → 3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (232) hide show
  1. package/dist/CleanTextInput.d.ts +9 -0
  2. package/dist/CleanTextInput.d.ts.map +1 -1
  3. package/dist/CleanTextInput.js +127 -47
  4. package/dist/CleanTextInput.js.map +1 -1
  5. package/dist/DmuxApp.d.ts +2 -2
  6. package/dist/DmuxApp.d.ts.map +1 -1
  7. package/dist/DmuxApp.js +1396 -750
  8. package/dist/DmuxApp.js.map +1 -1
  9. package/dist/actions/paneActions.d.ts.map +1 -1
  10. package/dist/actions/paneActions.js +68 -11
  11. package/dist/actions/paneActions.js.map +1 -1
  12. package/dist/actions/types.d.ts +1 -0
  13. package/dist/actions/types.d.ts.map +1 -1
  14. package/dist/actions/types.js +1 -0
  15. package/dist/actions/types.js.map +1 -1
  16. package/dist/components/ActionInputDialog.d.ts.map +1 -1
  17. package/dist/components/ActionInputDialog.js +3 -2
  18. package/dist/components/ActionInputDialog.js.map +1 -1
  19. package/dist/components/DialogBox.d.ts +16 -0
  20. package/dist/components/DialogBox.d.ts.map +1 -0
  21. package/dist/components/DialogBox.js +12 -0
  22. package/dist/components/DialogBox.js.map +1 -0
  23. package/dist/components/FooterHelp.d.ts +9 -0
  24. package/dist/components/FooterHelp.d.ts.map +1 -1
  25. package/dist/components/FooterHelp.js +41 -5
  26. package/dist/components/FooterHelp.js.map +1 -1
  27. package/dist/components/PaneCard.d.ts +3 -1
  28. package/dist/components/PaneCard.d.ts.map +1 -1
  29. package/dist/components/PaneCard.js +50 -33
  30. package/dist/components/PaneCard.js.map +1 -1
  31. package/dist/components/PanesGrid.d.ts +3 -5
  32. package/dist/components/PanesGrid.d.ts.map +1 -1
  33. package/dist/components/PanesGrid.js +40 -10
  34. package/dist/components/PanesGrid.js.map +1 -1
  35. package/dist/dashboard.js +1 -1
  36. package/dist/decorative-pane.d.ts +3 -0
  37. package/dist/decorative-pane.d.ts.map +1 -0
  38. package/dist/decorative-pane.js +136 -0
  39. package/dist/decorative-pane.js.map +1 -0
  40. package/dist/hooks/useActionSystem.d.ts +14 -1
  41. package/dist/hooks/useActionSystem.d.ts.map +1 -1
  42. package/dist/hooks/useActionSystem.js +93 -4
  43. package/dist/hooks/useActionSystem.js.map +1 -1
  44. package/dist/hooks/useNavigation.js +1 -1
  45. package/dist/hooks/useNavigation.js.map +1 -1
  46. package/dist/hooks/usePaneCreation.d.ts +1 -2
  47. package/dist/hooks/usePaneCreation.d.ts.map +1 -1
  48. package/dist/hooks/usePaneCreation.js +13 -27
  49. package/dist/hooks/usePaneCreation.js.map +1 -1
  50. package/dist/hooks/usePaneRunner.d.ts.map +1 -1
  51. package/dist/hooks/usePaneRunner.js +8 -3
  52. package/dist/hooks/usePaneRunner.js.map +1 -1
  53. package/dist/hooks/usePanes.d.ts.map +1 -1
  54. package/dist/hooks/usePanes.js +210 -37
  55. package/dist/hooks/usePanes.js.map +1 -1
  56. package/dist/hooks/useWorktreeActions.d.ts.map +1 -1
  57. package/dist/hooks/useWorktreeActions.js +7 -13
  58. package/dist/hooks/useWorktreeActions.js.map +1 -1
  59. package/dist/index.js +217 -29
  60. package/dist/index.js.map +1 -1
  61. package/dist/popups/agentChoicePopup.d.ts +7 -0
  62. package/dist/popups/agentChoicePopup.d.ts.map +1 -0
  63. package/dist/popups/agentChoicePopup.js +74 -0
  64. package/dist/popups/agentChoicePopup.js.map +1 -0
  65. package/dist/popups/choicePopup.d.ts +7 -0
  66. package/dist/popups/choicePopup.d.ts.map +1 -0
  67. package/dist/popups/choicePopup.js +64 -0
  68. package/dist/popups/choicePopup.js.map +1 -0
  69. package/dist/popups/components/FileList.d.ts +13 -0
  70. package/dist/popups/components/FileList.d.ts.map +1 -0
  71. package/dist/popups/components/FileList.js +61 -0
  72. package/dist/popups/components/FileList.js.map +1 -0
  73. package/dist/popups/components/PopupContainer.d.ts +14 -0
  74. package/dist/popups/components/PopupContainer.d.ts.map +1 -0
  75. package/dist/popups/components/PopupContainer.js +15 -0
  76. package/dist/popups/components/PopupContainer.js.map +1 -0
  77. package/dist/popups/components/PopupInputBox.d.ts +11 -0
  78. package/dist/popups/components/PopupInputBox.d.ts.map +1 -0
  79. package/dist/popups/components/PopupInputBox.js +10 -0
  80. package/dist/popups/components/PopupInputBox.js.map +1 -0
  81. package/dist/popups/components/PopupWrapper.d.ts +37 -0
  82. package/dist/popups/components/PopupWrapper.d.ts.map +1 -0
  83. package/dist/popups/components/PopupWrapper.js +88 -0
  84. package/dist/popups/components/PopupWrapper.js.map +1 -0
  85. package/dist/popups/components/index.d.ts +8 -0
  86. package/dist/popups/components/index.d.ts.map +1 -0
  87. package/dist/popups/components/index.js +8 -0
  88. package/dist/popups/components/index.js.map +1 -0
  89. package/dist/popups/config.d.ts +40 -0
  90. package/dist/popups/config.d.ts.map +1 -0
  91. package/dist/popups/config.js +40 -0
  92. package/dist/popups/config.js.map +1 -0
  93. package/dist/popups/confirmPopup.d.ts +7 -0
  94. package/dist/popups/confirmPopup.d.ts.map +1 -0
  95. package/dist/popups/confirmPopup.js +72 -0
  96. package/dist/popups/confirmPopup.js.map +1 -0
  97. package/dist/popups/hooksPopup.d.ts +7 -0
  98. package/dist/popups/hooksPopup.d.ts.map +1 -0
  99. package/dist/popups/hooksPopup.js +71 -0
  100. package/dist/popups/hooksPopup.js.map +1 -0
  101. package/dist/popups/inputPopup.d.ts +7 -0
  102. package/dist/popups/inputPopup.d.ts.map +1 -0
  103. package/dist/popups/inputPopup.js +48 -0
  104. package/dist/popups/inputPopup.js.map +1 -0
  105. package/dist/popups/kebabMenuPopup.d.ts +7 -0
  106. package/dist/popups/kebabMenuPopup.d.ts.map +1 -0
  107. package/dist/popups/kebabMenuPopup.js +52 -0
  108. package/dist/popups/kebabMenuPopup.js.map +1 -0
  109. package/dist/popups/logsPopup.d.ts +12 -0
  110. package/dist/popups/logsPopup.d.ts.map +1 -0
  111. package/dist/popups/logsPopup.js +364 -0
  112. package/dist/popups/logsPopup.js.map +1 -0
  113. package/dist/popups/mergePopup.d.ts +7 -0
  114. package/dist/popups/mergePopup.d.ts.map +1 -0
  115. package/dist/popups/mergePopup.js +310 -0
  116. package/dist/popups/mergePopup.js.map +1 -0
  117. package/dist/popups/newPanePopup.d.ts +7 -0
  118. package/dist/popups/newPanePopup.d.ts.map +1 -0
  119. package/dist/popups/newPanePopup.js +234 -0
  120. package/dist/popups/newPanePopup.js.map +1 -0
  121. package/dist/popups/progressPopup.d.ts +8 -0
  122. package/dist/popups/progressPopup.d.ts.map +1 -0
  123. package/dist/popups/progressPopup.js +54 -0
  124. package/dist/popups/progressPopup.js.map +1 -0
  125. package/dist/popups/remotePopup.d.ts +6 -0
  126. package/dist/popups/remotePopup.d.ts.map +1 -0
  127. package/dist/popups/remotePopup.js +166 -0
  128. package/dist/popups/remotePopup.js.map +1 -0
  129. package/dist/popups/settingsPopup.d.ts +7 -0
  130. package/dist/popups/settingsPopup.d.ts.map +1 -0
  131. package/dist/popups/settingsPopup.js +212 -0
  132. package/dist/popups/settingsPopup.js.map +1 -0
  133. package/dist/popups/shortcutsPopup.d.ts +6 -0
  134. package/dist/popups/shortcutsPopup.d.ts.map +1 -0
  135. package/dist/popups/shortcutsPopup.js +74 -0
  136. package/dist/popups/shortcutsPopup.js.map +1 -0
  137. package/dist/popups/templates/SimpleInputPopup.d.ts +15 -0
  138. package/dist/popups/templates/SimpleInputPopup.d.ts.map +1 -0
  139. package/dist/popups/templates/SimpleInputPopup.js +28 -0
  140. package/dist/popups/templates/SimpleInputPopup.js.map +1 -0
  141. package/dist/server/embedded-assets.d.ts.map +1 -1
  142. package/dist/server/embedded-assets.js +2066 -968
  143. package/dist/server/embedded-assets.js.map +1 -1
  144. package/dist/server/index.js +1 -1
  145. package/dist/server/index.js.map +1 -1
  146. package/dist/server/routes.d.ts +1 -1
  147. package/dist/server/routes.d.ts.map +1 -1
  148. package/dist/server/routes.js +73 -6
  149. package/dist/server/routes.js.map +1 -1
  150. package/dist/services/ConfigWatcher.d.ts.map +1 -1
  151. package/dist/services/ConfigWatcher.js +10 -3
  152. package/dist/services/ConfigWatcher.js.map +1 -1
  153. package/dist/services/LogService.d.ts +112 -0
  154. package/dist/services/LogService.d.ts.map +1 -0
  155. package/dist/services/LogService.js +252 -0
  156. package/dist/services/LogService.js.map +1 -0
  157. package/dist/services/PaneWorkerManager.d.ts.map +1 -1
  158. package/dist/services/PaneWorkerManager.js +35 -9
  159. package/dist/services/PaneWorkerManager.js.map +1 -1
  160. package/dist/services/TunnelService.d.ts +1 -0
  161. package/dist/services/TunnelService.d.ts.map +1 -1
  162. package/dist/services/TunnelService.js +56 -15
  163. package/dist/services/TunnelService.js.map +1 -1
  164. package/dist/shared/StateManager.d.ts +49 -1
  165. package/dist/shared/StateManager.d.ts.map +1 -1
  166. package/dist/shared/StateManager.js +97 -2
  167. package/dist/shared/StateManager.js.map +1 -1
  168. package/dist/spacer-pane.d.ts +8 -0
  169. package/dist/spacer-pane.d.ts.map +1 -0
  170. package/dist/spacer-pane.js +40 -0
  171. package/dist/spacer-pane.js.map +1 -0
  172. package/dist/theme/colors.d.ts +25 -0
  173. package/dist/theme/colors.d.ts.map +1 -0
  174. package/dist/theme/colors.js +33 -0
  175. package/dist/theme/colors.js.map +1 -0
  176. package/dist/types.d.ts +14 -0
  177. package/dist/types.d.ts.map +1 -1
  178. package/dist/utils/asciiArt.d.ts +26 -0
  179. package/dist/utils/asciiArt.d.ts.map +1 -0
  180. package/dist/utils/asciiArt.js +88 -0
  181. package/dist/utils/asciiArt.js.map +1 -0
  182. package/dist/utils/conflictResolutionPane.d.ts.map +1 -1
  183. package/dist/utils/conflictResolutionPane.js +8 -4
  184. package/dist/utils/conflictResolutionPane.js.map +1 -1
  185. package/dist/utils/fileScanner.d.ts +23 -0
  186. package/dist/utils/fileScanner.d.ts.map +1 -0
  187. package/dist/utils/fileScanner.js +123 -0
  188. package/dist/utils/fileScanner.js.map +1 -0
  189. package/dist/utils/generated-agents-doc.d.ts +1 -1
  190. package/dist/utils/generated-agents-doc.js +1 -1
  191. package/dist/utils/hooks.d.ts.map +1 -1
  192. package/dist/utils/hooks.js +65 -36
  193. package/dist/utils/hooks.js.map +1 -1
  194. package/dist/utils/hooksDocs.d.ts +1 -1
  195. package/dist/utils/layoutManager.d.ts +45 -0
  196. package/dist/utils/layoutManager.d.ts.map +1 -0
  197. package/dist/utils/layoutManager.js +500 -0
  198. package/dist/utils/layoutManager.js.map +1 -0
  199. package/dist/utils/paneCreation.d.ts.map +1 -1
  200. package/dist/utils/paneCreation.js +125 -11
  201. package/dist/utils/paneCreation.js.map +1 -1
  202. package/dist/utils/popup.d.ts +97 -0
  203. package/dist/utils/popup.d.ts.map +1 -0
  204. package/dist/utils/popup.js +509 -0
  205. package/dist/utils/popup.js.map +1 -0
  206. package/dist/utils/postPaneCleanup.d.ts +12 -0
  207. package/dist/utils/postPaneCleanup.d.ts.map +1 -0
  208. package/dist/utils/postPaneCleanup.js +53 -0
  209. package/dist/utils/postPaneCleanup.js.map +1 -0
  210. package/dist/utils/shellPaneDetection.d.ts +44 -0
  211. package/dist/utils/shellPaneDetection.d.ts.map +1 -0
  212. package/dist/utils/shellPaneDetection.js +175 -0
  213. package/dist/utils/shellPaneDetection.js.map +1 -0
  214. package/dist/utils/tmux.d.ts +53 -1
  215. package/dist/utils/tmux.d.ts.map +1 -1
  216. package/dist/utils/tmux.js +352 -84
  217. package/dist/utils/tmux.js.map +1 -1
  218. package/dist/utils/welcomePane.d.ts +22 -0
  219. package/dist/utils/welcomePane.d.ts.map +1 -0
  220. package/dist/utils/welcomePane.js +119 -0
  221. package/dist/utils/welcomePane.js.map +1 -0
  222. package/dist/utils/welcomePaneManager.d.ts +36 -0
  223. package/dist/utils/welcomePaneManager.d.ts.map +1 -0
  224. package/dist/utils/welcomePaneManager.js +160 -0
  225. package/dist/utils/welcomePaneManager.js.map +1 -0
  226. package/dist/workers/PaneWorker.js +2 -0
  227. package/dist/workers/PaneWorker.js.map +1 -1
  228. package/package.json +5 -2
  229. package/dist/components/NewPaneDialog.d.ts +0 -9
  230. package/dist/components/NewPaneDialog.d.ts.map +0 -1
  231. package/dist/components/NewPaneDialog.js +0 -11
  232. package/dist/components/NewPaneDialog.js.map +0 -1
@@ -0,0 +1,61 @@
1
+ import React from 'react';
2
+ import { Box, Text } from 'ink';
3
+ import { POPUP_CONFIG } from '../config.js';
4
+ /**
5
+ * Displays a scrollable list of files with the selected file highlighted
6
+ * Used for @ file autocomplete in the new pane popup
7
+ */
8
+ export const FileList = ({ files, selectedIndex, maxVisible = 10 }) => {
9
+ if (files.length === 0) {
10
+ return (React.createElement(Box, { marginTop: 1 },
11
+ React.createElement(Text, { dimColor: true, italic: true }, "No files found")));
12
+ }
13
+ // Calculate visible window (scrolling)
14
+ const totalFiles = files.length;
15
+ let startIndex = 0;
16
+ let endIndex = Math.min(maxVisible, totalFiles);
17
+ // Scroll the window to keep selected file visible
18
+ if (selectedIndex >= endIndex) {
19
+ // Selected is below visible window, scroll down
20
+ endIndex = selectedIndex + 1;
21
+ startIndex = Math.max(0, endIndex - maxVisible);
22
+ }
23
+ else if (selectedIndex < startIndex) {
24
+ // Selected is above visible window, scroll up
25
+ startIndex = selectedIndex;
26
+ endIndex = Math.min(startIndex + maxVisible, totalFiles);
27
+ }
28
+ // Adjust window to keep selected in middle when possible
29
+ if (selectedIndex >= maxVisible / 2 && totalFiles > maxVisible) {
30
+ startIndex = Math.max(0, selectedIndex - Math.floor(maxVisible / 2));
31
+ endIndex = Math.min(startIndex + maxVisible, totalFiles);
32
+ startIndex = endIndex - maxVisible;
33
+ }
34
+ const visibleFiles = files.slice(startIndex, endIndex);
35
+ const showScrollIndicators = totalFiles > maxVisible;
36
+ return (React.createElement(Box, { flexDirection: "column", marginTop: 1, borderStyle: POPUP_CONFIG.inputBorderStyle, borderColor: "cyan", paddingX: 1, width: "100%" },
37
+ React.createElement(Box, { marginBottom: 0 },
38
+ React.createElement(Text, { dimColor: true },
39
+ "Files (",
40
+ totalFiles,
41
+ ") - Use \u2191\u2193 to navigate, Tab/Enter to select, Esc to cancel")),
42
+ showScrollIndicators && startIndex > 0 && (React.createElement(Box, { justifyContent: "center" },
43
+ React.createElement(Text, { dimColor: true },
44
+ "\u2191 ",
45
+ startIndex,
46
+ " more above"))),
47
+ React.createElement(Box, { flexDirection: "column" }, visibleFiles.map((file, idx) => {
48
+ const actualIndex = startIndex + idx;
49
+ const isSelected = actualIndex === selectedIndex;
50
+ return (React.createElement(Box, { key: actualIndex },
51
+ React.createElement(Text, { color: isSelected ? 'black' : undefined, backgroundColor: isSelected ? 'cyan' : undefined, bold: isSelected },
52
+ isSelected ? '▶ ' : ' ',
53
+ file)));
54
+ })),
55
+ showScrollIndicators && endIndex < totalFiles && (React.createElement(Box, { justifyContent: "center" },
56
+ React.createElement(Text, { dimColor: true },
57
+ "\u2193 ",
58
+ totalFiles - endIndex,
59
+ " more below")))));
60
+ };
61
+ //# sourceMappingURL=FileList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FileList.js","sourceRoot":"","sources":["../../../src/popups/components/FileList.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import React from 'react';
2
+ interface PopupContainerProps {
3
+ children: React.ReactNode;
4
+ title?: string;
5
+ footer?: string;
6
+ borderStyle?: 'round' | 'bold' | 'single';
7
+ width?: number;
8
+ }
9
+ /**
10
+ * Reusable container component that applies consistent styling to all popups
11
+ */
12
+ export declare const PopupContainer: React.FC<PopupContainerProps>;
13
+ export {};
14
+ //# sourceMappingURL=PopupContainer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PopupContainer.d.ts","sourceRoot":"","sources":["../../../src/popups/components/PopupContainer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,UAAU,mBAAmB;IAC3B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAsBxD,CAAC"}
@@ -0,0 +1,15 @@
1
+ import React from 'react';
2
+ import { Box, Text } from 'ink';
3
+ import { POPUP_CONFIG } from '../config.js';
4
+ /**
5
+ * Reusable container component that applies consistent styling to all popups
6
+ */
7
+ export const PopupContainer = ({ children, title, footer, borderStyle = POPUP_CONFIG.borderStyle, width, }) => {
8
+ return (React.createElement(Box, { flexDirection: "column", paddingX: POPUP_CONFIG.containerPadding.x, paddingY: POPUP_CONFIG.containerPadding.y, width: width },
9
+ title && (React.createElement(Box, { marginBottom: POPUP_CONFIG.sectionSpacing },
10
+ React.createElement(Text, { bold: true, color: POPUP_CONFIG.titleColor }, title))),
11
+ children,
12
+ footer && (React.createElement(Box, { marginTop: POPUP_CONFIG.sectionSpacing },
13
+ React.createElement(Text, { dimColor: true, italic: true }, footer)))));
14
+ };
15
+ //# sourceMappingURL=PopupContainer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PopupContainer.js","sourceRoot":"","sources":["../../../src/popups/components/PopupContainer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAU5C;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAkC,CAAC,EAC5D,QAAQ,EACR,KAAK,EACL,MAAM,EACN,WAAW,GAAG,YAAY,CAAC,WAAW,EACtC,KAAK,GACN,EAAE,EAAE;IACH,OAAO,CACL,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,QAAQ,EAAE,YAAY,CAAC,gBAAgB,CAAC,CAAC,EAAE,QAAQ,EAAE,YAAY,CAAC,gBAAgB,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK;QAC3H,KAAK,IAAI,CACR,oBAAC,GAAG,IAAC,YAAY,EAAE,YAAY,CAAC,cAAc;YAC5C,oBAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAE,YAAY,CAAC,UAAU,IAAG,KAAK,CAAQ,CACrD,CACP;QACA,QAAQ;QACR,MAAM,IAAI,CACT,oBAAC,GAAG,IAAC,SAAS,EAAE,YAAY,CAAC,cAAc;YACzC,oBAAC,IAAI,IAAC,QAAQ,QAAC,MAAM,UAAE,MAAM,CAAQ,CACjC,CACP,CACG,CACP,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ interface PopupInputBoxProps {
3
+ children: React.ReactNode;
4
+ width?: string | number;
5
+ }
6
+ /**
7
+ * Reusable input container with themed borders
8
+ */
9
+ export declare const PopupInputBox: React.FC<PopupInputBoxProps>;
10
+ export {};
11
+ //# sourceMappingURL=PopupInputBox.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PopupInputBox.d.ts","sourceRoot":"","sources":["../../../src/popups/components/PopupInputBox.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,UAAU,kBAAkB;IAC1B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAYtD,CAAC"}
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ import { Box } from 'ink';
3
+ import { POPUP_CONFIG } from '../config.js';
4
+ /**
5
+ * Reusable input container with themed borders
6
+ */
7
+ export const PopupInputBox = ({ children, width }) => {
8
+ return (React.createElement(Box, { borderStyle: POPUP_CONFIG.inputBorderStyle, borderColor: POPUP_CONFIG.inputBorderColor, paddingX: POPUP_CONFIG.inputPadding.x, paddingY: POPUP_CONFIG.inputPadding.y, width: width }, children));
9
+ };
10
+ //# sourceMappingURL=PopupInputBox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PopupInputBox.js","sourceRoot":"","sources":["../../../src/popups/components/PopupInputBox.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAO5C;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAiC,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE;IACjF,OAAO,CACL,oBAAC,GAAG,IACF,WAAW,EAAE,YAAY,CAAC,gBAAgB,EAC1C,WAAW,EAAE,YAAY,CAAC,gBAAgB,EAC1C,QAAQ,EAAE,YAAY,CAAC,YAAY,CAAC,CAAC,EACrC,QAAQ,EAAE,YAAY,CAAC,YAAY,CAAC,CAAC,EACrC,KAAK,EAAE,KAAK,IAEX,QAAQ,CACL,CACP,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,37 @@
1
+ import React from 'react';
2
+ export interface PopupResult<T = any> {
3
+ success: boolean;
4
+ data?: T;
5
+ cancelled?: boolean;
6
+ error?: string;
7
+ }
8
+ interface PopupWrapperProps<T = any> {
9
+ resultFile: string;
10
+ children: React.ReactNode;
11
+ onCancel?: () => void;
12
+ onSuccess?: (data: T) => void;
13
+ allowEscapeToCancel?: boolean;
14
+ shouldAllowCancel?: () => boolean;
15
+ }
16
+ /**
17
+ * Shared popup wrapper that handles:
18
+ * - ESC key handling for cancellation
19
+ * - Result file writing
20
+ * - Exit handling
21
+ * - Common popup lifecycle
22
+ */
23
+ export declare function PopupWrapper<T = any>({ resultFile, children, onCancel, onSuccess, allowEscapeToCancel, shouldAllowCancel, }: PopupWrapperProps<T>): React.JSX.Element;
24
+ /**
25
+ * Helper function to write success result and exit
26
+ */
27
+ export declare function writeSuccessAndExit<T>(resultFile: string, data: T, exit: () => void): void;
28
+ /**
29
+ * Helper function to write error result and exit
30
+ */
31
+ export declare function writeErrorAndExit(resultFile: string, error: string, exit: () => void): void;
32
+ /**
33
+ * Helper function to write cancellation result and exit
34
+ */
35
+ export declare function writeCancelAndExit(resultFile: string, exit: () => void): void;
36
+ export {};
37
+ //# sourceMappingURL=PopupWrapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PopupWrapper.d.ts","sourceRoot":"","sources":["../../../src/popups/components/PopupWrapper.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoB,MAAM,OAAO,CAAC;AAIzC,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,GAAG;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,iBAAiB,CAAC,CAAC,GAAG,GAAG;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;IAC9B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,iBAAiB,CAAC,EAAE,MAAM,OAAO,CAAC;CACnC;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,CAAC,GAAG,GAAG,EAAE,EACpC,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,mBAA0B,EAC1B,iBAAiB,GAClB,EAAE,iBAAiB,CAAC,CAAC,CAAC,qBA8BtB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,IAAI,QAWnF;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,IAAI,QAWpF;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,IAAI,QAWtE"}
@@ -0,0 +1,88 @@
1
+ import React from 'react';
2
+ import { useInput, useApp } from 'ink';
3
+ import * as fs from 'fs';
4
+ /**
5
+ * Shared popup wrapper that handles:
6
+ * - ESC key handling for cancellation
7
+ * - Result file writing
8
+ * - Exit handling
9
+ * - Common popup lifecycle
10
+ */
11
+ export function PopupWrapper({ resultFile, children, onCancel, onSuccess, allowEscapeToCancel = true, shouldAllowCancel, }) {
12
+ const { exit } = useApp();
13
+ // Handle ESC key for cancellation
14
+ useInput((input, key) => {
15
+ if (allowEscapeToCancel && key.escape) {
16
+ // Check if cancel is allowed (if shouldAllowCancel is provided)
17
+ if (shouldAllowCancel && !shouldAllowCancel()) {
18
+ // Cancel is blocked - do nothing
19
+ return;
20
+ }
21
+ if (onCancel) {
22
+ onCancel();
23
+ }
24
+ const result = {
25
+ success: false,
26
+ cancelled: true,
27
+ };
28
+ try {
29
+ fs.writeFileSync(resultFile, JSON.stringify(result));
30
+ }
31
+ catch (error) {
32
+ // If we can't write result, try stderr as fallback
33
+ console.error('[PopupWrapper] Failed to write result file:', error);
34
+ }
35
+ exit();
36
+ }
37
+ });
38
+ return React.createElement(React.Fragment, null, children);
39
+ }
40
+ /**
41
+ * Helper function to write success result and exit
42
+ */
43
+ export function writeSuccessAndExit(resultFile, data, exit) {
44
+ const result = {
45
+ success: true,
46
+ data,
47
+ };
48
+ try {
49
+ fs.writeFileSync(resultFile, JSON.stringify(result));
50
+ }
51
+ catch (error) {
52
+ console.error('[PopupWrapper] Failed to write success result:', error);
53
+ }
54
+ exit();
55
+ }
56
+ /**
57
+ * Helper function to write error result and exit
58
+ */
59
+ export function writeErrorAndExit(resultFile, error, exit) {
60
+ const result = {
61
+ success: false,
62
+ error,
63
+ };
64
+ try {
65
+ fs.writeFileSync(resultFile, JSON.stringify(result));
66
+ }
67
+ catch (err) {
68
+ console.error('[PopupWrapper] Failed to write error result:', err);
69
+ }
70
+ exit();
71
+ }
72
+ /**
73
+ * Helper function to write cancellation result and exit
74
+ */
75
+ export function writeCancelAndExit(resultFile, exit) {
76
+ const result = {
77
+ success: false,
78
+ cancelled: true,
79
+ };
80
+ try {
81
+ fs.writeFileSync(resultFile, JSON.stringify(result));
82
+ }
83
+ catch (error) {
84
+ console.error('[PopupWrapper] Failed to write cancel result:', error);
85
+ }
86
+ exit();
87
+ }
88
+ //# sourceMappingURL=PopupWrapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PopupWrapper.js","sourceRoot":"","sources":["../../../src/popups/components/PopupWrapper.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoB,MAAM,OAAO,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AACvC,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AAkBzB;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAAU,EACpC,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,mBAAmB,GAAG,IAAI,EAC1B,iBAAiB,GACI;IACrB,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC;IAE1B,kCAAkC;IAClC,QAAQ,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QACtB,IAAI,mBAAmB,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YACtC,gEAAgE;YAChE,IAAI,iBAAiB,IAAI,CAAC,iBAAiB,EAAE,EAAE,CAAC;gBAC9C,iCAAiC;gBACjC,OAAO;YACT,CAAC;YAED,IAAI,QAAQ,EAAE,CAAC;gBACb,QAAQ,EAAE,CAAC;YACb,CAAC;YACD,MAAM,MAAM,GAAgB;gBAC1B,OAAO,EAAE,KAAK;gBACd,SAAS,EAAE,IAAI;aAChB,CAAC;YACF,IAAI,CAAC;gBACH,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;YACvD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,mDAAmD;gBACnD,OAAO,CAAC,KAAK,CAAC,6CAA6C,EAAE,KAAK,CAAC,CAAC;YACtE,CAAC;YACD,IAAI,EAAE,CAAC;QACT,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,0CAAG,QAAQ,CAAI,CAAC;AACzB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAI,UAAkB,EAAE,IAAO,EAAE,IAAgB;IAClF,MAAM,MAAM,GAAmB;QAC7B,OAAO,EAAE,IAAI;QACb,IAAI;KACL,CAAC;IACF,IAAI,CAAC;QACH,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IACvD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,gDAAgD,EAAE,KAAK,CAAC,CAAC;IACzE,CAAC;IACD,IAAI,EAAE,CAAC;AACT,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,UAAkB,EAAE,KAAa,EAAE,IAAgB;IACnF,MAAM,MAAM,GAAgB;QAC1B,OAAO,EAAE,KAAK;QACd,KAAK;KACN,CAAC;IACF,IAAI,CAAC;QACH,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IACvD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,8CAA8C,EAAE,GAAG,CAAC,CAAC;IACrE,CAAC;IACD,IAAI,EAAE,CAAC;AACT,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,UAAkB,EAAE,IAAgB;IACrE,MAAM,MAAM,GAAgB;QAC1B,OAAO,EAAE,KAAK;QACd,SAAS,EAAE,IAAI;KAChB,CAAC;IACF,IAAI,CAAC;QACH,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IACvD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,+CAA+C,EAAE,KAAK,CAAC,CAAC;IACxE,CAAC;IACD,IAAI,EAAE,CAAC;AACT,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Barrel export for popup components
3
+ */
4
+ export { PopupContainer } from './PopupContainer.js';
5
+ export { PopupInputBox } from './PopupInputBox.js';
6
+ export { FileList } from './FileList.js';
7
+ export { PopupWrapper, writeSuccessAndExit, writeErrorAndExit, writeCancelAndExit, type PopupResult } from './PopupWrapper.js';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/popups/components/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,KAAK,WAAW,EACjB,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Barrel export for popup components
3
+ */
4
+ export { PopupContainer } from './PopupContainer.js';
5
+ export { PopupInputBox } from './PopupInputBox.js';
6
+ export { FileList } from './FileList.js';
7
+ export { PopupWrapper, writeSuccessAndExit, writeErrorAndExit, writeCancelAndExit } from './PopupWrapper.js';
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/popups/components/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAEnB,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Centralized configuration for all dmux popups
3
+ * Single source of truth for popup styling and behavior
4
+ */
5
+ export declare const POPUP_CONFIG: {
6
+ readonly borderStyle: "round";
7
+ readonly borderColor: "#ff8700";
8
+ readonly inputBorderStyle: "bold";
9
+ readonly inputBorderColor: "#ff8700";
10
+ readonly titleColor: "#ff8700";
11
+ readonly successColor: "green";
12
+ readonly errorColor: "red";
13
+ readonly dimColor: "gray";
14
+ readonly tmuxBorderColor: "214";
15
+ readonly defaultWidth: 60;
16
+ readonly defaultHeight: 20;
17
+ readonly largeWidth: 90;
18
+ readonly smallWidth: 50;
19
+ readonly containerPadding: {
20
+ readonly x: 2;
21
+ readonly y: 1;
22
+ };
23
+ readonly inputPadding: {
24
+ readonly x: 1;
25
+ readonly y: 0;
26
+ };
27
+ readonly sectionSpacing: 1;
28
+ readonly cancelHint: "ESC to cancel";
29
+ readonly submitHint: "Enter to submit";
30
+ readonly navigationHint: "↑↓ to navigate • Enter to select";
31
+ };
32
+ /**
33
+ * Standard footer text for popups
34
+ */
35
+ export declare const PopupFooters: {
36
+ input: () => string;
37
+ choice: () => string;
38
+ confirm: (yesKey?: string, noKey?: string) => string;
39
+ };
40
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/popups/config.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;CA6Bf,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,YAAY;;;;CAOxB,CAAC"}
@@ -0,0 +1,40 @@
1
+ import { COLORS, TMUX_COLORS } from '../theme/colors.js';
2
+ /**
3
+ * Centralized configuration for all dmux popups
4
+ * Single source of truth for popup styling and behavior
5
+ */
6
+ export const POPUP_CONFIG = {
7
+ // Visual theme
8
+ borderStyle: 'round',
9
+ borderColor: COLORS.accent, // Orange border for main containers
10
+ inputBorderStyle: 'bold',
11
+ inputBorderColor: COLORS.accent, // Orange border for input boxes
12
+ titleColor: COLORS.accent, // Orange titles
13
+ successColor: COLORS.success, // Green for success states
14
+ errorColor: COLORS.error, // Red for error states
15
+ dimColor: 'gray', // Gray for hints/secondary text
16
+ // Tmux popup styling (used in popup.ts) - foreground only
17
+ tmuxBorderColor: TMUX_COLORS.activeBorder, // colour214
18
+ // Default dimensions
19
+ defaultWidth: 60,
20
+ defaultHeight: 20,
21
+ largeWidth: 90,
22
+ smallWidth: 50,
23
+ // Padding/spacing
24
+ containerPadding: { x: 2, y: 1 },
25
+ inputPadding: { x: 1, y: 0 },
26
+ sectionSpacing: 1,
27
+ // Footer hints
28
+ cancelHint: 'ESC to cancel',
29
+ submitHint: 'Enter to submit',
30
+ navigationHint: '↑↓ to navigate • Enter to select',
31
+ };
32
+ /**
33
+ * Standard footer text for popups
34
+ */
35
+ export const PopupFooters = {
36
+ input: () => `${POPUP_CONFIG.submitHint} • ${POPUP_CONFIG.cancelHint}`,
37
+ choice: () => `${POPUP_CONFIG.navigationHint} • ${POPUP_CONFIG.cancelHint}`,
38
+ confirm: (yesKey = 'y', noKey = 'n') => `[${yesKey}]es / [${noKey}]o • ${POPUP_CONFIG.cancelHint}`,
39
+ };
40
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/popups/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEzD;;;GAGG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,eAAe;IACf,WAAW,EAAE,OAAgB;IAC7B,WAAW,EAAE,MAAM,CAAC,MAAM,EAAW,oCAAoC;IACzE,gBAAgB,EAAE,MAAe;IACjC,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAM,gCAAgC;IACrE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAY,gBAAgB;IACrD,YAAY,EAAE,MAAM,CAAC,OAAO,EAAS,2BAA2B;IAChE,UAAU,EAAE,MAAM,CAAC,KAAK,EAAa,uBAAuB;IAC5D,QAAQ,EAAE,MAAe,EAAY,gCAAgC;IAErE,0DAA0D;IAC1D,eAAe,EAAE,WAAW,CAAC,YAAY,EAAK,YAAY;IAE1D,qBAAqB;IACrB,YAAY,EAAE,EAAE;IAChB,aAAa,EAAE,EAAE;IACjB,UAAU,EAAE,EAAE;IACd,UAAU,EAAE,EAAE;IAEd,kBAAkB;IAClB,gBAAgB,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;IAChC,YAAY,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;IAC5B,cAAc,EAAE,CAAC;IAEjB,eAAe;IACf,UAAU,EAAE,eAAe;IAC3B,UAAU,EAAE,iBAAiB;IAC7B,cAAc,EAAE,kCAAkC;CAC1C,CAAC;AAEX;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,KAAK,EAAE,GAAG,EAAE,CAAC,GAAG,YAAY,CAAC,UAAU,MAAM,YAAY,CAAC,UAAU,EAAE;IAEtE,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,YAAY,CAAC,cAAc,MAAM,YAAY,CAAC,UAAU,EAAE;IAE3E,OAAO,EAAE,CAAC,MAAM,GAAG,GAAG,EAAE,KAAK,GAAG,GAAG,EAAE,EAAE,CACrC,IAAI,MAAM,UAAU,KAAK,QAAQ,YAAY,CAAC,UAAU,EAAE;CAC7D,CAAC"}
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Standalone popup for confirmation dialogs
4
+ * Runs in a tmux popup modal and writes result to a file
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=confirmPopup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"confirmPopup.d.ts","sourceRoot":"","sources":["../../src/popups/confirmPopup.tsx"],"names":[],"mappings":";AAEA;;;GAGG"}
@@ -0,0 +1,72 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Standalone popup for confirmation dialogs
4
+ * Runs in a tmux popup modal and writes result to a file
5
+ */
6
+ import React, { useState } from 'react';
7
+ import { render, Box, Text, useInput, useApp } from 'ink';
8
+ import * as fs from 'fs';
9
+ import { PopupContainer, PopupWrapper, writeSuccessAndExit } from './components/index.js';
10
+ import { PopupFooters, POPUP_CONFIG } from './config.js';
11
+ const ConfirmPopupApp = ({ resultFile, title, message, yesLabel = 'Yes', noLabel = 'No' }) => {
12
+ const [selectedIndex, setSelectedIndex] = useState(0);
13
+ const { exit } = useApp();
14
+ useInput((input, key) => {
15
+ if (key.escape) {
16
+ // User cancelled - treat as "No"
17
+ writeSuccessAndExit(resultFile, false, exit);
18
+ }
19
+ else if (key.upArrow) {
20
+ setSelectedIndex(Math.max(0, selectedIndex - 1));
21
+ }
22
+ else if (key.downArrow) {
23
+ setSelectedIndex(Math.min(1, selectedIndex + 1));
24
+ }
25
+ else if (key.return) {
26
+ // User confirmed choice
27
+ writeSuccessAndExit(resultFile, selectedIndex === 0, exit); // 0 = yes, 1 = no
28
+ }
29
+ else if (input === 'y' || input === 'Y') {
30
+ // Shortcut: yes
31
+ writeSuccessAndExit(resultFile, true, exit);
32
+ }
33
+ else if (input === 'n' || input === 'N') {
34
+ // Shortcut: no
35
+ writeSuccessAndExit(resultFile, false, exit);
36
+ }
37
+ });
38
+ return (React.createElement(PopupWrapper, { resultFile: resultFile, allowEscapeToCancel: false },
39
+ React.createElement(PopupContainer, { footer: PopupFooters.confirm('y', 'n') },
40
+ React.createElement(Box, { marginBottom: 1 },
41
+ React.createElement(Text, null, message)),
42
+ React.createElement(Box, { flexDirection: "column" },
43
+ React.createElement(Box, { marginBottom: 1 },
44
+ React.createElement(Text, { color: selectedIndex === 0 ? POPUP_CONFIG.titleColor : 'white', bold: selectedIndex === 0 },
45
+ selectedIndex === 0 ? '▶ ' : ' ',
46
+ yesLabel)),
47
+ React.createElement(Box, null,
48
+ React.createElement(Text, { color: selectedIndex === 1 ? POPUP_CONFIG.titleColor : 'white', bold: selectedIndex === 1 },
49
+ selectedIndex === 1 ? '▶ ' : ' ',
50
+ noLabel))))));
51
+ };
52
+ // Entry point
53
+ function main() {
54
+ const resultFile = process.argv[2];
55
+ const dataFile = process.argv[3];
56
+ if (!resultFile || !dataFile) {
57
+ console.error('Error: Result file and data file required');
58
+ process.exit(1);
59
+ }
60
+ let data;
61
+ try {
62
+ const dataJson = fs.readFileSync(dataFile, 'utf-8');
63
+ data = JSON.parse(dataJson);
64
+ }
65
+ catch (error) {
66
+ console.error('Error: Failed to read or parse data file');
67
+ process.exit(1);
68
+ }
69
+ render(React.createElement(ConfirmPopupApp, { resultFile: resultFile, title: data.title, message: data.message, yesLabel: data.yesLabel, noLabel: data.noLabel }));
70
+ }
71
+ main();
72
+ //# sourceMappingURL=confirmPopup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"confirmPopup.js","sourceRoot":"","sources":["../../src/popups/confirmPopup.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Standalone popup for managing hooks
4
+ * Runs in a tmux popup modal and writes result to a file
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=hooksPopup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooksPopup.d.ts","sourceRoot":"","sources":["../../src/popups/hooksPopup.tsx"],"names":[],"mappings":";AAEA;;;GAGG"}
@@ -0,0 +1,71 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Standalone popup for managing hooks
4
+ * Runs in a tmux popup modal and writes result to a file
5
+ */
6
+ import React, { useState } from 'react';
7
+ import { render, Box, Text, useInput, useApp } from 'ink';
8
+ import { PopupWrapper, writeSuccessAndExit } from './components/index.js';
9
+ import { POPUP_CONFIG } from './config.js';
10
+ const HooksPopupApp = ({ resultFile, hooks }) => {
11
+ const [selectedIndex, setSelectedIndex] = useState(0);
12
+ const { exit } = useApp();
13
+ useInput((input, key) => {
14
+ if (key.upArrow) {
15
+ setSelectedIndex(Math.max(0, selectedIndex - 1));
16
+ }
17
+ else if (key.downArrow) {
18
+ setSelectedIndex(Math.min(hooks.length, selectedIndex + 1));
19
+ }
20
+ else if (key.return || input === 'e') {
21
+ // Edit hooks using an agent
22
+ writeSuccessAndExit(resultFile, { action: 'edit' }, exit);
23
+ }
24
+ else if (input === 'v') {
25
+ // View hooks in editor
26
+ writeSuccessAndExit(resultFile, { action: 'view' }, exit);
27
+ }
28
+ });
29
+ return (React.createElement(PopupWrapper, { resultFile: resultFile },
30
+ React.createElement(Box, { flexDirection: "column", paddingX: 2, paddingY: 1 },
31
+ React.createElement(Box, { flexDirection: "column", marginBottom: 1 }, hooks.map((hook, index) => {
32
+ const isSelected = index === selectedIndex;
33
+ return (React.createElement(Box, { key: hook.name },
34
+ React.createElement(Text, { color: isSelected ? POPUP_CONFIG.titleColor : 'white', bold: isSelected },
35
+ isSelected ? '▶ ' : ' ',
36
+ hook.active ? '✓' : '○',
37
+ " ",
38
+ hook.name)));
39
+ })),
40
+ React.createElement(Box, { marginTop: 1, marginBottom: 1, paddingY: 1, borderStyle: "bold", borderColor: POPUP_CONFIG.borderColor },
41
+ React.createElement(Box, { flexDirection: "column", paddingX: 1 },
42
+ React.createElement(Text, { color: POPUP_CONFIG.titleColor, bold: true }, "Actions:"),
43
+ React.createElement(Text, null,
44
+ React.createElement(Text, { color: "green", bold: true }, "e"),
45
+ " - Edit hooks with AI agent"),
46
+ React.createElement(Text, null,
47
+ React.createElement(Text, { color: "green", bold: true }, "v"),
48
+ " - View hooks file in editor"))),
49
+ React.createElement(Box, null,
50
+ React.createElement(Text, { dimColor: true }, "\u2191\u2193 to navigate \u2022 e/v for actions \u2022 ESC to back")))));
51
+ };
52
+ // Entry point
53
+ function main() {
54
+ const resultFile = process.argv[2];
55
+ const hooksJson = process.argv[3];
56
+ if (!resultFile || !hooksJson) {
57
+ console.error('Error: Result file and hooks JSON required');
58
+ process.exit(1);
59
+ }
60
+ let hooks;
61
+ try {
62
+ hooks = JSON.parse(hooksJson);
63
+ }
64
+ catch (error) {
65
+ console.error('Error: Failed to parse hooks JSON');
66
+ process.exit(1);
67
+ }
68
+ render(React.createElement(HooksPopupApp, { resultFile: resultFile, hooks: hooks }));
69
+ }
70
+ main();
71
+ //# sourceMappingURL=hooksPopup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooksPopup.js","sourceRoot":"","sources":["../../src/popups/hooksPopup.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Standalone popup for text input dialogs
4
+ * Runs in a tmux popup modal and writes result to a file
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=inputPopup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inputPopup.d.ts","sourceRoot":"","sources":["../../src/popups/inputPopup.tsx"],"names":[],"mappings":";AAEA;;;GAGG"}