dmux 5.7.0 → 5.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -0
- package/dist/DmuxApp.d.ts.map +1 -1
- package/dist/DmuxApp.js +9 -8
- package/dist/DmuxApp.js.map +1 -1
- package/dist/components/inputs/InlineCursorInput.d.ts +10 -0
- package/dist/components/inputs/InlineCursorInput.d.ts.map +1 -0
- package/dist/components/inputs/InlineCursorInput.js +101 -0
- package/dist/components/inputs/InlineCursorInput.js.map +1 -0
- package/dist/components/popups/newPaneFieldNavigation.d.ts +9 -0
- package/dist/components/popups/newPaneFieldNavigation.d.ts.map +1 -0
- package/dist/components/popups/newPaneFieldNavigation.js +20 -0
- package/dist/components/popups/newPaneFieldNavigation.js.map +1 -0
- package/dist/components/popups/newPaneGitOptions.d.ts +23 -0
- package/dist/components/popups/newPaneGitOptions.d.ts.map +1 -0
- package/dist/components/popups/newPaneGitOptions.js +91 -0
- package/dist/components/popups/newPaneGitOptions.js.map +1 -0
- package/dist/components/popups/newPanePopup.d.ts +7 -2
- package/dist/components/popups/newPanePopup.d.ts.map +1 -1
- package/dist/components/popups/newPanePopup.js +256 -19
- package/dist/components/popups/newPanePopup.js.map +1 -1
- package/dist/hooks/useInputHandling.d.ts +3 -2
- package/dist/hooks/useInputHandling.d.ts.map +1 -1
- package/dist/hooks/useInputHandling.js +10 -15
- package/dist/hooks/useInputHandling.js.map +1 -1
- package/dist/hooks/usePaneCreation.d.ts +5 -3
- package/dist/hooks/usePaneCreation.d.ts.map +1 -1
- package/dist/hooks/usePaneCreation.js +16 -3
- package/dist/hooks/usePaneCreation.js.map +1 -1
- package/dist/index.js +14 -13
- package/dist/index.js.map +1 -1
- package/dist/server/embedded-assets.d.ts.map +1 -1
- package/dist/server/embedded-assets.js +4 -12
- package/dist/server/embedded-assets.js.map +1 -1
- package/dist/services/PopupManager.d.ts +7 -2
- package/dist/services/PopupManager.d.ts.map +1 -1
- package/dist/services/PopupManager.js +30 -3
- package/dist/services/PopupManager.js.map +1 -1
- package/dist/types.d.ts +6 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/devWatchCommand.d.ts.map +1 -1
- package/dist/utils/devWatchCommand.js +6 -2
- package/dist/utils/devWatchCommand.js.map +1 -1
- package/dist/utils/dmuxCommand.d.ts +4 -3
- package/dist/utils/dmuxCommand.d.ts.map +1 -1
- package/dist/utils/dmuxCommand.js +15 -14
- package/dist/utils/dmuxCommand.js.map +1 -1
- package/dist/utils/generated-agents-doc.d.ts +1 -1
- package/dist/utils/generated-agents-doc.d.ts.map +1 -1
- package/dist/utils/generated-agents-doc.js +46 -11
- package/dist/utils/generated-agents-doc.js.map +1 -1
- package/dist/utils/git.d.ts +8 -0
- package/dist/utils/git.d.ts.map +1 -1
- package/dist/utils/git.js +26 -0
- package/dist/utils/git.js.map +1 -1
- package/dist/utils/hooks.d.ts +15 -0
- package/dist/utils/hooks.d.ts.map +1 -1
- package/dist/utils/hooks.js +105 -0
- package/dist/utils/hooks.js.map +1 -1
- package/dist/utils/hooksDocs.d.ts +1 -1
- package/dist/utils/hooksDocs.d.ts.map +1 -1
- package/dist/utils/hooksDocs.js +21 -11
- package/dist/utils/hooksDocs.js.map +1 -1
- package/dist/utils/paneBootstrapConfig.d.ts +27 -0
- package/dist/utils/paneBootstrapConfig.d.ts.map +1 -0
- package/dist/utils/paneBootstrapConfig.js +2 -0
- package/dist/utils/paneBootstrapConfig.js.map +1 -0
- package/dist/utils/paneBootstrapRunner.d.ts +3 -0
- package/dist/utils/paneBootstrapRunner.d.ts.map +1 -0
- package/dist/utils/paneBootstrapRunner.js +517 -0
- package/dist/utils/paneBootstrapRunner.js.map +1 -0
- package/dist/utils/paneCreation.d.ts +3 -1
- package/dist/utils/paneCreation.d.ts.map +1 -1
- package/dist/utils/paneCreation.js +138 -267
- package/dist/utils/paneCreation.js.map +1 -1
- package/dist/utils/paneNaming.d.ts +16 -0
- package/dist/utils/paneNaming.d.ts.map +1 -0
- package/dist/utils/paneNaming.js +47 -0
- package/dist/utils/paneNaming.js.map +1 -0
- package/dist/utils/pathEnvironment.d.ts +6 -0
- package/dist/utils/pathEnvironment.d.ts.map +1 -0
- package/dist/utils/pathEnvironment.js +59 -0
- package/dist/utils/pathEnvironment.js.map +1 -0
- package/dist/utils/settingsManager.d.ts.map +1 -1
- package/dist/utils/settingsManager.js +10 -0
- package/dist/utils/settingsManager.js.map +1 -1
- package/dist/utils/shellPaneDetection.d.ts.map +1 -1
- package/dist/utils/shellPaneDetection.js +4 -0
- package/dist/utils/shellPaneDetection.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,24 +1,24 @@
|
|
|
1
1
|
import path from 'path';
|
|
2
2
|
import * as fs from 'fs';
|
|
3
3
|
import { execSync } from 'child_process';
|
|
4
|
+
import { fileURLToPath } from 'url';
|
|
4
5
|
import { TmuxService } from '../services/TmuxService.js';
|
|
5
6
|
import { ensurePaneBorderStatusForCurrentSession, setupSidebarLayout, getTerminalDimensions, splitPane, } from './tmux.js';
|
|
6
7
|
import { SIDEBAR_WIDTH, recalculateAndApplyLayout } from './layoutManager.js';
|
|
7
8
|
import { generateSlug } from './slug.js';
|
|
8
9
|
import { capturePaneContent } from './paneCapture.js';
|
|
9
|
-
import { triggerHook
|
|
10
|
+
import { triggerHook } from './hooks.js';
|
|
10
11
|
import { TMUX_SPLIT_DELAY } from '../constants/timing.js';
|
|
11
12
|
import { atomicWriteJsonSync } from './atomicWrite.js';
|
|
12
13
|
import { LogService } from '../services/LogService.js';
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
18
|
-
import { sendPromptViaTmux } from './agentPromptDispatch.js';
|
|
19
|
-
import { readWorktreeMetadata, writeWorktreeMetadata } from './worktreeMetadata.js';
|
|
20
|
-
import { buildCodexHookedCommand, installCodexPaneHooks, } from './codexHooks.js';
|
|
14
|
+
import { getPaneTmuxTitle } from './paneTitle.js';
|
|
15
|
+
import { shellQuote } from './promptStore.js';
|
|
16
|
+
import { isValidBranchName, isValidFullBranchName } from './git.js';
|
|
17
|
+
import { resolvePaneNaming } from './paneNaming.js';
|
|
18
|
+
import { readWorktreeMetadata } from './worktreeMetadata.js';
|
|
21
19
|
import { resolveProjectColorTheme } from './paneColors.js';
|
|
20
|
+
import { StateManager } from '../shared/StateManager.js';
|
|
21
|
+
import { DMUX_BOOTSTRAP_PANE_TITLE_PREFIX, } from './paneBootstrapConfig.js';
|
|
22
22
|
async function waitForPaneReady(tmuxService, paneId, timeoutMs = 600) {
|
|
23
23
|
const start = Date.now();
|
|
24
24
|
while ((Date.now() - start) < timeoutMs) {
|
|
@@ -28,12 +28,59 @@ async function waitForPaneReady(tmuxService, paneId, timeoutMs = 600) {
|
|
|
28
28
|
await new Promise((resolve) => setTimeout(resolve, 30));
|
|
29
29
|
}
|
|
30
30
|
}
|
|
31
|
+
function getCurrentWindowPaneIds(tmuxService) {
|
|
32
|
+
try {
|
|
33
|
+
return tmuxService.getAllPaneIdsSync();
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
return [];
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
function getVisibleExistingPaneIds(existingPanes, currentWindowPaneIds) {
|
|
40
|
+
return existingPanes
|
|
41
|
+
.filter((pane) => {
|
|
42
|
+
if (currentWindowPaneIds.length > 0) {
|
|
43
|
+
return currentWindowPaneIds.includes(pane.paneId);
|
|
44
|
+
}
|
|
45
|
+
return !pane.hidden;
|
|
46
|
+
})
|
|
47
|
+
.map((pane) => pane.paneId);
|
|
48
|
+
}
|
|
49
|
+
function getPaneSplitTarget(existingPanes, currentWindowPaneIds, controlPaneId) {
|
|
50
|
+
const visibleExistingPaneIds = getVisibleExistingPaneIds(existingPanes, currentWindowPaneIds);
|
|
51
|
+
return visibleExistingPaneIds[visibleExistingPaneIds.length - 1] || controlPaneId;
|
|
52
|
+
}
|
|
53
|
+
function resolvePaneBootstrapRunnerPath() {
|
|
54
|
+
const currentFile = fileURLToPath(import.meta.url);
|
|
55
|
+
const utilsDir = path.dirname(currentFile);
|
|
56
|
+
const compiledRunner = path.join(utilsDir, 'paneBootstrapRunner.js');
|
|
57
|
+
if (fs.existsSync(compiledRunner)) {
|
|
58
|
+
return compiledRunner;
|
|
59
|
+
}
|
|
60
|
+
return path.join(utilsDir, 'paneBootstrapRunner.ts');
|
|
61
|
+
}
|
|
62
|
+
function writePaneBootstrapConfig(projectRoot, slug, config) {
|
|
63
|
+
const bootstrapDir = path.join(projectRoot, '.dmux', 'bootstrap');
|
|
64
|
+
fs.mkdirSync(bootstrapDir, { recursive: true });
|
|
65
|
+
const configPath = path.join(bootstrapDir, `${slug}-${Date.now()}-${Math.random().toString(36).slice(2, 8)}.json`);
|
|
66
|
+
fs.writeFileSync(configPath, JSON.stringify(config, null, 2), 'utf-8');
|
|
67
|
+
return configPath;
|
|
68
|
+
}
|
|
69
|
+
function buildPaneBootstrapCommand(runnerPath, configPath, worktreePath) {
|
|
70
|
+
const statusVar = '__dmux_bootstrap_status';
|
|
71
|
+
return [
|
|
72
|
+
`${shellQuote(process.execPath)} ${shellQuote(runnerPath)} ${shellQuote(configPath)}`,
|
|
73
|
+
`${statusVar}=$?`,
|
|
74
|
+
`if [ -d ${shellQuote(worktreePath)} ]; then cd ${shellQuote(worktreePath)}; fi`,
|
|
75
|
+
`test $${statusVar} -eq 0 || true`,
|
|
76
|
+
].join('; ');
|
|
77
|
+
}
|
|
31
78
|
/**
|
|
32
79
|
* Core pane creation logic that can be used by both TUI and API
|
|
33
80
|
* Returns the newly created pane and whether agent choice is needed
|
|
34
81
|
*/
|
|
35
82
|
export async function createPane(options, availableAgents) {
|
|
36
|
-
const { prompt, projectName, existingPanes, slugSuffix, slugBase, existingWorktree, startPointBranch, mergeTargetChain, skipAgentSelection = false, sessionConfigPath: optionsSessionConfigPath, sessionProjectRoot: optionsSessionProjectRoot, } = options;
|
|
83
|
+
const { prompt, projectName, existingPanes, slugSuffix, slugBase, baseBranchOverride, branchNameOverride, existingWorktree, startPointBranch, mergeTargetChain, skipAgentSelection = false, sessionConfigPath: optionsSessionConfigPath, sessionProjectRoot: optionsSessionProjectRoot, } = options;
|
|
37
84
|
let { agent, projectRoot: optionsProjectRoot } = options;
|
|
38
85
|
// Load settings to check for default agent and autopilot
|
|
39
86
|
const { SettingsManager } = await import('./settingsManager.js');
|
|
@@ -105,20 +152,38 @@ export async function createPane(options, availableAgents) {
|
|
|
105
152
|
if (branchPrefix && !isValidBranchName(branchPrefix)) {
|
|
106
153
|
throw new Error(`Invalid branch prefix: ${branchPrefix}`);
|
|
107
154
|
}
|
|
108
|
-
|
|
155
|
+
const overrideBranchName = (branchNameOverride || '').trim();
|
|
156
|
+
if (overrideBranchName && !isValidFullBranchName(overrideBranchName)) {
|
|
157
|
+
throw new Error(`Invalid branch name override: ${overrideBranchName}`);
|
|
158
|
+
}
|
|
159
|
+
const overrideBaseBranch = (baseBranchOverride || '').trim();
|
|
160
|
+
if (overrideBaseBranch && !isValidFullBranchName(overrideBaseBranch)) {
|
|
161
|
+
throw new Error(`Invalid base branch override: ${overrideBaseBranch}`);
|
|
162
|
+
}
|
|
163
|
+
// Generate slug/worktree + branch names.
|
|
164
|
+
// Explicit branch name override takes precedence over branchPrefix.
|
|
109
165
|
const generatedSlug = existingWorktree
|
|
110
166
|
? existingWorktree.slug
|
|
111
167
|
: (slugBase || await generateSlug(prompt));
|
|
112
|
-
const
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
:
|
|
168
|
+
const naming = resolvePaneNaming({
|
|
169
|
+
generatedSlug,
|
|
170
|
+
slugSuffix,
|
|
171
|
+
branchPrefix,
|
|
172
|
+
baseBranchSetting: settings.baseBranch,
|
|
173
|
+
baseBranchOverride: overrideBaseBranch,
|
|
174
|
+
branchNameOverride: overrideBranchName,
|
|
175
|
+
});
|
|
176
|
+
const slug = existingWorktree ? existingWorktree.slug : naming.slug;
|
|
177
|
+
const branchName = existingWorktree ? existingWorktree.branchName : naming.branchName;
|
|
178
|
+
const effectiveBaseBranch = naming.baseBranch;
|
|
118
179
|
const tmuxService = TmuxService.getInstance();
|
|
119
180
|
const worktreePath = existingWorktree?.worktreePath
|
|
120
181
|
|| path.join(projectRoot, '.dmux', 'worktrees', slug);
|
|
182
|
+
if (!existingWorktree && fs.existsSync(worktreePath)) {
|
|
183
|
+
throw new Error(`Worktree path already exists: ${worktreePath}. Choose a different branch/worktree name.`);
|
|
184
|
+
}
|
|
121
185
|
const originalPaneId = tmuxService.getCurrentPaneIdSync();
|
|
186
|
+
let currentWindowPaneIds = getCurrentWindowPaneIds(tmuxService);
|
|
122
187
|
// Load config to get control pane info
|
|
123
188
|
const configPath = optionsSessionConfigPath
|
|
124
189
|
|| path.join(sessionProjectRoot, '.dmux', 'dmux.config.json');
|
|
@@ -175,11 +240,9 @@ export async function createPane(options, availableAgents) {
|
|
|
175
240
|
paneInfo = setupSidebarLayout(controlPaneId, projectRoot);
|
|
176
241
|
}
|
|
177
242
|
else {
|
|
178
|
-
//
|
|
179
|
-
//
|
|
180
|
-
const
|
|
181
|
-
const targetPane = dmuxPaneIds[dmuxPaneIds.length - 1]; // Split from the most recent dmux pane
|
|
182
|
-
// Always split horizontally - the layout manager will organize panes optimally
|
|
243
|
+
// Split from a pane in the active dmux window. Hidden panes live in
|
|
244
|
+
// detached tmux windows, so targeting them would create a hidden pane.
|
|
245
|
+
const targetPane = getPaneSplitTarget(existingPanes, currentWindowPaneIds, controlPaneId);
|
|
183
246
|
paneInfo = splitPane({ targetPane, cwd: projectRoot });
|
|
184
247
|
}
|
|
185
248
|
}
|
|
@@ -208,8 +271,8 @@ export async function createPane(options, availableAgents) {
|
|
|
208
271
|
paneInfo = setupSidebarLayout(controlPaneId, projectRoot);
|
|
209
272
|
}
|
|
210
273
|
else {
|
|
211
|
-
|
|
212
|
-
const targetPane =
|
|
274
|
+
currentWindowPaneIds = getCurrentWindowPaneIds(tmuxService);
|
|
275
|
+
const targetPane = getPaneSplitTarget(existingPanes, currentWindowPaneIds, controlPaneId);
|
|
213
276
|
paneInfo = splitPane({ targetPane, cwd: projectRoot });
|
|
214
277
|
}
|
|
215
278
|
}
|
|
@@ -219,12 +282,11 @@ export async function createPane(options, availableAgents) {
|
|
|
219
282
|
}
|
|
220
283
|
}
|
|
221
284
|
await waitForPaneReady(tmuxService, paneInfo);
|
|
222
|
-
//
|
|
285
|
+
// Mark the pane as dmux-owned immediately. Without this, the shell-pane
|
|
286
|
+
// detector can race the config save and classify a still-bootstrapping
|
|
287
|
+
// worktree pane as a user-created shell pane.
|
|
223
288
|
try {
|
|
224
|
-
|
|
225
|
-
? slug
|
|
226
|
-
: buildWorktreePaneTitle(slug, projectRoot, paneProjectName);
|
|
227
|
-
await tmuxService.setPaneTitle(paneInfo, paneTitle);
|
|
289
|
+
await tmuxService.setPaneTitle(paneInfo, `${DMUX_BOOTSTRAP_PANE_TITLE_PREFIX}${slug}`);
|
|
228
290
|
}
|
|
229
291
|
catch {
|
|
230
292
|
// Ignore if setting title fails
|
|
@@ -232,7 +294,8 @@ export async function createPane(options, availableAgents) {
|
|
|
232
294
|
// Apply optimal layout using the layout manager
|
|
233
295
|
if (controlPaneId) {
|
|
234
296
|
const dimensions = getTerminalDimensions();
|
|
235
|
-
const
|
|
297
|
+
const visibleContentPaneIds = getVisibleExistingPaneIds(existingPanes, currentWindowPaneIds);
|
|
298
|
+
const allContentPaneIds = [...visibleContentPaneIds, paneInfo];
|
|
236
299
|
await recalculateAndApplyLayout(controlPaneId, allContentPaneIds, dimensions.width, dimensions.height);
|
|
237
300
|
// Refresh tmux to apply changes
|
|
238
301
|
await tmuxService.refreshClient();
|
|
@@ -248,139 +311,11 @@ export async function createPane(options, availableAgents) {
|
|
|
248
311
|
// Check if this is a hooks editing session (before worktree creation)
|
|
249
312
|
const isHooksEditingSession = !!prompt && (/(create|edit|modify).*(dmux|\.)?.*hooks/i.test(prompt)
|
|
250
313
|
|| /\.dmux-hooks/i.test(prompt));
|
|
251
|
-
//
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
throw new Error(`Existing worktree not found at ${worktreePath}`);
|
|
256
|
-
}
|
|
257
|
-
await tmuxService.sendShellCommand(paneInfo, `cd "${worktreePath}"`);
|
|
258
|
-
await tmuxService.sendTmuxKeys(paneInfo, 'Enter');
|
|
259
|
-
await new Promise((resolve) => setTimeout(resolve, 300));
|
|
260
|
-
}
|
|
261
|
-
else {
|
|
262
|
-
// IMPORTANT: Prune stale worktrees first to avoid conflicts
|
|
263
|
-
// This must run synchronously from dmux, not in the pane
|
|
264
|
-
try {
|
|
265
|
-
execSync('git worktree prune', {
|
|
266
|
-
encoding: 'utf-8',
|
|
267
|
-
stdio: 'pipe',
|
|
268
|
-
cwd: projectRoot,
|
|
269
|
-
});
|
|
270
|
-
}
|
|
271
|
-
catch {
|
|
272
|
-
// Ignore prune errors, proceed anyway
|
|
273
|
-
}
|
|
274
|
-
// Validate and resolve base branch for new worktrees
|
|
275
|
-
const baseBranch = settings.baseBranch || '';
|
|
276
|
-
if (baseBranch && !isValidBranchName(baseBranch)) {
|
|
277
|
-
throw new Error(`Invalid base branch name: ${baseBranch}`);
|
|
278
|
-
}
|
|
279
|
-
const resolvedStartPoint = startPointBranch || baseBranch;
|
|
280
|
-
if (resolvedStartPoint && !isValidBranchName(resolvedStartPoint)) {
|
|
281
|
-
throw new Error(`Invalid worktree start-point branch name: ${resolvedStartPoint}`);
|
|
282
|
-
}
|
|
283
|
-
if (resolvedStartPoint) {
|
|
284
|
-
try {
|
|
285
|
-
execSync(`git rev-parse --verify --end-of-options "${resolvedStartPoint}"`, {
|
|
286
|
-
stdio: 'pipe',
|
|
287
|
-
cwd: projectRoot,
|
|
288
|
-
});
|
|
289
|
-
}
|
|
290
|
-
catch {
|
|
291
|
-
if (startPointBranch) {
|
|
292
|
-
throw new Error(`Worktree start-point branch "${resolvedStartPoint}" does not exist anymore. Reopen the parent worktree or recreate it before branching again.`);
|
|
293
|
-
}
|
|
294
|
-
throw new Error(`Base branch "${resolvedStartPoint}" does not exist. Update the baseBranch setting to a valid branch name.`);
|
|
295
|
-
}
|
|
296
|
-
}
|
|
297
|
-
const maxWorktreeAttempts = 3;
|
|
298
|
-
const maxWaitTime = 5000; // 5 seconds max
|
|
299
|
-
const checkInterval = 100; // Check every 100ms
|
|
300
|
-
let worktreeCreated = fs.existsSync(worktreePath);
|
|
301
|
-
for (let attempt = 1; attempt <= maxWorktreeAttempts && !worktreeCreated; attempt++) {
|
|
302
|
-
// Check if branch already exists (from a deleted worktree or a previous attempt)
|
|
303
|
-
let branchExists = false;
|
|
304
|
-
try {
|
|
305
|
-
execSync(`git show-ref --verify --quiet "refs/heads/${branchName}"`, {
|
|
306
|
-
stdio: 'pipe',
|
|
307
|
-
cwd: projectRoot,
|
|
308
|
-
});
|
|
309
|
-
branchExists = true;
|
|
310
|
-
}
|
|
311
|
-
catch {
|
|
312
|
-
// Branch doesn't exist yet
|
|
313
|
-
}
|
|
314
|
-
// Build worktree command:
|
|
315
|
-
// - If branch exists, use it (don't create with -b)
|
|
316
|
-
// - If branch doesn't exist, create it with -b, optionally from a configured base branch
|
|
317
|
-
const startPoint = resolvedStartPoint ? ` "${resolvedStartPoint}"` : '';
|
|
318
|
-
const worktreeAddCmd = branchExists
|
|
319
|
-
? `git worktree add "${worktreePath}" "${branchName}"`
|
|
320
|
-
: `git worktree add "${worktreePath}" -b "${branchName}"${startPoint}`;
|
|
321
|
-
const worktreeCmd = `cd "${projectRoot}" && ${worktreeAddCmd} && cd "${worktreePath}"`;
|
|
322
|
-
// Send the git worktree command (auto-quoted by sendShellCommand)
|
|
323
|
-
await tmuxService.sendShellCommand(paneInfo, worktreeCmd);
|
|
324
|
-
await tmuxService.sendTmuxKeys(paneInfo, 'Enter');
|
|
325
|
-
const startTime = Date.now();
|
|
326
|
-
while (!fs.existsSync(worktreePath) && (Date.now() - startTime) < maxWaitTime) {
|
|
327
|
-
await new Promise((resolve) => setTimeout(resolve, checkInterval));
|
|
328
|
-
}
|
|
329
|
-
worktreeCreated = fs.existsSync(worktreePath);
|
|
330
|
-
if (!worktreeCreated && attempt < maxWorktreeAttempts) {
|
|
331
|
-
await new Promise((resolve) => setTimeout(resolve, 250 * attempt));
|
|
332
|
-
}
|
|
333
|
-
}
|
|
334
|
-
// Verify worktree was created successfully
|
|
335
|
-
if (!worktreeCreated) {
|
|
336
|
-
throw new Error(`Worktree directory not created at ${worktreePath} after ${maxWorktreeAttempts} attempts`);
|
|
337
|
-
}
|
|
338
|
-
// Give a bit more time for git to finish setting up the worktree
|
|
339
|
-
await new Promise((resolve) => setTimeout(resolve, 500));
|
|
340
|
-
}
|
|
341
|
-
try {
|
|
342
|
-
writeWorktreeMetadata(worktreePath, {
|
|
343
|
-
agent,
|
|
344
|
-
permissionMode: settings.permissionMode,
|
|
345
|
-
displayName: existingWorktreeMetadata?.displayName,
|
|
346
|
-
branchName: branchName !== slug ? branchName : undefined,
|
|
347
|
-
mergeTargetChain,
|
|
348
|
-
});
|
|
349
|
-
}
|
|
350
|
-
catch (metadataError) {
|
|
351
|
-
LogService.getInstance().warn(`Failed to persist worktree metadata for ${slug}: ${metadataError}`, 'paneCreation');
|
|
352
|
-
}
|
|
353
|
-
// Initialize .dmux-hooks if this is a hooks editing session
|
|
354
|
-
if (isHooksEditingSession) {
|
|
355
|
-
initializeHooksDirectory(worktreePath);
|
|
356
|
-
}
|
|
314
|
+
// Validate branch settings before handing the slow setup work to the pane.
|
|
315
|
+
const resolvedStartPoint = startPointBranch || effectiveBaseBranch || undefined;
|
|
316
|
+
if (resolvedStartPoint && !isValidBranchName(resolvedStartPoint)) {
|
|
317
|
+
throw new Error(`Invalid worktree start-point branch name: ${resolvedStartPoint}`);
|
|
357
318
|
}
|
|
358
|
-
catch (error) {
|
|
359
|
-
// Worktree creation failed - kill the pane and abort. Leaving the pane
|
|
360
|
-
// open at projectRoot is dangerous because the agent would run against
|
|
361
|
-
// the main checkout instead of an isolated worktree.
|
|
362
|
-
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
363
|
-
LogService.getInstance().error(`Worktree creation failed for ${slug}: ${errorMsg}`, 'paneCreation', undefined, error instanceof Error ? error : undefined);
|
|
364
|
-
try {
|
|
365
|
-
await tmuxService.killPane(paneInfo);
|
|
366
|
-
}
|
|
367
|
-
catch (killError) {
|
|
368
|
-
LogService.getInstance().warn(`Failed to kill pane ${paneInfo} after worktree creation failure: ${killError}`, 'paneCreation');
|
|
369
|
-
}
|
|
370
|
-
if (controlPaneId) {
|
|
371
|
-
try {
|
|
372
|
-
await tmuxService.selectPane(controlPaneId);
|
|
373
|
-
}
|
|
374
|
-
catch {
|
|
375
|
-
// best-effort focus restore
|
|
376
|
-
}
|
|
377
|
-
}
|
|
378
|
-
throw new Error(`Failed to create worktree for "${slug}": ${errorMsg}`);
|
|
379
|
-
}
|
|
380
|
-
// Build the pane object now so the worktree_created hook can receive full
|
|
381
|
-
// pane context. The hook must succeed before we launch the agent — a
|
|
382
|
-
// failing hook means the worktree is in an unknown state and running a
|
|
383
|
-
// prompt against it would be dangerous.
|
|
384
319
|
const newPane = {
|
|
385
320
|
id: `dmux-${Date.now()}`,
|
|
386
321
|
slug,
|
|
@@ -393,119 +328,55 @@ export async function createPane(options, availableAgents) {
|
|
|
393
328
|
colorTheme: resolveProjectColorTheme(projectRoot, configSidebarProjects),
|
|
394
329
|
worktreePath,
|
|
395
330
|
agent,
|
|
331
|
+
hidden: false,
|
|
396
332
|
permissionMode: settings.permissionMode,
|
|
397
333
|
autopilot: settings.enableAutopilotByDefault ?? false,
|
|
398
334
|
mergeTargetChain,
|
|
399
335
|
};
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
336
|
+
const state = StateManager.getInstance().getState();
|
|
337
|
+
const tmuxTitle = getPaneTmuxTitle(newPane, sessionProjectRoot);
|
|
338
|
+
const hookExtraEnv = state.serverPort
|
|
339
|
+
? { DMUX_SERVER_PORT: String(state.serverPort) }
|
|
340
|
+
: undefined;
|
|
341
|
+
const bootstrapConfig = {
|
|
342
|
+
version: 1,
|
|
343
|
+
projectRoot,
|
|
344
|
+
worktreePath,
|
|
345
|
+
branchName,
|
|
346
|
+
slug,
|
|
347
|
+
prompt,
|
|
348
|
+
agent,
|
|
349
|
+
permissionMode: settings.permissionMode,
|
|
350
|
+
pane: newPane,
|
|
351
|
+
tmuxTitle,
|
|
352
|
+
existingWorktree: !!existingWorktree,
|
|
353
|
+
resolvedStartPoint,
|
|
354
|
+
isHooksEditingSession,
|
|
355
|
+
metadata: {
|
|
356
|
+
agent,
|
|
357
|
+
permissionMode: settings.permissionMode,
|
|
358
|
+
displayName: existingWorktreeMetadata?.displayName,
|
|
359
|
+
branchName: branchName !== slug ? branchName : undefined,
|
|
360
|
+
mergeTargetChain,
|
|
361
|
+
},
|
|
362
|
+
hookExtraEnv,
|
|
363
|
+
};
|
|
364
|
+
try {
|
|
365
|
+
const bootstrapConfigPath = writePaneBootstrapConfig(projectRoot, slug, bootstrapConfig);
|
|
366
|
+
const bootstrapCommand = buildPaneBootstrapCommand(resolvePaneBootstrapRunnerPath(), bootstrapConfigPath, worktreePath);
|
|
367
|
+
await tmuxService.sendShellCommand(paneInfo, bootstrapCommand);
|
|
368
|
+
await tmuxService.sendTmuxKeys(paneInfo, 'Enter');
|
|
369
|
+
}
|
|
370
|
+
catch (error) {
|
|
371
|
+
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
372
|
+
LogService.getInstance().error(`Failed to start pane bootstrap for ${slug}: ${errorMsg}`, 'paneCreation', undefined, error instanceof Error ? error : undefined);
|
|
407
373
|
try {
|
|
408
374
|
await tmuxService.killPane(paneInfo);
|
|
409
375
|
}
|
|
410
|
-
catch
|
|
411
|
-
|
|
412
|
-
}
|
|
413
|
-
if (controlPaneId) {
|
|
414
|
-
try {
|
|
415
|
-
await tmuxService.selectPane(controlPaneId);
|
|
416
|
-
}
|
|
417
|
-
catch {
|
|
418
|
-
// best-effort focus restore
|
|
419
|
-
}
|
|
420
|
-
}
|
|
421
|
-
throw new Error(`worktree_created hook failed for "${slug}": ${hookError}`);
|
|
422
|
-
}
|
|
423
|
-
// Launch agent if specified
|
|
424
|
-
const hasInitialPrompt = !!(prompt && prompt.trim());
|
|
425
|
-
if (agent) {
|
|
426
|
-
if (agent === 'gemini') {
|
|
427
|
-
const geminiWorkspacePath = fs.existsSync(worktreePath)
|
|
428
|
-
? worktreePath
|
|
429
|
-
: projectRoot;
|
|
430
|
-
ensureGeminiFolderTrusted(geminiWorkspacePath);
|
|
431
|
-
}
|
|
432
|
-
let codexHookEventFile;
|
|
433
|
-
if (agent === 'codex') {
|
|
434
|
-
try {
|
|
435
|
-
codexHookEventFile = installCodexPaneHooks({
|
|
436
|
-
worktreePath,
|
|
437
|
-
dmuxPaneId: newPane.id,
|
|
438
|
-
tmuxPaneId: paneInfo,
|
|
439
|
-
}).eventFile;
|
|
440
|
-
}
|
|
441
|
-
catch (error) {
|
|
442
|
-
LogService.getInstance().warn(`Failed to install Codex hooks for ${slug}: ${error instanceof Error ? error.message : String(error)}`, 'paneCreation', newPane.id);
|
|
443
|
-
}
|
|
444
|
-
}
|
|
445
|
-
const promptTransport = getPromptTransport(agent);
|
|
446
|
-
const shouldSendPromptViaTmux = hasInitialPrompt && promptTransport === 'send-keys';
|
|
447
|
-
let baselineCommand;
|
|
448
|
-
if (shouldSendPromptViaTmux) {
|
|
449
|
-
try {
|
|
450
|
-
baselineCommand = await tmuxService.getPaneCurrentCommand(paneInfo);
|
|
451
|
-
}
|
|
452
|
-
catch {
|
|
453
|
-
baselineCommand = undefined;
|
|
454
|
-
}
|
|
455
|
-
}
|
|
456
|
-
let launchCommand;
|
|
457
|
-
if (hasInitialPrompt && !shouldSendPromptViaTmux) {
|
|
458
|
-
let promptFilePath = null;
|
|
459
|
-
try {
|
|
460
|
-
promptFilePath = await writePromptFile(projectRoot, slug, prompt);
|
|
461
|
-
}
|
|
462
|
-
catch {
|
|
463
|
-
// Fall back to inline escaping if prompt file write fails
|
|
464
|
-
}
|
|
465
|
-
if (promptFilePath) {
|
|
466
|
-
const promptBootstrap = buildPromptReadAndDeleteSnippet(promptFilePath);
|
|
467
|
-
launchCommand = `${promptBootstrap}; ${buildInitialPromptCommand(agent, '"$DMUX_PROMPT_CONTENT"', settings.permissionMode)}`;
|
|
468
|
-
}
|
|
469
|
-
else {
|
|
470
|
-
const escapedPrompt = prompt
|
|
471
|
-
.replace(/\\/g, '\\\\')
|
|
472
|
-
.replace(/"/g, '\\"')
|
|
473
|
-
.replace(/`/g, '\\`')
|
|
474
|
-
.replace(/\$/g, '\\$');
|
|
475
|
-
launchCommand = buildInitialPromptCommand(agent, `"${escapedPrompt}"`, settings.permissionMode);
|
|
476
|
-
}
|
|
477
|
-
}
|
|
478
|
-
else {
|
|
479
|
-
launchCommand = buildAgentCommand(agent, settings.permissionMode);
|
|
480
|
-
}
|
|
481
|
-
if (agent === 'codex') {
|
|
482
|
-
launchCommand = buildCodexHookedCommand(launchCommand, {
|
|
483
|
-
dmuxPaneId: newPane.id,
|
|
484
|
-
tmuxPaneId: paneInfo,
|
|
485
|
-
eventFile: codexHookEventFile,
|
|
486
|
-
});
|
|
487
|
-
}
|
|
488
|
-
await tmuxService.sendShellCommand(paneInfo, launchCommand);
|
|
489
|
-
await tmuxService.sendTmuxKeys(paneInfo, 'Enter');
|
|
490
|
-
if (shouldSendPromptViaTmux) {
|
|
491
|
-
await sendPromptViaTmux({
|
|
492
|
-
paneId: paneInfo,
|
|
493
|
-
prompt,
|
|
494
|
-
tmuxService,
|
|
495
|
-
expectedCommand: getAgentProcessName(agent),
|
|
496
|
-
baselineCommand,
|
|
497
|
-
prePromptKeys: getSendKeysPrePrompt(agent),
|
|
498
|
-
submitKeys: getSendKeysSubmit(agent),
|
|
499
|
-
postPasteDelayMs: getSendKeysPostPasteDelayMs(agent),
|
|
500
|
-
readyDelayMs: getSendKeysReadyDelayMs(agent),
|
|
501
|
-
});
|
|
502
|
-
}
|
|
503
|
-
if (agent === 'claude') {
|
|
504
|
-
// Auto-approve trust prompts for Claude (workspace trust, not edit permissions)
|
|
505
|
-
autoApproveTrustPrompt(paneInfo, prompt).catch(() => {
|
|
506
|
-
// Ignore errors in background monitoring
|
|
507
|
-
});
|
|
376
|
+
catch {
|
|
377
|
+
// best-effort cleanup
|
|
508
378
|
}
|
|
379
|
+
throw new Error(`Failed to start pane bootstrap for "${slug}": ${errorMsg}`);
|
|
509
380
|
}
|
|
510
381
|
// Keep focus on the new pane
|
|
511
382
|
await tmuxService.selectPane(paneInfo);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paneCreation.js","sourceRoot":"","sources":["../../src/utils/paneCreation.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"paneCreation.js","sourceRoot":"","sources":["../../src/utils/paneCreation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export interface ResolvePaneNamingInput {
|
|
2
|
+
generatedSlug: string;
|
|
3
|
+
slugSuffix?: string;
|
|
4
|
+
branchPrefix?: string;
|
|
5
|
+
baseBranchSetting?: string;
|
|
6
|
+
baseBranchOverride?: string;
|
|
7
|
+
branchNameOverride?: string;
|
|
8
|
+
}
|
|
9
|
+
export interface ResolvedPaneNaming {
|
|
10
|
+
slug: string;
|
|
11
|
+
branchName: string;
|
|
12
|
+
baseBranch: string;
|
|
13
|
+
}
|
|
14
|
+
export declare function sanitizeWorktreeSlugFromBranch(branchName: string): string;
|
|
15
|
+
export declare function resolvePaneNaming(input: ResolvePaneNamingInput): ResolvedPaneNaming;
|
|
16
|
+
//# sourceMappingURL=paneNaming.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paneNaming.d.ts","sourceRoot":"","sources":["../../src/utils/paneNaming.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,sBAAsB;IACrC,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAmBD,wBAAgB,8BAA8B,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAWzE;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,GAAG,kBAAkB,CAmBnF"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
function normalizeSuffix(slugSuffix) {
|
|
2
|
+
if (!slugSuffix)
|
|
3
|
+
return '';
|
|
4
|
+
return slugSuffix
|
|
5
|
+
.trim()
|
|
6
|
+
.toLowerCase()
|
|
7
|
+
.replace(/[^a-z0-9-]/g, '-')
|
|
8
|
+
.replace(/-+/g, '-')
|
|
9
|
+
.replace(/^-+|-+$/g, '');
|
|
10
|
+
}
|
|
11
|
+
function appendNormalizedSuffix(value, slugSuffix) {
|
|
12
|
+
const suffix = normalizeSuffix(slugSuffix);
|
|
13
|
+
if (!suffix)
|
|
14
|
+
return value;
|
|
15
|
+
if (value.toLowerCase().endsWith(`-${suffix}`))
|
|
16
|
+
return value;
|
|
17
|
+
return `${value}-${suffix}`;
|
|
18
|
+
}
|
|
19
|
+
export function sanitizeWorktreeSlugFromBranch(branchName) {
|
|
20
|
+
const normalized = branchName
|
|
21
|
+
.trim()
|
|
22
|
+
.toLowerCase()
|
|
23
|
+
.replace(/[\\/]+/g, '-')
|
|
24
|
+
.replace(/[^a-z0-9._-]+/g, '-')
|
|
25
|
+
.replace(/-+/g, '-')
|
|
26
|
+
.replace(/^-+|-+$/g, '')
|
|
27
|
+
.replace(/^\.+|\.+$/g, '');
|
|
28
|
+
return normalized || 'pane';
|
|
29
|
+
}
|
|
30
|
+
export function resolvePaneNaming(input) {
|
|
31
|
+
const generatedSlug = (input.generatedSlug || '').trim() || 'pane';
|
|
32
|
+
const configuredBaseBranch = (input.baseBranchSetting || '').trim();
|
|
33
|
+
const overrideBaseBranch = (input.baseBranchOverride || '').trim();
|
|
34
|
+
const explicitBranchName = (input.branchNameOverride || '').trim();
|
|
35
|
+
const branchPrefix = input.branchPrefix || '';
|
|
36
|
+
const baseBranch = overrideBaseBranch || configuredBaseBranch;
|
|
37
|
+
const baseBranchName = explicitBranchName || `${branchPrefix}${generatedSlug}`;
|
|
38
|
+
const baseSlug = explicitBranchName
|
|
39
|
+
? sanitizeWorktreeSlugFromBranch(explicitBranchName)
|
|
40
|
+
: generatedSlug;
|
|
41
|
+
return {
|
|
42
|
+
slug: appendNormalizedSuffix(baseSlug, input.slugSuffix),
|
|
43
|
+
branchName: appendNormalizedSuffix(baseBranchName, input.slugSuffix),
|
|
44
|
+
baseBranch,
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=paneNaming.js.map
|