dmux 5.2.0 → 5.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.
Files changed (206) hide show
  1. package/README.md +8 -4
  2. package/dist/DmuxApp.d.ts.map +1 -1
  3. package/dist/DmuxApp.js +99 -56
  4. package/dist/DmuxApp.js.map +1 -1
  5. package/dist/actions/implementations/closeAction.d.ts.map +1 -1
  6. package/dist/actions/implementations/closeAction.js +42 -13
  7. package/dist/actions/implementations/closeAction.js.map +1 -1
  8. package/dist/actions/implementations/index.d.ts +1 -0
  9. package/dist/actions/implementations/index.d.ts.map +1 -1
  10. package/dist/actions/implementations/index.js +3 -0
  11. package/dist/actions/implementations/index.js.map +1 -1
  12. package/dist/actions/implementations/mergeAction.d.ts.map +1 -1
  13. package/dist/actions/implementations/mergeAction.js +59 -19
  14. package/dist/actions/implementations/mergeAction.js.map +1 -1
  15. package/dist/actions/index.d.ts.map +1 -1
  16. package/dist/actions/index.js +6 -0
  17. package/dist/actions/index.js.map +1 -1
  18. package/dist/actions/merge/conflictResolution.d.ts.map +1 -1
  19. package/dist/actions/merge/conflictResolution.js +17 -12
  20. package/dist/actions/merge/conflictResolution.js.map +1 -1
  21. package/dist/actions/merge/issueHandlers/mainDirtyHandler.d.ts.map +1 -1
  22. package/dist/actions/merge/issueHandlers/mainDirtyHandler.js +8 -6
  23. package/dist/actions/merge/issueHandlers/mainDirtyHandler.js.map +1 -1
  24. package/dist/actions/merge/issueHandlers/worktreeUncommittedHandler.d.ts +1 -1
  25. package/dist/actions/merge/issueHandlers/worktreeUncommittedHandler.d.ts.map +1 -1
  26. package/dist/actions/merge/issueHandlers/worktreeUncommittedHandler.js +9 -2
  27. package/dist/actions/merge/issueHandlers/worktreeUncommittedHandler.js.map +1 -1
  28. package/dist/actions/merge/multiMergeOrchestrator.d.ts.map +1 -1
  29. package/dist/actions/merge/multiMergeOrchestrator.js +33 -14
  30. package/dist/actions/merge/multiMergeOrchestrator.js.map +1 -1
  31. package/dist/actions/types.d.ts +4 -2
  32. package/dist/actions/types.d.ts.map +1 -1
  33. package/dist/actions/types.js +19 -1
  34. package/dist/actions/types.js.map +1 -1
  35. package/dist/components/dialogs/AgentChoiceDialog.d.ts +2 -1
  36. package/dist/components/dialogs/AgentChoiceDialog.d.ts.map +1 -1
  37. package/dist/components/dialogs/AgentChoiceDialog.js +4 -5
  38. package/dist/components/dialogs/AgentChoiceDialog.js.map +1 -1
  39. package/dist/components/panes/PaneCard.d.ts +1 -3
  40. package/dist/components/panes/PaneCard.d.ts.map +1 -1
  41. package/dist/components/panes/PaneCard.js +54 -37
  42. package/dist/components/panes/PaneCard.js.map +1 -1
  43. package/dist/components/panes/PanesGrid.d.ts +1 -0
  44. package/dist/components/panes/PanesGrid.d.ts.map +1 -1
  45. package/dist/components/panes/PanesGrid.js +60 -78
  46. package/dist/components/panes/PanesGrid.js.map +1 -1
  47. package/dist/components/popups/agentChoicePopup.d.ts +2 -2
  48. package/dist/components/popups/agentChoicePopup.js +85 -56
  49. package/dist/components/popups/agentChoicePopup.js.map +1 -1
  50. package/dist/components/popups/diffPeekPopup.d.ts +7 -0
  51. package/dist/components/popups/diffPeekPopup.d.ts.map +1 -0
  52. package/dist/components/popups/diffPeekPopup.js +99 -0
  53. package/dist/components/popups/diffPeekPopup.js.map +1 -0
  54. package/dist/components/popups/enabledAgentsPopup.d.ts +7 -0
  55. package/dist/components/popups/enabledAgentsPopup.d.ts.map +1 -0
  56. package/dist/components/popups/enabledAgentsPopup.js +196 -0
  57. package/dist/components/popups/enabledAgentsPopup.js.map +1 -0
  58. package/dist/components/popups/kebabMenuPopup.js +2 -2
  59. package/dist/components/popups/kebabMenuPopup.js.map +1 -1
  60. package/dist/components/popups/mergeUncommittedChoicePopup.d.ts +7 -0
  61. package/dist/components/popups/mergeUncommittedChoicePopup.d.ts.map +1 -0
  62. package/dist/components/popups/mergeUncommittedChoicePopup.js +289 -0
  63. package/dist/components/popups/mergeUncommittedChoicePopup.js.map +1 -0
  64. package/dist/components/popups/newPanePopup.js +8 -0
  65. package/dist/components/popups/newPanePopup.js.map +1 -1
  66. package/dist/components/popups/reopenWorktreePopup.js +33 -3
  67. package/dist/components/popups/reopenWorktreePopup.js.map +1 -1
  68. package/dist/components/popups/shortcutsPopup.js +15 -12
  69. package/dist/components/popups/shortcutsPopup.js.map +1 -1
  70. package/dist/components/popups/singleAgentChoicePopup.d.ts +7 -0
  71. package/dist/components/popups/singleAgentChoicePopup.d.ts.map +1 -0
  72. package/dist/components/popups/singleAgentChoicePopup.js +95 -0
  73. package/dist/components/popups/singleAgentChoicePopup.js.map +1 -0
  74. package/dist/components/ui/FooterHelp.js +1 -1
  75. package/dist/components/ui/FooterHelp.js.map +1 -1
  76. package/dist/hooks/useActionSystem.d.ts +1 -1
  77. package/dist/hooks/useActionSystem.d.ts.map +1 -1
  78. package/dist/hooks/useActionSystem.js +1 -1
  79. package/dist/hooks/useActionSystem.js.map +1 -1
  80. package/dist/hooks/useAgentDetection.d.ts +2 -2
  81. package/dist/hooks/useAgentDetection.d.ts.map +1 -1
  82. package/dist/hooks/useAgentDetection.js +18 -88
  83. package/dist/hooks/useAgentDetection.js.map +1 -1
  84. package/dist/hooks/useAutoUpdater.d.ts.map +1 -1
  85. package/dist/hooks/useAutoUpdater.js +2 -4
  86. package/dist/hooks/useAutoUpdater.js.map +1 -1
  87. package/dist/hooks/useInputHandling.d.ts +5 -0
  88. package/dist/hooks/useInputHandling.d.ts.map +1 -1
  89. package/dist/hooks/useInputHandling.js +88 -15
  90. package/dist/hooks/useInputHandling.js.map +1 -1
  91. package/dist/hooks/useNavigation.d.ts +1 -1
  92. package/dist/hooks/useNavigation.d.ts.map +1 -1
  93. package/dist/hooks/useNavigation.js +26 -4
  94. package/dist/hooks/useNavigation.js.map +1 -1
  95. package/dist/hooks/usePaneCreation.d.ts +5 -2
  96. package/dist/hooks/usePaneCreation.d.ts.map +1 -1
  97. package/dist/hooks/usePaneCreation.js +123 -23
  98. package/dist/hooks/usePaneCreation.js.map +1 -1
  99. package/dist/hooks/usePaneSync.d.ts +1 -1
  100. package/dist/hooks/usePaneSync.d.ts.map +1 -1
  101. package/dist/hooks/usePaneSync.js +14 -1
  102. package/dist/hooks/usePaneSync.js.map +1 -1
  103. package/dist/hooks/usePanes.js +1 -1
  104. package/dist/hooks/usePanes.js.map +1 -1
  105. package/dist/hooks/useServices.d.ts +1 -1
  106. package/dist/hooks/useServices.d.ts.map +1 -1
  107. package/dist/hooks/useServices.js +2 -2
  108. package/dist/hooks/useServices.js.map +1 -1
  109. package/dist/index.js +194 -18
  110. package/dist/index.js.map +1 -1
  111. package/dist/layout/SpacerManager.d.ts.map +1 -1
  112. package/dist/layout/SpacerManager.js +2 -1
  113. package/dist/layout/SpacerManager.js.map +1 -1
  114. package/dist/services/PaneEventService.d.ts.map +1 -1
  115. package/dist/services/PaneEventService.js +2 -5
  116. package/dist/services/PaneEventService.js.map +1 -1
  117. package/dist/services/PaneWorkerManager.d.ts.map +1 -1
  118. package/dist/services/PaneWorkerManager.js +2 -14
  119. package/dist/services/PaneWorkerManager.js.map +1 -1
  120. package/dist/services/PopupManager.d.ts +7 -2
  121. package/dist/services/PopupManager.d.ts.map +1 -1
  122. package/dist/services/PopupManager.js +125 -19
  123. package/dist/services/PopupManager.js.map +1 -1
  124. package/dist/services/TmuxService.d.ts +9 -0
  125. package/dist/services/TmuxService.d.ts.map +1 -1
  126. package/dist/services/TmuxService.js +18 -2
  127. package/dist/services/TmuxService.js.map +1 -1
  128. package/dist/types.d.ts +4 -2
  129. package/dist/types.d.ts.map +1 -1
  130. package/dist/utils/agentDetection.d.ts +15 -8
  131. package/dist/utils/agentDetection.d.ts.map +1 -1
  132. package/dist/utils/agentDetection.js +49 -73
  133. package/dist/utils/agentDetection.js.map +1 -1
  134. package/dist/utils/agentLaunch.d.ts +60 -2
  135. package/dist/utils/agentLaunch.d.ts.map +1 -1
  136. package/dist/utils/agentLaunch.js +490 -41
  137. package/dist/utils/agentLaunch.js.map +1 -1
  138. package/dist/utils/agentPromptDispatch.d.ts +33 -0
  139. package/dist/utils/agentPromptDispatch.d.ts.map +1 -0
  140. package/dist/utils/agentPromptDispatch.js +99 -0
  141. package/dist/utils/agentPromptDispatch.js.map +1 -0
  142. package/dist/utils/asciiArt.d.ts.map +1 -1
  143. package/dist/utils/asciiArt.js +6 -7
  144. package/dist/utils/asciiArt.js.map +1 -1
  145. package/dist/utils/attachAgent.d.ts +21 -0
  146. package/dist/utils/attachAgent.d.ts.map +1 -0
  147. package/dist/utils/attachAgent.js +128 -0
  148. package/dist/utils/attachAgent.js.map +1 -0
  149. package/dist/utils/conflictResolutionPane.d.ts +2 -1
  150. package/dist/utils/conflictResolutionPane.d.ts.map +1 -1
  151. package/dist/utils/conflictResolutionPane.js +48 -53
  152. package/dist/utils/conflictResolutionPane.js.map +1 -1
  153. package/dist/utils/devSource.d.ts +7 -0
  154. package/dist/utils/devSource.d.ts.map +1 -0
  155. package/dist/utils/devSource.js +19 -0
  156. package/dist/utils/devSource.js.map +1 -0
  157. package/dist/utils/devWatchCommand.d.ts +8 -0
  158. package/dist/utils/devWatchCommand.d.ts.map +1 -0
  159. package/dist/utils/devWatchCommand.js +14 -0
  160. package/dist/utils/devWatchCommand.js.map +1 -0
  161. package/dist/utils/geminiTrust.d.ts +8 -0
  162. package/dist/utils/geminiTrust.d.ts.map +1 -0
  163. package/dist/utils/geminiTrust.js +67 -0
  164. package/dist/utils/geminiTrust.js.map +1 -0
  165. package/dist/utils/generated-agents-doc.d.ts +1 -1
  166. package/dist/utils/generated-agents-doc.js +3 -3
  167. package/dist/utils/hooksDocs.d.ts +2 -9
  168. package/dist/utils/hooksDocs.d.ts.map +1 -1
  169. package/dist/utils/hooksDocs.js +26 -6
  170. package/dist/utils/hooksDocs.js.map +1 -1
  171. package/dist/utils/paneCreation.d.ts +8 -2
  172. package/dist/utils/paneCreation.d.ts.map +1 -1
  173. package/dist/utils/paneCreation.js +82 -105
  174. package/dist/utils/paneCreation.js.map +1 -1
  175. package/dist/utils/paneGrouping.d.ts.map +1 -1
  176. package/dist/utils/paneGrouping.js +30 -0
  177. package/dist/utils/paneGrouping.js.map +1 -1
  178. package/dist/utils/projectActions.d.ts +5 -0
  179. package/dist/utils/projectActions.d.ts.map +1 -1
  180. package/dist/utils/projectActions.js +15 -4
  181. package/dist/utils/projectActions.js.map +1 -1
  182. package/dist/utils/reopenWorktree.d.ts +1 -1
  183. package/dist/utils/reopenWorktree.d.ts.map +1 -1
  184. package/dist/utils/reopenWorktree.js +23 -31
  185. package/dist/utils/reopenWorktree.js.map +1 -1
  186. package/dist/utils/runtimePaths.d.ts +2 -0
  187. package/dist/utils/runtimePaths.d.ts.map +1 -0
  188. package/dist/utils/runtimePaths.js +8 -0
  189. package/dist/utils/runtimePaths.js.map +1 -0
  190. package/dist/utils/settingsManager.d.ts.map +1 -1
  191. package/dist/utils/settingsManager.js +38 -5
  192. package/dist/utils/settingsManager.js.map +1 -1
  193. package/dist/utils/systemCheck.d.ts.map +1 -1
  194. package/dist/utils/systemCheck.js +0 -13
  195. package/dist/utils/systemCheck.js.map +1 -1
  196. package/dist/utils/welcomePane.d.ts +2 -1
  197. package/dist/utils/welcomePane.d.ts.map +1 -1
  198. package/dist/utils/welcomePane.js +3 -2
  199. package/dist/utils/welcomePane.js.map +1 -1
  200. package/dist/utils/welcomePaneManager.js +1 -1
  201. package/dist/utils/welcomePaneManager.js.map +1 -1
  202. package/dist/workers/PaneWorker.js.map +1 -1
  203. package/dist/workers/WorkerMessages.d.ts +2 -1
  204. package/dist/workers/WorkerMessages.d.ts.map +1 -1
  205. package/dist/workers/WorkerMessages.js.map +1 -1
  206. package/package.json +11 -6
@@ -0,0 +1,99 @@
1
+ const DEFAULT_STARTUP_TIMEOUT_MS = 5000;
2
+ const DEFAULT_POLL_INTERVAL_MS = 75;
3
+ // Common shell process names reported by tmux for inactive panes.
4
+ const SHELL_PROCESS_NAMES = new Set([
5
+ 'bash',
6
+ 'zsh',
7
+ 'sh',
8
+ 'fish',
9
+ 'dash',
10
+ 'ksh',
11
+ 'tcsh',
12
+ ]);
13
+ function sleep(ms) {
14
+ return new Promise((resolve) => setTimeout(resolve, ms));
15
+ }
16
+ /**
17
+ * Wait for a pane to hand off from the shell to a foreground command.
18
+ *
19
+ * This avoids output-content heuristics and uses tmux process metadata.
20
+ * If we time out, callers may still send input because the PTY typically buffers it.
21
+ */
22
+ export async function waitForForegroundCommand(options) {
23
+ const { paneId, tmuxService, expectedCommand, baselineCommand, timeoutMs = DEFAULT_STARTUP_TIMEOUT_MS, pollIntervalMs = DEFAULT_POLL_INTERVAL_MS, } = options;
24
+ const deadline = Date.now() + timeoutMs;
25
+ while (Date.now() < deadline) {
26
+ let currentCommand = '';
27
+ try {
28
+ currentCommand = await tmuxService.getPaneCurrentCommand(paneId);
29
+ }
30
+ catch {
31
+ await sleep(pollIntervalMs);
32
+ continue;
33
+ }
34
+ if (!currentCommand) {
35
+ await sleep(pollIntervalMs);
36
+ continue;
37
+ }
38
+ if (expectedCommand && currentCommand === expectedCommand) {
39
+ return;
40
+ }
41
+ if (baselineCommand && currentCommand !== baselineCommand) {
42
+ return;
43
+ }
44
+ if (!expectedCommand && !baselineCommand && !SHELL_PROCESS_NAMES.has(currentCommand)) {
45
+ return;
46
+ }
47
+ await sleep(pollIntervalMs);
48
+ }
49
+ }
50
+ /**
51
+ * Send a full prompt payload to an already-starting interactive agent via tmux paste buffer.
52
+ */
53
+ export async function sendPromptViaTmux(options) {
54
+ const { paneId, prompt, tmuxService, expectedCommand, baselineCommand, prePromptKeys = [], submitKeys = ['Enter'], postPasteDelayMs = 0, readyDelayMs = 0, } = options;
55
+ try {
56
+ await waitForForegroundCommand({
57
+ paneId,
58
+ tmuxService,
59
+ expectedCommand,
60
+ baselineCommand,
61
+ });
62
+ }
63
+ catch {
64
+ // Fall through - PTY input buffering still makes this safe in practice.
65
+ }
66
+ if (readyDelayMs > 0) {
67
+ await sleep(readyDelayMs);
68
+ }
69
+ const bufferName = `dmux-prompt-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
70
+ const interKeyDelayMs = 120;
71
+ const interSubmitDelayMs = 60;
72
+ try {
73
+ for (const prePromptKey of prePromptKeys) {
74
+ await tmuxService.sendTmuxKeys(paneId, prePromptKey);
75
+ await sleep(interKeyDelayMs);
76
+ }
77
+ await tmuxService.setBuffer(bufferName, prompt);
78
+ await tmuxService.pasteBuffer(bufferName, paneId);
79
+ if (postPasteDelayMs > 0) {
80
+ await sleep(postPasteDelayMs);
81
+ }
82
+ for (let i = 0; i < submitKeys.length; i += 1) {
83
+ const submitKey = submitKeys[i];
84
+ await tmuxService.sendTmuxKeys(paneId, submitKey);
85
+ if (i < submitKeys.length - 1) {
86
+ await sleep(interSubmitDelayMs);
87
+ }
88
+ }
89
+ }
90
+ finally {
91
+ try {
92
+ await tmuxService.deleteBuffer(bufferName);
93
+ }
94
+ catch {
95
+ // Ignore cleanup failures for ephemeral buffers.
96
+ }
97
+ }
98
+ }
99
+ //# sourceMappingURL=agentPromptDispatch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agentPromptDispatch.js","sourceRoot":"","sources":["../../src/utils/agentPromptDispatch.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"asciiArt.d.ts","sourceRoot":"","sources":["../../src/utils/asciiArt.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAA;IACd,GAAG,EAAE,MAAM,EAAE,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,kBAAkB,CAAC,EAAE,OAAO,CAAA;CAC7B;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,IAAI,CAAC,CAiDf;AAED;;GAEG;AACH,eAAO,MAAM,SAAS;;CAiBrB,CAAA"}
1
+ {"version":3,"file":"asciiArt.d.ts","sourceRoot":"","sources":["../../src/utils/asciiArt.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAA;IACd,GAAG,EAAE,MAAM,EAAE,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,kBAAkB,CAAC,EAAE,OAAO,CAAA;CAC7B;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,IAAI,CAAC,CA2Cf;AAED;;GAEG;AACH,eAAO,MAAM,SAAS;;CAiBrB,CAAA"}
@@ -1,5 +1,9 @@
1
1
  import { TmuxService } from "../services/TmuxService.js";
2
2
  import { ASCII_ART_RENDER_DELAY } from "../constants/timing.js";
3
+ import fs from "fs";
4
+ import path from "path";
5
+ import { fileURLToPath } from "url";
6
+ import { resolveDistPath } from "./runtimePaths.js";
3
7
  /**
4
8
  * Render ASCII art centered in a tmux pane with fill characters
5
9
  * Uses a persistent node script that re-renders on resize
@@ -14,16 +18,11 @@ import { ASCII_ART_RENDER_DELAY } from "../constants/timing.js";
14
18
  export async function renderAsciiArt(options) {
15
19
  const { paneId } = options;
16
20
  const tmuxService = TmuxService.getInstance();
17
- // Find the decorative pane script - check both dist and src directories
18
- const path = await import("path");
19
- const { fileURLToPath } = await import("url");
20
- const fs = await import("fs");
21
21
  const __dirname = path.dirname(fileURLToPath(import.meta.url));
22
- // Try multiple possible locations
22
+ // Prefer package dist path first to keep runtime behavior aligned.
23
23
  const possiblePaths = [
24
+ resolveDistPath("panes", "decorative-pane.js"),
24
25
  path.join(__dirname, "..", "panes", "decorative-pane.js"),
25
- path.join(__dirname, "..", "..", "dist", "panes", "decorative-pane.js"),
26
- path.join(process.cwd(), "dist", "panes", "decorative-pane.js"),
27
26
  ];
28
27
  let scriptPath = possiblePaths[0]; // Default
29
28
  for (const p of possiblePaths) {
@@ -1 +1 @@
1
- {"version":3,"file":"asciiArt.js","sourceRoot":"","sources":["../../src/utils/asciiArt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAA;AAU/D;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,OAA8B;IAE9B,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAA;IAC1B,MAAM,WAAW,GAAG,WAAW,CAAC,WAAW,EAAE,CAAA;IAE7C,wEAAwE;IACxE,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,CAAA;IACjC,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,CAAA;IAC7C,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,CAAA;IAE7B,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;IAE9D,kCAAkC;IAClC,MAAM,aAAa,GAAG;QACpB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,oBAAoB,CAAC;QACzD,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,oBAAoB,CAAC;QACvE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,oBAAoB,CAAC;KAChE,CAAA;IAED,IAAI,UAAU,GAAG,aAAa,CAAC,CAAC,CAAC,CAAA,CAAC,UAAU;IAC5C,KAAK,MAAM,CAAC,IAAI,aAAa,EAAE,CAAC;QAC9B,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;YACrB,UAAU,GAAG,CAAC,CAAA;YACd,MAAK;QACP,CAAC;IACH,CAAC;IAED,2BAA2B;IAC3B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CACb,uCAAuC,UAAU,YAAY,aAAa,CAAC,IAAI,CAC7E,IAAI,CACL,EAAE,CACJ,CAAA;IACH,CAAC;IAED,wCAAwC;IACxC,IAAI,CAAC;QACH,MAAM,WAAW,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;IAC3C,CAAC;IAAC,MAAM,CAAC;QACP,qDAAqD;IACvD,CAAC;IACD,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,sBAAsB,CAAC,CAAC,CAAA;IAE3E,oDAAoD;IACpD,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;QAC9C,CAAC,CAAC,UAAU;QACZ,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;IAC5B,MAAM,WAAW,CAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,YAAY,UAAU,CAAC,CAAA;IACpE,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAA;AAC1D,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,WAAW,EAAE;;;;;;;;;;;;;;;GAeZ;CACF,CAAA"}
1
+ {"version":3,"file":"asciiArt.js","sourceRoot":"","sources":["../../src/utils/asciiArt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAA;AAC/D,OAAO,EAAE,MAAM,IAAI,CAAA;AACnB,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAA;AACnC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAUnD;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,OAA8B;IAE9B,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAA;IAC1B,MAAM,WAAW,GAAG,WAAW,CAAC,WAAW,EAAE,CAAA;IAE7C,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;IAE9D,mEAAmE;IACnE,MAAM,aAAa,GAAG;QACpB,eAAe,CAAC,OAAO,EAAE,oBAAoB,CAAC;QAC9C,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,oBAAoB,CAAC;KAC1D,CAAA;IAED,IAAI,UAAU,GAAG,aAAa,CAAC,CAAC,CAAC,CAAA,CAAC,UAAU;IAC5C,KAAK,MAAM,CAAC,IAAI,aAAa,EAAE,CAAC;QAC9B,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;YACrB,UAAU,GAAG,CAAC,CAAA;YACd,MAAK;QACP,CAAC;IACH,CAAC;IAED,2BAA2B;IAC3B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CACb,uCAAuC,UAAU,YAAY,aAAa,CAAC,IAAI,CAC7E,IAAI,CACL,EAAE,CACJ,CAAA;IACH,CAAC;IAED,wCAAwC;IACxC,IAAI,CAAC;QACH,MAAM,WAAW,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;IAC3C,CAAC;IAAC,MAAM,CAAC;QACP,qDAAqD;IACvD,CAAC;IACD,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,sBAAsB,CAAC,CAAC,CAAA;IAE3E,oDAAoD;IACpD,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;QAC9C,CAAC,CAAC,UAAU;QACZ,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;IAC5B,MAAM,WAAW,CAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,YAAY,UAAU,CAAC,CAAA;IACpE,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAA;AAC1D,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,WAAW,EAAE;;;;;;;;;;;;;;;GAeZ;CACF,CAAA"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Attach a second (or Nth) agent to an existing worktree pane.
3
+ *
4
+ * Creates a new tmux pane that `cd`s into the same worktree directory,
5
+ * launches the chosen agent, and returns a sibling DmuxPane that shares
6
+ * the same worktreePath/branchName/projectRoot.
7
+ */
8
+ import type { DmuxPane } from '../types.js';
9
+ import type { AgentName } from './agentLaunch.js';
10
+ export interface AttachAgentOptions {
11
+ targetPane: DmuxPane;
12
+ prompt: string;
13
+ agent: AgentName;
14
+ existingPanes: DmuxPane[];
15
+ sessionProjectRoot: string;
16
+ sessionConfigPath: string;
17
+ }
18
+ export declare function attachAgentToWorktree(options: AttachAgentOptions): Promise<{
19
+ pane: DmuxPane;
20
+ }>;
21
+ //# sourceMappingURL=attachAgent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attachAgent.d.ts","sourceRoot":"","sources":["../../src/utils/attachAgent.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EAAE,QAAQ,EAAc,MAAM,aAAa,CAAC;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAUlD,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,QAAQ,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,SAAS,CAAC;IACjB,aAAa,EAAE,QAAQ,EAAE,CAAC;IAC1B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAcD,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC,CAgI7B"}
@@ -0,0 +1,128 @@
1
+ /**
2
+ * Attach a second (or Nth) agent to an existing worktree pane.
3
+ *
4
+ * Creates a new tmux pane that `cd`s into the same worktree directory,
5
+ * launches the chosen agent, and returns a sibling DmuxPane that shares
6
+ * the same worktreePath/branchName/projectRoot.
7
+ */
8
+ import * as fs from 'fs';
9
+ import path from 'path';
10
+ import { launchAgentInPane } from './agentLaunch.js';
11
+ import { autoApproveTrustPrompt } from './paneCreation.js';
12
+ import { TmuxService } from '../services/TmuxService.js';
13
+ import { splitPane, getTerminalDimensions } from './tmux.js';
14
+ import { recalculateAndApplyLayout } from './layoutManager.js';
15
+ import { buildWorktreePaneTitle } from './paneTitle.js';
16
+ import { SettingsManager } from './settingsManager.js';
17
+ import { LogService } from '../services/LogService.js';
18
+ /**
19
+ * Generate a unique sibling slug like `fix-auth-a2`, `fix-auth-a3`, etc.
20
+ */
21
+ function generateSiblingSlug(baseSlug, existingPanes) {
22
+ const existingSlugs = new Set(existingPanes.map(p => p.slug));
23
+ let n = 2;
24
+ while (existingSlugs.has(`${baseSlug}-a${n}`)) {
25
+ n++;
26
+ }
27
+ return `${baseSlug}-a${n}`;
28
+ }
29
+ export async function attachAgentToWorktree(options) {
30
+ const { targetPane, prompt, agent, existingPanes, sessionProjectRoot, sessionConfigPath, } = options;
31
+ if (!targetPane.worktreePath) {
32
+ throw new Error('Target pane has no worktree to attach to');
33
+ }
34
+ const projectRoot = targetPane.projectRoot || sessionProjectRoot;
35
+ const settingsManager = new SettingsManager(projectRoot);
36
+ const settings = settingsManager.getSettings();
37
+ // Generate a unique slug for this sibling
38
+ const slug = generateSiblingSlug(targetPane.slug, existingPanes);
39
+ const tmuxService = TmuxService.getInstance();
40
+ const originalPaneId = tmuxService.getCurrentPaneIdSync();
41
+ // Load config to get control pane info
42
+ let controlPaneId;
43
+ try {
44
+ const configContent = fs.readFileSync(sessionConfigPath, 'utf-8');
45
+ const config = JSON.parse(configContent);
46
+ controlPaneId = config.controlPaneId;
47
+ }
48
+ catch {
49
+ controlPaneId = originalPaneId;
50
+ }
51
+ // Split from the last existing pane (standard grid placement)
52
+ const dmuxPaneIds = existingPanes.map(p => p.paneId);
53
+ const splitTarget = dmuxPaneIds[dmuxPaneIds.length - 1];
54
+ const paneInfo = splitPane({ targetPane: splitTarget, cwd: projectRoot });
55
+ // Wait for pane to be ready
56
+ const start = Date.now();
57
+ while ((Date.now() - start) < 600) {
58
+ if (await tmuxService.paneExists(paneInfo))
59
+ break;
60
+ await new Promise(r => setTimeout(r, 30));
61
+ }
62
+ // Set pane title
63
+ try {
64
+ const paneProjectName = targetPane.projectName || path.basename(projectRoot);
65
+ const paneTitle = projectRoot === sessionProjectRoot
66
+ ? slug
67
+ : buildWorktreePaneTitle(slug, projectRoot, paneProjectName);
68
+ await tmuxService.setPaneTitle(paneInfo, paneTitle);
69
+ }
70
+ catch {
71
+ // Ignore title errors
72
+ }
73
+ // Recalculate layout
74
+ if (controlPaneId) {
75
+ const dimensions = getTerminalDimensions();
76
+ const allContentPaneIds = [...existingPanes.map(p => p.paneId), paneInfo];
77
+ await recalculateAndApplyLayout(controlPaneId, allContentPaneIds, dimensions.width, dimensions.height);
78
+ await tmuxService.refreshClient();
79
+ }
80
+ // cd into the existing worktree (no git worktree add)
81
+ const cdCmd = `cd "${targetPane.worktreePath}"`;
82
+ await tmuxService.sendShellCommand(paneInfo, cdCmd);
83
+ await tmuxService.sendTmuxKeys(paneInfo, 'Enter');
84
+ // Small delay for cd to complete
85
+ await new Promise(r => setTimeout(r, 300));
86
+ // Launch the agent
87
+ await launchAgentInPane({
88
+ paneId: paneInfo,
89
+ agent,
90
+ prompt,
91
+ slug,
92
+ projectRoot,
93
+ permissionMode: settings.permissionMode,
94
+ });
95
+ // Auto-approve trust prompts for Claude
96
+ if (agent === 'claude') {
97
+ autoApproveTrustPrompt(paneInfo, prompt).catch(() => {
98
+ // Ignore errors in background monitoring
99
+ });
100
+ }
101
+ // Keep focus on the new pane
102
+ await tmuxService.selectPane(paneInfo);
103
+ // Build the sibling pane object — shares worktree/branch with target
104
+ const newPane = {
105
+ id: `dmux-${Date.now()}`,
106
+ slug,
107
+ branchName: targetPane.branchName,
108
+ prompt: prompt || 'No initial prompt',
109
+ paneId: paneInfo,
110
+ projectRoot,
111
+ projectName: targetPane.projectName,
112
+ worktreePath: targetPane.worktreePath,
113
+ agent,
114
+ autopilot: settings.enableAutopilotByDefault ?? false,
115
+ };
116
+ // Switch focus back to control pane
117
+ await tmuxService.selectPane(originalPaneId);
118
+ // Re-set the dmux sidebar title
119
+ try {
120
+ await tmuxService.setPaneTitle(originalPaneId, "dmux");
121
+ }
122
+ catch {
123
+ // Ignore title errors
124
+ }
125
+ LogService.getInstance().info(`Attached ${agent} to worktree ${targetPane.worktreePath} as ${slug}`, 'attachAgent');
126
+ return { pane: newPane };
127
+ }
128
+ //# sourceMappingURL=attachAgent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attachAgent.js","sourceRoot":"","sources":["../../src/utils/attachAgent.ts"],"names":[],"mappings":"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"}
@@ -4,11 +4,12 @@
4
4
  * Utilities for creating a new pane specifically for AI-assisted merge conflict resolution
5
5
  */
6
6
  import type { DmuxPane } from '../types.js';
7
+ import { type AgentName } from './agentLaunch.js';
7
8
  export interface ConflictResolutionPaneOptions {
8
9
  sourceBranch: string;
9
10
  targetBranch: string;
10
11
  targetRepoPath: string;
11
- agent: 'claude' | 'opencode' | 'codex';
12
+ agent: AgentName;
12
13
  projectName: string;
13
14
  existingPanes: DmuxPane[];
14
15
  }
@@ -1 +1 @@
1
- {"version":3,"file":"conflictResolutionPane.d.ts","sourceRoot":"","sources":["../../src/utils/conflictResolutionPane.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAa5C,MAAM,WAAW,6BAA6B;IAC5C,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,QAAQ,GAAG,UAAU,GAAG,OAAO,CAAC;IACvC,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,QAAQ,EAAE,CAAC;CAC3B;AAED;;GAEG;AACH,wBAAsB,4BAA4B,CAChD,OAAO,EAAE,6BAA6B,GACrC,OAAO,CAAC,QAAQ,CAAC,CA2KnB"}
1
+ {"version":3,"file":"conflictResolutionPane.d.ts","sourceRoot":"","sources":["../../src/utils/conflictResolutionPane.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAY5C,OAAO,EASL,KAAK,SAAS,EACf,MAAM,kBAAkB,CAAC;AAG1B,MAAM,WAAW,6BAA6B;IAC5C,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,SAAS,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,QAAQ,EAAE,CAAC;CAC3B;AAED;;GAEG;AACH,wBAAsB,4BAA4B,CAChD,OAAO,EAAE,6BAA6B,GACrC,OAAO,CAAC,QAAQ,CAAC,CAiLnB"}
@@ -9,7 +9,9 @@ import { capturePaneContent } from './paneCapture.js';
9
9
  import { SIDEBAR_WIDTH } from './layoutManager.js';
10
10
  import { TMUX_LAYOUT_APPLY_DELAY, TMUX_SPLIT_DELAY } from '../constants/timing.js';
11
11
  import { buildPromptReadAndDeleteSnippet, deletePromptFile, writePromptFile, } from './promptStore.js';
12
- import { getPermissionFlags } from './agentLaunch.js';
12
+ import { ensureGeminiFolderTrusted } from './geminiTrust.js';
13
+ import { buildAgentCommand, buildInitialPromptCommand, getAgentProcessName, getPromptTransport, getSendKeysPostPasteDelayMs, getSendKeysPrePrompt, getSendKeysReadyDelayMs, getSendKeysSubmit, } from './agentLaunch.js';
14
+ import { sendPromptViaTmux } from './agentPromptDispatch.js';
13
15
  /**
14
16
  * Create a pane for resolving merge conflicts with AI assistance
15
17
  */
@@ -79,45 +81,34 @@ export async function createConflictResolutionPane(options) {
79
81
  }
80
82
  // Construct the AI prompt for conflict resolution
81
83
  const prompt = `There are conflicts merging ${targetBranch} into ${sourceBranch}. Both are valid changes, so please keep both feature sets and merge them intelligently. Check git status to see the conflicting files, then resolve each conflict to preserve both sets of changes. Once all conflicts are resolved, commit the merge.`;
84
+ const shouldSendPromptViaTmux = getPromptTransport(agent) === 'send-keys';
82
85
  let promptFilePath = null;
83
- try {
84
- promptFilePath = await writePromptFile(targetRepoPath, slug, prompt);
85
- }
86
- catch {
87
- // Fall back to escaped inline flows if prompt file creation fails
86
+ if (!shouldSendPromptViaTmux) {
87
+ try {
88
+ promptFilePath = await writePromptFile(targetRepoPath, slug, prompt);
89
+ }
90
+ catch {
91
+ // Fall back to escaped inline flows if prompt file creation fails
92
+ }
88
93
  }
89
94
  // Launch agent with the conflict resolution prompt
90
- if (agent === 'claude') {
91
- const permissionFlags = getPermissionFlags('claude', settings.permissionMode);
92
- const permissionSuffix = permissionFlags ? ` ${permissionFlags}` : '';
93
- let claudeCmd;
94
- if (promptFilePath) {
95
- const promptBootstrap = buildPromptReadAndDeleteSnippet(promptFilePath);
96
- claudeCmd = `${promptBootstrap}; claude "$DMUX_PROMPT_CONTENT"${permissionSuffix}`;
97
- promptFilePath = null;
95
+ {
96
+ if (agent === 'gemini') {
97
+ ensureGeminiFolderTrusted(targetRepoPath);
98
98
  }
99
- else {
100
- const escapedPrompt = prompt
101
- .replace(/\\/g, '\\\\')
102
- .replace(/"/g, '\\"')
103
- .replace(/`/g, '\\`')
104
- .replace(/\$/g, '\\$');
105
- claudeCmd = `claude "${escapedPrompt}"${permissionSuffix}`;
99
+ let baselineCommand;
100
+ if (shouldSendPromptViaTmux) {
101
+ try {
102
+ baselineCommand = await tmuxService.getPaneCurrentCommand(paneInfo);
103
+ }
104
+ catch {
105
+ baselineCommand = undefined;
106
+ }
106
107
  }
107
- await tmuxService.sendShellCommand(paneInfo, claudeCmd);
108
- await tmuxService.sendTmuxKeys(paneInfo, 'Enter');
109
- // Auto-approve trust prompts for Claude (workspace trust, not edit permissions)
110
- autoApproveTrustPrompt(paneInfo).catch(() => {
111
- // Ignore errors in background monitoring
112
- });
113
- }
114
- else if (agent === 'codex') {
115
- const permissionFlags = getPermissionFlags('codex', settings.permissionMode);
116
- const permissionSuffix = permissionFlags ? ` ${permissionFlags}` : '';
117
- let codexCmd;
118
- if (promptFilePath) {
108
+ let launchCommand;
109
+ if (promptFilePath && !shouldSendPromptViaTmux) {
119
110
  const promptBootstrap = buildPromptReadAndDeleteSnippet(promptFilePath);
120
- codexCmd = `${promptBootstrap}; codex "$DMUX_PROMPT_CONTENT"${permissionSuffix}`;
111
+ launchCommand = `${promptBootstrap}; ${buildInitialPromptCommand(agent, '"$DMUX_PROMPT_CONTENT"', settings.permissionMode)}`;
121
112
  promptFilePath = null;
122
113
  }
123
114
  else {
@@ -126,28 +117,32 @@ export async function createConflictResolutionPane(options) {
126
117
  .replace(/"/g, '\\"')
127
118
  .replace(/`/g, '\\`')
128
119
  .replace(/\$/g, '\\$');
129
- codexCmd = `codex "${escapedPrompt}"${permissionSuffix}`;
120
+ launchCommand = buildInitialPromptCommand(agent, `"${escapedPrompt}"`, settings.permissionMode);
130
121
  }
131
- await tmuxService.sendShellCommand(paneInfo, codexCmd);
122
+ if (!launchCommand) {
123
+ launchCommand = buildAgentCommand(agent, settings.permissionMode);
124
+ }
125
+ await tmuxService.sendShellCommand(paneInfo, launchCommand);
132
126
  await tmuxService.sendTmuxKeys(paneInfo, 'Enter');
133
- }
134
- else if (agent === 'opencode') {
135
- let opencodeCmd;
136
- if (promptFilePath) {
137
- const promptBootstrap = buildPromptReadAndDeleteSnippet(promptFilePath);
138
- opencodeCmd = `${promptBootstrap}; opencode --prompt "$DMUX_PROMPT_CONTENT"`;
139
- promptFilePath = null;
127
+ if (shouldSendPromptViaTmux) {
128
+ await sendPromptViaTmux({
129
+ paneId: paneInfo,
130
+ prompt,
131
+ tmuxService,
132
+ expectedCommand: getAgentProcessName(agent),
133
+ baselineCommand,
134
+ prePromptKeys: getSendKeysPrePrompt(agent),
135
+ submitKeys: getSendKeysSubmit(agent),
136
+ postPasteDelayMs: getSendKeysPostPasteDelayMs(agent),
137
+ readyDelayMs: getSendKeysReadyDelayMs(agent),
138
+ });
140
139
  }
141
- else {
142
- const escapedPrompt = prompt
143
- .replace(/\\/g, '\\\\')
144
- .replace(/"/g, '\\"')
145
- .replace(/`/g, '\\`')
146
- .replace(/\$/g, '\\$');
147
- opencodeCmd = `opencode --prompt "${escapedPrompt}"`;
140
+ if (agent === 'claude') {
141
+ // Auto-approve trust prompts for Claude (workspace trust, not edit permissions)
142
+ autoApproveTrustPrompt(paneInfo).catch(() => {
143
+ // Ignore errors in background monitoring
144
+ });
148
145
  }
149
- await tmuxService.sendShellCommand(paneInfo, opencodeCmd);
150
- await tmuxService.sendTmuxKeys(paneInfo, 'Enter');
151
146
  }
152
147
  if (promptFilePath) {
153
148
  await deletePromptFile(promptFilePath);
@@ -167,7 +162,7 @@ export async function createConflictResolutionPane(options) {
167
162
  await tmuxService.selectPane(originalPaneId);
168
163
  // Re-set the title for the dmux pane
169
164
  try {
170
- await tmuxService.setPaneTitle(originalPaneId, `dmux-${projectName}`);
165
+ await tmuxService.setPaneTitle(originalPaneId, "dmux");
171
166
  }
172
167
  catch {
173
168
  // Ignore if setting title fails
@@ -1 +1 @@
1
- {"version":3,"file":"conflictResolutionPane.js","sourceRoot":"","sources":["../../src/utils/conflictResolutionPane.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"conflictResolutionPane.js","sourceRoot":"","sources":["../../src/utils/conflictResolutionPane.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export interface DevSourceResolution {
2
+ nextSourcePath: string;
3
+ toggledToRoot: boolean;
4
+ }
5
+ export declare function isActiveDevSourcePath(paneWorktreePath?: string, activeSourcePath?: string): boolean;
6
+ export declare function resolveNextDevSourcePath(paneWorktreePath: string, activeSourcePath: string, projectRoot: string): DevSourceResolution;
7
+ //# sourceMappingURL=devSource.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"devSource.d.ts","sourceRoot":"","sources":["../../src/utils/devSource.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,mBAAmB;IAClC,cAAc,EAAE,MAAM,CAAA;IACtB,aAAa,EAAE,OAAO,CAAA;CACvB;AAED,wBAAgB,qBAAqB,CACnC,gBAAgB,CAAC,EAAE,MAAM,EACzB,gBAAgB,CAAC,EAAE,MAAM,GACxB,OAAO,CAGT;AAED,wBAAgB,wBAAwB,CACtC,gBAAgB,EAAE,MAAM,EACxB,gBAAgB,EAAE,MAAM,EACxB,WAAW,EAAE,MAAM,GAClB,mBAAmB,CAYrB"}
@@ -0,0 +1,19 @@
1
+ import path from "path";
2
+ export function isActiveDevSourcePath(paneWorktreePath, activeSourcePath) {
3
+ if (!paneWorktreePath || !activeSourcePath)
4
+ return false;
5
+ return path.resolve(paneWorktreePath) === path.resolve(activeSourcePath);
6
+ }
7
+ export function resolveNextDevSourcePath(paneWorktreePath, activeSourcePath, projectRoot) {
8
+ if (isActiveDevSourcePath(paneWorktreePath, activeSourcePath)) {
9
+ return {
10
+ nextSourcePath: projectRoot,
11
+ toggledToRoot: true,
12
+ };
13
+ }
14
+ return {
15
+ nextSourcePath: paneWorktreePath,
16
+ toggledToRoot: false,
17
+ };
18
+ }
19
+ //# sourceMappingURL=devSource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"devSource.js","sourceRoot":"","sources":["../../src/utils/devSource.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAA;AAOvB,MAAM,UAAU,qBAAqB,CACnC,gBAAyB,EACzB,gBAAyB;IAEzB,IAAI,CAAC,gBAAgB,IAAI,CAAC,gBAAgB;QAAE,OAAO,KAAK,CAAA;IACxD,OAAO,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAA;AAC1E,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,gBAAwB,EACxB,gBAAwB,EACxB,WAAmB;IAEnB,IAAI,qBAAqB,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,EAAE,CAAC;QAC9D,OAAO;YACL,cAAc,EAAE,WAAW;YAC3B,aAAa,EAAE,IAAI;SACpB,CAAA;IACH,CAAC;IAED,OAAO;QACL,cAAc,EAAE,gBAAgB;QAChC,aAAa,EAAE,KAAK;KACrB,CAAA;AACH,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Build a shell-safe command for restarting dmux dev watch from a source path.
3
+ * For respawned tmux panes, we append an interactive shell so the pane stays open
4
+ * after dmux exits intentionally.
5
+ */
6
+ export declare function buildDevWatchCommand(sourcePath: string): string;
7
+ export declare function buildDevWatchRespawnCommand(sourcePath: string): string;
8
+ //# sourceMappingURL=devWatchCommand.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"devWatchCommand.d.ts","sourceRoot":"","sources":["../../src/utils/devWatchCommand.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAG/D;AAED,wBAAgB,2BAA2B,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAEtE"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Build a shell-safe command for restarting dmux dev watch from a source path.
3
+ * For respawned tmux panes, we append an interactive shell so the pane stays open
4
+ * after dmux exits intentionally.
5
+ */
6
+ const escapeForDoubleQuotedShell = (value) => value.replace(/([\\$"`])/g, "\\$1");
7
+ export function buildDevWatchCommand(sourcePath) {
8
+ const escapedPath = escapeForDoubleQuotedShell(sourcePath);
9
+ return `cd "${escapedPath}" && pnpm dev:watch`;
10
+ }
11
+ export function buildDevWatchRespawnCommand(sourcePath) {
12
+ return `${buildDevWatchCommand(sourcePath)}; exec "\${SHELL:-/bin/zsh}" -l`;
13
+ }
14
+ //# sourceMappingURL=devWatchCommand.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"devWatchCommand.js","sourceRoot":"","sources":["../../src/utils/devWatchCommand.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,0BAA0B,GAAG,CAAC,KAAa,EAAU,EAAE,CAC3D,KAAK,CAAC,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;AAEtC,MAAM,UAAU,oBAAoB,CAAC,UAAkB;IACrD,MAAM,WAAW,GAAG,0BAA0B,CAAC,UAAU,CAAC,CAAC;IAC3D,OAAO,OAAO,WAAW,qBAAqB,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,UAAkB;IAC5D,OAAO,GAAG,oBAAoB,CAAC,UAAU,CAAC,iCAAiC,CAAC;AAC9E,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Ensure Gemini treats the given workspace path as trusted.
3
+ *
4
+ * Gemini blocks interactive startup prompts in untrusted folders, which
5
+ * prevents dmux initial prompt bootstrap from running in fresh worktrees.
6
+ */
7
+ export declare function ensureGeminiFolderTrusted(workspacePath: string): void;
8
+ //# sourceMappingURL=geminiTrust.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"geminiTrust.d.ts","sourceRoot":"","sources":["../../src/utils/geminiTrust.ts"],"names":[],"mappings":"AAgDA;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAwBrE"}