dmux 5.2.0 → 5.4.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 (240) hide show
  1. package/README.md +9 -5
  2. package/dist/DmuxApp.d.ts.map +1 -1
  3. package/dist/DmuxApp.js +100 -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 +84 -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 +18 -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 +5 -2
  32. package/dist/actions/types.d.ts.map +1 -1
  33. package/dist/actions/types.js +28 -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 +90 -56
  49. package/dist/components/popups/agentChoicePopup.js.map +1 -1
  50. package/dist/components/popups/agentChoiceSelection.d.ts +8 -0
  51. package/dist/components/popups/agentChoiceSelection.d.ts.map +1 -0
  52. package/dist/components/popups/agentChoiceSelection.js +14 -0
  53. package/dist/components/popups/agentChoiceSelection.js.map +1 -0
  54. package/dist/components/popups/diffPeekPopup.d.ts +7 -0
  55. package/dist/components/popups/diffPeekPopup.d.ts.map +1 -0
  56. package/dist/components/popups/diffPeekPopup.js +99 -0
  57. package/dist/components/popups/diffPeekPopup.js.map +1 -0
  58. package/dist/components/popups/enabledAgentsPopup.d.ts +7 -0
  59. package/dist/components/popups/enabledAgentsPopup.d.ts.map +1 -0
  60. package/dist/components/popups/enabledAgentsPopup.js +196 -0
  61. package/dist/components/popups/enabledAgentsPopup.js.map +1 -0
  62. package/dist/components/popups/kebabMenuPopup.js +2 -2
  63. package/dist/components/popups/kebabMenuPopup.js.map +1 -1
  64. package/dist/components/popups/mergeUncommittedChoicePopup.d.ts +7 -0
  65. package/dist/components/popups/mergeUncommittedChoicePopup.d.ts.map +1 -0
  66. package/dist/components/popups/mergeUncommittedChoicePopup.js +289 -0
  67. package/dist/components/popups/mergeUncommittedChoicePopup.js.map +1 -0
  68. package/dist/components/popups/newPanePopup.js +8 -0
  69. package/dist/components/popups/newPanePopup.js.map +1 -1
  70. package/dist/components/popups/reopenWorktreePopup.js +33 -3
  71. package/dist/components/popups/reopenWorktreePopup.js.map +1 -1
  72. package/dist/components/popups/settingsPopup.js +346 -25
  73. package/dist/components/popups/settingsPopup.js.map +1 -1
  74. package/dist/components/popups/shortcutsPopup.js +17 -13
  75. package/dist/components/popups/shortcutsPopup.js.map +1 -1
  76. package/dist/components/popups/singleAgentChoicePopup.d.ts +7 -0
  77. package/dist/components/popups/singleAgentChoicePopup.d.ts.map +1 -0
  78. package/dist/components/popups/singleAgentChoicePopup.js +95 -0
  79. package/dist/components/popups/singleAgentChoicePopup.js.map +1 -0
  80. package/dist/components/ui/FooterHelp.js +1 -1
  81. package/dist/components/ui/FooterHelp.js.map +1 -1
  82. package/dist/constants/layout.d.ts +9 -0
  83. package/dist/constants/layout.d.ts.map +1 -0
  84. package/dist/constants/layout.js +9 -0
  85. package/dist/constants/layout.js.map +1 -0
  86. package/dist/hooks/useActionSystem.d.ts +1 -1
  87. package/dist/hooks/useActionSystem.d.ts.map +1 -1
  88. package/dist/hooks/useActionSystem.js +1 -1
  89. package/dist/hooks/useActionSystem.js.map +1 -1
  90. package/dist/hooks/useAgentDetection.d.ts +2 -2
  91. package/dist/hooks/useAgentDetection.d.ts.map +1 -1
  92. package/dist/hooks/useAgentDetection.js +18 -88
  93. package/dist/hooks/useAgentDetection.js.map +1 -1
  94. package/dist/hooks/useAutoUpdater.d.ts.map +1 -1
  95. package/dist/hooks/useAutoUpdater.js +2 -4
  96. package/dist/hooks/useAutoUpdater.js.map +1 -1
  97. package/dist/hooks/useInputHandling.d.ts +5 -0
  98. package/dist/hooks/useInputHandling.d.ts.map +1 -1
  99. package/dist/hooks/useInputHandling.js +230 -22
  100. package/dist/hooks/useInputHandling.js.map +1 -1
  101. package/dist/hooks/useNavigation.d.ts +1 -1
  102. package/dist/hooks/useNavigation.d.ts.map +1 -1
  103. package/dist/hooks/useNavigation.js +26 -4
  104. package/dist/hooks/useNavigation.js.map +1 -1
  105. package/dist/hooks/usePaneCreation.d.ts +5 -2
  106. package/dist/hooks/usePaneCreation.d.ts.map +1 -1
  107. package/dist/hooks/usePaneCreation.js +123 -23
  108. package/dist/hooks/usePaneCreation.js.map +1 -1
  109. package/dist/hooks/usePaneSync.d.ts +1 -1
  110. package/dist/hooks/usePaneSync.d.ts.map +1 -1
  111. package/dist/hooks/usePaneSync.js +14 -1
  112. package/dist/hooks/usePaneSync.js.map +1 -1
  113. package/dist/hooks/usePanes.d.ts.map +1 -1
  114. package/dist/hooks/usePanes.js +19 -5
  115. package/dist/hooks/usePanes.js.map +1 -1
  116. package/dist/hooks/useServices.d.ts +2 -1
  117. package/dist/hooks/useServices.d.ts.map +1 -1
  118. package/dist/hooks/useServices.js +4 -2
  119. package/dist/hooks/useServices.js.map +1 -1
  120. package/dist/index.js +200 -21
  121. package/dist/index.js.map +1 -1
  122. package/dist/layout/LayoutCalculator.d.ts.map +1 -1
  123. package/dist/layout/LayoutCalculator.js +4 -1
  124. package/dist/layout/LayoutCalculator.js.map +1 -1
  125. package/dist/layout/SpacerManager.d.ts.map +1 -1
  126. package/dist/layout/SpacerManager.js +2 -1
  127. package/dist/layout/SpacerManager.js.map +1 -1
  128. package/dist/services/PaneEventService.d.ts.map +1 -1
  129. package/dist/services/PaneEventService.js +2 -5
  130. package/dist/services/PaneEventService.js.map +1 -1
  131. package/dist/services/PaneWorkerManager.d.ts.map +1 -1
  132. package/dist/services/PaneWorkerManager.js +2 -14
  133. package/dist/services/PaneWorkerManager.js.map +1 -1
  134. package/dist/services/PopupManager.d.ts +14 -2
  135. package/dist/services/PopupManager.d.ts.map +1 -1
  136. package/dist/services/PopupManager.js +162 -24
  137. package/dist/services/PopupManager.js.map +1 -1
  138. package/dist/services/TmuxHookManager.d.ts.map +1 -1
  139. package/dist/services/TmuxHookManager.js +4 -2
  140. package/dist/services/TmuxHookManager.js.map +1 -1
  141. package/dist/services/TmuxService.d.ts +9 -0
  142. package/dist/services/TmuxService.d.ts.map +1 -1
  143. package/dist/services/TmuxService.js +18 -2
  144. package/dist/services/TmuxService.js.map +1 -1
  145. package/dist/types.d.ts +11 -3
  146. package/dist/types.d.ts.map +1 -1
  147. package/dist/utils/agentDetection.d.ts +15 -8
  148. package/dist/utils/agentDetection.d.ts.map +1 -1
  149. package/dist/utils/agentDetection.js +49 -73
  150. package/dist/utils/agentDetection.js.map +1 -1
  151. package/dist/utils/agentLaunch.d.ts +60 -2
  152. package/dist/utils/agentLaunch.d.ts.map +1 -1
  153. package/dist/utils/agentLaunch.js +490 -41
  154. package/dist/utils/agentLaunch.js.map +1 -1
  155. package/dist/utils/agentPromptDispatch.d.ts +33 -0
  156. package/dist/utils/agentPromptDispatch.d.ts.map +1 -0
  157. package/dist/utils/agentPromptDispatch.js +99 -0
  158. package/dist/utils/agentPromptDispatch.js.map +1 -0
  159. package/dist/utils/asciiArt.d.ts.map +1 -1
  160. package/dist/utils/asciiArt.js +6 -7
  161. package/dist/utils/asciiArt.js.map +1 -1
  162. package/dist/utils/attachAgent.d.ts +25 -0
  163. package/dist/utils/attachAgent.d.ts.map +1 -0
  164. package/dist/utils/attachAgent.js +139 -0
  165. package/dist/utils/attachAgent.js.map +1 -0
  166. package/dist/utils/conflictResolutionPane.d.ts +2 -1
  167. package/dist/utils/conflictResolutionPane.d.ts.map +1 -1
  168. package/dist/utils/conflictResolutionPane.js +48 -53
  169. package/dist/utils/conflictResolutionPane.js.map +1 -1
  170. package/dist/utils/controlPaneRecovery.d.ts +2 -0
  171. package/dist/utils/controlPaneRecovery.d.ts.map +1 -0
  172. package/dist/utils/controlPaneRecovery.js +156 -0
  173. package/dist/utils/controlPaneRecovery.js.map +1 -0
  174. package/dist/utils/devSource.d.ts +7 -0
  175. package/dist/utils/devSource.d.ts.map +1 -0
  176. package/dist/utils/devSource.js +19 -0
  177. package/dist/utils/devSource.js.map +1 -0
  178. package/dist/utils/devWatchCommand.d.ts +8 -0
  179. package/dist/utils/devWatchCommand.d.ts.map +1 -0
  180. package/dist/utils/devWatchCommand.js +14 -0
  181. package/dist/utils/devWatchCommand.js.map +1 -0
  182. package/dist/utils/geminiTrust.d.ts +8 -0
  183. package/dist/utils/geminiTrust.d.ts.map +1 -0
  184. package/dist/utils/geminiTrust.js +67 -0
  185. package/dist/utils/geminiTrust.js.map +1 -0
  186. package/dist/utils/generated-agents-doc.d.ts +1 -1
  187. package/dist/utils/generated-agents-doc.js +3 -3
  188. package/dist/utils/hooksDocs.d.ts +2 -9
  189. package/dist/utils/hooksDocs.d.ts.map +1 -1
  190. package/dist/utils/hooksDocs.js +26 -6
  191. package/dist/utils/hooksDocs.js.map +1 -1
  192. package/dist/utils/layoutManager.d.ts +5 -1
  193. package/dist/utils/layoutManager.d.ts.map +1 -1
  194. package/dist/utils/layoutManager.js +103 -26
  195. package/dist/utils/layoutManager.js.map +1 -1
  196. package/dist/utils/paneCreation.d.ts +8 -2
  197. package/dist/utils/paneCreation.d.ts.map +1 -1
  198. package/dist/utils/paneCreation.js +82 -105
  199. package/dist/utils/paneCreation.js.map +1 -1
  200. package/dist/utils/paneGrouping.d.ts.map +1 -1
  201. package/dist/utils/paneGrouping.js +30 -0
  202. package/dist/utils/paneGrouping.js.map +1 -1
  203. package/dist/utils/projectActions.d.ts +5 -0
  204. package/dist/utils/projectActions.d.ts.map +1 -1
  205. package/dist/utils/projectActions.js +15 -4
  206. package/dist/utils/projectActions.js.map +1 -1
  207. package/dist/utils/reopenWorktree.d.ts +1 -1
  208. package/dist/utils/reopenWorktree.d.ts.map +1 -1
  209. package/dist/utils/reopenWorktree.js +23 -31
  210. package/dist/utils/reopenWorktree.js.map +1 -1
  211. package/dist/utils/runtimePaths.d.ts +2 -0
  212. package/dist/utils/runtimePaths.d.ts.map +1 -0
  213. package/dist/utils/runtimePaths.js +8 -0
  214. package/dist/utils/runtimePaths.js.map +1 -0
  215. package/dist/utils/settingsManager.d.ts +3 -0
  216. package/dist/utils/settingsManager.d.ts.map +1 -1
  217. package/dist/utils/settingsManager.js +200 -9
  218. package/dist/utils/settingsManager.js.map +1 -1
  219. package/dist/utils/systemCheck.d.ts.map +1 -1
  220. package/dist/utils/systemCheck.js +0 -13
  221. package/dist/utils/systemCheck.js.map +1 -1
  222. package/dist/utils/tmux.d.ts +5 -1
  223. package/dist/utils/tmux.d.ts.map +1 -1
  224. package/dist/utils/tmux.js +23 -5
  225. package/dist/utils/tmux.js.map +1 -1
  226. package/dist/utils/tmuxHookCommands.d.ts +14 -0
  227. package/dist/utils/tmuxHookCommands.d.ts.map +1 -0
  228. package/dist/utils/tmuxHookCommands.js +30 -0
  229. package/dist/utils/tmuxHookCommands.js.map +1 -0
  230. package/dist/utils/welcomePane.d.ts +2 -1
  231. package/dist/utils/welcomePane.d.ts.map +1 -1
  232. package/dist/utils/welcomePane.js +3 -2
  233. package/dist/utils/welcomePane.js.map +1 -1
  234. package/dist/utils/welcomePaneManager.js +1 -1
  235. package/dist/utils/welcomePaneManager.js.map +1 -1
  236. package/dist/workers/PaneWorker.js.map +1 -1
  237. package/dist/workers/WorkerMessages.d.ts +2 -1
  238. package/dist/workers/WorkerMessages.d.ts.map +1 -1
  239. package/dist/workers/WorkerMessages.js.map +1 -1
  240. package/package.json +11 -6
@@ -1,18 +1,364 @@
1
- const AGENT_LABELS = {
2
- claude: 'Claude Code',
3
- opencode: 'OpenCode',
4
- codex: 'Codex',
5
- };
6
- const AGENT_SLUG_SUFFIXES = {
7
- claude: 'claude-code',
8
- opencode: 'opencode',
9
- codex: 'codex',
1
+ import { TmuxService } from '../services/TmuxService.js';
2
+ import { buildPromptReadAndDeleteSnippet, writePromptFile, } from './promptStore.js';
3
+ export const AGENT_IDS = [
4
+ 'claude',
5
+ 'opencode',
6
+ 'codex',
7
+ 'cline',
8
+ 'gemini',
9
+ 'qwen',
10
+ 'amp',
11
+ 'pi',
12
+ 'cursor',
13
+ 'copilot',
14
+ 'crush',
15
+ ];
16
+ const HOME = process.env.HOME || '';
17
+ const homePath = (suffix) => HOME ? [`${HOME}/${suffix}`] : [];
18
+ export const AGENT_REGISTRY = {
19
+ claude: {
20
+ id: 'claude',
21
+ name: 'Claude Code',
22
+ shortLabel: 'cc',
23
+ description: 'Anthropic Claude Code CLI',
24
+ slugSuffix: 'claude-code',
25
+ installTestCommand: 'command -v claude 2>/dev/null || which claude 2>/dev/null',
26
+ commonPaths: [
27
+ ...homePath('.claude/local/claude'),
28
+ ...homePath('.local/bin/claude'),
29
+ '/usr/local/bin/claude',
30
+ '/opt/homebrew/bin/claude',
31
+ '/usr/bin/claude',
32
+ ...homePath('bin/claude'),
33
+ ],
34
+ promptCommand: 'claude',
35
+ promptTransport: 'positional',
36
+ permissionFlags: {
37
+ plan: '--permission-mode plan',
38
+ acceptEdits: '--permission-mode acceptEdits',
39
+ bypassPermissions: '--dangerously-skip-permissions',
40
+ },
41
+ defaultEnabled: true,
42
+ resumeCommandTemplate: 'claude --continue{permissions}',
43
+ },
44
+ opencode: {
45
+ id: 'opencode',
46
+ name: 'OpenCode',
47
+ shortLabel: 'oc',
48
+ description: 'OpenCode CLI',
49
+ slugSuffix: 'opencode',
50
+ installTestCommand: 'command -v opencode 2>/dev/null || which opencode 2>/dev/null',
51
+ commonPaths: [
52
+ '/opt/homebrew/bin/opencode',
53
+ '/usr/local/bin/opencode',
54
+ ...homePath('.local/bin/opencode'),
55
+ ...homePath('bin/opencode'),
56
+ ],
57
+ promptCommand: 'opencode',
58
+ promptTransport: 'option',
59
+ promptOption: '--prompt',
60
+ permissionFlags: {},
61
+ defaultEnabled: true,
62
+ },
63
+ codex: {
64
+ id: 'codex',
65
+ name: 'Codex',
66
+ shortLabel: 'cx',
67
+ description: 'OpenAI Codex CLI',
68
+ slugSuffix: 'codex',
69
+ installTestCommand: 'command -v codex 2>/dev/null || which codex 2>/dev/null',
70
+ commonPaths: [
71
+ '/usr/local/bin/codex',
72
+ '/opt/homebrew/bin/codex',
73
+ ...homePath('.local/bin/codex'),
74
+ ...homePath('bin/codex'),
75
+ ...homePath('.npm-global/bin/codex'),
76
+ ],
77
+ promptCommand: 'codex',
78
+ promptTransport: 'positional',
79
+ permissionFlags: {
80
+ acceptEdits: '--full-auto',
81
+ bypassPermissions: '--dangerously-bypass-approvals-and-sandbox',
82
+ },
83
+ defaultEnabled: true,
84
+ resumeCommandTemplate: 'codex resume --last{permissions}',
85
+ },
86
+ cline: {
87
+ id: 'cline',
88
+ name: 'Cline CLI',
89
+ shortLabel: 'cl',
90
+ description: 'Cline terminal coding agent',
91
+ slugSuffix: 'cline',
92
+ installTestCommand: 'command -v cline 2>/dev/null || which cline 2>/dev/null',
93
+ commonPaths: [
94
+ '/usr/local/bin/cline',
95
+ '/opt/homebrew/bin/cline',
96
+ ...homePath('.local/bin/cline'),
97
+ ...homePath('bin/cline'),
98
+ ],
99
+ promptCommand: 'cline',
100
+ promptTransport: 'send-keys',
101
+ sendKeysPostPasteDelayMs: 120,
102
+ sendKeysReadyDelayMs: 2500,
103
+ permissionFlags: {
104
+ plan: '--plan',
105
+ acceptEdits: '--act',
106
+ bypassPermissions: '--act --yolo',
107
+ },
108
+ defaultEnabled: false,
109
+ },
110
+ gemini: {
111
+ id: 'gemini',
112
+ name: 'Gemini CLI',
113
+ shortLabel: 'gm',
114
+ description: 'Google Gemini CLI',
115
+ slugSuffix: 'gemini',
116
+ installTestCommand: 'command -v gemini 2>/dev/null || which gemini 2>/dev/null',
117
+ commonPaths: [
118
+ '/usr/local/bin/gemini',
119
+ '/opt/homebrew/bin/gemini',
120
+ ...homePath('.local/bin/gemini'),
121
+ ...homePath('bin/gemini'),
122
+ ...homePath('.npm-global/bin/gemini'),
123
+ ],
124
+ promptCommand: 'gemini',
125
+ promptTransport: 'option',
126
+ promptOption: '--prompt-interactive',
127
+ permissionFlags: {
128
+ plan: '--approval-mode plan',
129
+ acceptEdits: '--approval-mode auto_edit',
130
+ bypassPermissions: '--approval-mode yolo',
131
+ },
132
+ defaultEnabled: false,
133
+ resumeCommandTemplate: 'gemini --resume latest{permissions}',
134
+ },
135
+ qwen: {
136
+ id: 'qwen',
137
+ name: 'Qwen CLI',
138
+ shortLabel: 'qn',
139
+ description: 'Qwen Code CLI',
140
+ slugSuffix: 'qwen',
141
+ installTestCommand: 'command -v qwen 2>/dev/null || which qwen 2>/dev/null',
142
+ commonPaths: [
143
+ '/usr/local/bin/qwen',
144
+ '/opt/homebrew/bin/qwen',
145
+ ...homePath('.local/bin/qwen'),
146
+ ...homePath('bin/qwen'),
147
+ ...homePath('.npm-global/bin/qwen'),
148
+ ],
149
+ promptCommand: 'qwen',
150
+ promptTransport: 'option',
151
+ promptOption: '-i',
152
+ permissionFlags: {
153
+ plan: '--approval-mode plan',
154
+ acceptEdits: '--approval-mode auto-edit',
155
+ bypassPermissions: '--approval-mode yolo',
156
+ },
157
+ defaultEnabled: false,
158
+ resumeCommandTemplate: 'qwen --continue{permissions}',
159
+ },
160
+ amp: {
161
+ id: 'amp',
162
+ name: 'Amp CLI',
163
+ shortLabel: 'ap',
164
+ description: 'Sourcegraph Amp CLI',
165
+ slugSuffix: 'amp',
166
+ installTestCommand: 'command -v amp 2>/dev/null || which amp 2>/dev/null',
167
+ commonPaths: [
168
+ '/usr/local/bin/amp',
169
+ '/opt/homebrew/bin/amp',
170
+ ...homePath('.local/bin/amp'),
171
+ ...homePath('bin/amp'),
172
+ ...homePath('.npm-global/bin/amp'),
173
+ ],
174
+ promptCommand: 'amp',
175
+ promptTransport: 'stdin',
176
+ permissionFlags: {
177
+ bypassPermissions: '--dangerously-allow-all',
178
+ },
179
+ defaultEnabled: false,
180
+ },
181
+ pi: {
182
+ id: 'pi',
183
+ name: 'pi CLI',
184
+ shortLabel: 'pi',
185
+ description: 'pi coding agent CLI',
186
+ slugSuffix: 'pi',
187
+ installTestCommand: 'command -v pi 2>/dev/null || which pi 2>/dev/null',
188
+ commonPaths: [
189
+ '/usr/local/bin/pi',
190
+ '/opt/homebrew/bin/pi',
191
+ ...homePath('.local/bin/pi'),
192
+ ...homePath('bin/pi'),
193
+ ...homePath('.npm-global/bin/pi'),
194
+ ],
195
+ promptCommand: 'pi',
196
+ promptTransport: 'positional',
197
+ permissionFlags: {
198
+ plan: '--tools read,grep,find,ls',
199
+ },
200
+ defaultEnabled: false,
201
+ resumeCommandTemplate: 'pi --continue{permissions}',
202
+ },
203
+ cursor: {
204
+ id: 'cursor',
205
+ name: 'Cursor CLI',
206
+ shortLabel: 'cr',
207
+ description: 'Cursor agent CLI',
208
+ slugSuffix: 'cursor',
209
+ installTestCommand: 'command -v cursor-agent 2>/dev/null || which cursor-agent 2>/dev/null',
210
+ commonPaths: [
211
+ ...homePath('.cursor/bin/cursor-agent'),
212
+ '/usr/local/bin/cursor-agent',
213
+ '/opt/homebrew/bin/cursor-agent',
214
+ ...homePath('.local/bin/cursor-agent'),
215
+ ...homePath('bin/cursor-agent'),
216
+ ],
217
+ promptCommand: 'cursor-agent',
218
+ promptTransport: 'positional',
219
+ permissionFlags: {},
220
+ defaultEnabled: false,
221
+ },
222
+ copilot: {
223
+ id: 'copilot',
224
+ name: 'Copilot CLI',
225
+ shortLabel: 'co',
226
+ description: 'GitHub Copilot CLI',
227
+ slugSuffix: 'copilot',
228
+ installTestCommand: 'command -v copilot 2>/dev/null || which copilot 2>/dev/null',
229
+ commonPaths: [
230
+ '/usr/local/bin/copilot',
231
+ '/opt/homebrew/bin/copilot',
232
+ ...homePath('.local/bin/copilot'),
233
+ ...homePath('bin/copilot'),
234
+ ...homePath('.npm-global/bin/copilot'),
235
+ ],
236
+ promptCommand: 'copilot',
237
+ promptTransport: 'option',
238
+ promptOption: '-i',
239
+ permissionFlags: {
240
+ acceptEdits: '--allow-tool write',
241
+ bypassPermissions: '--allow-all',
242
+ },
243
+ defaultEnabled: false,
244
+ resumeCommandTemplate: 'copilot --continue{permissions}',
245
+ },
246
+ crush: {
247
+ id: 'crush',
248
+ name: 'Crush CLI',
249
+ shortLabel: 'cs',
250
+ description: 'Charmbracelet Crush CLI',
251
+ slugSuffix: 'crush',
252
+ installTestCommand: 'command -v crush 2>/dev/null || which crush 2>/dev/null',
253
+ commonPaths: [
254
+ '/usr/local/bin/crush',
255
+ '/opt/homebrew/bin/crush',
256
+ ...homePath('.local/bin/crush'),
257
+ ...homePath('bin/crush'),
258
+ ...homePath('.npm-global/bin/crush'),
259
+ ],
260
+ promptCommand: 'crush run',
261
+ noPromptCommand: 'crush',
262
+ promptTransport: 'send-keys',
263
+ sendKeysPrePrompt: ['Escape', 'Tab'],
264
+ sendKeysSubmit: ['Enter'],
265
+ sendKeysPostPasteDelayMs: 200,
266
+ sendKeysReadyDelayMs: 1200,
267
+ permissionFlags: {
268
+ bypassPermissions: '--yolo',
269
+ },
270
+ defaultEnabled: false,
271
+ },
10
272
  };
273
+ for (const agentId of AGENT_IDS) {
274
+ const shortLabel = AGENT_REGISTRY[agentId].shortLabel;
275
+ if (shortLabel.length !== 2) {
276
+ throw new Error(`Invalid shortLabel for agent "${agentId}": expected 2 characters, received "${shortLabel}"`);
277
+ }
278
+ }
279
+ const shortLabelSet = new Set();
280
+ for (const agentId of AGENT_IDS) {
281
+ const shortLabel = AGENT_REGISTRY[agentId].shortLabel;
282
+ if (shortLabelSet.has(shortLabel)) {
283
+ throw new Error(`Duplicate shortLabel "${shortLabel}" in agent registry`);
284
+ }
285
+ shortLabelSet.add(shortLabel);
286
+ }
287
+ export function isAgentName(value) {
288
+ return AGENT_IDS.includes(value);
289
+ }
290
+ export function getAgentDefinitions() {
291
+ return AGENT_IDS.map((agent) => AGENT_REGISTRY[agent]);
292
+ }
293
+ export function getAgentDefinition(agent) {
294
+ return AGENT_REGISTRY[agent];
295
+ }
11
296
  export function getAgentLabel(agent) {
12
- return AGENT_LABELS[agent];
297
+ return AGENT_REGISTRY[agent].name;
298
+ }
299
+ export function getAgentShortLabel(agent) {
300
+ return AGENT_REGISTRY[agent].shortLabel;
301
+ }
302
+ export function getAgentDescription(agent) {
303
+ return AGENT_REGISTRY[agent].description;
304
+ }
305
+ export function getPromptTransport(agent) {
306
+ return AGENT_REGISTRY[agent].promptTransport;
13
307
  }
14
308
  export function getAgentSlugSuffix(agent) {
15
- return AGENT_SLUG_SUFFIXES[agent];
309
+ return AGENT_REGISTRY[agent].slugSuffix;
310
+ }
311
+ export function getAgentProcessName(agent) {
312
+ const definition = AGENT_REGISTRY[agent];
313
+ const baseCommand = (definition.noPromptCommand || definition.promptCommand).trim();
314
+ const commandToken = baseCommand.split(/\s+/)[0] || '';
315
+ const pathSegments = commandToken.split('/');
316
+ return pathSegments[pathSegments.length - 1] || commandToken;
317
+ }
318
+ export function getSendKeysSubmit(agent) {
319
+ const configured = AGENT_REGISTRY[agent].sendKeysSubmit;
320
+ if (configured && configured.length > 0) {
321
+ return [...configured];
322
+ }
323
+ return ['Enter'];
324
+ }
325
+ export function getSendKeysPrePrompt(agent) {
326
+ const configured = AGENT_REGISTRY[agent].sendKeysPrePrompt;
327
+ if (configured && configured.length > 0) {
328
+ return [...configured];
329
+ }
330
+ return [];
331
+ }
332
+ export function getSendKeysPostPasteDelayMs(agent) {
333
+ const value = AGENT_REGISTRY[agent].sendKeysPostPasteDelayMs;
334
+ if (typeof value === 'number' && Number.isFinite(value) && value >= 0) {
335
+ return value;
336
+ }
337
+ return 0;
338
+ }
339
+ export function getSendKeysReadyDelayMs(agent) {
340
+ const value = AGENT_REGISTRY[agent].sendKeysReadyDelayMs;
341
+ if (typeof value === 'number' && Number.isFinite(value) && value >= 0) {
342
+ return value;
343
+ }
344
+ return 0;
345
+ }
346
+ export function getDefaultEnabledAgents() {
347
+ return AGENT_IDS.filter((agent) => AGENT_REGISTRY[agent].defaultEnabled);
348
+ }
349
+ /**
350
+ * Resolve enabled agent list from settings.
351
+ * If the user has not configured enabledAgents, fall back to registry defaults.
352
+ */
353
+ export function resolveEnabledAgentsSelection(enabledAgents) {
354
+ if (Array.isArray(enabledAgents)) {
355
+ const configured = new Set(enabledAgents.filter(isAgentName));
356
+ return AGENT_IDS.filter((agent) => configured.has(agent));
357
+ }
358
+ return getDefaultEnabledAgents();
359
+ }
360
+ function appendFlags(base, flags) {
361
+ return flags ? `${base} ${flags}` : base;
16
362
  }
17
363
  export function appendSlugSuffix(baseSlug, slugSuffix) {
18
364
  if (!slugSuffix)
@@ -32,49 +378,152 @@ export function appendSlugSuffix(baseSlug, slugSuffix) {
32
378
  }
33
379
  export function buildAgentLaunchOptions(availableAgents) {
34
380
  const uniqueAgents = availableAgents.filter((agent, index) => availableAgents.indexOf(agent) === index);
35
- const singleAgentOptions = uniqueAgents.map((agent) => ({
381
+ return uniqueAgents.map((agent) => ({
36
382
  id: agent,
37
383
  label: getAgentLabel(agent),
38
384
  agents: [agent],
39
385
  isPair: false,
40
386
  }));
41
- const pairOptions = [];
42
- for (let i = 0; i < uniqueAgents.length; i++) {
43
- for (let j = i + 1; j < uniqueAgents.length; j++) {
44
- const first = uniqueAgents[i];
45
- const second = uniqueAgents[j];
46
- pairOptions.push({
47
- id: `${first}+${second}`,
48
- label: `A/B: ${getAgentLabel(first)} + ${getAgentLabel(second)}`,
49
- agents: [first, second],
50
- isPair: true,
51
- });
52
- }
53
- }
54
- return [...singleAgentOptions, ...pairOptions];
55
387
  }
56
388
  /**
57
389
  * Resolve CLI permission flags for a given agent and dmux permissionMode.
58
390
  */
59
391
  export function getPermissionFlags(agent, permissionMode) {
60
392
  const mode = permissionMode || '';
61
- if (agent === 'claude') {
62
- if (mode === 'plan')
63
- return '--permission-mode plan';
64
- if (mode === 'acceptEdits')
65
- return '--permission-mode acceptEdits';
66
- if (mode === 'bypassPermissions')
67
- return '--dangerously-skip-permissions';
393
+ if (mode === '')
68
394
  return '';
395
+ return AGENT_REGISTRY[agent].permissionFlags[mode] || '';
396
+ }
397
+ export function buildAgentCommand(agent, permissionMode) {
398
+ const definition = AGENT_REGISTRY[agent];
399
+ const baseCommand = definition.noPromptCommand || definition.promptCommand;
400
+ return appendFlags(baseCommand, getPermissionFlags(agent, permissionMode));
401
+ }
402
+ export function buildInitialPromptCommand(agent, promptToken, permissionMode) {
403
+ const definition = AGENT_REGISTRY[agent];
404
+ if (definition.promptTransport === 'send-keys') {
405
+ return buildAgentCommand(agent, permissionMode);
69
406
  }
70
- if (agent === 'codex') {
71
- if (mode === 'acceptEdits')
72
- return '--approval-mode auto-edit';
73
- if (mode === 'bypassPermissions')
74
- return '--dangerously-bypass-approvals-and-sandbox';
75
- return '';
407
+ const baseCommand = appendFlags(definition.promptCommand, getPermissionFlags(agent, permissionMode));
408
+ if (definition.promptTransport === 'stdin') {
409
+ return `printf '%s\\n' ${promptToken} | ${baseCommand}`;
410
+ }
411
+ if (definition.promptTransport === 'option' && definition.promptOption) {
412
+ return `${baseCommand} ${definition.promptOption} ${promptToken}`;
413
+ }
414
+ return `${baseCommand} ${promptToken}`;
415
+ }
416
+ export function buildResumeCommand(agent, permissionMode) {
417
+ const template = AGENT_REGISTRY[agent].resumeCommandTemplate;
418
+ if (!template)
419
+ return undefined;
420
+ const permissionFlags = getPermissionFlags(agent, permissionMode);
421
+ const permissionSuffix = permissionFlags ? ` ${permissionFlags}` : '';
422
+ if (template.includes('{permissions}')) {
423
+ return template.replace('{permissions}', permissionSuffix);
424
+ }
425
+ return appendFlags(template, permissionFlags);
426
+ }
427
+ /**
428
+ * Launch an agent CLI inside an already-existing tmux pane.
429
+ *
430
+ * Shared by `createPane()` (new worktree panes) and `attachAgentToWorktree()`
431
+ * (sibling panes reusing an existing worktree).
432
+ */
433
+ export async function launchAgentInPane(opts) {
434
+ const { paneId, agent, prompt, slug, projectRoot, permissionMode } = opts;
435
+ const tmuxService = TmuxService.getInstance();
436
+ const hasInitialPrompt = !!(prompt && prompt.trim());
437
+ if (agent === 'claude') {
438
+ const permissionFlags = getPermissionFlags('claude', permissionMode);
439
+ const permissionSuffix = permissionFlags ? ` ${permissionFlags}` : '';
440
+ let claudeCmd;
441
+ if (hasInitialPrompt) {
442
+ let promptFilePath = null;
443
+ try {
444
+ promptFilePath = await writePromptFile(projectRoot, slug, prompt);
445
+ }
446
+ catch {
447
+ // Fall back to inline escaping if prompt file write fails
448
+ }
449
+ if (promptFilePath) {
450
+ const promptBootstrap = buildPromptReadAndDeleteSnippet(promptFilePath);
451
+ claudeCmd = `${promptBootstrap}; claude "$DMUX_PROMPT_CONTENT"${permissionSuffix}`;
452
+ }
453
+ else {
454
+ const escapedPrompt = prompt
455
+ .replace(/\\/g, '\\\\')
456
+ .replace(/"/g, '\\"')
457
+ .replace(/`/g, '\\`')
458
+ .replace(/\$/g, '\\$');
459
+ claudeCmd = `claude "${escapedPrompt}"${permissionSuffix}`;
460
+ }
461
+ }
462
+ else {
463
+ claudeCmd = `claude${permissionSuffix}`;
464
+ }
465
+ await tmuxService.sendShellCommand(paneId, claudeCmd);
466
+ await tmuxService.sendTmuxKeys(paneId, 'Enter');
467
+ }
468
+ else if (agent === 'codex') {
469
+ const permissionFlags = getPermissionFlags('codex', permissionMode);
470
+ const permissionSuffix = permissionFlags ? ` ${permissionFlags}` : '';
471
+ let codexCmd;
472
+ if (hasInitialPrompt) {
473
+ let promptFilePath = null;
474
+ try {
475
+ promptFilePath = await writePromptFile(projectRoot, slug, prompt);
476
+ }
477
+ catch {
478
+ // Fall back to inline escaping if prompt file write fails
479
+ }
480
+ if (promptFilePath) {
481
+ const promptBootstrap = buildPromptReadAndDeleteSnippet(promptFilePath);
482
+ codexCmd = `${promptBootstrap}; codex "$DMUX_PROMPT_CONTENT"${permissionSuffix}`;
483
+ }
484
+ else {
485
+ const escapedPrompt = prompt
486
+ .replace(/\\/g, '\\\\')
487
+ .replace(/"/g, '\\"')
488
+ .replace(/`/g, '\\`')
489
+ .replace(/\$/g, '\\$');
490
+ codexCmd = `codex "${escapedPrompt}"${permissionSuffix}`;
491
+ }
492
+ }
493
+ else {
494
+ codexCmd = `codex${permissionSuffix}`;
495
+ }
496
+ await tmuxService.sendShellCommand(paneId, codexCmd);
497
+ await tmuxService.sendTmuxKeys(paneId, 'Enter');
498
+ }
499
+ else if (agent === 'opencode') {
500
+ let opencodeCmd;
501
+ if (hasInitialPrompt) {
502
+ let promptFilePath = null;
503
+ try {
504
+ promptFilePath = await writePromptFile(projectRoot, slug, prompt);
505
+ }
506
+ catch {
507
+ // Fall back to inline escaping if prompt file write fails
508
+ }
509
+ if (promptFilePath) {
510
+ const promptBootstrap = buildPromptReadAndDeleteSnippet(promptFilePath);
511
+ opencodeCmd = `${promptBootstrap}; opencode --prompt "$DMUX_PROMPT_CONTENT"`;
512
+ }
513
+ else {
514
+ const escapedPrompt = prompt
515
+ .replace(/\\/g, '\\\\')
516
+ .replace(/"/g, '\\"')
517
+ .replace(/`/g, '\\`')
518
+ .replace(/\$/g, '\\$');
519
+ opencodeCmd = `opencode --prompt "${escapedPrompt}"`;
520
+ }
521
+ }
522
+ else {
523
+ opencodeCmd = 'opencode';
524
+ }
525
+ await tmuxService.sendShellCommand(paneId, opencodeCmd);
526
+ await tmuxService.sendTmuxKeys(paneId, 'Enter');
76
527
  }
77
- // opencode currently has no equivalent permission flags for these modes.
78
- return '';
79
528
  }
80
529
  //# sourceMappingURL=agentLaunch.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"agentLaunch.js","sourceRoot":"","sources":["../../src/utils/agentLaunch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agentLaunch.js","sourceRoot":"","sources":["../../src/utils/agentLaunch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import { TmuxService } from '../services/TmuxService.js';
2
+ interface WaitForForegroundCommandOptions {
3
+ paneId: string;
4
+ tmuxService: TmuxService;
5
+ expectedCommand?: string;
6
+ baselineCommand?: string;
7
+ timeoutMs?: number;
8
+ pollIntervalMs?: number;
9
+ }
10
+ /**
11
+ * Wait for a pane to hand off from the shell to a foreground command.
12
+ *
13
+ * This avoids output-content heuristics and uses tmux process metadata.
14
+ * If we time out, callers may still send input because the PTY typically buffers it.
15
+ */
16
+ export declare function waitForForegroundCommand(options: WaitForForegroundCommandOptions): Promise<void>;
17
+ interface SendPromptViaTmuxOptions {
18
+ paneId: string;
19
+ prompt: string;
20
+ tmuxService: TmuxService;
21
+ expectedCommand?: string;
22
+ baselineCommand?: string;
23
+ prePromptKeys?: string[];
24
+ submitKeys?: string[];
25
+ postPasteDelayMs?: number;
26
+ readyDelayMs?: number;
27
+ }
28
+ /**
29
+ * Send a full prompt payload to an already-starting interactive agent via tmux paste buffer.
30
+ */
31
+ export declare function sendPromptViaTmux(options: SendPromptViaTmuxOptions): Promise<void>;
32
+ export {};
33
+ //# sourceMappingURL=agentPromptDispatch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agentPromptDispatch.d.ts","sourceRoot":"","sources":["../../src/utils/agentPromptDispatch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAoBzD,UAAU,+BAA+B;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,WAAW,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;;GAKG;AACH,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,+BAA+B,GACvC,OAAO,CAAC,IAAI,CAAC,CAwCf;AAED,UAAU,wBAAwB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,WAAW,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,wBAAwB,GAChC,OAAO,CAAC,IAAI,CAAC,CAyDf"}