dmux 5.7.0 → 5.8.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 (147) hide show
  1. package/README.md +11 -1
  2. package/dist/DmuxApp.d.ts.map +1 -1
  3. package/dist/DmuxApp.js +23 -13
  4. package/dist/DmuxApp.js.map +1 -1
  5. package/dist/components/inputs/InlineCursorInput.d.ts +10 -0
  6. package/dist/components/inputs/InlineCursorInput.d.ts.map +1 -0
  7. package/dist/components/inputs/InlineCursorInput.js +101 -0
  8. package/dist/components/inputs/InlineCursorInput.js.map +1 -0
  9. package/dist/components/popups/newPaneFieldNavigation.d.ts +9 -0
  10. package/dist/components/popups/newPaneFieldNavigation.d.ts.map +1 -0
  11. package/dist/components/popups/newPaneFieldNavigation.js +20 -0
  12. package/dist/components/popups/newPaneFieldNavigation.js.map +1 -0
  13. package/dist/components/popups/newPaneGitOptions.d.ts +23 -0
  14. package/dist/components/popups/newPaneGitOptions.d.ts.map +1 -0
  15. package/dist/components/popups/newPaneGitOptions.js +91 -0
  16. package/dist/components/popups/newPaneGitOptions.js.map +1 -0
  17. package/dist/components/popups/newPanePopup.d.ts +7 -2
  18. package/dist/components/popups/newPanePopup.d.ts.map +1 -1
  19. package/dist/components/popups/newPanePopup.js +267 -19
  20. package/dist/components/popups/newPanePopup.js.map +1 -1
  21. package/dist/hooks/useInputHandling.d.ts +3 -2
  22. package/dist/hooks/useInputHandling.d.ts.map +1 -1
  23. package/dist/hooks/useInputHandling.js +11 -15
  24. package/dist/hooks/useInputHandling.js.map +1 -1
  25. package/dist/hooks/usePaneCreation.d.ts +6 -3
  26. package/dist/hooks/usePaneCreation.d.ts.map +1 -1
  27. package/dist/hooks/usePaneCreation.js +20 -3
  28. package/dist/hooks/usePaneCreation.js.map +1 -1
  29. package/dist/hooks/usePaneLoading.d.ts.map +1 -1
  30. package/dist/hooks/usePaneLoading.js +16 -1
  31. package/dist/hooks/usePaneLoading.js.map +1 -1
  32. package/dist/i18n/index.d.ts +33 -0
  33. package/dist/i18n/index.d.ts.map +1 -0
  34. package/dist/i18n/index.js +70 -0
  35. package/dist/i18n/index.js.map +1 -0
  36. package/dist/i18n/locales/en.d.ts +4 -0
  37. package/dist/i18n/locales/en.d.ts.map +1 -0
  38. package/dist/i18n/locales/en.js +114 -0
  39. package/dist/i18n/locales/en.js.map +1 -0
  40. package/dist/i18n/locales/ja.d.ts +4 -0
  41. package/dist/i18n/locales/ja.d.ts.map +1 -0
  42. package/dist/i18n/locales/ja.js +114 -0
  43. package/dist/i18n/locales/ja.js.map +1 -0
  44. package/dist/index.js +15 -14
  45. package/dist/index.js.map +1 -1
  46. package/dist/server/embedded-assets.d.ts.map +1 -1
  47. package/dist/server/embedded-assets.js +4 -12
  48. package/dist/server/embedded-assets.js.map +1 -1
  49. package/dist/services/DmuxAttentionService.d.ts +2 -0
  50. package/dist/services/DmuxAttentionService.d.ts.map +1 -1
  51. package/dist/services/DmuxAttentionService.js +17 -0
  52. package/dist/services/DmuxAttentionService.js.map +1 -1
  53. package/dist/services/DmuxFocusService.d.ts +1 -0
  54. package/dist/services/DmuxFocusService.d.ts.map +1 -1
  55. package/dist/services/DmuxFocusService.js +7 -0
  56. package/dist/services/DmuxFocusService.js.map +1 -1
  57. package/dist/services/PopupManager.d.ts +7 -2
  58. package/dist/services/PopupManager.d.ts.map +1 -1
  59. package/dist/services/PopupManager.js +44 -6
  60. package/dist/services/PopupManager.js.map +1 -1
  61. package/dist/services/StatusDetector.d.ts +1 -1
  62. package/dist/services/StatusDetector.d.ts.map +1 -1
  63. package/dist/services/StatusDetector.js +6 -3
  64. package/dist/services/StatusDetector.js.map +1 -1
  65. package/dist/types.d.ts +11 -0
  66. package/dist/types.d.ts.map +1 -1
  67. package/dist/utils/agentLaunch.d.ts +4 -0
  68. package/dist/utils/agentLaunch.d.ts.map +1 -1
  69. package/dist/utils/agentLaunch.js +28 -10
  70. package/dist/utils/agentLaunch.js.map +1 -1
  71. package/dist/utils/attachAgent.d.ts +1 -0
  72. package/dist/utils/attachAgent.d.ts.map +1 -1
  73. package/dist/utils/attachAgent.js +17 -1
  74. package/dist/utils/attachAgent.js.map +1 -1
  75. package/dist/utils/claudeHooks.d.ts +9 -0
  76. package/dist/utils/claudeHooks.d.ts.map +1 -0
  77. package/dist/utils/claudeHooks.js +104 -0
  78. package/dist/utils/claudeHooks.js.map +1 -0
  79. package/dist/utils/codexHooks.d.ts +5 -0
  80. package/dist/utils/codexHooks.d.ts.map +1 -1
  81. package/dist/utils/codexHooks.js +17 -3
  82. package/dist/utils/codexHooks.js.map +1 -1
  83. package/dist/utils/devWatchCommand.d.ts.map +1 -1
  84. package/dist/utils/devWatchCommand.js +6 -2
  85. package/dist/utils/devWatchCommand.js.map +1 -1
  86. package/dist/utils/dmuxCommand.d.ts +4 -3
  87. package/dist/utils/dmuxCommand.d.ts.map +1 -1
  88. package/dist/utils/dmuxCommand.js +15 -14
  89. package/dist/utils/dmuxCommand.js.map +1 -1
  90. package/dist/utils/generated-agents-doc.d.ts +1 -1
  91. package/dist/utils/generated-agents-doc.d.ts.map +1 -1
  92. package/dist/utils/generated-agents-doc.js +46 -11
  93. package/dist/utils/generated-agents-doc.js.map +1 -1
  94. package/dist/utils/git.d.ts +8 -0
  95. package/dist/utils/git.d.ts.map +1 -1
  96. package/dist/utils/git.js +26 -0
  97. package/dist/utils/git.js.map +1 -1
  98. package/dist/utils/hooks.d.ts +15 -0
  99. package/dist/utils/hooks.d.ts.map +1 -1
  100. package/dist/utils/hooks.js +105 -0
  101. package/dist/utils/hooks.js.map +1 -1
  102. package/dist/utils/hooksDocs.d.ts +1 -1
  103. package/dist/utils/hooksDocs.d.ts.map +1 -1
  104. package/dist/utils/hooksDocs.js +21 -11
  105. package/dist/utils/hooksDocs.js.map +1 -1
  106. package/dist/utils/paneBootstrapConfig.d.ts +29 -0
  107. package/dist/utils/paneBootstrapConfig.d.ts.map +1 -0
  108. package/dist/utils/paneBootstrapConfig.js +2 -0
  109. package/dist/utils/paneBootstrapConfig.js.map +1 -0
  110. package/dist/utils/paneBootstrapRunner.d.ts +3 -0
  111. package/dist/utils/paneBootstrapRunner.d.ts.map +1 -0
  112. package/dist/utils/paneBootstrapRunner.js +533 -0
  113. package/dist/utils/paneBootstrapRunner.js.map +1 -0
  114. package/dist/utils/paneCreation.d.ts +4 -1
  115. package/dist/utils/paneCreation.d.ts.map +1 -1
  116. package/dist/utils/paneCreation.js +142 -267
  117. package/dist/utils/paneCreation.js.map +1 -1
  118. package/dist/utils/paneNaming.d.ts +16 -0
  119. package/dist/utils/paneNaming.d.ts.map +1 -0
  120. package/dist/utils/paneNaming.js +47 -0
  121. package/dist/utils/paneNaming.js.map +1 -0
  122. package/dist/utils/pathEnvironment.d.ts +6 -0
  123. package/dist/utils/pathEnvironment.d.ts.map +1 -0
  124. package/dist/utils/pathEnvironment.js +59 -0
  125. package/dist/utils/pathEnvironment.js.map +1 -0
  126. package/dist/utils/reopenWorktree.d.ts.map +1 -1
  127. package/dist/utils/reopenWorktree.js +18 -1
  128. package/dist/utils/reopenWorktree.js.map +1 -1
  129. package/dist/utils/settingsManager.d.ts +6 -0
  130. package/dist/utils/settingsManager.d.ts.map +1 -1
  131. package/dist/utils/settingsManager.js +164 -0
  132. package/dist/utils/settingsManager.js.map +1 -1
  133. package/dist/utils/shellPaneDetection.d.ts.map +1 -1
  134. package/dist/utils/shellPaneDetection.js +4 -0
  135. package/dist/utils/shellPaneDetection.js.map +1 -1
  136. package/dist/utils/worktreeMetadata.d.ts +1 -0
  137. package/dist/utils/worktreeMetadata.d.ts.map +1 -1
  138. package/dist/utils/worktreeMetadata.js +3 -0
  139. package/dist/utils/worktreeMetadata.js.map +1 -1
  140. package/dist/workers/PaneWorker.js +43 -18
  141. package/dist/workers/PaneWorker.js.map +1 -1
  142. package/dist/workers/WorkerMessages.d.ts +5 -2
  143. package/dist/workers/WorkerMessages.d.ts.map +1 -1
  144. package/dist/workers/WorkerMessages.js.map +1 -1
  145. package/native/macos/dmux-helper.swift +1 -18
  146. package/native/macos/prebuilt/dmux-helper.app/Contents/MacOS/dmux-helper +0 -0
  147. package/package.json +1 -1
@@ -0,0 +1,533 @@
1
+ #!/usr/bin/env node
2
+ import fs from 'fs';
3
+ import path from 'path';
4
+ import { spawn } from 'child_process';
5
+ import React, { useEffect, useState } from 'react';
6
+ import { Box, Text, render as renderInk, useApp, } from 'ink';
7
+ import { buildAgentCommand, buildInitialPromptCommand, buildGoalModePrompt, getAgentLabel, getSendKeysPostPasteDelayMs, getSendKeysPrePrompt, getSendKeysReadyDelayMs, getSendKeysSubmit, getPromptTransport, shouldEnableCodexGoals, } from './agentLaunch.js';
8
+ import { buildPromptReadAndDeleteSnippet, writePromptFile, } from './promptStore.js';
9
+ import { triggerHookWithProgress, initializeHooksDirectory } from './hooks.js';
10
+ import { writeWorktreeMetadata } from './worktreeMetadata.js';
11
+ import { ensureGeminiFolderTrusted } from './geminiTrust.js';
12
+ import { buildCodexHookedCommand, installCodexPaneHooks, } from './codexHooks.js';
13
+ import { installClaudePaneHooks } from './claudeHooks.js';
14
+ import { TmuxService } from '../services/TmuxService.js';
15
+ import { getPaneTmuxTitle } from './paneTitle.js';
16
+ const spinnerFrames = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'];
17
+ const BOOTSTRAP_HOOK_TIMEOUT_MS = 0;
18
+ let inkInstance = null;
19
+ let viewState = {
20
+ steps: [],
21
+ currentDetail: '',
22
+ };
23
+ const viewListeners = new Set();
24
+ function sleep(ms) {
25
+ return new Promise((resolve) => setTimeout(resolve, ms));
26
+ }
27
+ function cloneSteps(steps) {
28
+ return steps.map((step) => ({ ...step }));
29
+ }
30
+ function updateViewState(patch) {
31
+ viewState = {
32
+ ...viewState,
33
+ ...patch,
34
+ steps: patch.steps ? cloneSteps(patch.steps) : viewState.steps,
35
+ };
36
+ for (const listener of viewListeners) {
37
+ listener(viewState);
38
+ }
39
+ }
40
+ function normalizeProgressLine(line) {
41
+ return line
42
+ .replace(/^\s*(DMUX_STATUS:|dmux:|status:)\s*/i, '')
43
+ .replace(/\s+/g, ' ')
44
+ .trim()
45
+ .slice(0, 180);
46
+ }
47
+ function appendProgressLine(line, stream = 'stdout') {
48
+ const normalized = normalizeProgressLine(line);
49
+ if (!normalized)
50
+ return;
51
+ const prefix = stream === 'stderr' ? '! ' : '';
52
+ const nextLine = `${prefix}${normalized}`;
53
+ updateViewState({
54
+ currentDetail: normalized,
55
+ recentMessages: [...(viewState.recentMessages || []), nextLine].slice(-5),
56
+ });
57
+ }
58
+ function appendProgressChunk(chunk, stream, remainder) {
59
+ const content = remainder + chunk;
60
+ const lines = content.split(/\r?\n/);
61
+ const nextRemainder = lines.pop() || '';
62
+ for (const line of lines) {
63
+ appendProgressLine(line, stream);
64
+ }
65
+ return nextRemainder;
66
+ }
67
+ function useBootstrapSpinner(active) {
68
+ const [frame, setFrame] = useState(0);
69
+ useEffect(() => {
70
+ if (!active)
71
+ return undefined;
72
+ const timer = setInterval(() => {
73
+ setFrame((current) => (current + 1) % spinnerFrames.length);
74
+ }, 80);
75
+ return () => clearInterval(timer);
76
+ }, [active]);
77
+ return spinnerFrames[frame];
78
+ }
79
+ function StepMarker(props) {
80
+ const { step, spinner } = props;
81
+ if (step.state === 'done') {
82
+ return React.createElement(Text, { color: 'green' }, '✔');
83
+ }
84
+ if (step.state === 'failed') {
85
+ return React.createElement(Text, { color: 'red' }, '✖');
86
+ }
87
+ if (step.state === 'skipped') {
88
+ return React.createElement(Text, { dimColor: true }, '◌');
89
+ }
90
+ if (step.state === 'active') {
91
+ return React.createElement(Text, { color: 'cyan' }, spinner);
92
+ }
93
+ return React.createElement(Text, { dimColor: true }, '○');
94
+ }
95
+ function BootstrapApp(props) {
96
+ const { config } = props;
97
+ const [state, setState] = useState(viewState);
98
+ const hasActiveStep = state.steps.some((step) => step.state === 'active');
99
+ const spinner = useBootstrapSpinner(hasActiveStep);
100
+ const agentLabel = config.agent ? getAgentLabel(config.agent) : 'shell';
101
+ const { exit } = useApp();
102
+ useEffect(() => {
103
+ const listener = (nextState) => setState(nextState);
104
+ viewListeners.add(listener);
105
+ return () => {
106
+ viewListeners.delete(listener);
107
+ };
108
+ }, []);
109
+ useEffect(() => {
110
+ if (state.completeMessage) {
111
+ const timer = setTimeout(exit, 80);
112
+ return () => clearTimeout(timer);
113
+ }
114
+ return undefined;
115
+ }, [exit, state.completeMessage]);
116
+ const borderColor = state.failedMessage ? 'red' : state.completeMessage ? 'green' : 'cyan';
117
+ const activeStep = state.steps.find((step) => step.state === 'active');
118
+ const totalSteps = state.steps.length;
119
+ const completedSteps = state.steps.filter((step) => step.state === 'done' || step.state === 'skipped').length;
120
+ const progressWidth = 12;
121
+ const filledBars = totalSteps === 0
122
+ ? 0
123
+ : Math.round((completedSteps / totalSteps) * progressWidth);
124
+ const progressBar = '▰'.repeat(filledBars) + '▱'.repeat(progressWidth - filledBars);
125
+ const headline = state.failedMessage
126
+ ? 'setup needs attention'
127
+ : state.completeMessage
128
+ ? 'ready to launch'
129
+ : 'preparing your agent';
130
+ return React.createElement(Box, { flexDirection: 'column', paddingX: 1, paddingY: 1 }, React.createElement(Box, {
131
+ borderStyle: 'round',
132
+ borderColor,
133
+ flexDirection: 'column',
134
+ paddingX: 2,
135
+ paddingY: 1,
136
+ }, React.createElement(Box, { flexDirection: 'column', marginBottom: 1 }, React.createElement(Text, null, React.createElement(Text, { bold: true, color: borderColor }, 'dmux'), React.createElement(Text, { dimColor: true }, ' · '), React.createElement(Text, null, headline)), React.createElement(Text, { dimColor: true }, 'Worktree and hooks go first, then your agent takes over.')), React.createElement(Box, { flexDirection: 'column', marginBottom: 1 }, React.createElement(Text, null, React.createElement(Text, { dimColor: true }, 'pane '), React.createElement(Text, { bold: true }, config.slug)), React.createElement(Text, null, React.createElement(Text, { dimColor: true }, 'branch '), React.createElement(Text, { bold: true }, config.branchName)), React.createElement(Text, null, React.createElement(Text, { dimColor: true }, 'agent '), React.createElement(Text, { bold: true }, agentLabel))), React.createElement(Box, { flexDirection: 'column' }, ...state.steps.map((step) => React.createElement(Box, { key: step.id }, React.createElement(StepMarker, { step, spinner }), React.createElement(Text, null, ' '), React.createElement(Text, {
137
+ color: step.state === 'active'
138
+ ? 'cyan'
139
+ : step.state === 'failed'
140
+ ? 'red'
141
+ : undefined,
142
+ dimColor: step.state === 'pending' || step.state === 'skipped'
143
+ ? true
144
+ : undefined,
145
+ }, step.label), step.detail
146
+ ? React.createElement(Text, { dimColor: true }, ` ${step.detail}`)
147
+ : null))), React.createElement(Box, { marginTop: 1 }, React.createElement(Text, { color: borderColor }, progressBar), React.createElement(Text, { dimColor: true }, ` ${completedSteps} / ${totalSteps}`)), React.createElement(Box, { marginTop: 1, flexDirection: 'column' }, state.failedMessage
148
+ ? React.createElement(Text, { color: 'red' }, `✖ ${state.failedMessage}`)
149
+ : React.createElement(Text, { dimColor: true }, state.currentDetail
150
+ ? `→ ${state.currentDetail}`
151
+ : activeStep
152
+ ? `→ ${activeStep.label}`
153
+ : state.completeMessage
154
+ ? '✓ ready to launch'
155
+ : 'waiting for the next setup step…')), state.recentMessages && state.recentMessages.length > 0
156
+ ? React.createElement(Box, { flexDirection: 'column', marginTop: 1 }, React.createElement(Text, { dimColor: true }, 'recent output'), ...state.recentMessages.map((message, index) => React.createElement(Text, {
157
+ key: `${index}-${message}`,
158
+ color: message.startsWith('! ') ? 'yellow' : undefined,
159
+ dimColor: !message.startsWith('! '),
160
+ }, ` ${message}`)))
161
+ : null));
162
+ }
163
+ function startRendering(config, steps) {
164
+ viewState = {
165
+ steps: cloneSteps(steps),
166
+ currentDetail: 'Starting setup...',
167
+ };
168
+ inkInstance = renderInk(React.createElement(BootstrapApp, { config }));
169
+ }
170
+ function stopRendering(message) {
171
+ updateViewState({
172
+ completeMessage: message || 'Setup complete',
173
+ currentDetail: message || '',
174
+ });
175
+ inkInstance?.unmount();
176
+ inkInstance = null;
177
+ }
178
+ function setStep(config, steps, id, state, detail) {
179
+ const step = steps.find((candidate) => candidate.id === id);
180
+ if (!step)
181
+ return;
182
+ step.state = state;
183
+ step.detail = detail;
184
+ updateViewState({ steps });
185
+ }
186
+ function buildSteps(config) {
187
+ return [
188
+ {
189
+ id: 'worktree',
190
+ label: config.existingWorktree ? 'Opening existing worktree' : 'Creating git worktree',
191
+ state: 'pending',
192
+ },
193
+ {
194
+ id: 'metadata',
195
+ label: 'Writing dmux metadata',
196
+ state: 'pending',
197
+ },
198
+ {
199
+ id: 'hooks-docs',
200
+ label: 'Preparing hook docs',
201
+ state: config.isHooksEditingSession ? 'pending' : 'skipped',
202
+ },
203
+ {
204
+ id: 'worktree-hook',
205
+ label: 'Running worktree_created hook',
206
+ state: 'pending',
207
+ },
208
+ {
209
+ id: 'agent',
210
+ label: config.agent ? `Launching ${getAgentLabel(config.agent)}` : 'Opening shell',
211
+ state: 'pending',
212
+ },
213
+ ];
214
+ }
215
+ function commandToString(command, args) {
216
+ return [command, ...args].join(' ');
217
+ }
218
+ async function runCommand(command, args, opts) {
219
+ return new Promise((resolve, reject) => {
220
+ updateViewState({ currentDetail: commandToString(command, args) });
221
+ const child = spawn(command, args, {
222
+ cwd: opts.cwd,
223
+ env: opts.env || process.env,
224
+ stdio: ['ignore', 'pipe', 'pipe'],
225
+ });
226
+ let stdout = '';
227
+ let stderr = '';
228
+ let stdoutRemainder = '';
229
+ let stderrRemainder = '';
230
+ child.stdout?.on('data', (data) => {
231
+ const chunk = data.toString();
232
+ stdout += chunk;
233
+ stdoutRemainder = appendProgressChunk(chunk, 'stdout', stdoutRemainder);
234
+ });
235
+ child.stderr?.on('data', (data) => {
236
+ const chunk = data.toString();
237
+ stderr += chunk;
238
+ stderrRemainder = appendProgressChunk(chunk, 'stderr', stderrRemainder);
239
+ });
240
+ child.on('error', (error) => {
241
+ reject(error);
242
+ });
243
+ child.on('close', (code) => {
244
+ appendProgressLine(stdoutRemainder, 'stdout');
245
+ appendProgressLine(stderrRemainder, 'stderr');
246
+ updateViewState({ currentDetail: '' });
247
+ if (code === 0 || opts.allowFailure) {
248
+ resolve({ stdout, stderr, code });
249
+ return;
250
+ }
251
+ const message = (stderr || stdout || `Command failed with exit code ${code}`).trim();
252
+ reject(new Error(message));
253
+ });
254
+ });
255
+ }
256
+ async function enforcePaneTitle(config) {
257
+ const tmuxTitle = config.tmuxTitle
258
+ || getPaneTmuxTitle(config.pane, config.projectRoot, config.pane.projectName);
259
+ try {
260
+ await TmuxService.getInstance().setPaneTitle(config.pane.paneId, tmuxTitle);
261
+ }
262
+ catch {
263
+ // The pane may already be gone; title repair is best-effort.
264
+ }
265
+ }
266
+ async function commandSucceeds(command, args, cwd) {
267
+ const result = await runCommand(command, args, {
268
+ cwd,
269
+ allowFailure: true,
270
+ });
271
+ return result.code === 0;
272
+ }
273
+ async function prepareWorktree(config) {
274
+ if (config.existingWorktree) {
275
+ if (!fs.existsSync(path.join(config.worktreePath, '.git'))) {
276
+ throw new Error(`Existing worktree not found at ${config.worktreePath}`);
277
+ }
278
+ return;
279
+ }
280
+ await runCommand('git', ['worktree', 'prune'], {
281
+ cwd: config.projectRoot,
282
+ allowFailure: true,
283
+ });
284
+ if (config.resolvedStartPoint) {
285
+ const startPointExists = await commandSucceeds('git', ['rev-parse', '--verify', '--end-of-options', config.resolvedStartPoint], config.projectRoot);
286
+ if (!startPointExists) {
287
+ throw new Error(`Worktree start point "${config.resolvedStartPoint}" does not exist`);
288
+ }
289
+ }
290
+ if (fs.existsSync(config.worktreePath)) {
291
+ if (fs.existsSync(path.join(config.worktreePath, '.git'))) {
292
+ return;
293
+ }
294
+ throw new Error(`Path already exists and is not a git worktree: ${config.worktreePath}`);
295
+ }
296
+ fs.mkdirSync(path.dirname(config.worktreePath), { recursive: true });
297
+ const branchExists = await commandSucceeds('git', ['show-ref', '--verify', '--quiet', `refs/heads/${config.branchName}`], config.projectRoot);
298
+ const args = branchExists
299
+ ? ['worktree', 'add', config.worktreePath, config.branchName]
300
+ : [
301
+ 'worktree',
302
+ 'add',
303
+ config.worktreePath,
304
+ '-b',
305
+ config.branchName,
306
+ ...(config.resolvedStartPoint ? [config.resolvedStartPoint] : []),
307
+ ];
308
+ await runCommand('git', args, { cwd: config.projectRoot });
309
+ }
310
+ async function sendInteractivePrompt(config) {
311
+ if (!config.agent || !config.prompt.trim()) {
312
+ return;
313
+ }
314
+ const tmuxService = TmuxService.getInstance();
315
+ const readyDelayMs = getSendKeysReadyDelayMs(config.agent);
316
+ if (readyDelayMs > 0) {
317
+ await sleep(readyDelayMs);
318
+ }
319
+ const bufferName = `dmux-prompt-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
320
+ try {
321
+ for (const key of getSendKeysPrePrompt(config.agent)) {
322
+ await tmuxService.sendTmuxKeys(config.pane.paneId, key);
323
+ await sleep(120);
324
+ }
325
+ await tmuxService.setBuffer(bufferName, buildGoalModePrompt(config.agent, config.prompt, config.goalMode));
326
+ await tmuxService.pasteBuffer(bufferName, config.pane.paneId);
327
+ const postPasteDelayMs = getSendKeysPostPasteDelayMs(config.agent);
328
+ if (postPasteDelayMs > 0) {
329
+ await sleep(postPasteDelayMs);
330
+ }
331
+ for (const key of getSendKeysSubmit(config.agent)) {
332
+ await tmuxService.sendTmuxKeys(config.pane.paneId, key);
333
+ await sleep(60);
334
+ }
335
+ }
336
+ finally {
337
+ try {
338
+ await tmuxService.deleteBuffer(bufferName);
339
+ }
340
+ catch {
341
+ // Best-effort cleanup.
342
+ }
343
+ }
344
+ }
345
+ async function buildLaunchCommand(config) {
346
+ if (!config.agent) {
347
+ return null;
348
+ }
349
+ const hasInitialPrompt = !!config.prompt.trim();
350
+ const promptTransport = getPromptTransport(config.agent);
351
+ const launchPrompt = buildGoalModePrompt(config.agent, config.prompt, config.goalMode);
352
+ let launchCommand;
353
+ if (hasInitialPrompt && promptTransport !== 'send-keys') {
354
+ let promptFilePath = null;
355
+ try {
356
+ promptFilePath = await writePromptFile(config.projectRoot, config.slug, launchPrompt);
357
+ }
358
+ catch {
359
+ promptFilePath = null;
360
+ }
361
+ if (promptFilePath) {
362
+ const promptBootstrap = buildPromptReadAndDeleteSnippet(promptFilePath);
363
+ launchCommand = `${promptBootstrap}; ${buildInitialPromptCommand(config.agent, '"$DMUX_PROMPT_CONTENT"', config.permissionMode)}`;
364
+ }
365
+ else {
366
+ const escapedPrompt = launchPrompt
367
+ .replace(/\\/g, '\\\\')
368
+ .replace(/"/g, '\\"')
369
+ .replace(/`/g, '\\`')
370
+ .replace(/\$/g, '\\$');
371
+ launchCommand = buildInitialPromptCommand(config.agent, `"${escapedPrompt}"`, config.permissionMode);
372
+ }
373
+ }
374
+ else {
375
+ launchCommand = buildAgentCommand(config.agent, config.permissionMode);
376
+ }
377
+ if (config.agent === 'claude') {
378
+ try {
379
+ installClaudePaneHooks({
380
+ worktreePath: config.worktreePath,
381
+ dmuxPaneId: config.pane.id,
382
+ tmuxPaneId: config.pane.paneId,
383
+ });
384
+ }
385
+ catch {
386
+ // Hook installation is best effort; Claude can still run normally.
387
+ }
388
+ }
389
+ if (config.agent === 'codex') {
390
+ let codexHookEventFile;
391
+ try {
392
+ codexHookEventFile = installCodexPaneHooks({
393
+ worktreePath: config.worktreePath,
394
+ dmuxPaneId: config.pane.id,
395
+ tmuxPaneId: config.pane.paneId,
396
+ }).eventFile;
397
+ }
398
+ catch {
399
+ codexHookEventFile = undefined;
400
+ }
401
+ launchCommand = buildCodexHookedCommand(launchCommand, {
402
+ dmuxPaneId: config.pane.id,
403
+ tmuxPaneId: config.pane.paneId,
404
+ eventFile: codexHookEventFile,
405
+ }, {
406
+ enableGoals: shouldEnableCodexGoals(config.agent, config.goalMode),
407
+ });
408
+ }
409
+ return launchCommand;
410
+ }
411
+ async function runAgent(config, launchCommand) {
412
+ if (!launchCommand) {
413
+ updateViewState({ currentDetail: `Worktree ready at ${config.worktreePath}` });
414
+ return 0;
415
+ }
416
+ await enforcePaneTitle(config);
417
+ updateViewState({ currentDetail: launchCommand });
418
+ process.stdout.write('\x1b[2J\x1b[H');
419
+ process.stdout.write(`dmux setup complete. Launching ${getAgentLabel(config.agent)}...\n\n`);
420
+ return new Promise((resolve, reject) => {
421
+ const child = spawn(launchCommand, {
422
+ cwd: config.worktreePath,
423
+ env: {
424
+ ...process.env,
425
+ DMUX_PANE_ID: config.pane.id,
426
+ DMUX_TMUX_PANE_ID: config.pane.paneId,
427
+ },
428
+ shell: true,
429
+ stdio: 'inherit',
430
+ });
431
+ const forwardSignal = (signal) => {
432
+ try {
433
+ child.kill(signal || 'SIGTERM');
434
+ }
435
+ catch {
436
+ // Ignore signal forwarding failures.
437
+ }
438
+ };
439
+ process.once('SIGINT', forwardSignal);
440
+ process.once('SIGTERM', forwardSignal);
441
+ if (config.agent && getPromptTransport(config.agent) === 'send-keys') {
442
+ sendInteractivePrompt(config).catch(() => {
443
+ // The agent may still accept manual input if automated paste fails.
444
+ });
445
+ }
446
+ child.on('error', (error) => {
447
+ process.off('SIGINT', forwardSignal);
448
+ process.off('SIGTERM', forwardSignal);
449
+ reject(error);
450
+ });
451
+ child.on('close', (code) => {
452
+ process.off('SIGINT', forwardSignal);
453
+ process.off('SIGTERM', forwardSignal);
454
+ resolve(code ?? 0);
455
+ });
456
+ });
457
+ }
458
+ async function main() {
459
+ const configPath = process.argv[2];
460
+ if (!configPath) {
461
+ process.stderr.write('Usage: paneBootstrapRunner <config.json>\n');
462
+ return 1;
463
+ }
464
+ const config = JSON.parse(fs.readFileSync(configPath, 'utf-8'));
465
+ const steps = buildSteps(config);
466
+ await enforcePaneTitle(config);
467
+ startRendering(config, steps);
468
+ try {
469
+ setStep(config, steps, 'worktree', 'active');
470
+ await prepareWorktree(config);
471
+ setStep(config, steps, 'worktree', 'done', config.worktreePath);
472
+ setStep(config, steps, 'metadata', 'active');
473
+ writeWorktreeMetadata(config.worktreePath, config.metadata);
474
+ setStep(config, steps, 'metadata', 'done');
475
+ if (config.isHooksEditingSession) {
476
+ setStep(config, steps, 'hooks-docs', 'active');
477
+ initializeHooksDirectory(config.worktreePath);
478
+ setStep(config, steps, 'hooks-docs', 'done');
479
+ }
480
+ setStep(config, steps, 'worktree-hook', 'active');
481
+ const hookResult = await triggerHookWithProgress('worktree_created', config.projectRoot, config.pane, {
482
+ ...config.hookExtraEnv,
483
+ DMUX_PROGRESS: '1',
484
+ DMUX_STATUS_PREFIX: 'DMUX_STATUS:',
485
+ }, (event) => appendProgressLine(event.line, event.stream), BOOTSTRAP_HOOK_TIMEOUT_MS);
486
+ if (!hookResult.success) {
487
+ throw new Error(hookResult.error || 'worktree_created hook failed');
488
+ }
489
+ setStep(config, steps, 'worktree-hook', 'done');
490
+ if (config.agent === 'gemini') {
491
+ ensureGeminiFolderTrusted(config.worktreePath);
492
+ }
493
+ setStep(config, steps, 'agent', 'active');
494
+ const launchCommand = await buildLaunchCommand(config);
495
+ setStep(config, steps, 'agent', 'done');
496
+ stopRendering('Setup complete. Starting agent...');
497
+ try {
498
+ fs.rmSync(configPath, { force: true });
499
+ }
500
+ catch {
501
+ // Keep going; stale bootstrap configs are harmless.
502
+ }
503
+ return await runAgent(config, launchCommand);
504
+ }
505
+ catch (error) {
506
+ const message = error instanceof Error ? error.message : String(error);
507
+ const activeStep = steps.find((step) => step.state === 'active');
508
+ if (activeStep) {
509
+ setStep(config, steps, activeStep.id, 'failed', message);
510
+ }
511
+ updateViewState({
512
+ currentDetail: message,
513
+ failedMessage: message,
514
+ });
515
+ await enforcePaneTitle(config);
516
+ inkInstance?.unmount();
517
+ inkInstance = null;
518
+ process.stdout.write('\n');
519
+ process.stdout.write('dmux setup failed. The agent was not launched.\n');
520
+ process.stdout.write(`${message}\n`);
521
+ process.stdout.write('Fix the issue above, then close this pane or retry from dmux.\n');
522
+ return 1;
523
+ }
524
+ }
525
+ main()
526
+ .then((code) => {
527
+ process.exitCode = code;
528
+ })
529
+ .catch((error) => {
530
+ process.stderr.write(`${error instanceof Error ? error.stack || error.message : String(error)}\n`);
531
+ process.exitCode = 1;
532
+ });
533
+ //# sourceMappingURL=paneBootstrapRunner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paneBootstrapRunner.js","sourceRoot":"","sources":["../../src/utils/paneBootstrapRunner.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,13 @@
1
1
  import type { DmuxPane, MergeTargetReference } from '../types.js';
2
- import { type AgentName } from './agentLaunch.js';
2
+ import type { AgentName } from './agentLaunch.js';
3
3
  export interface CreatePaneOptions {
4
4
  prompt: string;
5
5
  agent?: AgentName;
6
6
  slugSuffix?: string;
7
7
  slugBase?: string;
8
+ baseBranchOverride?: string;
9
+ branchNameOverride?: string;
10
+ goalMode?: boolean;
8
11
  existingWorktree?: {
9
12
  slug: string;
10
13
  worktreePath: string;
@@ -1 +1 @@
1
- {"version":3,"file":"paneCreation.d.ts","sourceRoot":"","sources":["../../src/utils/paneCreation.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAc,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAe9E,OAAO,EAUL,KAAK,SAAS,EACf,MAAM,kBAAkB,CAAC;AAiB1B,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,YAAY,EAAE,MAAM,CAAC;QACrB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,oBAAoB,EAAE,CAAC;IAC1C,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,QAAQ,EAAE,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,QAAQ,CAAC;IACf,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAgBD;;;GAGG;AACH,wBAAsB,UAAU,CAC9B,OAAO,EAAE,iBAAiB,EAC1B,eAAe,EAAE,SAAS,EAAE,GAC3B,OAAO,CAAC,gBAAgB,CAAC,CAsmB3B;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CAsHf"}
1
+ {"version":3,"file":"paneCreation.d.ts","sourceRoot":"","sources":["../../src/utils/paneCreation.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAc,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAe9E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAclD,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gBAAgB,CAAC,EAAE;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,YAAY,EAAE,MAAM,CAAC;QACrB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,oBAAoB,EAAE,CAAC;IAC1C,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,QAAQ,EAAE,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,QAAQ,CAAC;IACf,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AA2FD;;;GAGG;AACH,wBAAsB,UAAU,CAC9B,OAAO,EAAE,iBAAiB,EAC1B,eAAe,EAAE,SAAS,EAAE,GAC3B,OAAO,CAAC,gBAAgB,CAAC,CA0a3B;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CAsHf"}