dmux 1.0.6 → 1.0.8
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 +2 -0
- package/dist/DmuxApp.d.ts +2 -0
- package/dist/DmuxApp.d.ts.map +1 -1
- package/dist/DmuxApp.js +688 -78
- package/dist/DmuxApp.js.map +1 -1
- package/dist/index.js +33 -6
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -4,6 +4,8 @@ Tools for running agents in parallel are too complex. `dmux` makes running paral
|
|
|
4
4
|
|
|
5
5
|
`dmux` lets you merge the open panes back into your main branch easily, close failed experiments, and spin up more agents quickly.
|
|
6
6
|
|
|
7
|
+

|
|
8
|
+
|
|
7
9
|
## Features
|
|
8
10
|
|
|
9
11
|
- **🚀 Parallel Development**: Work on multiple features simultaneously in separate panes
|
package/dist/DmuxApp.d.ts
CHANGED
package/dist/DmuxApp.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DmuxApp.d.ts","sourceRoot":"","sources":["../src/DmuxApp.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"DmuxApp.d.ts","sourceRoot":"","sources":["../src/DmuxApp.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AA2BnD,UAAU,YAAY;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,QAAA,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CA64CnC,CAAC;AAEF,eAAe,OAAO,CAAC"}
|
package/dist/DmuxApp.js
CHANGED
|
@@ -4,7 +4,7 @@ import TextInput from 'ink-text-input';
|
|
|
4
4
|
import { execSync } from 'child_process';
|
|
5
5
|
import fs from 'fs/promises';
|
|
6
6
|
import path from 'path';
|
|
7
|
-
const DmuxApp = ({ dmuxDir, panesFile, projectName, sessionName }) => {
|
|
7
|
+
const DmuxApp = ({ dmuxDir, panesFile, projectName, sessionName, settingsFile }) => {
|
|
8
8
|
const [panes, setPanes] = useState([]);
|
|
9
9
|
const [selectedIndex, setSelectedIndex] = useState(0);
|
|
10
10
|
const [showNewPaneDialog, setShowNewPaneDialog] = useState(false);
|
|
@@ -16,13 +16,36 @@ const DmuxApp = ({ dmuxDir, panesFile, projectName, sessionName }) => {
|
|
|
16
16
|
const [selectedCloseOption, setSelectedCloseOption] = useState(0);
|
|
17
17
|
const [closingPane, setClosingPane] = useState(null);
|
|
18
18
|
const [isCreatingPane, setIsCreatingPane] = useState(false);
|
|
19
|
+
const [projectSettings, setProjectSettings] = useState({});
|
|
20
|
+
const [showCommandPrompt, setShowCommandPrompt] = useState(null);
|
|
21
|
+
const [commandInput, setCommandInput] = useState('');
|
|
22
|
+
const [showAIPrompt, setShowAIPrompt] = useState(false);
|
|
23
|
+
const [aiChangeRequest, setAIChangeRequest] = useState('');
|
|
24
|
+
const [generatingCommand, setGeneratingCommand] = useState(false);
|
|
25
|
+
const [runningCommand, setRunningCommand] = useState(false);
|
|
19
26
|
const { exit } = useApp();
|
|
20
|
-
// Load panes on mount and refresh periodically
|
|
27
|
+
// Load panes and settings on mount and refresh periodically
|
|
21
28
|
useEffect(() => {
|
|
22
29
|
loadPanes();
|
|
30
|
+
loadSettings();
|
|
23
31
|
const interval = setInterval(loadPanes, 2000);
|
|
24
32
|
return () => clearInterval(interval);
|
|
25
33
|
}, []);
|
|
34
|
+
const loadSettings = async () => {
|
|
35
|
+
try {
|
|
36
|
+
const content = await fs.readFile(settingsFile, 'utf-8');
|
|
37
|
+
const settings = JSON.parse(content);
|
|
38
|
+
setProjectSettings(settings);
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
// Settings file doesn't exist yet, that's ok
|
|
42
|
+
setProjectSettings({});
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
const saveSettings = async (settings) => {
|
|
46
|
+
await fs.writeFile(settingsFile, JSON.stringify(settings, null, 2));
|
|
47
|
+
setProjectSettings(settings);
|
|
48
|
+
};
|
|
26
49
|
const loadPanes = async () => {
|
|
27
50
|
try {
|
|
28
51
|
const content = await fs.readFile(panesFile, 'utf-8');
|
|
@@ -111,50 +134,141 @@ const DmuxApp = ({ dmuxDir, panesFile, projectName, sessionName }) => {
|
|
|
111
134
|
catch { }
|
|
112
135
|
}
|
|
113
136
|
};
|
|
114
|
-
const
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
137
|
+
const findClaudeCommand = async () => {
|
|
138
|
+
// Strategy 1: Try to execute claude directly (in case it's in PATH)
|
|
139
|
+
try {
|
|
140
|
+
execSync('claude --version', { stdio: 'pipe' });
|
|
141
|
+
return 'claude';
|
|
118
142
|
}
|
|
143
|
+
catch { }
|
|
144
|
+
// Strategy 2: Check common installation paths
|
|
145
|
+
const commonPaths = [
|
|
146
|
+
`${process.env.HOME}/.claude/local/claude`,
|
|
147
|
+
`${process.env.HOME}/.local/bin/claude`,
|
|
148
|
+
'/usr/local/bin/claude',
|
|
149
|
+
'/opt/homebrew/bin/claude',
|
|
150
|
+
'/usr/bin/claude',
|
|
151
|
+
`${process.env.HOME}/bin/claude`,
|
|
152
|
+
];
|
|
153
|
+
for (const path of commonPaths) {
|
|
154
|
+
try {
|
|
155
|
+
await fs.access(path);
|
|
156
|
+
// Verify it's executable
|
|
157
|
+
execSync(`${path} --version`, { stdio: 'pipe' });
|
|
158
|
+
return path;
|
|
159
|
+
}
|
|
160
|
+
catch { }
|
|
161
|
+
}
|
|
162
|
+
// Strategy 3: Try to find claude using which in a shell with aliases
|
|
119
163
|
try {
|
|
120
|
-
const
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
body: JSON.stringify({
|
|
127
|
-
model: 'openai/gpt-4o-mini',
|
|
128
|
-
messages: [
|
|
129
|
-
{
|
|
130
|
-
role: 'user',
|
|
131
|
-
content: `Generate a 1-2 word kebab-case slug for this prompt. Only respond with the slug, nothing else: "${prompt}"`
|
|
132
|
-
}
|
|
133
|
-
],
|
|
134
|
-
max_tokens: 10,
|
|
135
|
-
temperature: 0.3
|
|
136
|
-
})
|
|
137
|
-
});
|
|
138
|
-
if (!response.ok) {
|
|
139
|
-
throw new Error(`OpenRouter API error: ${response.status}`);
|
|
164
|
+
const userShell = process.env.SHELL || '/bin/bash';
|
|
165
|
+
const result = execSync(`${userShell} -i -c "which claude 2>/dev/null"`, { encoding: 'utf-8', stdio: 'pipe' }).trim();
|
|
166
|
+
if (result) {
|
|
167
|
+
// Verify it works
|
|
168
|
+
execSync(`${result} --version`, { stdio: 'pipe' });
|
|
169
|
+
return result;
|
|
140
170
|
}
|
|
141
|
-
const data = await response.json();
|
|
142
|
-
const slug = data.choices[0].message.content.trim().toLowerCase().replace(/[^a-z0-9-]/g, '');
|
|
143
|
-
return slug || `dmux-${Date.now()}`;
|
|
144
171
|
}
|
|
145
|
-
catch {
|
|
172
|
+
catch { }
|
|
173
|
+
// Strategy 4: Try to resolve alias
|
|
174
|
+
try {
|
|
175
|
+
const userShell = process.env.SHELL || '/bin/bash';
|
|
176
|
+
const result = execSync(`${userShell} -i -c "type -p claude 2>/dev/null || alias claude 2>/dev/null | sed -n 's/.*=\\(.*\\)/\\1/p' | tr -d \"'\""`, { encoding: 'utf-8', stdio: 'pipe' }).trim();
|
|
177
|
+
if (result) {
|
|
178
|
+
// Clean up the result (remove quotes, etc)
|
|
179
|
+
const cleanPath = result.replace(/^['"]|['"]$/g, '').replace(/^claude=/, '');
|
|
180
|
+
// Verify it works
|
|
181
|
+
execSync(`${cleanPath} --version`, { stdio: 'pipe' });
|
|
182
|
+
return cleanPath;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
catch { }
|
|
186
|
+
return null;
|
|
187
|
+
};
|
|
188
|
+
const callClaudeCode = async (prompt) => {
|
|
189
|
+
try {
|
|
190
|
+
// Use a simpler approach: pipe the prompt via stdin and capture output
|
|
191
|
+
const result = execSync(`echo "${prompt.replace(/"/g, '\\"')}" | claude --no-interactive --max-turns 1 2>/dev/null | head -n 5`, {
|
|
192
|
+
encoding: 'utf-8',
|
|
193
|
+
stdio: 'pipe',
|
|
194
|
+
timeout: 5000 // 5 second timeout
|
|
195
|
+
});
|
|
196
|
+
// Extract just the content (first few lines should have the response)
|
|
197
|
+
const lines = result.trim().split('\n');
|
|
198
|
+
const response = lines.join(' ').trim();
|
|
199
|
+
return response || null;
|
|
200
|
+
}
|
|
201
|
+
catch (error) {
|
|
202
|
+
// Claude not available or error occurred
|
|
203
|
+
return null;
|
|
204
|
+
}
|
|
205
|
+
};
|
|
206
|
+
const generateSlug = async (prompt) => {
|
|
207
|
+
if (!prompt) {
|
|
146
208
|
return `dmux-${Date.now()}`;
|
|
147
209
|
}
|
|
210
|
+
// Try OpenRouter first if API key is available
|
|
211
|
+
const apiKey = process.env.OPENROUTER_API_KEY;
|
|
212
|
+
if (apiKey) {
|
|
213
|
+
try {
|
|
214
|
+
const response = await fetch('https://openrouter.ai/api/v1/chat/completions', {
|
|
215
|
+
method: 'POST',
|
|
216
|
+
headers: {
|
|
217
|
+
'Content-Type': 'application/json',
|
|
218
|
+
'Authorization': `Bearer ${apiKey}`,
|
|
219
|
+
},
|
|
220
|
+
body: JSON.stringify({
|
|
221
|
+
model: 'openai/gpt-4o-mini',
|
|
222
|
+
messages: [
|
|
223
|
+
{
|
|
224
|
+
role: 'user',
|
|
225
|
+
content: `Generate a 1-2 word kebab-case slug for this prompt. Only respond with the slug, nothing else: "${prompt}"`
|
|
226
|
+
}
|
|
227
|
+
],
|
|
228
|
+
max_tokens: 10,
|
|
229
|
+
temperature: 0.3
|
|
230
|
+
})
|
|
231
|
+
});
|
|
232
|
+
if (response.ok) {
|
|
233
|
+
const data = await response.json();
|
|
234
|
+
const slug = data.choices[0].message.content.trim().toLowerCase().replace(/[^a-z0-9-]/g, '');
|
|
235
|
+
if (slug)
|
|
236
|
+
return slug;
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
catch {
|
|
240
|
+
// Fall through to Claude Code
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
// Try Claude Code as fallback
|
|
244
|
+
const claudeResponse = await callClaudeCode(`Generate a 1-2 word kebab-case slug for this prompt. Only respond with the slug, nothing else: "${prompt}"`);
|
|
245
|
+
if (claudeResponse) {
|
|
246
|
+
const slug = claudeResponse.trim().toLowerCase().replace(/[^a-z0-9-]/g, '');
|
|
247
|
+
if (slug)
|
|
248
|
+
return slug;
|
|
249
|
+
}
|
|
250
|
+
// Final fallback
|
|
251
|
+
return `dmux-${Date.now()}`;
|
|
148
252
|
};
|
|
149
253
|
const createNewPane = async (prompt) => {
|
|
150
254
|
setIsCreatingPane(true);
|
|
151
255
|
setStatusMessage('Generating slug...');
|
|
152
256
|
const slug = await generateSlug(prompt);
|
|
153
257
|
setStatusMessage('Creating new pane...');
|
|
154
|
-
// Get
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
258
|
+
// Get git root directory for consistent worktree placement
|
|
259
|
+
let projectRoot;
|
|
260
|
+
try {
|
|
261
|
+
projectRoot = execSync('git rev-parse --show-toplevel', {
|
|
262
|
+
encoding: 'utf-8',
|
|
263
|
+
stdio: 'pipe'
|
|
264
|
+
}).trim();
|
|
265
|
+
}
|
|
266
|
+
catch {
|
|
267
|
+
// Fallback to current directory if not in a git repo
|
|
268
|
+
projectRoot = process.cwd();
|
|
269
|
+
}
|
|
270
|
+
// Create worktree path relative to project root
|
|
271
|
+
const worktreePath = path.join(path.dirname(projectRoot), `${path.basename(projectRoot)}-${slug}`);
|
|
158
272
|
// Get the original pane ID (where dmux is running) before clearing
|
|
159
273
|
const originalPaneId = execSync('tmux display-message -p "#{pane_id}"', { encoding: 'utf-8' }).trim();
|
|
160
274
|
// Multiple clearing strategies to prevent artifacts
|
|
@@ -188,11 +302,14 @@ const DmuxApp = ({ dmuxDir, panesFile, projectName, sessionName }) => {
|
|
|
188
302
|
applySmartLayout(newPaneCount);
|
|
189
303
|
// Create git worktree and cd into it
|
|
190
304
|
try {
|
|
191
|
-
|
|
192
|
-
execSync(`tmux send-keys -t '${paneInfo}' 'cd "${worktreePath}"' Enter`, { stdio: 'pipe' });
|
|
305
|
+
// Send the git worktree command
|
|
306
|
+
execSync(`tmux send-keys -t '${paneInfo}' 'git worktree add "${worktreePath}" -b ${slug} && cd "${worktreePath}"' Enter`, { stdio: 'pipe' });
|
|
307
|
+
// Wait for worktree creation to complete
|
|
308
|
+
await new Promise(resolve => setTimeout(resolve, 1500));
|
|
193
309
|
}
|
|
194
|
-
catch {
|
|
195
|
-
//
|
|
310
|
+
catch (error) {
|
|
311
|
+
// Log error but continue
|
|
312
|
+
setStatusMessage(`Warning: Could not create worktree: ${error}`);
|
|
196
313
|
}
|
|
197
314
|
// Prepare the Claude command
|
|
198
315
|
let claudeCmd;
|
|
@@ -243,6 +360,19 @@ const DmuxApp = ({ dmuxDir, panesFile, projectName, sessionName }) => {
|
|
|
243
360
|
};
|
|
244
361
|
const closePane = async (pane) => {
|
|
245
362
|
try {
|
|
363
|
+
// Kill associated test/dev windows if they exist
|
|
364
|
+
if (pane.testWindowId) {
|
|
365
|
+
try {
|
|
366
|
+
execSync(`tmux kill-window -t '${pane.testWindowId}'`, { stdio: 'pipe' });
|
|
367
|
+
}
|
|
368
|
+
catch { }
|
|
369
|
+
}
|
|
370
|
+
if (pane.devWindowId) {
|
|
371
|
+
try {
|
|
372
|
+
execSync(`tmux kill-window -t '${pane.devWindowId}'`, { stdio: 'pipe' });
|
|
373
|
+
}
|
|
374
|
+
catch { }
|
|
375
|
+
}
|
|
246
376
|
// Multiple clearing strategies to prevent artifacts
|
|
247
377
|
// 1. Clear screen with ANSI codes
|
|
248
378
|
process.stdout.write('\x1b[2J\x1b[H');
|
|
@@ -370,42 +500,383 @@ const DmuxApp = ({ dmuxDir, panesFile, projectName, sessionName }) => {
|
|
|
370
500
|
}
|
|
371
501
|
};
|
|
372
502
|
const generateCommitMessage = async (changes) => {
|
|
503
|
+
// Try OpenRouter first if API key is available
|
|
373
504
|
const apiKey = process.env.OPENROUTER_API_KEY;
|
|
374
|
-
if (
|
|
375
|
-
|
|
505
|
+
if (apiKey) {
|
|
506
|
+
try {
|
|
507
|
+
const response = await fetch('https://openrouter.ai/api/v1/chat/completions', {
|
|
508
|
+
method: 'POST',
|
|
509
|
+
headers: {
|
|
510
|
+
'Content-Type': 'application/json',
|
|
511
|
+
'Authorization': `Bearer ${apiKey}`,
|
|
512
|
+
},
|
|
513
|
+
body: JSON.stringify({
|
|
514
|
+
model: 'openai/gpt-4o-mini',
|
|
515
|
+
messages: [
|
|
516
|
+
{
|
|
517
|
+
role: 'system',
|
|
518
|
+
content: 'You are a git commit message generator. Generate semantic commit messages following conventional commits format (feat:, fix:, docs:, style:, refactor:, test:, chore:). Be concise and specific.'
|
|
519
|
+
},
|
|
520
|
+
{
|
|
521
|
+
role: 'user',
|
|
522
|
+
content: `Generate a semantic commit message for these changes:\n\n${changes.substring(0, 3000)}`
|
|
523
|
+
}
|
|
524
|
+
],
|
|
525
|
+
max_tokens: 100,
|
|
526
|
+
temperature: 0.3
|
|
527
|
+
})
|
|
528
|
+
});
|
|
529
|
+
if (response.ok) {
|
|
530
|
+
const data = await response.json();
|
|
531
|
+
const message = data.choices[0].message.content.trim();
|
|
532
|
+
if (message)
|
|
533
|
+
return message;
|
|
534
|
+
}
|
|
535
|
+
}
|
|
536
|
+
catch {
|
|
537
|
+
// Fall through to Claude Code
|
|
538
|
+
}
|
|
539
|
+
}
|
|
540
|
+
// Try Claude Code as fallback
|
|
541
|
+
const systemPrompt = 'You are a git commit message generator. Generate semantic commit messages following conventional commits format (feat:, fix:, docs:, style:, refactor:, test:, chore:). Be concise and specific.';
|
|
542
|
+
const userPrompt = `${systemPrompt}\n\nGenerate a semantic commit message for these changes:\n\n${changes.substring(0, 3000)}`;
|
|
543
|
+
const claudeResponse = await callClaudeCode(userPrompt);
|
|
544
|
+
if (claudeResponse) {
|
|
545
|
+
const message = claudeResponse.trim();
|
|
546
|
+
if (message)
|
|
547
|
+
return message;
|
|
376
548
|
}
|
|
549
|
+
// Final fallback
|
|
550
|
+
return 'chore: merge worktree changes';
|
|
551
|
+
};
|
|
552
|
+
const generateCommand = async (type, changeRequest) => {
|
|
553
|
+
setGeneratingCommand(true);
|
|
554
|
+
setStatusMessage(`Generating ${type} command with AI...`);
|
|
377
555
|
try {
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
}
|
|
395
|
-
],
|
|
396
|
-
max_tokens: 100,
|
|
397
|
-
temperature: 0.3
|
|
398
|
-
})
|
|
556
|
+
// Find claude command
|
|
557
|
+
const claudeCmd = await findClaudeCommand();
|
|
558
|
+
if (!claudeCmd) {
|
|
559
|
+
throw new Error('Claude Code not found. Please ensure Claude Code is installed and accessible');
|
|
560
|
+
}
|
|
561
|
+
// Get project root
|
|
562
|
+
const projectRoot = execSync('git rev-parse --show-toplevel', {
|
|
563
|
+
encoding: 'utf-8',
|
|
564
|
+
stdio: 'pipe'
|
|
565
|
+
}).trim();
|
|
566
|
+
// Pre-fetch directory listings
|
|
567
|
+
setStatusMessage('Analyzing project structure...');
|
|
568
|
+
// Get main directory listing
|
|
569
|
+
const mainFiles = execSync(`ls -la "${projectRoot}"`, {
|
|
570
|
+
encoding: 'utf-8',
|
|
571
|
+
stdio: 'pipe'
|
|
399
572
|
});
|
|
400
|
-
|
|
401
|
-
|
|
573
|
+
// Get worktree listing (simulate what it would look like)
|
|
574
|
+
// For now we'll use main, but in reality worktrees start with the same files
|
|
575
|
+
const worktreeFiles = mainFiles;
|
|
576
|
+
// Check for package.json to understand the project type
|
|
577
|
+
let packageJsonContent = '';
|
|
578
|
+
try {
|
|
579
|
+
packageJsonContent = await fs.readFile(path.join(projectRoot, 'package.json'), 'utf-8');
|
|
402
580
|
}
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
581
|
+
catch { }
|
|
582
|
+
let requestedFile = '';
|
|
583
|
+
let maxAttempts = 2; // Allow one file request, then must generate command
|
|
584
|
+
for (let attempt = 0; attempt < maxAttempts; attempt++) {
|
|
585
|
+
const isLastAttempt = attempt === maxAttempts - 1;
|
|
586
|
+
// Build the prompt
|
|
587
|
+
let prompt = `You are generating a ${type === 'test' ? 'test' : 'development server'} command for a git worktree.
|
|
588
|
+
|
|
589
|
+
CRITICAL CONTEXT:
|
|
590
|
+
- Main project directory: ${projectRoot}
|
|
591
|
+
- Worktrees are siblings: ${path.dirname(projectRoot)}/{project-name}-{branch}
|
|
592
|
+
- Command runs INSIDE the worktree (not main)
|
|
593
|
+
- Files like .env, .wrangler, node_modules are NOT shared between worktrees
|
|
594
|
+
|
|
595
|
+
Files in MAIN directory:
|
|
596
|
+
${mainFiles}
|
|
597
|
+
|
|
598
|
+
Files in WORKTREE (initially same as main):
|
|
599
|
+
${worktreeFiles}
|
|
600
|
+
|
|
601
|
+
${packageJsonContent ? `package.json contents:\n${packageJsonContent.substring(0, 3000)}\n` : ''}
|
|
602
|
+
|
|
603
|
+
${requestedFile}
|
|
604
|
+
|
|
605
|
+
${changeRequest ? `User's requested change: ${changeRequest}\n` : ''}
|
|
606
|
+
|
|
607
|
+
Your task: Generate a command to ${type === 'test' ? 'run tests' : 'start a dev server'} in the worktree.
|
|
608
|
+
|
|
609
|
+
Consider:
|
|
610
|
+
1. Copy needed files from main (e.g., cp ../${path.basename(projectRoot)}/.env .)
|
|
611
|
+
2. Install dependencies (npm/pnpm/yarn install)
|
|
612
|
+
3. Build if needed
|
|
613
|
+
4. Run the ${type} command
|
|
614
|
+
|
|
615
|
+
${isLastAttempt ? 'YOU MUST PROVIDE THE FINAL COMMAND NOW. No more file requests allowed.' : 'You can request ONE file to read, then you must provide the command.'}
|
|
616
|
+
|
|
617
|
+
Respond with ONLY a JSON object:
|
|
618
|
+
|
|
619
|
+
${!isLastAttempt ? `To read ONE file (only one chance):
|
|
620
|
+
{
|
|
621
|
+
"type": "cat",
|
|
622
|
+
"path": "path/to/file"
|
|
623
|
+
}
|
|
624
|
+
|
|
625
|
+
OR ` : ''}To provide the final command:
|
|
626
|
+
{
|
|
627
|
+
"type": "command",
|
|
628
|
+
"command": "cp ../${path.basename(projectRoot)}/.env . && npm install && npm run ${type}",
|
|
629
|
+
"description": "Copy env, install deps, run ${type}"
|
|
630
|
+
}`;
|
|
631
|
+
// Write prompt to a temporary file
|
|
632
|
+
const tmpFile = `/tmp/dmux-prompt-${Date.now()}.txt`;
|
|
633
|
+
await fs.writeFile(tmpFile, prompt);
|
|
634
|
+
// Use Claude to generate the response
|
|
635
|
+
const result = execSync(`${claudeCmd} -p "$(cat ${tmpFile})" --output-format json`, {
|
|
636
|
+
encoding: 'utf-8',
|
|
637
|
+
stdio: 'pipe',
|
|
638
|
+
maxBuffer: 1024 * 1024 * 10
|
|
639
|
+
});
|
|
640
|
+
// Clean up temp file
|
|
641
|
+
try {
|
|
642
|
+
await fs.unlink(tmpFile);
|
|
643
|
+
}
|
|
644
|
+
catch { }
|
|
645
|
+
// Parse the response
|
|
646
|
+
let response;
|
|
647
|
+
try {
|
|
648
|
+
const wrapper = JSON.parse(result);
|
|
649
|
+
let actualResult = wrapper.result || wrapper;
|
|
650
|
+
if (typeof actualResult === 'string') {
|
|
651
|
+
actualResult = actualResult.trim();
|
|
652
|
+
// Extract JSON from the response
|
|
653
|
+
const jsonMatch = actualResult.match(/\{[\s\S]*\}/);
|
|
654
|
+
if (jsonMatch) {
|
|
655
|
+
let jsonStr = jsonMatch[0];
|
|
656
|
+
// Clean up markdown code blocks if present
|
|
657
|
+
if (actualResult.includes('```')) {
|
|
658
|
+
const codeBlockMatch = actualResult.match(/```(?:json)?\s*([\s\S]*?)```/);
|
|
659
|
+
if (codeBlockMatch) {
|
|
660
|
+
jsonStr = codeBlockMatch[1].trim();
|
|
661
|
+
}
|
|
662
|
+
}
|
|
663
|
+
actualResult = JSON.parse(jsonStr);
|
|
664
|
+
}
|
|
665
|
+
else {
|
|
666
|
+
throw new Error('No JSON object found in response');
|
|
667
|
+
}
|
|
668
|
+
}
|
|
669
|
+
response = actualResult;
|
|
670
|
+
}
|
|
671
|
+
catch (parseError) {
|
|
672
|
+
console.error('Failed to parse Claude response:', result);
|
|
673
|
+
throw new Error(`Failed to parse AI response: ${parseError}`);
|
|
674
|
+
}
|
|
675
|
+
// Handle the response
|
|
676
|
+
if (response.type === 'cat' && !isLastAttempt) {
|
|
677
|
+
// Read the requested file
|
|
678
|
+
const targetPath = path.join(projectRoot, response.path);
|
|
679
|
+
try {
|
|
680
|
+
const content = await fs.readFile(targetPath, 'utf-8');
|
|
681
|
+
const truncated = content.length > 4000
|
|
682
|
+
? content.substring(0, 4000) + '\n... [truncated]'
|
|
683
|
+
: content;
|
|
684
|
+
requestedFile = `\nContents of ${response.path}:\n${truncated}\n`;
|
|
685
|
+
}
|
|
686
|
+
catch (err) {
|
|
687
|
+
requestedFile = `\nError reading ${response.path}: File not found\n`;
|
|
688
|
+
}
|
|
689
|
+
// Continue to next iteration to get the command
|
|
690
|
+
}
|
|
691
|
+
else if (response.type === 'command') {
|
|
692
|
+
// Got the command!
|
|
693
|
+
setGeneratingCommand(false);
|
|
694
|
+
setStatusMessage('');
|
|
695
|
+
return response.command;
|
|
696
|
+
}
|
|
697
|
+
else if (isLastAttempt) {
|
|
698
|
+
// Last attempt must provide a command
|
|
699
|
+
throw new Error('AI did not provide a command on final attempt');
|
|
700
|
+
}
|
|
701
|
+
}
|
|
702
|
+
throw new Error('Failed to generate command after maximum attempts');
|
|
406
703
|
}
|
|
407
|
-
catch {
|
|
408
|
-
|
|
704
|
+
catch (error) {
|
|
705
|
+
setGeneratingCommand(false);
|
|
706
|
+
setStatusMessage(`Failed to generate command: ${error}`);
|
|
707
|
+
setTimeout(() => setStatusMessage(''), 3000);
|
|
708
|
+
return null;
|
|
709
|
+
}
|
|
710
|
+
};
|
|
711
|
+
const runCommand = async (type, pane) => {
|
|
712
|
+
if (!pane.worktreePath) {
|
|
713
|
+
setStatusMessage('No worktree path for this pane');
|
|
714
|
+
setTimeout(() => setStatusMessage(''), 2000);
|
|
715
|
+
return;
|
|
716
|
+
}
|
|
717
|
+
const command = type === 'test' ? projectSettings.testCommand : projectSettings.devCommand;
|
|
718
|
+
if (!command) {
|
|
719
|
+
// No command configured, prompt user
|
|
720
|
+
setShowCommandPrompt(type);
|
|
721
|
+
return;
|
|
722
|
+
}
|
|
723
|
+
try {
|
|
724
|
+
setRunningCommand(true);
|
|
725
|
+
setStatusMessage(`Starting ${type} in background window...`);
|
|
726
|
+
// Kill existing window if present
|
|
727
|
+
const existingWindowId = type === 'test' ? pane.testWindowId : pane.devWindowId;
|
|
728
|
+
if (existingWindowId) {
|
|
729
|
+
try {
|
|
730
|
+
execSync(`tmux kill-window -t '${existingWindowId}'`, { stdio: 'pipe' });
|
|
731
|
+
}
|
|
732
|
+
catch { }
|
|
733
|
+
}
|
|
734
|
+
// Create a new background window for the command
|
|
735
|
+
const windowName = `${pane.slug}-${type}`;
|
|
736
|
+
const windowId = execSync(`tmux new-window -d -n '${windowName}' -P -F '#{window_id}'`, { encoding: 'utf-8', stdio: 'pipe' }).trim();
|
|
737
|
+
// Create a log file to capture output
|
|
738
|
+
const logFile = `/tmp/dmux-${pane.id}-${type}.log`;
|
|
739
|
+
// Build the command with output capture
|
|
740
|
+
const fullCommand = type === 'test'
|
|
741
|
+
? `cd "${pane.worktreePath}" && ${command} 2>&1 | tee ${logFile}`
|
|
742
|
+
: `cd "${pane.worktreePath}" && ${command} 2>&1 | tee ${logFile}`;
|
|
743
|
+
// Send the command to the new window
|
|
744
|
+
execSync(`tmux send-keys -t '${windowId}' '${fullCommand.replace(/'/g, "'\\''")}'`, { stdio: 'pipe' });
|
|
745
|
+
execSync(`tmux send-keys -t '${windowId}' Enter`, { stdio: 'pipe' });
|
|
746
|
+
// Update pane with window info
|
|
747
|
+
const updatedPane = {
|
|
748
|
+
...pane,
|
|
749
|
+
[type === 'test' ? 'testWindowId' : 'devWindowId']: windowId,
|
|
750
|
+
[type === 'test' ? 'testStatus' : 'devStatus']: 'running'
|
|
751
|
+
};
|
|
752
|
+
const updatedPanes = panes.map(p => p.id === pane.id ? updatedPane : p);
|
|
753
|
+
await savePanes(updatedPanes);
|
|
754
|
+
// Start monitoring the output
|
|
755
|
+
if (type === 'test') {
|
|
756
|
+
// For tests, monitor for completion
|
|
757
|
+
setTimeout(() => monitorTestOutput(pane.id, logFile), 2000);
|
|
758
|
+
}
|
|
759
|
+
else {
|
|
760
|
+
// For dev, monitor for server URL
|
|
761
|
+
setTimeout(() => monitorDevOutput(pane.id, logFile), 2000);
|
|
762
|
+
}
|
|
763
|
+
setRunningCommand(false);
|
|
764
|
+
setStatusMessage(`${type === 'test' ? 'Test' : 'Dev server'} started in background`);
|
|
765
|
+
setTimeout(() => setStatusMessage(''), 3000);
|
|
766
|
+
}
|
|
767
|
+
catch (error) {
|
|
768
|
+
setRunningCommand(false);
|
|
769
|
+
setStatusMessage(`Failed to run ${type} command`);
|
|
770
|
+
setTimeout(() => setStatusMessage(''), 3000);
|
|
771
|
+
}
|
|
772
|
+
};
|
|
773
|
+
const monitorTestOutput = async (paneId, logFile) => {
|
|
774
|
+
try {
|
|
775
|
+
const content = await fs.readFile(logFile, 'utf-8');
|
|
776
|
+
// Look for common test result patterns
|
|
777
|
+
let status = 'running';
|
|
778
|
+
if (content.match(/(?:tests?|specs?) (?:passed|✓|succeeded)/i) ||
|
|
779
|
+
content.match(/\b0 fail(?:ing|ed|ures?)\b/i)) {
|
|
780
|
+
status = 'passed';
|
|
781
|
+
}
|
|
782
|
+
else if (content.match(/(?:tests?|specs?) (?:failed|✗|✖)/i) ||
|
|
783
|
+
content.match(/\d+ fail(?:ing|ed|ures?)/i) ||
|
|
784
|
+
content.match(/error:/i)) {
|
|
785
|
+
status = 'failed';
|
|
786
|
+
}
|
|
787
|
+
// Check if process is still running
|
|
788
|
+
const pane = panes.find(p => p.id === paneId);
|
|
789
|
+
if (pane?.testWindowId) {
|
|
790
|
+
try {
|
|
791
|
+
execSync(`tmux list-windows -F '#{window_id}' | grep -q '${pane.testWindowId}'`, { stdio: 'pipe' });
|
|
792
|
+
// Window still exists, check if command is done
|
|
793
|
+
const paneOutput = execSync(`tmux capture-pane -t '${pane.testWindowId}' -p | tail -5`, { encoding: 'utf-8' });
|
|
794
|
+
if (paneOutput.includes('$') || paneOutput.includes('#')) {
|
|
795
|
+
// Command prompt returned, test is done
|
|
796
|
+
if (status === 'running')
|
|
797
|
+
status = 'passed'; // Assume success if no errors found
|
|
798
|
+
}
|
|
799
|
+
}
|
|
800
|
+
catch {
|
|
801
|
+
// Window doesn't exist or command failed
|
|
802
|
+
if (status === 'running')
|
|
803
|
+
status = 'failed';
|
|
804
|
+
}
|
|
805
|
+
}
|
|
806
|
+
// Update pane status
|
|
807
|
+
const updatedPanes = panes.map(p => p.id === paneId
|
|
808
|
+
? { ...p, testStatus: status, testOutput: content.slice(-5000) } // Keep last 5000 chars
|
|
809
|
+
: p);
|
|
810
|
+
await savePanes(updatedPanes);
|
|
811
|
+
// Continue monitoring if still running
|
|
812
|
+
if (status === 'running') {
|
|
813
|
+
setTimeout(() => monitorTestOutput(paneId, logFile), 2000);
|
|
814
|
+
}
|
|
815
|
+
}
|
|
816
|
+
catch { }
|
|
817
|
+
};
|
|
818
|
+
const monitorDevOutput = async (paneId, logFile) => {
|
|
819
|
+
try {
|
|
820
|
+
const content = await fs.readFile(logFile, 'utf-8');
|
|
821
|
+
// Look for dev server URLs
|
|
822
|
+
const urlMatch = content.match(/https?:\/\/(?:localhost|127\.0\.0\.1|0\.0\.0\.0):\d+/i) ||
|
|
823
|
+
content.match(/Local:\s+(https?:\/\/[^\s]+)/i) ||
|
|
824
|
+
content.match(/listening on port (\d+)/i);
|
|
825
|
+
let devUrl = '';
|
|
826
|
+
if (urlMatch) {
|
|
827
|
+
if (urlMatch[0].startsWith('http')) {
|
|
828
|
+
devUrl = urlMatch[0];
|
|
829
|
+
}
|
|
830
|
+
else if (urlMatch[1]) {
|
|
831
|
+
// If we just found a port number
|
|
832
|
+
devUrl = `http://localhost:${urlMatch[1]}`;
|
|
833
|
+
}
|
|
834
|
+
}
|
|
835
|
+
// Check if process is still running
|
|
836
|
+
const pane = panes.find(p => p.id === paneId);
|
|
837
|
+
let status = 'running';
|
|
838
|
+
if (pane?.devWindowId) {
|
|
839
|
+
try {
|
|
840
|
+
execSync(`tmux list-windows -F '#{window_id}' | grep -q '${pane.devWindowId}'`, { stdio: 'pipe' });
|
|
841
|
+
}
|
|
842
|
+
catch {
|
|
843
|
+
// Window doesn't exist
|
|
844
|
+
status = 'stopped';
|
|
845
|
+
}
|
|
846
|
+
}
|
|
847
|
+
// Update pane status
|
|
848
|
+
const updatedPanes = panes.map(p => p.id === paneId
|
|
849
|
+
? { ...p, devStatus: status, devUrl: devUrl || p.devUrl }
|
|
850
|
+
: p);
|
|
851
|
+
await savePanes(updatedPanes);
|
|
852
|
+
// Continue monitoring if still running
|
|
853
|
+
if (status === 'running') {
|
|
854
|
+
setTimeout(() => monitorDevOutput(paneId, logFile), 2000);
|
|
855
|
+
}
|
|
856
|
+
}
|
|
857
|
+
catch { }
|
|
858
|
+
};
|
|
859
|
+
const attachBackgroundWindow = async (pane, type) => {
|
|
860
|
+
const windowId = type === 'test' ? pane.testWindowId : pane.devWindowId;
|
|
861
|
+
if (!windowId) {
|
|
862
|
+
setStatusMessage(`No ${type} window to attach`);
|
|
863
|
+
setTimeout(() => setStatusMessage(''), 2000);
|
|
864
|
+
return;
|
|
865
|
+
}
|
|
866
|
+
try {
|
|
867
|
+
// Join the window to current window as a pane
|
|
868
|
+
execSync(`tmux join-pane -h -s '${windowId}'`, { stdio: 'pipe' });
|
|
869
|
+
// Apply smart layout
|
|
870
|
+
const paneCount = parseInt(execSync('tmux list-panes | wc -l', { encoding: 'utf-8' }).trim());
|
|
871
|
+
applySmartLayout(paneCount);
|
|
872
|
+
// Focus on the newly attached pane
|
|
873
|
+
execSync(`tmux select-pane -t '{last}'`, { stdio: 'pipe' });
|
|
874
|
+
setStatusMessage(`Attached ${type} window`);
|
|
875
|
+
setTimeout(() => setStatusMessage(''), 2000);
|
|
876
|
+
}
|
|
877
|
+
catch (error) {
|
|
878
|
+
setStatusMessage(`Failed to attach ${type} window`);
|
|
879
|
+
setTimeout(() => setStatusMessage(''), 2000);
|
|
409
880
|
}
|
|
410
881
|
};
|
|
411
882
|
const mergeWorktree = async (pane) => {
|
|
@@ -453,9 +924,69 @@ const DmuxApp = ({ dmuxDir, panesFile, projectName, sessionName }) => {
|
|
|
453
924
|
setTimeout(() => setStatusMessage(''), 3000);
|
|
454
925
|
}
|
|
455
926
|
};
|
|
456
|
-
useInput((input, key) => {
|
|
457
|
-
if (isCreatingPane) {
|
|
458
|
-
// Disable input while
|
|
927
|
+
useInput(async (input, key) => {
|
|
928
|
+
if (isCreatingPane || generatingCommand || runningCommand) {
|
|
929
|
+
// Disable input while performing operations
|
|
930
|
+
return;
|
|
931
|
+
}
|
|
932
|
+
if (showCommandPrompt) {
|
|
933
|
+
if (key.escape) {
|
|
934
|
+
setShowCommandPrompt(null);
|
|
935
|
+
setCommandInput('');
|
|
936
|
+
setShowAIPrompt(false);
|
|
937
|
+
setAIChangeRequest('');
|
|
938
|
+
}
|
|
939
|
+
else if (key.return && !showAIPrompt) {
|
|
940
|
+
if (commandInput.trim() === '') {
|
|
941
|
+
// User wants AI to generate
|
|
942
|
+
const generated = await generateCommand(showCommandPrompt);
|
|
943
|
+
if (generated) {
|
|
944
|
+
setCommandInput(generated);
|
|
945
|
+
setShowAIPrompt(true);
|
|
946
|
+
}
|
|
947
|
+
}
|
|
948
|
+
else {
|
|
949
|
+
// User provided manual command
|
|
950
|
+
const newSettings = {
|
|
951
|
+
...projectSettings,
|
|
952
|
+
[showCommandPrompt === 'test' ? 'testCommand' : 'devCommand']: commandInput.trim()
|
|
953
|
+
};
|
|
954
|
+
await saveSettings(newSettings);
|
|
955
|
+
const selectedPane = panes[selectedIndex];
|
|
956
|
+
if (selectedPane) {
|
|
957
|
+
await runCommand(showCommandPrompt, selectedPane);
|
|
958
|
+
}
|
|
959
|
+
setShowCommandPrompt(null);
|
|
960
|
+
setCommandInput('');
|
|
961
|
+
setShowAIPrompt(false);
|
|
962
|
+
}
|
|
963
|
+
}
|
|
964
|
+
else if (key.return && showAIPrompt) {
|
|
965
|
+
if (aiChangeRequest.trim() === '') {
|
|
966
|
+
// User accepts AI generated command
|
|
967
|
+
const newSettings = {
|
|
968
|
+
...projectSettings,
|
|
969
|
+
[showCommandPrompt === 'test' ? 'testCommand' : 'devCommand']: commandInput.trim()
|
|
970
|
+
};
|
|
971
|
+
await saveSettings(newSettings);
|
|
972
|
+
const selectedPane = panes[selectedIndex];
|
|
973
|
+
if (selectedPane) {
|
|
974
|
+
await runCommand(showCommandPrompt, selectedPane);
|
|
975
|
+
}
|
|
976
|
+
setShowCommandPrompt(null);
|
|
977
|
+
setCommandInput('');
|
|
978
|
+
setShowAIPrompt(false);
|
|
979
|
+
setAIChangeRequest('');
|
|
980
|
+
}
|
|
981
|
+
else {
|
|
982
|
+
// User wants changes, regenerate
|
|
983
|
+
const generated = await generateCommand(showCommandPrompt, aiChangeRequest);
|
|
984
|
+
if (generated) {
|
|
985
|
+
setCommandInput(generated);
|
|
986
|
+
setAIChangeRequest('');
|
|
987
|
+
}
|
|
988
|
+
}
|
|
989
|
+
}
|
|
459
990
|
return;
|
|
460
991
|
}
|
|
461
992
|
if (showNewPaneDialog) {
|
|
@@ -527,6 +1058,28 @@ const DmuxApp = ({ dmuxDir, panesFile, projectName, sessionName }) => {
|
|
|
527
1058
|
else if (input === 'm' && selectedIndex < panes.length) {
|
|
528
1059
|
mergeWorktree(panes[selectedIndex]);
|
|
529
1060
|
}
|
|
1061
|
+
else if (input === 't' && selectedIndex < panes.length) {
|
|
1062
|
+
await runCommand('test', panes[selectedIndex]);
|
|
1063
|
+
}
|
|
1064
|
+
else if (input === 'd' && selectedIndex < panes.length) {
|
|
1065
|
+
await runCommand('dev', panes[selectedIndex]);
|
|
1066
|
+
}
|
|
1067
|
+
else if (input === 'o' && selectedIndex < panes.length) {
|
|
1068
|
+
const pane = panes[selectedIndex];
|
|
1069
|
+
if (pane.testWindowId || pane.devWindowId) {
|
|
1070
|
+
// If both exist, prefer dev (since it's usually more interactive)
|
|
1071
|
+
if (pane.devWindowId && pane.devStatus === 'running') {
|
|
1072
|
+
await attachBackgroundWindow(pane, 'dev');
|
|
1073
|
+
}
|
|
1074
|
+
else if (pane.testWindowId) {
|
|
1075
|
+
await attachBackgroundWindow(pane, 'test');
|
|
1076
|
+
}
|
|
1077
|
+
}
|
|
1078
|
+
else {
|
|
1079
|
+
setStatusMessage('No test or dev window to open');
|
|
1080
|
+
setTimeout(() => setStatusMessage(''), 2000);
|
|
1081
|
+
}
|
|
1082
|
+
}
|
|
530
1083
|
else if (key.return && selectedIndex < panes.length) {
|
|
531
1084
|
jumpToPane(panes[selectedIndex].paneId);
|
|
532
1085
|
}
|
|
@@ -536,12 +1089,38 @@ const DmuxApp = ({ dmuxDir, panesFile, projectName, sessionName }) => {
|
|
|
536
1089
|
React.createElement(Text, { bold: true, color: "cyan" },
|
|
537
1090
|
"dmux - ",
|
|
538
1091
|
projectName)),
|
|
539
|
-
panes.map((pane, index) =>
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
1092
|
+
panes.map((pane, index) => {
|
|
1093
|
+
// Determine border color based on status
|
|
1094
|
+
let borderColor = 'gray';
|
|
1095
|
+
if (selectedIndex === index) {
|
|
1096
|
+
borderColor = 'cyan';
|
|
1097
|
+
}
|
|
1098
|
+
else if (pane.devStatus === 'running') {
|
|
1099
|
+
borderColor = 'green';
|
|
1100
|
+
}
|
|
1101
|
+
else if (pane.testStatus === 'running') {
|
|
1102
|
+
borderColor = 'yellow';
|
|
1103
|
+
}
|
|
1104
|
+
else if (pane.testStatus === 'failed') {
|
|
1105
|
+
borderColor = 'red';
|
|
1106
|
+
}
|
|
1107
|
+
return (React.createElement(Box, { key: pane.id, paddingX: 1, borderStyle: "single", borderColor: borderColor, marginBottom: 1 },
|
|
1108
|
+
React.createElement(Box, { flexDirection: "column" },
|
|
1109
|
+
React.createElement(Box, null,
|
|
1110
|
+
React.createElement(Text, { color: selectedIndex === index ? 'cyan' : 'white', bold: true }, pane.slug),
|
|
1111
|
+
pane.worktreePath && (React.createElement(Text, { color: "gray" }, " (worktree)"))),
|
|
1112
|
+
React.createElement(Text, { color: "gray", dimColor: true }, pane.prompt),
|
|
1113
|
+
pane.testStatus && (React.createElement(Box, null,
|
|
1114
|
+
pane.testStatus === 'running' && (React.createElement(Text, { color: "yellow" }, "\u23F3 Test running...")),
|
|
1115
|
+
pane.testStatus === 'passed' && (React.createElement(Text, { color: "green" }, "\u2713 Tests passed")),
|
|
1116
|
+
pane.testStatus === 'failed' && (React.createElement(Text, { color: "red" }, "\u2717 Tests failed (press 'o' to view)")))),
|
|
1117
|
+
pane.devStatus === 'running' && (React.createElement(Box, null,
|
|
1118
|
+
React.createElement(Text, { color: "green" },
|
|
1119
|
+
"\u25B6 Dev server running",
|
|
1120
|
+
pane.devUrl && (React.createElement(Text, { color: "cyan" },
|
|
1121
|
+
" \u2192 ",
|
|
1122
|
+
pane.devUrl))))))));
|
|
1123
|
+
}),
|
|
545
1124
|
React.createElement(Box, { paddingX: 1, borderStyle: "single", borderColor: selectedIndex === panes.length ? 'green' : 'gray', marginBottom: 1 },
|
|
546
1125
|
React.createElement(Text, { color: selectedIndex === panes.length ? 'green' : 'white' }, "+ New dmux pane")),
|
|
547
1126
|
showNewPaneDialog && (React.createElement(Box, { borderStyle: "double", borderColor: "cyan", paddingX: 1 },
|
|
@@ -583,10 +1162,41 @@ const DmuxApp = ({ dmuxDir, panesFile, projectName, sessionName }) => {
|
|
|
583
1162
|
React.createElement(Text, { color: selectedCloseOption === 3 ? 'cyan' : 'white' },
|
|
584
1163
|
selectedCloseOption === 3 ? '▶ ' : ' ',
|
|
585
1164
|
"Just Close - Close pane only")))))),
|
|
1165
|
+
showCommandPrompt && !showAIPrompt && (React.createElement(Box, { borderStyle: "double", borderColor: "magenta", paddingX: 1, marginTop: 1 },
|
|
1166
|
+
React.createElement(Box, { flexDirection: "column" },
|
|
1167
|
+
React.createElement(Text, { color: "magenta", bold: true },
|
|
1168
|
+
"Configure ",
|
|
1169
|
+
showCommandPrompt === 'test' ? 'Test' : 'Dev',
|
|
1170
|
+
" Command"),
|
|
1171
|
+
React.createElement(Text, { dimColor: true },
|
|
1172
|
+
"Enter command to run ",
|
|
1173
|
+
showCommandPrompt === 'test' ? 'tests' : 'dev server',
|
|
1174
|
+
" in worktrees"),
|
|
1175
|
+
React.createElement(Text, { dimColor: true }, "(Press Enter with empty input to generate with AI, ESC to cancel)"),
|
|
1176
|
+
React.createElement(Box, { marginTop: 1 },
|
|
1177
|
+
React.createElement(TextInput, { value: commandInput, onChange: setCommandInput, placeholder: showCommandPrompt === 'test' ? 'e.g., npm test, pnpm test' : 'e.g., npm run dev, pnpm dev' }))))),
|
|
1178
|
+
showCommandPrompt && showAIPrompt && (React.createElement(Box, { borderStyle: "double", borderColor: "magenta", paddingX: 1, marginTop: 1 },
|
|
1179
|
+
React.createElement(Box, { flexDirection: "column" },
|
|
1180
|
+
React.createElement(Text, { color: "magenta", bold: true },
|
|
1181
|
+
"AI Generated ",
|
|
1182
|
+
showCommandPrompt === 'test' ? 'Test' : 'Dev',
|
|
1183
|
+
" Command"),
|
|
1184
|
+
React.createElement(Box, { marginTop: 1, borderStyle: "single", borderColor: "gray", paddingX: 1 },
|
|
1185
|
+
React.createElement(Text, null, commandInput)),
|
|
1186
|
+
React.createElement(Box, { marginTop: 1 },
|
|
1187
|
+
React.createElement(Text, { dimColor: true }, "Press Enter to accept, or describe changes needed:")),
|
|
1188
|
+
React.createElement(Box, { marginTop: 1 },
|
|
1189
|
+
React.createElement(TextInput, { value: aiChangeRequest, onChange: setAIChangeRequest, placeholder: "e.g., 'also copy .env file' or press Enter to accept" }))))),
|
|
1190
|
+
generatingCommand && (React.createElement(Box, { borderStyle: "single", borderColor: "yellow", paddingX: 1, marginTop: 1 },
|
|
1191
|
+
React.createElement(Text, { color: "yellow" },
|
|
1192
|
+
React.createElement(Text, { bold: true }, "\u23F3 Generating command with AI...")))),
|
|
1193
|
+
runningCommand && (React.createElement(Box, { borderStyle: "single", borderColor: "blue", paddingX: 1, marginTop: 1 },
|
|
1194
|
+
React.createElement(Text, { color: "blue" },
|
|
1195
|
+
React.createElement(Text, { bold: true }, "\u25B6 Running command...")))),
|
|
586
1196
|
statusMessage && (React.createElement(Box, { marginTop: 1 },
|
|
587
1197
|
React.createElement(Text, { color: "green" }, statusMessage))),
|
|
588
1198
|
React.createElement(Box, { marginTop: 1, flexDirection: "column" },
|
|
589
|
-
React.createElement(Text, { dimColor: true }, "Commands: [j]ump
|
|
1199
|
+
React.createElement(Text, { dimColor: true }, "Commands: [j]ump \u2022 [t]est \u2022 [d]ev \u2022 [o]pen \u2022 [x]close \u2022 [m]erge \u2022 [n]ew \u2022 [q]uit"),
|
|
590
1200
|
React.createElement(Text, { dimColor: true }, "Use \u2191\u2193 arrows to navigate, Enter to select"))));
|
|
591
1201
|
};
|
|
592
1202
|
export default DmuxApp;
|
package/dist/DmuxApp.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DmuxApp.js","sourceRoot":"","sources":["../src/DmuxApp.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DmuxApp.js","sourceRoot":"","sources":["../src/DmuxApp.tsx"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -6,21 +6,32 @@ import path from 'path';
|
|
|
6
6
|
import { fileURLToPath } from 'url';
|
|
7
7
|
import { render } from 'ink';
|
|
8
8
|
import React from 'react';
|
|
9
|
+
import { createHash } from 'crypto';
|
|
9
10
|
import DmuxApp from './DmuxApp.js';
|
|
10
11
|
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
11
12
|
class Dmux {
|
|
12
13
|
dmuxDir;
|
|
13
14
|
panesFile;
|
|
15
|
+
settingsFile;
|
|
14
16
|
projectName;
|
|
15
17
|
sessionName;
|
|
18
|
+
projectRoot;
|
|
16
19
|
constructor() {
|
|
17
20
|
this.dmuxDir = path.join(process.env.HOME, '.dmux');
|
|
18
|
-
// Get
|
|
19
|
-
this.
|
|
21
|
+
// Get git root directory to determine project scope
|
|
22
|
+
this.projectRoot = this.getProjectRoot();
|
|
23
|
+
// Get project name from git root directory
|
|
24
|
+
this.projectName = path.basename(this.projectRoot);
|
|
25
|
+
// Create a unique identifier for this project based on its full path
|
|
26
|
+
// This ensures different projects with the same folder name are kept separate
|
|
27
|
+
const projectHash = createHash('md5').update(this.projectRoot).digest('hex').substring(0, 8);
|
|
28
|
+
const projectIdentifier = `${this.projectName}-${projectHash}`;
|
|
20
29
|
// Create unique session name for this project
|
|
21
|
-
this.sessionName = `dmux-${
|
|
22
|
-
// Store panes per project
|
|
23
|
-
this.panesFile = path.join(this.dmuxDir, `${
|
|
30
|
+
this.sessionName = `dmux-${projectIdentifier}`;
|
|
31
|
+
// Store panes per project using the unique identifier
|
|
32
|
+
this.panesFile = path.join(this.dmuxDir, `${projectIdentifier}-panes.json`);
|
|
33
|
+
// Store project settings (test/dev commands) per project
|
|
34
|
+
this.settingsFile = path.join(this.dmuxDir, `${projectIdentifier}-settings.json`);
|
|
24
35
|
}
|
|
25
36
|
async init() {
|
|
26
37
|
await fs.mkdir(this.dmuxDir, { recursive: true });
|
|
@@ -48,8 +59,10 @@ class Dmux {
|
|
|
48
59
|
render(React.createElement(DmuxApp, {
|
|
49
60
|
dmuxDir: this.dmuxDir,
|
|
50
61
|
panesFile: this.panesFile,
|
|
62
|
+
settingsFile: this.settingsFile,
|
|
51
63
|
projectName: this.projectName,
|
|
52
|
-
sessionName: this.sessionName
|
|
64
|
+
sessionName: this.sessionName,
|
|
65
|
+
projectRoot: this.projectRoot
|
|
53
66
|
}));
|
|
54
67
|
}
|
|
55
68
|
async fileExists(path) {
|
|
@@ -61,6 +74,20 @@ class Dmux {
|
|
|
61
74
|
return false;
|
|
62
75
|
}
|
|
63
76
|
}
|
|
77
|
+
getProjectRoot() {
|
|
78
|
+
try {
|
|
79
|
+
// Try to get git root directory
|
|
80
|
+
const gitRoot = execSync('git rev-parse --show-toplevel', {
|
|
81
|
+
encoding: 'utf-8',
|
|
82
|
+
stdio: 'pipe'
|
|
83
|
+
}).trim();
|
|
84
|
+
return gitRoot;
|
|
85
|
+
}
|
|
86
|
+
catch {
|
|
87
|
+
// Fallback to current directory if not in a git repo
|
|
88
|
+
return process.cwd();
|
|
89
|
+
}
|
|
90
|
+
}
|
|
64
91
|
}
|
|
65
92
|
const dmux = new Dmux();
|
|
66
93
|
dmux.init().catch(console.error);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,OAAO,MAAM,cAAc,CAAC;AAEnC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE/D,MAAM,IAAI;IACA,OAAO,CAAS;IAChB,SAAS,CAAS;IAClB,WAAW,CAAS;IACpB,WAAW,CAAS;IAE5B;QACE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAK,EAAE,OAAO,CAAC,CAAC;QACrD,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|