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 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
+ ![dmux demo](./screen.gif)
8
+
7
9
  ## Features
8
10
 
9
11
  - **🚀 Parallel Development**: Work on multiple features simultaneously in separate panes
package/dist/DmuxApp.d.ts CHANGED
@@ -4,6 +4,8 @@ interface DmuxAppProps {
4
4
  panesFile: string;
5
5
  projectName: string;
6
6
  sessionName: string;
7
+ projectRoot?: string;
8
+ settingsFile: string;
7
9
  }
8
10
  declare const DmuxApp: React.FC<DmuxAppProps>;
9
11
  export default DmuxApp;
@@ -1 +1 @@
1
- {"version":3,"file":"DmuxApp.d.ts","sourceRoot":"","sources":["../src/DmuxApp.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAgBnD,UAAU,YAAY;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,QAAA,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CA8sBnC,CAAC;AAEF,eAAe,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 generateSlug = async (prompt) => {
115
- const apiKey = process.env.OPENROUTER_API_KEY;
116
- if (!apiKey || !prompt) {
117
- return `dmux-${Date.now()}`;
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 response = await fetch('https://openrouter.ai/api/v1/chat/completions', {
121
- method: 'POST',
122
- headers: {
123
- 'Content-Type': 'application/json',
124
- 'Authorization': `Bearer ${apiKey}`,
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 current directory
155
- const currentDir = process.cwd();
156
- // Create worktree path
157
- const worktreePath = path.join(currentDir, '..', `${path.basename(currentDir)}-${slug}`);
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
- execSync(`tmux send-keys -t '${paneInfo}' 'git worktree add "${worktreePath}" -b ${slug}' Enter`, { stdio: 'pipe' });
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
- // Continue in current directory if worktree fails
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 (!apiKey) {
375
- return 'chore: merge worktree changes';
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
- const response = await fetch('https://openrouter.ai/api/v1/chat/completions', {
379
- method: 'POST',
380
- headers: {
381
- 'Content-Type': 'application/json',
382
- 'Authorization': `Bearer ${apiKey}`,
383
- },
384
- body: JSON.stringify({
385
- model: 'openai/gpt-4o-mini',
386
- messages: [
387
- {
388
- role: 'system',
389
- 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.'
390
- },
391
- {
392
- role: 'user',
393
- content: `Generate a semantic commit message for these changes:\n\n${changes.substring(0, 3000)}`
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
- if (!response.ok) {
401
- throw new Error(`OpenRouter API error: ${response.status}`);
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
- const data = await response.json();
404
- const message = data.choices[0].message.content.trim();
405
- return message || 'chore: merge worktree changes';
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
- return 'chore: merge worktree changes';
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 creating pane
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) => (React.createElement(Box, { key: pane.id, paddingX: 1, borderStyle: "single", borderColor: selectedIndex === index ? 'cyan' : 'gray', marginBottom: 1 },
540
- React.createElement(Box, { flexDirection: "column" },
541
- React.createElement(Box, null,
542
- React.createElement(Text, { color: selectedIndex === index ? 'cyan' : 'white', bold: true }, pane.slug),
543
- pane.worktreePath && (React.createElement(Text, { color: "gray" }, " (worktree)"))),
544
- React.createElement(Text, { color: "gray", dimColor: true }, pane.prompt))))),
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 to pane \u2022 [x] close \u2022 [m]erge worktree \u2022 [n]ew pane \u2022 [q]uit"),
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;
@@ -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 project name from current directory
19
- this.projectName = path.basename(process.cwd());
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-${this.projectName}`;
22
- // Store panes per project
23
- this.panesFile = path.join(this.dmuxDir, `${this.projectName}-panes.json`);
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,0CAA0C;QAC1C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QAChD,8CAA8C;QAC9C,IAAI,CAAC,WAAW,GAAG,QAAQ,IAAI,CAAC,WAAW,EAAE,CAAC;QAC9C,0BAA0B;QAC1B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,WAAW,aAAa,CAAC,CAAC;IAC7E,CAAC;IAED,KAAK,CAAC,IAAI;QACR,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAElD,IAAI,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YAC3C,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAC3C,CAAC;QAED,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC;QAE9C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,mDAAmD;YACnD,IAAI,CAAC;gBACH,QAAQ,CAAC,uBAAuB,IAAI,CAAC,WAAW,cAAc,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;gBACnF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,yBAAyB,IAAI,CAAC,WAAW,aAAa,CAAC,CAAC,CAAC;YACpF,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,0CAA0C,IAAI,CAAC,WAAW,KAAK,CAAC,CAAC,CAAC;gBAC3F,2BAA2B;gBAC3B,QAAQ,CAAC,0BAA0B,IAAI,CAAC,WAAW,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;gBAC7E,uCAAuC;gBACvC,QAAQ,CAAC,qBAAqB,IAAI,CAAC,WAAW,eAAe,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;YACvF,CAAC;YACD,QAAQ,CAAC,0BAA0B,IAAI,CAAC,WAAW,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;YAC7E,OAAO;QACT,CAAC;QAED,qBAAqB;QACrB,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,EAAE;YAClC,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;SAC9B,CAAC,CAAC,CAAC;IACN,CAAC;IAEO,KAAK,CAAC,UAAU,CAAC,IAAY;QACnC,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACtB,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;CACF;AAED,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;AACxB,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dmux",
3
- "version": "1.0.6",
3
+ "version": "1.0.8",
4
4
  "description": "Tmux pane manager with AI agent integration for parallel development workflows",
5
5
  "type": "module",
6
6
  "author": "Justin Schroeder",