dmux 3.2.0 → 3.3.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.
- package/dist/DmuxApp.d.ts.map +1 -1
- package/dist/DmuxApp.js +221 -1596
- package/dist/DmuxApp.js.map +1 -1
- package/dist/actions/implementations/closeAction.d.ts +10 -0
- package/dist/actions/implementations/closeAction.d.ts.map +1 -0
- package/dist/actions/implementations/closeAction.js +197 -0
- package/dist/actions/implementations/closeAction.js.map +1 -0
- package/dist/actions/implementations/copyPathAction.d.ts +10 -0
- package/dist/actions/implementations/copyPathAction.d.ts.map +1 -0
- package/dist/actions/implementations/copyPathAction.js +34 -0
- package/dist/actions/implementations/copyPathAction.js.map +1 -0
- package/dist/actions/implementations/duplicateAction.d.ts +10 -0
- package/dist/actions/implementations/duplicateAction.d.ts.map +1 -0
- package/dist/actions/implementations/duplicateAction.js +25 -0
- package/dist/actions/implementations/duplicateAction.js.map +1 -0
- package/dist/actions/implementations/index.d.ts +14 -0
- package/dist/actions/implementations/index.d.ts.map +1 -0
- package/dist/actions/implementations/index.js +14 -0
- package/dist/actions/implementations/index.js.map +1 -0
- package/dist/actions/implementations/mergeAction.d.ts +14 -0
- package/dist/actions/implementations/mergeAction.d.ts.map +1 -0
- package/dist/actions/implementations/mergeAction.js +84 -0
- package/dist/actions/implementations/mergeAction.js.map +1 -0
- package/dist/actions/implementations/openInEditorAction.d.ts +12 -0
- package/dist/actions/implementations/openInEditorAction.d.ts.map +1 -0
- package/dist/actions/implementations/openInEditorAction.js +33 -0
- package/dist/actions/implementations/openInEditorAction.js.map +1 -0
- package/dist/actions/implementations/renameAction.d.ts +13 -0
- package/dist/actions/implementations/renameAction.d.ts.map +1 -0
- package/dist/actions/implementations/renameAction.js +18 -0
- package/dist/actions/implementations/renameAction.js.map +1 -0
- package/dist/actions/implementations/toggleAutopilotAction.d.ts +10 -0
- package/dist/actions/implementations/toggleAutopilotAction.d.ts.map +1 -0
- package/dist/actions/implementations/toggleAutopilotAction.js +33 -0
- package/dist/actions/implementations/toggleAutopilotAction.js.map +1 -0
- package/dist/actions/implementations/viewAction.d.ts +10 -0
- package/dist/actions/implementations/viewAction.d.ts.map +1 -0
- package/dist/actions/implementations/viewAction.js +26 -0
- package/dist/actions/implementations/viewAction.js.map +1 -0
- package/dist/actions/merge/commitMessageHandler.d.ts +27 -0
- package/dist/actions/merge/commitMessageHandler.d.ts.map +1 -0
- package/dist/actions/merge/commitMessageHandler.js +131 -0
- package/dist/actions/merge/commitMessageHandler.js.map +1 -0
- package/dist/actions/merge/conflictResolution.d.ts +13 -0
- package/dist/actions/merge/conflictResolution.d.ts.map +1 -0
- package/dist/actions/merge/conflictResolution.js +134 -0
- package/dist/actions/merge/conflictResolution.js.map +1 -0
- package/dist/actions/merge/issueHandlers/index.d.ts +11 -0
- package/dist/actions/merge/issueHandlers/index.d.ts.map +1 -0
- package/dist/actions/merge/issueHandlers/index.js +8 -0
- package/dist/actions/merge/issueHandlers/index.js.map +1 -0
- package/dist/actions/merge/issueHandlers/mainDirtyHandler.d.ts +13 -0
- package/dist/actions/merge/issueHandlers/mainDirtyHandler.d.ts.map +1 -0
- package/dist/actions/merge/issueHandlers/mainDirtyHandler.js +72 -0
- package/dist/actions/merge/issueHandlers/mainDirtyHandler.js.map +1 -0
- package/dist/actions/merge/issueHandlers/mergeConflictHandler.d.ts +13 -0
- package/dist/actions/merge/issueHandlers/mergeConflictHandler.d.ts.map +1 -0
- package/dist/actions/merge/issueHandlers/mergeConflictHandler.js +52 -0
- package/dist/actions/merge/issueHandlers/mergeConflictHandler.js.map +1 -0
- package/dist/actions/merge/issueHandlers/nothingToMergeHandler.d.ts +7 -0
- package/dist/actions/merge/issueHandlers/nothingToMergeHandler.d.ts.map +1 -0
- package/dist/actions/merge/issueHandlers/nothingToMergeHandler.js +12 -0
- package/dist/actions/merge/issueHandlers/nothingToMergeHandler.js.map +1 -0
- package/dist/actions/merge/issueHandlers/worktreeUncommittedHandler.d.ts +13 -0
- package/dist/actions/merge/issueHandlers/worktreeUncommittedHandler.d.ts.map +1 -0
- package/dist/actions/merge/issueHandlers/worktreeUncommittedHandler.js +49 -0
- package/dist/actions/merge/issueHandlers/worktreeUncommittedHandler.js.map +1 -0
- package/dist/actions/merge/mergeExecution.d.ts +22 -0
- package/dist/actions/merge/mergeExecution.d.ts.map +1 -0
- package/dist/actions/merge/mergeExecution.js +180 -0
- package/dist/actions/merge/mergeExecution.js.map +1 -0
- package/dist/actions/paneActions.d.ts +3 -40
- package/dist/actions/paneActions.d.ts.map +1 -1
- package/dist/actions/paneActions.js +4 -1038
- package/dist/actions/paneActions.js.map +1 -1
- package/dist/actions/types.d.ts +1 -0
- package/dist/actions/types.d.ts.map +1 -1
- package/dist/actions/types.js.map +1 -1
- package/dist/components/{ActionChoiceDialog.d.ts → dialogs/ActionChoiceDialog.d.ts} +1 -1
- package/dist/components/dialogs/ActionChoiceDialog.d.ts.map +1 -0
- package/dist/components/dialogs/ActionChoiceDialog.js.map +1 -0
- package/dist/components/dialogs/ActionConfirmDialog.d.ts.map +1 -0
- package/dist/components/dialogs/ActionConfirmDialog.js.map +1 -0
- package/dist/components/dialogs/ActionInputDialog.d.ts.map +1 -0
- package/dist/components/{ActionInputDialog.js → dialogs/ActionInputDialog.js} +2 -2
- package/dist/components/dialogs/ActionInputDialog.js.map +1 -0
- package/dist/components/dialogs/ActionProgressDialog.d.ts.map +1 -0
- package/dist/components/dialogs/ActionProgressDialog.js.map +1 -0
- package/dist/components/dialogs/AgentChoiceDialog.d.ts.map +1 -0
- package/dist/components/dialogs/AgentChoiceDialog.js.map +1 -0
- package/dist/components/{CloseOptionsDialog.d.ts → dialogs/CloseOptionsDialog.d.ts} +1 -1
- package/dist/components/dialogs/CloseOptionsDialog.d.ts.map +1 -0
- package/dist/components/dialogs/CloseOptionsDialog.js.map +1 -0
- package/dist/components/dialogs/CommandPromptDialog.d.ts.map +1 -0
- package/dist/components/{CommandPromptDialog.js → dialogs/CommandPromptDialog.js} +1 -1
- package/dist/components/dialogs/CommandPromptDialog.js.map +1 -0
- package/dist/components/dialogs/DialogBox.d.ts.map +1 -0
- package/dist/components/dialogs/DialogBox.js.map +1 -0
- package/dist/components/dialogs/HooksDialog.d.ts.map +1 -0
- package/dist/components/dialogs/HooksDialog.js.map +1 -0
- package/dist/components/{MergeConfirmationDialog.d.ts → dialogs/MergeConfirmationDialog.d.ts} +1 -1
- package/dist/components/dialogs/MergeConfirmationDialog.d.ts.map +1 -0
- package/dist/components/dialogs/MergeConfirmationDialog.js.map +1 -0
- package/dist/components/{SettingsDialog.d.ts → dialogs/SettingsDialog.d.ts} +1 -1
- package/dist/components/dialogs/SettingsDialog.d.ts.map +1 -0
- package/dist/components/dialogs/SettingsDialog.js.map +1 -0
- package/dist/components/dialogs/UpdateDialog.d.ts.map +1 -0
- package/dist/components/dialogs/UpdateDialog.js.map +1 -0
- package/dist/components/indicators/CreatingIndicator.d.ts.map +1 -0
- package/dist/components/indicators/CreatingIndicator.js.map +1 -0
- package/dist/components/indicators/LoadingIndicator.d.ts.map +1 -0
- package/dist/components/indicators/LoadingIndicator.js.map +1 -0
- package/dist/components/indicators/RunningIndicator.d.ts.map +1 -0
- package/dist/components/indicators/RunningIndicator.js.map +1 -0
- package/dist/components/indicators/Spinner.d.ts.map +1 -0
- package/dist/components/indicators/Spinner.js.map +1 -0
- package/dist/components/indicators/UpdatingIndicator.d.ts.map +1 -0
- package/dist/components/indicators/UpdatingIndicator.js.map +1 -0
- package/dist/components/indicators/index.d.ts +6 -0
- package/dist/components/indicators/index.d.ts.map +1 -0
- package/dist/components/indicators/index.js +6 -0
- package/dist/components/indicators/index.js.map +1 -0
- package/dist/components/inputs/CleanTextInput.d.ts.map +1 -0
- package/dist/{CleanTextInput.js → components/inputs/CleanTextInput.js} +2 -144
- package/dist/components/inputs/CleanTextInput.js.map +1 -0
- package/dist/components/inputs/StyledTextInput.d.ts.map +1 -0
- package/dist/components/inputs/StyledTextInput.js.map +1 -0
- package/dist/components/inputs/index.d.ts +3 -0
- package/dist/components/inputs/index.d.ts.map +1 -0
- package/dist/components/inputs/index.js +3 -0
- package/dist/components/inputs/index.js.map +1 -0
- package/dist/components/{KebabMenu.d.ts → panes/KebabMenu.d.ts} +1 -1
- package/dist/components/panes/KebabMenu.d.ts.map +1 -0
- package/dist/components/panes/KebabMenu.js.map +1 -0
- package/dist/components/panes/MergePane.d.ts.map +1 -0
- package/dist/{MergePane.js → components/panes/MergePane.js} +1 -1
- package/dist/components/panes/MergePane.js.map +1 -0
- package/dist/components/{PaneCard.d.ts → panes/PaneCard.d.ts} +1 -1
- package/dist/components/panes/PaneCard.d.ts.map +1 -0
- package/dist/components/{PaneCard.js → panes/PaneCard.js} +1 -1
- package/dist/components/panes/PaneCard.js.map +1 -0
- package/dist/components/{PanesGrid.d.ts → panes/PanesGrid.d.ts} +2 -2
- package/dist/components/panes/PanesGrid.d.ts.map +1 -0
- package/dist/components/{PanesGrid.js → panes/PanesGrid.js} +1 -1
- package/dist/components/panes/PanesGrid.js.map +1 -0
- package/dist/components/panes/index.d.ts +5 -0
- package/dist/components/panes/index.d.ts.map +1 -0
- package/dist/components/panes/index.js +5 -0
- package/dist/components/panes/index.js.map +1 -0
- package/dist/components/popups/agentChoicePopup.d.ts.map +1 -0
- package/dist/{popups → components/popups}/agentChoicePopup.js +1 -1
- package/dist/components/popups/agentChoicePopup.js.map +1 -0
- package/dist/components/popups/choicePopup.d.ts.map +1 -0
- package/dist/{popups → components/popups}/choicePopup.js +3 -3
- package/dist/components/popups/choicePopup.js.map +1 -0
- package/dist/components/popups/config.d.ts.map +1 -0
- package/dist/{popups → components/popups}/config.js +1 -1
- package/dist/components/popups/config.js.map +1 -0
- package/dist/components/popups/confirmPopup.d.ts.map +1 -0
- package/dist/{popups → components/popups}/confirmPopup.js +2 -3
- package/dist/components/popups/confirmPopup.js.map +1 -0
- package/dist/components/popups/hooksPopup.d.ts.map +1 -0
- package/dist/{popups → components/popups}/hooksPopup.js +1 -1
- package/dist/components/popups/hooksPopup.js.map +1 -0
- package/dist/components/popups/inputPopup.d.ts.map +1 -0
- package/dist/{popups → components/popups}/inputPopup.js +3 -4
- package/dist/components/popups/inputPopup.js.map +1 -0
- package/dist/components/popups/kebabMenuPopup.d.ts.map +1 -0
- package/dist/{popups → components/popups}/kebabMenuPopup.js +1 -1
- package/dist/components/popups/kebabMenuPopup.js.map +1 -0
- package/dist/components/popups/logsPopup.d.ts.map +1 -0
- package/dist/{popups → components/popups}/logsPopup.js +15 -7
- package/dist/components/popups/logsPopup.js.map +1 -0
- package/dist/components/popups/mergePopup.d.ts.map +1 -0
- package/dist/{popups → components/popups}/mergePopup.js +6 -6
- package/dist/components/popups/mergePopup.js.map +1 -0
- package/dist/components/popups/newPanePopup.d.ts.map +1 -0
- package/dist/{popups → components/popups}/newPanePopup.js +3 -3
- package/dist/components/popups/newPanePopup.js.map +1 -0
- package/dist/components/popups/progressPopup.d.ts.map +1 -0
- package/dist/{popups → components/popups}/progressPopup.js +1 -2
- package/dist/components/popups/progressPopup.js.map +1 -0
- package/dist/components/popups/remotePopup.d.ts.map +1 -0
- package/dist/{popups → components/popups}/remotePopup.js +1 -1
- package/dist/components/popups/remotePopup.js.map +1 -0
- package/dist/components/popups/settingsPopup.d.ts.map +1 -0
- package/dist/{popups → components/popups}/settingsPopup.js +1 -1
- package/dist/components/popups/settingsPopup.js.map +1 -0
- package/dist/components/popups/shared/FileList.d.ts.map +1 -0
- package/dist/components/popups/shared/FileList.js.map +1 -0
- package/dist/components/popups/shared/PopupContainer.d.ts.map +1 -0
- package/dist/components/popups/shared/PopupContainer.js.map +1 -0
- package/dist/components/popups/shared/PopupInputBox.d.ts.map +1 -0
- package/dist/components/popups/shared/PopupInputBox.js.map +1 -0
- package/dist/components/popups/shared/PopupWrapper.d.ts.map +1 -0
- package/dist/components/popups/shared/PopupWrapper.js.map +1 -0
- package/dist/components/popups/shared/index.d.ts.map +1 -0
- package/dist/components/popups/shared/index.js.map +1 -0
- package/dist/components/popups/shortcutsPopup.d.ts.map +1 -0
- package/dist/{popups → components/popups}/shortcutsPopup.js +1 -1
- package/dist/components/popups/shortcutsPopup.js.map +1 -0
- package/dist/components/popups/templates/SimpleInputPopup.d.ts.map +1 -0
- package/dist/{popups → components/popups}/templates/SimpleInputPopup.js +2 -2
- package/dist/components/popups/templates/SimpleInputPopup.js.map +1 -0
- package/dist/components/ui/FileCopyPrompt.d.ts.map +1 -0
- package/dist/components/ui/FileCopyPrompt.js.map +1 -0
- package/dist/components/ui/FooterHelp.d.ts.map +1 -0
- package/dist/components/ui/FooterHelp.js.map +1 -0
- package/dist/components/ui/QRCode.d.ts.map +1 -0
- package/dist/components/ui/QRCode.js.map +1 -0
- package/dist/components/ui/index.d.ts +4 -0
- package/dist/components/ui/index.d.ts.map +1 -0
- package/dist/components/ui/index.js +4 -0
- package/dist/components/ui/index.js.map +1 -0
- package/dist/constants/timing.d.ts +22 -0
- package/dist/constants/timing.d.ts.map +1 -0
- package/dist/constants/timing.js +26 -0
- package/dist/constants/timing.js.map +1 -0
- package/dist/hooks/useActionSystem.d.ts +5 -4
- package/dist/hooks/useActionSystem.d.ts.map +1 -1
- package/dist/hooks/useActionSystem.js +120 -114
- package/dist/hooks/useActionSystem.js.map +1 -1
- package/dist/hooks/useDebugInfo.d.ts +11 -0
- package/dist/hooks/useDebugInfo.d.ts.map +1 -0
- package/dist/hooks/useDebugInfo.js +34 -0
- package/dist/hooks/useDebugInfo.js.map +1 -0
- package/dist/hooks/useDialogState.d.ts +22 -0
- package/dist/hooks/useDialogState.d.ts.map +1 -0
- package/dist/hooks/useDialogState.js +62 -0
- package/dist/hooks/useDialogState.js.map +1 -0
- package/dist/hooks/useInputHandling.d.ts +60 -0
- package/dist/hooks/useInputHandling.d.ts.map +1 -0
- package/dist/hooks/useInputHandling.js +280 -0
- package/dist/hooks/useInputHandling.js.map +1 -0
- package/dist/hooks/useLayoutManagement.d.ts +12 -0
- package/dist/hooks/useLayoutManagement.d.ts.map +1 -0
- package/dist/hooks/useLayoutManagement.js +58 -0
- package/dist/hooks/useLayoutManagement.js.map +1 -0
- package/dist/hooks/usePaneCreation.d.ts.map +1 -1
- package/dist/hooks/usePaneCreation.js +4 -9
- package/dist/hooks/usePaneCreation.js.map +1 -1
- package/dist/hooks/usePaneLoading.d.ts +45 -0
- package/dist/hooks/usePaneLoading.d.ts.map +1 -0
- package/dist/hooks/usePaneLoading.js +188 -0
- package/dist/hooks/usePaneLoading.js.map +1 -0
- package/dist/hooks/usePaneRunner.d.ts.map +1 -1
- package/dist/hooks/usePaneRunner.js +9 -6
- package/dist/hooks/usePaneRunner.js.map +1 -1
- package/dist/hooks/usePaneSync.d.ts +34 -0
- package/dist/hooks/usePaneSync.d.ts.map +1 -0
- package/dist/hooks/usePaneSync.js +182 -0
- package/dist/hooks/usePaneSync.js.map +1 -0
- package/dist/hooks/usePanes.d.ts.map +1 -1
- package/dist/hooks/usePanes.js +55 -405
- package/dist/hooks/usePanes.js.map +1 -1
- package/dist/hooks/useServices.d.ts +24 -0
- package/dist/hooks/useServices.d.ts.map +1 -0
- package/dist/hooks/useServices.js +39 -0
- package/dist/hooks/useServices.js.map +1 -0
- package/dist/hooks/useShellDetection.d.ts +10 -0
- package/dist/hooks/useShellDetection.d.ts.map +1 -0
- package/dist/hooks/useShellDetection.js +53 -0
- package/dist/hooks/useShellDetection.js.map +1 -0
- package/dist/hooks/useStatusMessages.d.ts +11 -0
- package/dist/hooks/useStatusMessages.d.ts.map +1 -0
- package/dist/hooks/useStatusMessages.js +32 -0
- package/dist/hooks/useStatusMessages.js.map +1 -0
- package/dist/hooks/useTemporaryStatus.d.ts +13 -0
- package/dist/hooks/useTemporaryStatus.d.ts.map +1 -0
- package/dist/hooks/useTemporaryStatus.js +30 -0
- package/dist/hooks/useTemporaryStatus.js.map +1 -0
- package/dist/hooks/useTerminalWidth.d.ts.map +1 -1
- package/dist/hooks/useTerminalWidth.js +7 -12
- package/dist/hooks/useTerminalWidth.js.map +1 -1
- package/dist/hooks/useTunnelManagement.d.ts +18 -0
- package/dist/hooks/useTunnelManagement.d.ts.map +1 -0
- package/dist/hooks/useTunnelManagement.js +55 -0
- package/dist/hooks/useTunnelManagement.js.map +1 -0
- package/dist/hooks/useWorktreeActions.d.ts.map +1 -1
- package/dist/hooks/useWorktreeActions.js +18 -13
- package/dist/hooks/useWorktreeActions.js.map +1 -1
- package/dist/index.js +75 -57
- package/dist/index.js.map +1 -1
- package/dist/layout/LayoutCalculator.d.ts +62 -0
- package/dist/layout/LayoutCalculator.d.ts.map +1 -0
- package/dist/layout/LayoutCalculator.js +143 -0
- package/dist/layout/LayoutCalculator.js.map +1 -0
- package/dist/layout/SpacerManager.d.ts +64 -0
- package/dist/layout/SpacerManager.d.ts.map +1 -0
- package/dist/layout/SpacerManager.js +148 -0
- package/dist/layout/SpacerManager.js.map +1 -0
- package/dist/layout/TmuxLayoutApplier.d.ts +59 -0
- package/dist/layout/TmuxLayoutApplier.d.ts.map +1 -0
- package/dist/layout/TmuxLayoutApplier.js +135 -0
- package/dist/layout/TmuxLayoutApplier.js.map +1 -0
- package/dist/panes/decorative-pane.d.ts.map +1 -0
- package/dist/{decorative-pane.js → panes/decorative-pane.js} +1 -1
- package/dist/panes/decorative-pane.js.map +1 -0
- package/dist/panes/spacer-pane.d.ts.map +1 -0
- package/dist/panes/spacer-pane.js.map +1 -0
- package/dist/server/embedded-assets.d.ts.map +1 -1
- package/dist/server/embedded-assets.js +636 -5637
- package/dist/server/embedded-assets.js.map +1 -1
- package/dist/server/routes/actionsRoutes.d.ts +2 -0
- package/dist/server/routes/actionsRoutes.d.ts.map +1 -0
- package/dist/server/routes/actionsRoutes.js +110 -0
- package/dist/server/routes/actionsRoutes.js.map +1 -0
- package/dist/server/routes/healthRoutes.d.ts +13 -0
- package/dist/server/routes/healthRoutes.d.ts.map +1 -0
- package/dist/server/routes/healthRoutes.js +70 -0
- package/dist/server/routes/healthRoutes.js.map +1 -0
- package/dist/server/routes/index.d.ts +8 -0
- package/dist/server/routes/index.d.ts.map +1 -0
- package/dist/server/routes/index.js +67 -0
- package/dist/server/routes/index.js.map +1 -0
- package/dist/server/routes/keysRoutes.d.ts +20 -0
- package/dist/server/routes/keysRoutes.d.ts.map +1 -0
- package/dist/server/routes/keysRoutes.js +111 -0
- package/dist/server/routes/keysRoutes.js.map +1 -0
- package/dist/server/routes/panesRoutes.d.ts +2 -0
- package/dist/server/routes/panesRoutes.d.ts.map +1 -0
- package/dist/server/routes/panesRoutes.js +373 -0
- package/dist/server/routes/panesRoutes.js.map +1 -0
- package/dist/server/routes/settingsRoutes.d.ts +94 -0
- package/dist/server/routes/settingsRoutes.d.ts.map +1 -0
- package/dist/server/routes/settingsRoutes.js +159 -0
- package/dist/server/routes/settingsRoutes.js.map +1 -0
- package/dist/server/routes/streamRoutes.d.ts +18 -0
- package/dist/server/routes/streamRoutes.d.ts.map +1 -0
- package/dist/server/routes/streamRoutes.js +87 -0
- package/dist/server/routes/streamRoutes.js.map +1 -0
- package/dist/server/routes/tunnelRoutes.d.ts +11 -0
- package/dist/server/routes/tunnelRoutes.d.ts.map +1 -0
- package/dist/server/routes/tunnelRoutes.js +28 -0
- package/dist/server/routes/tunnelRoutes.js.map +1 -0
- package/dist/server/routes.d.ts +16 -2
- package/dist/server/routes.d.ts.map +1 -1
- package/dist/server/routes.js +16 -878
- package/dist/server/routes.js.map +1 -1
- package/dist/{AutoUpdater.d.ts → services/AutoUpdater.d.ts} +1 -0
- package/dist/services/AutoUpdater.d.ts.map +1 -0
- package/dist/{AutoUpdater.js → services/AutoUpdater.js} +42 -9
- package/dist/services/AutoUpdater.js.map +1 -0
- package/dist/services/PaneAnalyzer.d.ts.map +1 -0
- package/dist/{PaneAnalyzer.js → services/PaneAnalyzer.js} +1 -1
- package/dist/services/PaneAnalyzer.js.map +1 -0
- package/dist/services/PaneLifecycleManager.d.ts +60 -0
- package/dist/services/PaneLifecycleManager.d.ts.map +1 -0
- package/dist/services/PaneLifecycleManager.js +119 -0
- package/dist/services/PaneLifecycleManager.js.map +1 -0
- package/dist/services/PaneWorkerManager.d.ts.map +1 -1
- package/dist/services/PaneWorkerManager.js +6 -3
- package/dist/services/PaneWorkerManager.js.map +1 -1
- package/dist/services/PopupManager.d.ts +68 -0
- package/dist/services/PopupManager.d.ts.map +1 -0
- package/dist/services/PopupManager.js +415 -0
- package/dist/services/PopupManager.js.map +1 -0
- package/dist/services/StatusDetector.js +1 -1
- package/dist/services/StatusDetector.js.map +1 -1
- package/dist/services/TerminalStreamer.d.ts +1 -0
- package/dist/services/TerminalStreamer.d.ts.map +1 -1
- package/dist/services/TerminalStreamer.js +22 -16
- package/dist/services/TerminalStreamer.js.map +1 -1
- package/dist/services/TmuxService.d.ts +298 -0
- package/dist/services/TmuxService.d.ts.map +1 -0
- package/dist/services/TmuxService.js +768 -0
- package/dist/services/TmuxService.js.map +1 -0
- package/dist/services/TunnelService.d.ts.map +1 -1
- package/dist/services/TunnelService.js +2 -1
- package/dist/services/TunnelService.js.map +1 -1
- package/dist/types.d.ts +4 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/asciiArt.d.ts.map +1 -1
- package/dist/utils/asciiArt.js +6 -19
- package/dist/utils/asciiArt.js.map +1 -1
- package/dist/utils/conflictMonitor.d.ts +20 -0
- package/dist/utils/conflictMonitor.d.ts.map +1 -0
- package/dist/utils/conflictMonitor.js +113 -0
- package/dist/utils/conflictMonitor.js.map +1 -0
- package/dist/utils/conflictResolutionPane.d.ts.map +1 -1
- package/dist/utils/conflictResolutionPane.js +70 -79
- package/dist/utils/conflictResolutionPane.js.map +1 -1
- package/dist/utils/errorHandling.d.ts +37 -0
- package/dist/utils/errorHandling.d.ts.map +1 -0
- package/dist/utils/errorHandling.js +112 -0
- package/dist/utils/errorHandling.js.map +1 -0
- package/dist/utils/generated-agents-doc.d.ts +1 -1
- package/dist/utils/generated-agents-doc.js +1 -1
- package/dist/utils/git.d.ts +4 -0
- package/dist/utils/git.d.ts.map +1 -1
- package/dist/utils/git.js +15 -0
- package/dist/utils/git.js.map +1 -1
- package/dist/utils/hooksDocs.d.ts +1 -1
- package/dist/utils/layoutManager.d.ts +20 -16
- package/dist/utils/layoutManager.d.ts.map +1 -1
- package/dist/utils/layoutManager.js +116 -367
- package/dist/utils/layoutManager.js.map +1 -1
- package/dist/utils/mergeExecution.d.ts.map +1 -1
- package/dist/utils/mergeExecution.js +8 -1
- package/dist/utils/mergeExecution.js.map +1 -1
- package/dist/utils/mergeValidation.d.ts.map +1 -1
- package/dist/utils/mergeValidation.js +42 -13
- package/dist/utils/mergeValidation.js.map +1 -1
- package/dist/utils/paneCreation.d.ts.map +1 -1
- package/dist/utils/paneCreation.js +111 -103
- package/dist/utils/paneCreation.js.map +1 -1
- package/dist/utils/paneRebinding.d.ts +14 -0
- package/dist/utils/paneRebinding.d.ts.map +1 -0
- package/dist/utils/paneRebinding.js +28 -0
- package/dist/utils/paneRebinding.js.map +1 -0
- package/dist/utils/popup.d.ts.map +1 -1
- package/dist/utils/popup.js +11 -17
- package/dist/utils/popup.js.map +1 -1
- package/dist/utils/postPaneCleanup.d.ts.map +1 -1
- package/dist/utils/postPaneCleanup.js +4 -3
- package/dist/utils/postPaneCleanup.js.map +1 -1
- package/dist/utils/shellPaneDetection.d.ts +3 -3
- package/dist/utils/shellPaneDetection.d.ts.map +1 -1
- package/dist/utils/shellPaneDetection.js +10 -6
- package/dist/utils/shellPaneDetection.js.map +1 -1
- package/dist/utils/systemCheck.d.ts +19 -0
- package/dist/utils/systemCheck.d.ts.map +1 -0
- package/dist/utils/systemCheck.js +160 -0
- package/dist/utils/systemCheck.js.map +1 -0
- package/dist/utils/tmux.d.ts +26 -7
- package/dist/utils/tmux.d.ts.map +1 -1
- package/dist/utils/tmux.js +66 -64
- package/dist/utils/tmux.js.map +1 -1
- package/dist/utils/welcomePane.d.ts +2 -2
- package/dist/utils/welcomePane.d.ts.map +1 -1
- package/dist/utils/welcomePane.js +20 -28
- package/dist/utils/welcomePane.js.map +1 -1
- package/dist/utils/welcomePaneManager.js +1 -1
- package/dist/utils/welcomePaneManager.js.map +1 -1
- package/dist/workers/PaneWorker.js +7 -9
- package/dist/workers/PaneWorker.js.map +1 -1
- package/dist/workers/updateChecker.js +1 -1
- package/dist/workers/updateChecker.js.map +1 -1
- package/package.json +3 -1
- package/dist/AutoUpdater.d.ts.map +0 -1
- package/dist/AutoUpdater.js.map +0 -1
- package/dist/BetterTextInput.d.ts +0 -10
- package/dist/BetterTextInput.d.ts.map +0 -1
- package/dist/BetterTextInput.js +0 -177
- package/dist/BetterTextInput.js.map +0 -1
- package/dist/CleanTextInput.d.ts.map +0 -1
- package/dist/CleanTextInput.js.map +0 -1
- package/dist/EnhancedTextInput.d.ts +0 -13
- package/dist/EnhancedTextInput.d.ts.map +0 -1
- package/dist/EnhancedTextInput.js +0 -443
- package/dist/EnhancedTextInput.js.map +0 -1
- package/dist/GeminiTextInput.d.ts +0 -12
- package/dist/GeminiTextInput.d.ts.map +0 -1
- package/dist/GeminiTextInput.js +0 -210
- package/dist/GeminiTextInput.js.map +0 -1
- package/dist/MergePane.d.ts.map +0 -1
- package/dist/MergePane.js.map +0 -1
- package/dist/MultilineTextInput.d.ts +0 -10
- package/dist/MultilineTextInput.d.ts.map +0 -1
- package/dist/MultilineTextInput.js +0 -184
- package/dist/MultilineTextInput.js.map +0 -1
- package/dist/PaneAnalyzer.d.ts.map +0 -1
- package/dist/PaneAnalyzer.js.map +0 -1
- package/dist/SimpleEnhancedInput.d.ts +0 -13
- package/dist/SimpleEnhancedInput.d.ts.map +0 -1
- package/dist/SimpleEnhancedInput.js +0 -639
- package/dist/SimpleEnhancedInput.js.map +0 -1
- package/dist/SimpleGeminiInput.d.ts +0 -12
- package/dist/SimpleGeminiInput.d.ts.map +0 -1
- package/dist/SimpleGeminiInput.js +0 -223
- package/dist/SimpleGeminiInput.js.map +0 -1
- package/dist/StyledTextInput.d.ts.map +0 -1
- package/dist/StyledTextInput.js.map +0 -1
- package/dist/components/ActionChoiceDialog.d.ts.map +0 -1
- package/dist/components/ActionChoiceDialog.js.map +0 -1
- package/dist/components/ActionConfirmDialog.d.ts.map +0 -1
- package/dist/components/ActionConfirmDialog.js.map +0 -1
- package/dist/components/ActionInputDialog.d.ts.map +0 -1
- package/dist/components/ActionInputDialog.js.map +0 -1
- package/dist/components/ActionProgressDialog.d.ts.map +0 -1
- package/dist/components/ActionProgressDialog.js.map +0 -1
- package/dist/components/AgentChoiceDialog.d.ts.map +0 -1
- package/dist/components/AgentChoiceDialog.js.map +0 -1
- package/dist/components/CloseOptionsDialog.d.ts.map +0 -1
- package/dist/components/CloseOptionsDialog.js.map +0 -1
- package/dist/components/CommandPromptDialog.d.ts.map +0 -1
- package/dist/components/CommandPromptDialog.js.map +0 -1
- package/dist/components/CreatingIndicator.d.ts.map +0 -1
- package/dist/components/CreatingIndicator.js.map +0 -1
- package/dist/components/DialogBox.d.ts.map +0 -1
- package/dist/components/DialogBox.js.map +0 -1
- package/dist/components/FileCopyPrompt.d.ts.map +0 -1
- package/dist/components/FileCopyPrompt.js.map +0 -1
- package/dist/components/FooterHelp.d.ts.map +0 -1
- package/dist/components/FooterHelp.js.map +0 -1
- package/dist/components/HooksDialog.d.ts.map +0 -1
- package/dist/components/HooksDialog.js.map +0 -1
- package/dist/components/KebabMenu.d.ts.map +0 -1
- package/dist/components/KebabMenu.js.map +0 -1
- package/dist/components/LoadingIndicator.d.ts.map +0 -1
- package/dist/components/LoadingIndicator.js.map +0 -1
- package/dist/components/MergeConfirmationDialog.d.ts.map +0 -1
- package/dist/components/MergeConfirmationDialog.js.map +0 -1
- package/dist/components/PaneCard.d.ts.map +0 -1
- package/dist/components/PaneCard.js.map +0 -1
- package/dist/components/PanesGrid.d.ts.map +0 -1
- package/dist/components/PanesGrid.js.map +0 -1
- package/dist/components/QRCode.d.ts.map +0 -1
- package/dist/components/QRCode.js.map +0 -1
- package/dist/components/RunningIndicator.d.ts.map +0 -1
- package/dist/components/RunningIndicator.js.map +0 -1
- package/dist/components/SettingsDialog.d.ts.map +0 -1
- package/dist/components/SettingsDialog.js.map +0 -1
- package/dist/components/Spinner.d.ts.map +0 -1
- package/dist/components/Spinner.js.map +0 -1
- package/dist/components/UpdateDialog.d.ts.map +0 -1
- package/dist/components/UpdateDialog.js.map +0 -1
- package/dist/components/UpdatingIndicator.d.ts.map +0 -1
- package/dist/components/UpdatingIndicator.js.map +0 -1
- package/dist/decorative-pane.d.ts.map +0 -1
- package/dist/decorative-pane.js.map +0 -1
- package/dist/popups/agentChoicePopup.d.ts.map +0 -1
- package/dist/popups/agentChoicePopup.js.map +0 -1
- package/dist/popups/choicePopup.d.ts.map +0 -1
- package/dist/popups/choicePopup.js.map +0 -1
- package/dist/popups/components/FileList.d.ts.map +0 -1
- package/dist/popups/components/FileList.js.map +0 -1
- package/dist/popups/components/PopupContainer.d.ts.map +0 -1
- package/dist/popups/components/PopupContainer.js.map +0 -1
- package/dist/popups/components/PopupInputBox.d.ts.map +0 -1
- package/dist/popups/components/PopupInputBox.js.map +0 -1
- package/dist/popups/components/PopupWrapper.d.ts.map +0 -1
- package/dist/popups/components/PopupWrapper.js.map +0 -1
- package/dist/popups/components/index.d.ts.map +0 -1
- package/dist/popups/components/index.js.map +0 -1
- package/dist/popups/config.d.ts.map +0 -1
- package/dist/popups/config.js.map +0 -1
- package/dist/popups/confirmPopup.d.ts.map +0 -1
- package/dist/popups/confirmPopup.js.map +0 -1
- package/dist/popups/hooksPopup.d.ts.map +0 -1
- package/dist/popups/hooksPopup.js.map +0 -1
- package/dist/popups/inputPopup.d.ts.map +0 -1
- package/dist/popups/inputPopup.js.map +0 -1
- package/dist/popups/kebabMenuPopup.d.ts.map +0 -1
- package/dist/popups/kebabMenuPopup.js.map +0 -1
- package/dist/popups/logsPopup.d.ts.map +0 -1
- package/dist/popups/logsPopup.js.map +0 -1
- package/dist/popups/mergePopup.d.ts.map +0 -1
- package/dist/popups/mergePopup.js.map +0 -1
- package/dist/popups/newPanePopup.d.ts.map +0 -1
- package/dist/popups/newPanePopup.js.map +0 -1
- package/dist/popups/progressPopup.d.ts.map +0 -1
- package/dist/popups/progressPopup.js.map +0 -1
- package/dist/popups/remotePopup.d.ts.map +0 -1
- package/dist/popups/remotePopup.js.map +0 -1
- package/dist/popups/settingsPopup.d.ts.map +0 -1
- package/dist/popups/settingsPopup.js.map +0 -1
- package/dist/popups/shortcutsPopup.d.ts.map +0 -1
- package/dist/popups/shortcutsPopup.js.map +0 -1
- package/dist/popups/templates/SimpleInputPopup.d.ts.map +0 -1
- package/dist/popups/templates/SimpleInputPopup.js.map +0 -1
- package/dist/server/static.d.ts +0 -6
- package/dist/server/static.d.ts.map +0 -1
- package/dist/server/static.js +0 -3040
- package/dist/server/static.js.map +0 -1
- package/dist/spacer-pane.d.ts.map +0 -1
- package/dist/spacer-pane.js.map +0 -1
- /package/dist/components/{ActionChoiceDialog.js → dialogs/ActionChoiceDialog.js} +0 -0
- /package/dist/components/{ActionConfirmDialog.d.ts → dialogs/ActionConfirmDialog.d.ts} +0 -0
- /package/dist/components/{ActionConfirmDialog.js → dialogs/ActionConfirmDialog.js} +0 -0
- /package/dist/components/{ActionInputDialog.d.ts → dialogs/ActionInputDialog.d.ts} +0 -0
- /package/dist/components/{ActionProgressDialog.d.ts → dialogs/ActionProgressDialog.d.ts} +0 -0
- /package/dist/components/{ActionProgressDialog.js → dialogs/ActionProgressDialog.js} +0 -0
- /package/dist/components/{AgentChoiceDialog.d.ts → dialogs/AgentChoiceDialog.d.ts} +0 -0
- /package/dist/components/{AgentChoiceDialog.js → dialogs/AgentChoiceDialog.js} +0 -0
- /package/dist/components/{CloseOptionsDialog.js → dialogs/CloseOptionsDialog.js} +0 -0
- /package/dist/components/{CommandPromptDialog.d.ts → dialogs/CommandPromptDialog.d.ts} +0 -0
- /package/dist/components/{DialogBox.d.ts → dialogs/DialogBox.d.ts} +0 -0
- /package/dist/components/{DialogBox.js → dialogs/DialogBox.js} +0 -0
- /package/dist/components/{HooksDialog.d.ts → dialogs/HooksDialog.d.ts} +0 -0
- /package/dist/components/{HooksDialog.js → dialogs/HooksDialog.js} +0 -0
- /package/dist/components/{MergeConfirmationDialog.js → dialogs/MergeConfirmationDialog.js} +0 -0
- /package/dist/components/{SettingsDialog.js → dialogs/SettingsDialog.js} +0 -0
- /package/dist/components/{UpdateDialog.d.ts → dialogs/UpdateDialog.d.ts} +0 -0
- /package/dist/components/{UpdateDialog.js → dialogs/UpdateDialog.js} +0 -0
- /package/dist/components/{CreatingIndicator.d.ts → indicators/CreatingIndicator.d.ts} +0 -0
- /package/dist/components/{CreatingIndicator.js → indicators/CreatingIndicator.js} +0 -0
- /package/dist/components/{LoadingIndicator.d.ts → indicators/LoadingIndicator.d.ts} +0 -0
- /package/dist/components/{LoadingIndicator.js → indicators/LoadingIndicator.js} +0 -0
- /package/dist/components/{RunningIndicator.d.ts → indicators/RunningIndicator.d.ts} +0 -0
- /package/dist/components/{RunningIndicator.js → indicators/RunningIndicator.js} +0 -0
- /package/dist/components/{Spinner.d.ts → indicators/Spinner.d.ts} +0 -0
- /package/dist/components/{Spinner.js → indicators/Spinner.js} +0 -0
- /package/dist/components/{UpdatingIndicator.d.ts → indicators/UpdatingIndicator.d.ts} +0 -0
- /package/dist/components/{UpdatingIndicator.js → indicators/UpdatingIndicator.js} +0 -0
- /package/dist/{CleanTextInput.d.ts → components/inputs/CleanTextInput.d.ts} +0 -0
- /package/dist/{StyledTextInput.d.ts → components/inputs/StyledTextInput.d.ts} +0 -0
- /package/dist/{StyledTextInput.js → components/inputs/StyledTextInput.js} +0 -0
- /package/dist/components/{KebabMenu.js → panes/KebabMenu.js} +0 -0
- /package/dist/{MergePane.d.ts → components/panes/MergePane.d.ts} +0 -0
- /package/dist/{popups → components/popups}/agentChoicePopup.d.ts +0 -0
- /package/dist/{popups → components/popups}/choicePopup.d.ts +0 -0
- /package/dist/{popups → components/popups}/config.d.ts +0 -0
- /package/dist/{popups → components/popups}/confirmPopup.d.ts +0 -0
- /package/dist/{popups → components/popups}/hooksPopup.d.ts +0 -0
- /package/dist/{popups → components/popups}/inputPopup.d.ts +0 -0
- /package/dist/{popups → components/popups}/kebabMenuPopup.d.ts +0 -0
- /package/dist/{popups → components/popups}/logsPopup.d.ts +0 -0
- /package/dist/{popups → components/popups}/mergePopup.d.ts +0 -0
- /package/dist/{popups → components/popups}/newPanePopup.d.ts +0 -0
- /package/dist/{popups → components/popups}/progressPopup.d.ts +0 -0
- /package/dist/{popups → components/popups}/remotePopup.d.ts +0 -0
- /package/dist/{popups → components/popups}/settingsPopup.d.ts +0 -0
- /package/dist/{popups/components → components/popups/shared}/FileList.d.ts +0 -0
- /package/dist/{popups/components → components/popups/shared}/FileList.js +0 -0
- /package/dist/{popups/components → components/popups/shared}/PopupContainer.d.ts +0 -0
- /package/dist/{popups/components → components/popups/shared}/PopupContainer.js +0 -0
- /package/dist/{popups/components → components/popups/shared}/PopupInputBox.d.ts +0 -0
- /package/dist/{popups/components → components/popups/shared}/PopupInputBox.js +0 -0
- /package/dist/{popups/components → components/popups/shared}/PopupWrapper.d.ts +0 -0
- /package/dist/{popups/components → components/popups/shared}/PopupWrapper.js +0 -0
- /package/dist/{popups/components → components/popups/shared}/index.d.ts +0 -0
- /package/dist/{popups/components → components/popups/shared}/index.js +0 -0
- /package/dist/{popups → components/popups}/shortcutsPopup.d.ts +0 -0
- /package/dist/{popups → components/popups}/templates/SimpleInputPopup.d.ts +0 -0
- /package/dist/components/{FileCopyPrompt.d.ts → ui/FileCopyPrompt.d.ts} +0 -0
- /package/dist/components/{FileCopyPrompt.js → ui/FileCopyPrompt.js} +0 -0
- /package/dist/components/{FooterHelp.d.ts → ui/FooterHelp.d.ts} +0 -0
- /package/dist/components/{FooterHelp.js → ui/FooterHelp.js} +0 -0
- /package/dist/components/{QRCode.d.ts → ui/QRCode.d.ts} +0 -0
- /package/dist/components/{QRCode.js → ui/QRCode.js} +0 -0
- /package/dist/{decorative-pane.d.ts → panes/decorative-pane.d.ts} +0 -0
- /package/dist/{spacer-pane.d.ts → panes/spacer-pane.d.ts} +0 -0
- /package/dist/{spacer-pane.js → panes/spacer-pane.js} +0 -0
- /package/dist/{PaneAnalyzer.d.ts → services/PaneAnalyzer.d.ts} +0 -0
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MERGE Action - Merge a worktree into the main branch with comprehensive pre-checks
|
|
3
|
+
*
|
|
4
|
+
* This is the simplified orchestrator that delegates to specialized modules.
|
|
5
|
+
*/
|
|
6
|
+
import { triggerHook } from '../../utils/hooks.js';
|
|
7
|
+
import { executeMerge } from '../merge/mergeExecution.js';
|
|
8
|
+
import { handleNothingToMerge, handleMainDirty, handleWorktreeUncommitted, handleMergeConflict, } from '../merge/issueHandlers/index.js';
|
|
9
|
+
/**
|
|
10
|
+
* Merge a worktree into the main branch with comprehensive pre-checks
|
|
11
|
+
*/
|
|
12
|
+
export async function mergePane(pane, context, params) {
|
|
13
|
+
// 1. Validation
|
|
14
|
+
if (!pane.worktreePath) {
|
|
15
|
+
return {
|
|
16
|
+
type: 'error',
|
|
17
|
+
message: 'This pane has no worktree to merge',
|
|
18
|
+
dismissable: true,
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
// 2. Pre-merge validation
|
|
22
|
+
const { validateMerge } = await import('../../utils/mergeValidation.js');
|
|
23
|
+
const mainRepoPath = pane.worktreePath.replace(/\/\.dmux\/worktrees\/[^/]+$/, '');
|
|
24
|
+
const validation = validateMerge(mainRepoPath, pane.worktreePath, pane.slug);
|
|
25
|
+
// 3. Handle detected issues
|
|
26
|
+
if (!validation.canMerge) {
|
|
27
|
+
return handleMergeIssues(pane, context, validation, mainRepoPath);
|
|
28
|
+
}
|
|
29
|
+
// 4. No issues detected, proceed with merge confirmation
|
|
30
|
+
return {
|
|
31
|
+
type: 'confirm',
|
|
32
|
+
title: 'Merge Worktree',
|
|
33
|
+
message: `Merge "${pane.slug}" into ${validation.mainBranch}?`,
|
|
34
|
+
confirmLabel: 'Merge',
|
|
35
|
+
cancelLabel: 'Cancel',
|
|
36
|
+
onConfirm: async () => {
|
|
37
|
+
// Trigger pre_merge hook before starting merge
|
|
38
|
+
await triggerHook('pre_merge', mainRepoPath, pane, {
|
|
39
|
+
DMUX_TARGET_BRANCH: validation.mainBranch,
|
|
40
|
+
});
|
|
41
|
+
return executeMerge(pane, context, validation.mainBranch, mainRepoPath);
|
|
42
|
+
},
|
|
43
|
+
onCancel: async () => {
|
|
44
|
+
return {
|
|
45
|
+
type: 'info',
|
|
46
|
+
message: 'Merge cancelled',
|
|
47
|
+
dismissable: true,
|
|
48
|
+
};
|
|
49
|
+
},
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Handle detected merge issues by delegating to specialized handlers
|
|
54
|
+
*/
|
|
55
|
+
async function handleMergeIssues(pane, context, validation, mainRepoPath) {
|
|
56
|
+
const { issues, mainBranch } = validation;
|
|
57
|
+
// Create retry function that re-runs the merge
|
|
58
|
+
const retryMerge = () => mergePane(pane, context, { mainBranch });
|
|
59
|
+
// Find and handle specific issue types
|
|
60
|
+
const nothingToMerge = issues.find((i) => i.type === 'nothing_to_merge');
|
|
61
|
+
if (nothingToMerge) {
|
|
62
|
+
return handleNothingToMerge();
|
|
63
|
+
}
|
|
64
|
+
const mainDirty = issues.find((i) => i.type === 'main_dirty');
|
|
65
|
+
if (mainDirty) {
|
|
66
|
+
return handleMainDirty(mainDirty, mainBranch, mainRepoPath, pane, context, retryMerge);
|
|
67
|
+
}
|
|
68
|
+
const worktreeUncommitted = issues.find((i) => i.type === 'worktree_uncommitted');
|
|
69
|
+
if (worktreeUncommitted) {
|
|
70
|
+
return handleWorktreeUncommitted(worktreeUncommitted, pane, context, retryMerge);
|
|
71
|
+
}
|
|
72
|
+
const mergeConflict = issues.find((i) => i.type === 'merge_conflict');
|
|
73
|
+
if (mergeConflict) {
|
|
74
|
+
return handleMergeConflict(mergeConflict, mainBranch, mainRepoPath, pane, context);
|
|
75
|
+
}
|
|
76
|
+
// Generic fallback for unknown issues
|
|
77
|
+
return {
|
|
78
|
+
type: 'error',
|
|
79
|
+
title: 'Merge Issues Detected',
|
|
80
|
+
message: issues.map((i) => i.message).join('\n'),
|
|
81
|
+
dismissable: true,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=mergeAction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mergeAction.js","sourceRoot":"","sources":["../../../src/actions/implementations/mergeAction.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OPEN_IN_EDITOR Action - Open worktree in external editor
|
|
3
|
+
*/
|
|
4
|
+
import type { DmuxPane } from '../../types.js';
|
|
5
|
+
import type { ActionResult, ActionContext } from '../types.js';
|
|
6
|
+
/**
|
|
7
|
+
* Open worktree in external editor
|
|
8
|
+
*/
|
|
9
|
+
export declare function openInEditor(pane: DmuxPane, context: ActionContext, params?: {
|
|
10
|
+
editor?: string;
|
|
11
|
+
}): Promise<ActionResult>;
|
|
12
|
+
//# sourceMappingURL=openInEditorAction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openInEditorAction.d.ts","sourceRoot":"","sources":["../../../src/actions/implementations/openInEditorAction.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE/D;;GAEG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,QAAQ,EACd,OAAO,EAAE,aAAa,EACtB,MAAM,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAC3B,OAAO,CAAC,YAAY,CAAC,CA0BvB"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OPEN_IN_EDITOR Action - Open worktree in external editor
|
|
3
|
+
*/
|
|
4
|
+
import { execSync } from 'child_process';
|
|
5
|
+
/**
|
|
6
|
+
* Open worktree in external editor
|
|
7
|
+
*/
|
|
8
|
+
export async function openInEditor(pane, context, params) {
|
|
9
|
+
if (!pane.worktreePath) {
|
|
10
|
+
return {
|
|
11
|
+
type: 'error',
|
|
12
|
+
message: 'This pane has no worktree to open',
|
|
13
|
+
dismissable: true,
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
const editor = params?.editor || process.env.EDITOR || 'code';
|
|
17
|
+
try {
|
|
18
|
+
execSync(`${editor} "${pane.worktreePath}"`, { stdio: 'pipe' });
|
|
19
|
+
return {
|
|
20
|
+
type: 'success',
|
|
21
|
+
message: `Opened in ${editor}`,
|
|
22
|
+
dismissable: true,
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
catch (error) {
|
|
26
|
+
return {
|
|
27
|
+
type: 'error',
|
|
28
|
+
message: `Failed to open in editor: ${error}`,
|
|
29
|
+
dismissable: true,
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=openInEditorAction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openInEditorAction.js","sourceRoot":"","sources":["../../../src/actions/implementations/openInEditorAction.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAIzC;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,IAAc,EACd,OAAsB,EACtB,MAA4B;IAE5B,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;QACvB,OAAO;YACL,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,mCAAmC;YAC5C,WAAW,EAAE,IAAI;SAClB,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,EAAE,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC;IAE9D,IAAI,CAAC;QACH,QAAQ,CAAC,GAAG,MAAM,KAAK,IAAI,CAAC,YAAY,GAAG,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QAEhE,OAAO;YACL,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,aAAa,MAAM,EAAE;YAC9B,WAAW,EAAE,IAAI;SAClB,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,6BAA6B,KAAK,EAAE;YAC7C,WAAW,EAAE,IAAI;SAClB,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RENAME Action - Rename a pane
|
|
3
|
+
* NOTE: Renaming is disabled because pane names are tied to git worktree branches.
|
|
4
|
+
* Renaming would require renaming the branch and moving the worktree directory,
|
|
5
|
+
* which is complex and error-prone.
|
|
6
|
+
*/
|
|
7
|
+
import type { DmuxPane } from '../../types.js';
|
|
8
|
+
import type { ActionResult, ActionContext } from '../types.js';
|
|
9
|
+
/**
|
|
10
|
+
* Rename a pane (currently disabled - shows info message)
|
|
11
|
+
*/
|
|
12
|
+
export declare function renamePane(pane: DmuxPane, context: ActionContext): Promise<ActionResult>;
|
|
13
|
+
//# sourceMappingURL=renameAction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"renameAction.d.ts","sourceRoot":"","sources":["../../../src/actions/implementations/renameAction.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE/D;;GAEG;AACH,wBAAsB,UAAU,CAC9B,IAAI,EAAE,QAAQ,EACd,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,YAAY,CAAC,CAOvB"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RENAME Action - Rename a pane
|
|
3
|
+
* NOTE: Renaming is disabled because pane names are tied to git worktree branches.
|
|
4
|
+
* Renaming would require renaming the branch and moving the worktree directory,
|
|
5
|
+
* which is complex and error-prone.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Rename a pane (currently disabled - shows info message)
|
|
9
|
+
*/
|
|
10
|
+
export async function renamePane(pane, context) {
|
|
11
|
+
return {
|
|
12
|
+
type: 'info',
|
|
13
|
+
title: 'Rename Not Supported',
|
|
14
|
+
message: 'Pane names are tied to git worktree branches and cannot be renamed after creation.\n\nThe pane name always matches the worktree directory and git branch name.',
|
|
15
|
+
dismissable: true,
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=renameAction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"renameAction.js","sourceRoot":"","sources":["../../../src/actions/implementations/renameAction.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,IAAc,EACd,OAAsB;IAEtB,OAAO;QACL,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,sBAAsB;QAC7B,OAAO,EAAE,gKAAgK;QACzK,WAAW,EAAE,IAAI;KAClB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TOGGLE_AUTOPILOT Action - Toggle autopilot mode for a pane
|
|
3
|
+
*/
|
|
4
|
+
import type { DmuxPane } from '../../types.js';
|
|
5
|
+
import type { ActionResult, ActionContext } from '../types.js';
|
|
6
|
+
/**
|
|
7
|
+
* Toggle autopilot mode for a pane
|
|
8
|
+
*/
|
|
9
|
+
export declare function toggleAutopilot(pane: DmuxPane, context: ActionContext): Promise<ActionResult>;
|
|
10
|
+
//# sourceMappingURL=toggleAutopilotAction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toggleAutopilotAction.d.ts","sourceRoot":"","sources":["../../../src/actions/implementations/toggleAutopilotAction.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE/D;;GAEG;AACH,wBAAsB,eAAe,CACnC,IAAI,EAAE,QAAQ,EACd,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,YAAY,CAAC,CA8BvB"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TOGGLE_AUTOPILOT Action - Toggle autopilot mode for a pane
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Toggle autopilot mode for a pane
|
|
6
|
+
*/
|
|
7
|
+
export async function toggleAutopilot(pane, context) {
|
|
8
|
+
try {
|
|
9
|
+
// Toggle the autopilot setting
|
|
10
|
+
const newAutopilotState = !pane.autopilot;
|
|
11
|
+
// Update the pane
|
|
12
|
+
const updatedPanes = context.panes.map(p => p.id === pane.id ? { ...p, autopilot: newAutopilotState } : p);
|
|
13
|
+
// Save the updated panes
|
|
14
|
+
await context.savePanes(updatedPanes);
|
|
15
|
+
// Notify about the update
|
|
16
|
+
if (context.onPaneUpdate) {
|
|
17
|
+
context.onPaneUpdate({ ...pane, autopilot: newAutopilotState });
|
|
18
|
+
}
|
|
19
|
+
return {
|
|
20
|
+
type: 'success',
|
|
21
|
+
message: `Autopilot ${newAutopilotState ? 'enabled' : 'disabled'} for "${pane.slug}"`,
|
|
22
|
+
dismissable: true,
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
catch (error) {
|
|
26
|
+
return {
|
|
27
|
+
type: 'error',
|
|
28
|
+
message: `Failed to toggle autopilot: ${error instanceof Error ? error.message : 'Unknown error'}`,
|
|
29
|
+
dismissable: true,
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=toggleAutopilotAction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toggleAutopilotAction.js","sourceRoot":"","sources":["../../../src/actions/implementations/toggleAutopilotAction.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,IAAc,EACd,OAAsB;IAEtB,IAAI,CAAC;QACH,+BAA+B;QAC/B,MAAM,iBAAiB,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;QAE1C,kBAAkB;QAClB,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CACzC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,SAAS,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC,CAAC,CAC9D,CAAC;QAEF,yBAAyB;QACzB,MAAM,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QAEtC,0BAA0B;QAC1B,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;YACzB,OAAO,CAAC,YAAY,CAAC,EAAE,GAAG,IAAI,EAAE,SAAS,EAAE,iBAAiB,EAAE,CAAC,CAAC;QAClE,CAAC;QAED,OAAO;YACL,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,aAAa,iBAAiB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,SAAS,IAAI,CAAC,IAAI,GAAG;YACrF,WAAW,EAAE,IAAI;SAClB,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,+BAA+B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE;YAClG,WAAW,EAAE,IAAI;SAClB,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* VIEW Action - Jump to/view a pane
|
|
3
|
+
*/
|
|
4
|
+
import type { DmuxPane } from '../../types.js';
|
|
5
|
+
import type { ActionResult, ActionContext } from '../types.js';
|
|
6
|
+
/**
|
|
7
|
+
* View/Jump to a pane
|
|
8
|
+
*/
|
|
9
|
+
export declare function viewPane(pane: DmuxPane, context: ActionContext): Promise<ActionResult>;
|
|
10
|
+
//# sourceMappingURL=viewAction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"viewAction.d.ts","sourceRoot":"","sources":["../../../src/actions/implementations/viewAction.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE/D;;GAEG;AACH,wBAAsB,QAAQ,CAC5B,IAAI,EAAE,QAAQ,EACd,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,YAAY,CAAC,CAiBvB"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* VIEW Action - Jump to/view a pane
|
|
3
|
+
*/
|
|
4
|
+
import { execSync } from 'child_process';
|
|
5
|
+
/**
|
|
6
|
+
* View/Jump to a pane
|
|
7
|
+
*/
|
|
8
|
+
export async function viewPane(pane, context) {
|
|
9
|
+
try {
|
|
10
|
+
execSync(`tmux select-pane -t '${pane.paneId}'`, { stdio: 'pipe' });
|
|
11
|
+
return {
|
|
12
|
+
type: 'navigation',
|
|
13
|
+
message: `Jumped to pane: ${pane.slug}`,
|
|
14
|
+
targetPaneId: pane.id,
|
|
15
|
+
dismissable: true,
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
catch (error) {
|
|
19
|
+
return {
|
|
20
|
+
type: 'error',
|
|
21
|
+
message: 'Failed to jump to pane - it may have been closed',
|
|
22
|
+
dismissable: true,
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=viewAction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"viewAction.js","sourceRoot":"","sources":["../../../src/actions/implementations/viewAction.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAIzC;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,IAAc,EACd,OAAsB;IAEtB,IAAI,CAAC;QACH,QAAQ,CAAC,wBAAwB,IAAI,CAAC,MAAM,GAAG,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QAEpE,OAAO;YACL,IAAI,EAAE,YAAY;YAClB,OAAO,EAAE,mBAAmB,IAAI,CAAC,IAAI,EAAE;YACvC,YAAY,EAAE,IAAI,CAAC,EAAE;YACrB,WAAW,EAAE,IAAI;SAClB,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,kDAAkD;YAC3D,WAAW,EAAE,IAAI;SAClB,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Commit Message Handler - UI logic for commit message workflows
|
|
3
|
+
*
|
|
4
|
+
* This module handles ActionResult flows for commit message generation,
|
|
5
|
+
* editing, and manual input. It uses domain logic from utils/ but returns
|
|
6
|
+
* ActionResult objects suitable for TUI/Web/API consumption.
|
|
7
|
+
*/
|
|
8
|
+
import type { ActionResult } from '../types.js';
|
|
9
|
+
/**
|
|
10
|
+
* Generate commit message with timeout and error handling
|
|
11
|
+
* Returns null if it fails, so caller can fall back to manual input
|
|
12
|
+
*/
|
|
13
|
+
export declare function generateCommitMessageSafe(repoPath: string, timeoutMs?: number): Promise<string | null>;
|
|
14
|
+
/**
|
|
15
|
+
* Prompt for commit message with optional AI generation
|
|
16
|
+
* @param repoPath - Path to repository
|
|
17
|
+
* @param mode - 'ai_automatic' | 'ai_editable' | 'manual'
|
|
18
|
+
* @param onCommit - Callback to execute after commit message is obtained
|
|
19
|
+
* @returns ActionResult prompting for commit message
|
|
20
|
+
*/
|
|
21
|
+
export declare function promptForCommitMessage(repoPath: string, mode: 'ai_automatic' | 'ai_editable' | 'manual', onCommit: (message: string) => Promise<ActionResult>): Promise<ActionResult>;
|
|
22
|
+
/**
|
|
23
|
+
* Handle commit with the given options (automatic/editable/manual)
|
|
24
|
+
* This DRYs up the common pattern of presenting commit options and executing
|
|
25
|
+
*/
|
|
26
|
+
export declare function handleCommitWithOptions(repoPath: string, optionId: 'commit_automatic' | 'commit_ai_editable' | 'commit_manual', onSuccess: () => Promise<ActionResult>): Promise<ActionResult>;
|
|
27
|
+
//# sourceMappingURL=commitMessageHandler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commitMessageHandler.d.ts","sourceRoot":"","sources":["../../../src/actions/merge/commitMessageHandler.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAIhD;;;GAGG;AACH,wBAAsB,yBAAyB,CAC7C,QAAQ,EAAE,MAAM,EAChB,SAAS,GAAE,MAAc,GACxB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAwBxB;AAED;;;;;;GAMG;AACH,wBAAsB,sBAAsB,CAC1C,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,cAAc,GAAG,aAAa,GAAG,QAAQ,EAC/C,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,CAAC,GACnD,OAAO,CAAC,YAAY,CAAC,CA8EvB;AAED;;;GAGG;AACH,wBAAsB,uBAAuB,CAC3C,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,kBAAkB,GAAG,oBAAoB,GAAG,eAAe,EACrE,SAAS,EAAE,MAAM,OAAO,CAAC,YAAY,CAAC,GACrC,OAAO,CAAC,YAAY,CAAC,CAevB"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Commit Message Handler - UI logic for commit message workflows
|
|
3
|
+
*
|
|
4
|
+
* This module handles ActionResult flows for commit message generation,
|
|
5
|
+
* editing, and manual input. It uses domain logic from utils/ but returns
|
|
6
|
+
* ActionResult objects suitable for TUI/Web/API consumption.
|
|
7
|
+
*/
|
|
8
|
+
import { StateManager } from '../../shared/StateManager.js';
|
|
9
|
+
import { LogService } from '../../services/LogService.js';
|
|
10
|
+
/**
|
|
11
|
+
* Generate commit message with timeout and error handling
|
|
12
|
+
* Returns null if it fails, so caller can fall back to manual input
|
|
13
|
+
*/
|
|
14
|
+
export async function generateCommitMessageSafe(repoPath, timeoutMs = 15000) {
|
|
15
|
+
try {
|
|
16
|
+
const { generateCommitMessage } = await import('../../utils/aiMerge.js');
|
|
17
|
+
// Race between generation and timeout
|
|
18
|
+
const result = await Promise.race([
|
|
19
|
+
generateCommitMessage(repoPath),
|
|
20
|
+
new Promise((_, reject) => setTimeout(() => reject(new Error('Timeout')), timeoutMs)),
|
|
21
|
+
]);
|
|
22
|
+
if (!result) {
|
|
23
|
+
StateManager.getInstance().setDebugMessage('[AI] Commit message generation returned null');
|
|
24
|
+
LogService.getInstance().warn('AI commit message generation returned null', 'aiMerge');
|
|
25
|
+
}
|
|
26
|
+
return result;
|
|
27
|
+
}
|
|
28
|
+
catch (error) {
|
|
29
|
+
const errorMsg = `AI commit message generation error: ${error}`;
|
|
30
|
+
StateManager.getInstance().setDebugMessage(`[AI] ${errorMsg}`);
|
|
31
|
+
LogService.getInstance().error(errorMsg, 'aiMerge', undefined, error instanceof Error ? error : undefined);
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Prompt for commit message with optional AI generation
|
|
37
|
+
* @param repoPath - Path to repository
|
|
38
|
+
* @param mode - 'ai_automatic' | 'ai_editable' | 'manual'
|
|
39
|
+
* @param onCommit - Callback to execute after commit message is obtained
|
|
40
|
+
* @returns ActionResult prompting for commit message
|
|
41
|
+
*/
|
|
42
|
+
export async function promptForCommitMessage(repoPath, mode, onCommit) {
|
|
43
|
+
const { stageAllChanges } = await import('../../utils/mergeValidation.js');
|
|
44
|
+
const { getComprehensiveDiff } = await import('../../utils/aiMerge.js');
|
|
45
|
+
// Stage all changes first
|
|
46
|
+
const stageResult = stageAllChanges(repoPath);
|
|
47
|
+
if (!stageResult.success) {
|
|
48
|
+
return {
|
|
49
|
+
type: 'error',
|
|
50
|
+
message: `Failed to stage changes: ${stageResult.error}`,
|
|
51
|
+
dismissable: true
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
// Handle manual mode (no AI)
|
|
55
|
+
if (mode === 'manual') {
|
|
56
|
+
return {
|
|
57
|
+
type: 'input',
|
|
58
|
+
title: 'Enter Commit Message',
|
|
59
|
+
message: 'Write a commit message for the changes:',
|
|
60
|
+
placeholder: 'feat: add new feature',
|
|
61
|
+
onSubmit: async (message) => {
|
|
62
|
+
if (!message || !message.trim()) {
|
|
63
|
+
return { type: 'error', message: 'Commit message cannot be empty', dismissable: true };
|
|
64
|
+
}
|
|
65
|
+
return onCommit(message.trim());
|
|
66
|
+
},
|
|
67
|
+
dismissable: true,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
// AI modes - generate message
|
|
71
|
+
const { diff, summary } = getComprehensiveDiff(repoPath);
|
|
72
|
+
StateManager.getInstance().setDebugMessage('[AI] Generating commit message...');
|
|
73
|
+
const generatedMessage = await generateCommitMessageSafe(repoPath);
|
|
74
|
+
if (generatedMessage) {
|
|
75
|
+
StateManager.getInstance().setDebugMessage(`[AI] Generated message: ${generatedMessage.split('\n')[0]}`);
|
|
76
|
+
}
|
|
77
|
+
// If AI generation failed, fall back to manual with explanation
|
|
78
|
+
if (!generatedMessage) {
|
|
79
|
+
StateManager.getInstance().setDebugMessage('[AI] Generation failed, falling back to manual input');
|
|
80
|
+
return {
|
|
81
|
+
type: 'input',
|
|
82
|
+
title: 'Enter Commit Message',
|
|
83
|
+
message: `⚠️ Auto-generation failed or timed out. Please write a commit message manually.\n\nFiles changed:\n${summary}`,
|
|
84
|
+
placeholder: 'feat: add new feature',
|
|
85
|
+
onSubmit: async (message) => {
|
|
86
|
+
if (!message || !message.trim()) {
|
|
87
|
+
return { type: 'error', message: 'Commit message cannot be empty', dismissable: true };
|
|
88
|
+
}
|
|
89
|
+
return onCommit(message.trim());
|
|
90
|
+
},
|
|
91
|
+
dismissable: true,
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
// AI automatic mode - commit immediately
|
|
95
|
+
if (mode === 'ai_automatic') {
|
|
96
|
+
return onCommit(generatedMessage);
|
|
97
|
+
}
|
|
98
|
+
// AI editable mode - let user review and edit
|
|
99
|
+
return {
|
|
100
|
+
type: 'input',
|
|
101
|
+
title: 'Review & Edit Commit Message',
|
|
102
|
+
message: `Files changed:\n${summary}\n\nGenerated message (edit as needed):`,
|
|
103
|
+
placeholder: 'feat: add new feature',
|
|
104
|
+
defaultValue: generatedMessage,
|
|
105
|
+
onSubmit: async (message) => {
|
|
106
|
+
if (!message || !message.trim()) {
|
|
107
|
+
return { type: 'error', message: 'Commit message cannot be empty', dismissable: true };
|
|
108
|
+
}
|
|
109
|
+
return onCommit(message.trim());
|
|
110
|
+
},
|
|
111
|
+
dismissable: true,
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Handle commit with the given options (automatic/editable/manual)
|
|
116
|
+
* This DRYs up the common pattern of presenting commit options and executing
|
|
117
|
+
*/
|
|
118
|
+
export async function handleCommitWithOptions(repoPath, optionId, onSuccess) {
|
|
119
|
+
const { commitChanges } = await import('../../utils/mergeValidation.js');
|
|
120
|
+
const mode = optionId === 'commit_automatic' ? 'ai_automatic' :
|
|
121
|
+
optionId === 'commit_ai_editable' ? 'ai_editable' :
|
|
122
|
+
'manual';
|
|
123
|
+
return promptForCommitMessage(repoPath, mode, async (message) => {
|
|
124
|
+
const result = commitChanges(repoPath, message);
|
|
125
|
+
if (!result.success) {
|
|
126
|
+
return { type: 'error', message: `Commit failed: ${result.error}`, dismissable: true };
|
|
127
|
+
}
|
|
128
|
+
return onSuccess();
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=commitMessageHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commitMessageHandler.js","sourceRoot":"","sources":["../../../src/actions/merge/commitMessageHandler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Conflict Resolution - UI logic for conflict resolution workflows
|
|
3
|
+
*
|
|
4
|
+
* This module handles ActionResult flows for creating conflict resolution panes
|
|
5
|
+
* with AI agents to help resolve merge conflicts.
|
|
6
|
+
*/
|
|
7
|
+
import type { ActionResult, ActionContext } from '../types.js';
|
|
8
|
+
import type { DmuxPane } from '../../types.js';
|
|
9
|
+
/**
|
|
10
|
+
* Create a new pane for AI-assisted conflict resolution
|
|
11
|
+
*/
|
|
12
|
+
export declare function createConflictResolutionPaneForMerge(pane: DmuxPane, context: ActionContext, targetBranch: string, targetRepoPath: string): Promise<ActionResult>;
|
|
13
|
+
//# sourceMappingURL=conflictResolution.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conflictResolution.d.ts","sourceRoot":"","sources":["../../../src/actions/merge/conflictResolution.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG/C;;GAEG;AACH,wBAAsB,oCAAoC,CACxD,IAAI,EAAE,QAAQ,EACd,OAAO,EAAE,aAAa,EACtB,YAAY,EAAE,MAAM,EACpB,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,YAAY,CAAC,CAiDvB"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Conflict Resolution - UI logic for conflict resolution workflows
|
|
3
|
+
*
|
|
4
|
+
* This module handles ActionResult flows for creating conflict resolution panes
|
|
5
|
+
* with AI agents to help resolve merge conflicts.
|
|
6
|
+
*/
|
|
7
|
+
import { TmuxService } from '../../services/TmuxService.js';
|
|
8
|
+
/**
|
|
9
|
+
* Create a new pane for AI-assisted conflict resolution
|
|
10
|
+
*/
|
|
11
|
+
export async function createConflictResolutionPaneForMerge(pane, context, targetBranch, targetRepoPath) {
|
|
12
|
+
// First, check which agents are available
|
|
13
|
+
const { findClaudeCommand, findOpencodeCommand } = await import('../../utils/agentDetection.js');
|
|
14
|
+
const availableAgents = [];
|
|
15
|
+
if (await findClaudeCommand())
|
|
16
|
+
availableAgents.push('claude');
|
|
17
|
+
if (await findOpencodeCommand())
|
|
18
|
+
availableAgents.push('opencode');
|
|
19
|
+
if (availableAgents.length === 0) {
|
|
20
|
+
return {
|
|
21
|
+
type: 'error',
|
|
22
|
+
message: 'No AI agents available. Please install claude or opencode.',
|
|
23
|
+
dismissable: true,
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
// If multiple agents available, ask user to choose
|
|
27
|
+
if (availableAgents.length > 1) {
|
|
28
|
+
return {
|
|
29
|
+
type: 'choice',
|
|
30
|
+
title: 'Choose AI Agent for Conflict Resolution',
|
|
31
|
+
message: 'Which agent would you like to use to resolve merge conflicts?',
|
|
32
|
+
options: availableAgents.map(agent => ({
|
|
33
|
+
id: agent,
|
|
34
|
+
label: agent === 'claude' ? 'Claude Code' : 'OpenCode',
|
|
35
|
+
description: agent === 'claude' ? 'Anthropic Claude' : 'Open-source alternative',
|
|
36
|
+
default: agent === 'claude',
|
|
37
|
+
})),
|
|
38
|
+
onSelect: async (agentId) => {
|
|
39
|
+
return createAndLaunchConflictPane(pane, context, targetBranch, targetRepoPath, agentId);
|
|
40
|
+
},
|
|
41
|
+
dismissable: true,
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
// Only one agent available, use it directly
|
|
45
|
+
return createAndLaunchConflictPane(pane, context, targetBranch, targetRepoPath, availableAgents[0]);
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Actually create and launch the conflict resolution pane
|
|
49
|
+
*/
|
|
50
|
+
async function createAndLaunchConflictPane(pane, context, targetBranch, targetRepoPath, agent) {
|
|
51
|
+
try {
|
|
52
|
+
const { createConflictResolutionPane } = await import('../../utils/conflictResolutionPane.js');
|
|
53
|
+
// Create the new pane
|
|
54
|
+
// NOTE: We pass the WORKTREE path as targetRepoPath because that's where
|
|
55
|
+
// the conflicts exist and need to be resolved (not in main repo)
|
|
56
|
+
const conflictPane = await createConflictResolutionPane({
|
|
57
|
+
sourceBranch: pane.slug,
|
|
58
|
+
targetBranch,
|
|
59
|
+
targetRepoPath: pane.worktreePath, // CRITICAL: Use worktree, not main repo
|
|
60
|
+
agent,
|
|
61
|
+
projectName: context.projectName,
|
|
62
|
+
existingPanes: context.panes,
|
|
63
|
+
});
|
|
64
|
+
// Add the new pane to the panes list
|
|
65
|
+
const updatedPanes = [...context.panes, conflictPane];
|
|
66
|
+
await context.savePanes(updatedPanes);
|
|
67
|
+
// Notify about the new pane
|
|
68
|
+
if (context.onPaneUpdate) {
|
|
69
|
+
context.onPaneUpdate(conflictPane);
|
|
70
|
+
}
|
|
71
|
+
// Start monitoring for conflict resolution completion
|
|
72
|
+
const { startConflictMonitoring } = await import('../../utils/conflictMonitor.js');
|
|
73
|
+
startConflictMonitoring({
|
|
74
|
+
conflictPaneId: conflictPane.paneId,
|
|
75
|
+
repoPath: pane.worktreePath, // Monitor the WORKTREE, not main repo
|
|
76
|
+
onResolved: async () => {
|
|
77
|
+
// Conflicts resolved! Close the conflict pane and trigger cleanup
|
|
78
|
+
try {
|
|
79
|
+
console.error(`[conflictResolution] Conflicts resolved for ${pane.slug}, cleaning up conflict pane ${conflictPane.id}`);
|
|
80
|
+
const tmuxService = TmuxService.getInstance();
|
|
81
|
+
// Kill the conflict pane first
|
|
82
|
+
console.error(`[conflictResolution] Killing conflict pane ${conflictPane.paneId}`);
|
|
83
|
+
await tmuxService.killPane(conflictPane.paneId);
|
|
84
|
+
// CRITICAL: Read FRESH panes from StateManager, not stale context.panes
|
|
85
|
+
// The conflict pane was added to state earlier, and StateManager has the latest list
|
|
86
|
+
const { StateManager } = await import('../../shared/StateManager.js');
|
|
87
|
+
const stateManager = StateManager.getInstance();
|
|
88
|
+
const currentPanes = stateManager.getPanes();
|
|
89
|
+
console.error(`[conflictResolution] Current panes: ${currentPanes.map(p => p.id).join(', ')}`);
|
|
90
|
+
// Remove conflict pane from state
|
|
91
|
+
const panesWithoutConflictPane = currentPanes.filter((p) => p.id !== conflictPane.id);
|
|
92
|
+
console.error(`[conflictResolution] Removing conflict pane ${conflictPane.id}, remaining: ${panesWithoutConflictPane.map(p => p.id).join(', ')}`);
|
|
93
|
+
await context.savePanes(panesWithoutConflictPane);
|
|
94
|
+
// Now trigger the cleanup flow for the original pane
|
|
95
|
+
// We need to execute the merge completion flow
|
|
96
|
+
const { executeMerge } = await import('../merge/mergeExecution.js');
|
|
97
|
+
// Create updated context with current pane list (without conflict pane)
|
|
98
|
+
const updatedContext = {
|
|
99
|
+
...context,
|
|
100
|
+
panes: panesWithoutConflictPane,
|
|
101
|
+
};
|
|
102
|
+
// Re-run executeMerge which will now succeed (conflicts are resolved)
|
|
103
|
+
// This will return the cleanup confirmation dialog
|
|
104
|
+
// IMPORTANT: Pass skipWorktreeMerge=true because agent already resolved conflicts
|
|
105
|
+
console.error(`[conflictResolution] Executing merge for original pane ${pane.id} (${pane.slug})`);
|
|
106
|
+
const result = await executeMerge(pane, updatedContext, targetBranch, targetRepoPath, true);
|
|
107
|
+
// If we have the onActionResult callback, use it to show the dialog
|
|
108
|
+
if (context.onActionResult) {
|
|
109
|
+
console.error(`[conflictResolution] Showing merge result dialog to user`);
|
|
110
|
+
await context.onActionResult(result);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
catch (error) {
|
|
114
|
+
console.error('[conflictResolution] Error in onResolved:', error);
|
|
115
|
+
}
|
|
116
|
+
},
|
|
117
|
+
});
|
|
118
|
+
return {
|
|
119
|
+
type: 'navigation',
|
|
120
|
+
title: 'Conflict Resolution Pane Created',
|
|
121
|
+
message: `Created pane "${conflictPane.slug}" with ${agent} to help resolve conflicts. Switch to it to see the AI working.`,
|
|
122
|
+
targetPaneId: conflictPane.id,
|
|
123
|
+
dismissable: true,
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
catch (error) {
|
|
127
|
+
return {
|
|
128
|
+
type: 'error',
|
|
129
|
+
message: `Failed to create conflict resolution pane: ${error instanceof Error ? error.message : String(error)}`,
|
|
130
|
+
dismissable: true,
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=conflictResolution.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conflictResolution.js","sourceRoot":"","sources":["../../../src/actions/merge/conflictResolution.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Issue Handlers - Barrel export
|
|
3
|
+
*/
|
|
4
|
+
export { handleNothingToMerge } from './nothingToMergeHandler.js';
|
|
5
|
+
export { handleMainDirty } from './mainDirtyHandler.js';
|
|
6
|
+
export type { MainDirtyIssue } from './mainDirtyHandler.js';
|
|
7
|
+
export { handleWorktreeUncommitted } from './worktreeUncommittedHandler.js';
|
|
8
|
+
export type { WorktreeUncommittedIssue } from './worktreeUncommittedHandler.js';
|
|
9
|
+
export { handleMergeConflict } from './mergeConflictHandler.js';
|
|
10
|
+
export type { MergeConflictIssue } from './mergeConflictHandler.js';
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|