dmux 3.0.2 → 3.1.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.
Files changed (102) hide show
  1. package/dist/DmuxApp.d.ts.map +1 -1
  2. package/dist/DmuxApp.js +242 -23
  3. package/dist/DmuxApp.js.map +1 -1
  4. package/dist/PaneAnalyzer.d.ts +0 -4
  5. package/dist/PaneAnalyzer.d.ts.map +1 -1
  6. package/dist/PaneAnalyzer.js +2 -17
  7. package/dist/PaneAnalyzer.js.map +1 -1
  8. package/dist/_plugin-vue_export-helper.css +1 -1
  9. package/dist/actions/paneActions.d.ts.map +1 -1
  10. package/dist/actions/paneActions.js +94 -40
  11. package/dist/actions/paneActions.js.map +1 -1
  12. package/dist/components/ActionConfirmDialog.js +1 -1
  13. package/dist/components/ActionConfirmDialog.js.map +1 -1
  14. package/dist/components/CloseOptionsDialog.d.ts.map +1 -1
  15. package/dist/components/CloseOptionsDialog.js +9 -7
  16. package/dist/components/CloseOptionsDialog.js.map +1 -1
  17. package/dist/components/FooterHelp.js +1 -1
  18. package/dist/components/FooterHelp.js.map +1 -1
  19. package/dist/components/HooksDialog.d.ts +12 -0
  20. package/dist/components/HooksDialog.d.ts.map +1 -0
  21. package/dist/components/HooksDialog.js +52 -0
  22. package/dist/components/HooksDialog.js.map +1 -0
  23. package/dist/components/MergeConfirmationDialog.d.ts.map +1 -1
  24. package/dist/components/MergeConfirmationDialog.js +2 -1
  25. package/dist/components/MergeConfirmationDialog.js.map +1 -1
  26. package/dist/components/NewPaneDialog.d.ts.map +1 -1
  27. package/dist/components/NewPaneDialog.js +1 -3
  28. package/dist/components/NewPaneDialog.js.map +1 -1
  29. package/dist/components/SettingsDialog.d.ts +16 -0
  30. package/dist/components/SettingsDialog.d.ts.map +1 -0
  31. package/dist/components/SettingsDialog.js +95 -0
  32. package/dist/components/SettingsDialog.js.map +1 -0
  33. package/dist/dashboard.js +2 -2
  34. package/dist/hooks/useAutoUpdater.js +2 -2
  35. package/dist/hooks/useAutoUpdater.js.map +1 -1
  36. package/dist/hooks/usePaneCreation.d.ts.map +1 -1
  37. package/dist/hooks/usePaneCreation.js +22 -3
  38. package/dist/hooks/usePaneCreation.js.map +1 -1
  39. package/dist/hooks/usePanes.js +2 -2
  40. package/dist/hooks/usePanes.js.map +1 -1
  41. package/dist/hooks/useTerminalWidth.d.ts.map +1 -1
  42. package/dist/hooks/useTerminalWidth.js +5 -0
  43. package/dist/hooks/useTerminalWidth.js.map +1 -1
  44. package/dist/hooks/useWorktreeActions.js +4 -4
  45. package/dist/hooks/useWorktreeActions.js.map +1 -1
  46. package/dist/server/embedded-assets.d.ts.map +1 -1
  47. package/dist/server/embedded-assets.js +251 -47
  48. package/dist/server/embedded-assets.js.map +1 -1
  49. package/dist/server/index.d.ts.map +1 -1
  50. package/dist/server/index.js +2 -1
  51. package/dist/server/index.js.map +1 -1
  52. package/dist/server/routes.d.ts.map +1 -1
  53. package/dist/server/routes.js +195 -55
  54. package/dist/server/routes.js.map +1 -1
  55. package/dist/services/ConfigWatcher.d.ts +9 -0
  56. package/dist/services/ConfigWatcher.d.ts.map +1 -1
  57. package/dist/services/ConfigWatcher.js +17 -0
  58. package/dist/services/ConfigWatcher.js.map +1 -1
  59. package/dist/services/StatusDetector.js +7 -7
  60. package/dist/services/StatusDetector.js.map +1 -1
  61. package/dist/services/TunnelService.d.ts.map +1 -1
  62. package/dist/services/TunnelService.js +25 -3
  63. package/dist/services/TunnelService.js.map +1 -1
  64. package/dist/shared/StateManager.d.ts +11 -0
  65. package/dist/shared/StateManager.d.ts.map +1 -1
  66. package/dist/shared/StateManager.js +26 -0
  67. package/dist/shared/StateManager.js.map +1 -1
  68. package/dist/types.d.ts +16 -0
  69. package/dist/types.d.ts.map +1 -1
  70. package/dist/utils/conflictResolutionPane.d.ts.map +1 -1
  71. package/dist/utils/conflictResolutionPane.js +3 -2
  72. package/dist/utils/conflictResolutionPane.js.map +1 -1
  73. package/dist/utils/generated-agents-doc.d.ts +6 -0
  74. package/dist/utils/generated-agents-doc.d.ts.map +1 -0
  75. package/dist/utils/generated-agents-doc.js +430 -0
  76. package/dist/utils/generated-agents-doc.js.map +1 -0
  77. package/dist/utils/hooks.d.ts +70 -0
  78. package/dist/utils/hooks.d.ts.map +1 -0
  79. package/dist/utils/hooks.js +216 -0
  80. package/dist/utils/hooks.js.map +1 -0
  81. package/dist/utils/hooksDocs.d.ts +42 -0
  82. package/dist/utils/hooksDocs.d.ts.map +1 -0
  83. package/dist/utils/hooksDocs.js +325 -0
  84. package/dist/utils/hooksDocs.js.map +1 -0
  85. package/dist/utils/paneCapture.d.ts +21 -0
  86. package/dist/utils/paneCapture.d.ts.map +1 -0
  87. package/dist/utils/paneCapture.js +96 -0
  88. package/dist/utils/paneCapture.js.map +1 -0
  89. package/dist/utils/paneCreation.d.ts +1 -0
  90. package/dist/utils/paneCreation.d.ts.map +1 -1
  91. package/dist/utils/paneCreation.js +90 -18
  92. package/dist/utils/paneCreation.js.map +1 -1
  93. package/dist/utils/settingsManager.d.ts +49 -0
  94. package/dist/utils/settingsManager.d.ts.map +1 -0
  95. package/dist/utils/settingsManager.js +172 -0
  96. package/dist/utils/settingsManager.js.map +1 -0
  97. package/dist/utils/tmux.d.ts.map +1 -1
  98. package/dist/utils/tmux.js +79 -20
  99. package/dist/utils/tmux.js.map +1 -1
  100. package/dist/workers/PaneWorker.js +3 -6
  101. package/dist/workers/PaneWorker.js.map +1 -1
  102. package/package.json +4 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paneCapture.d.ts","sourceRoot":"","sources":["../../src/utils/paneCapture.ts"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,KAAK,GAAE,MAAW,EAClB,WAAW,GAAE,MAAU,GACtB,MAAM,CA8ER;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW,GAAG,MAAM,CAWhF"}
@@ -0,0 +1,96 @@
1
+ import { execSync } from 'child_process';
2
+ /**
3
+ * Captures the last N lines from a tmux pane, automatically skipping trailing blank lines.
4
+ * If the captured content ends with blank lines, it will fetch more lines to ensure
5
+ * we get actual content.
6
+ *
7
+ * @param paneId - The tmux pane ID to capture from
8
+ * @param lines - Number of non-blank lines to capture (default: 50)
9
+ * @param maxAttempts - Maximum number of fetch attempts to find content (default: 5)
10
+ * @returns The captured content with trailing blank lines removed, or empty string on failure
11
+ */
12
+ export function capturePaneContent(paneId, lines = 50, maxAttempts = 5) {
13
+ try {
14
+ let currentLines = lines;
15
+ let attempt = 0;
16
+ while (attempt < maxAttempts) {
17
+ attempt++;
18
+ // Capture pane content with line history
19
+ // -p prints to stdout, -S -<lines> starts from <lines> lines back
20
+ const content = execSync(`tmux capture-pane -t '${paneId}' -p -S -${currentLines}`, { encoding: 'utf8', stdio: 'pipe' });
21
+ if (!content) {
22
+ return '';
23
+ }
24
+ // Split into lines and count trailing blank lines
25
+ const allLines = content.split('\n');
26
+ let trailingBlankCount = 0;
27
+ // Count blank lines from the end
28
+ for (let i = allLines.length - 1; i >= 0; i--) {
29
+ if (allLines[i].trim() === '') {
30
+ trailingBlankCount++;
31
+ }
32
+ else {
33
+ break;
34
+ }
35
+ }
36
+ // Calculate actual content lines (non-blank)
37
+ const contentLineCount = allLines.length - trailingBlankCount;
38
+ // If we have enough actual content lines, return trimmed content
39
+ if (contentLineCount >= lines) {
40
+ return allLines.slice(0, -trailingBlankCount || allLines.length).join('\n');
41
+ }
42
+ // If we have some content but not enough, and there might be more above
43
+ if (contentLineCount > 0 && contentLineCount < lines) {
44
+ // Fetch more lines to try to get the desired amount
45
+ // Add the number of trailing blanks we found plus some buffer
46
+ currentLines = currentLines + trailingBlankCount + 20;
47
+ }
48
+ else if (contentLineCount === 0) {
49
+ // All blank lines - the pane might have been cleared
50
+ // Try fetching from a much larger history
51
+ if (attempt === 1) {
52
+ currentLines = 200; // Try a larger window
53
+ }
54
+ else {
55
+ // Give up, pane is truly empty or cleared
56
+ return '';
57
+ }
58
+ }
59
+ }
60
+ // After max attempts, return whatever we have (trimmed)
61
+ const finalContent = execSync(`tmux capture-pane -t '${paneId}' -p -S -${currentLines}`, { encoding: 'utf8', stdio: 'pipe' });
62
+ const finalLines = finalContent.split('\n');
63
+ let finalTrailingBlankCount = 0;
64
+ for (let i = finalLines.length - 1; i >= 0; i--) {
65
+ if (finalLines[i].trim() === '') {
66
+ finalTrailingBlankCount++;
67
+ }
68
+ else {
69
+ break;
70
+ }
71
+ }
72
+ return finalLines.slice(0, -finalTrailingBlankCount || finalLines.length).join('\n');
73
+ }
74
+ catch (error) {
75
+ // Failed to capture pane content
76
+ return '';
77
+ }
78
+ }
79
+ /**
80
+ * Captures the last N lines from a tmux pane without filtering blank lines.
81
+ * Use this when you specifically want raw output including blanks.
82
+ *
83
+ * @param paneId - The tmux pane ID to capture from
84
+ * @param lines - Number of lines to capture (default: 50)
85
+ * @returns The raw captured content, or empty string on failure
86
+ */
87
+ export function capturePaneContentRaw(paneId, lines = 50) {
88
+ try {
89
+ const content = execSync(`tmux capture-pane -t '${paneId}' -p -S -${lines}`, { encoding: 'utf8', stdio: 'pipe' });
90
+ return content;
91
+ }
92
+ catch (error) {
93
+ return '';
94
+ }
95
+ }
96
+ //# sourceMappingURL=paneCapture.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paneCapture.js","sourceRoot":"","sources":["../../src/utils/paneCapture.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ export interface CreatePaneOptions {
4
4
  agent?: 'claude' | 'opencode';
5
5
  projectName: string;
6
6
  existingPanes: DmuxPane[];
7
+ projectRoot?: string;
7
8
  }
8
9
  export interface CreatePaneResult {
9
10
  pane: DmuxPane;
@@ -1 +1 @@
1
- {"version":3,"file":"paneCreation.d.ts","sourceRoot":"","sources":["../../src/utils/paneCreation.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAI5C,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,QAAQ,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,QAAQ,CAAC;IACf,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED;;;GAGG;AACH,wBAAsB,UAAU,CAC9B,OAAO,EAAE,iBAAiB,EAC1B,eAAe,EAAE,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC,GAC5C,OAAO,CAAC,gBAAgB,CAAC,CA4K3B"}
1
+ {"version":3,"file":"paneCreation.d.ts","sourceRoot":"","sources":["../../src/utils/paneCreation.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAM5C,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,QAAQ,EAAE,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,QAAQ,CAAC;IACf,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED;;;GAGG;AACH,wBAAsB,UAAU,CAC9B,OAAO,EAAE,iBAAiB,EAC1B,eAAe,EAAE,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC,GAC5C,OAAO,CAAC,gBAAgB,CAAC,CA0P3B"}
@@ -1,14 +1,59 @@
1
1
  import { execSync } from 'child_process';
2
2
  import path from 'path';
3
+ import * as fs from 'fs';
3
4
  import { applySmartLayout } from './tmux.js';
4
5
  import { generateSlug } from './slug.js';
6
+ import { capturePaneContent } from './paneCapture.js';
7
+ import { triggerHook } from './hooks.js';
5
8
  /**
6
9
  * Core pane creation logic that can be used by both TUI and API
7
10
  * Returns the newly created pane and whether agent choice is needed
8
11
  */
9
12
  export async function createPane(options, availableAgents) {
10
13
  const { prompt, projectName, existingPanes } = options;
11
- let { agent } = options;
14
+ let { agent, projectRoot: optionsProjectRoot } = options;
15
+ // Load settings to check for default agent and autopilot
16
+ const { SettingsManager } = await import('./settingsManager.js');
17
+ // Get project root (handle git worktrees correctly)
18
+ let projectRoot;
19
+ if (optionsProjectRoot) {
20
+ projectRoot = optionsProjectRoot;
21
+ }
22
+ else {
23
+ try {
24
+ // For git worktrees, we need to get the main repository root, not the worktree root
25
+ // git rev-parse --git-common-dir gives us the main .git directory
26
+ const gitCommonDir = execSync('git rev-parse --git-common-dir', {
27
+ encoding: 'utf-8',
28
+ stdio: 'pipe',
29
+ }).trim();
30
+ // If it's a worktree, gitCommonDir will be an absolute path to main .git
31
+ // If it's the main repo, it will be just '.git'
32
+ if (gitCommonDir === '.git') {
33
+ // We're in the main repo
34
+ projectRoot = execSync('git rev-parse --show-toplevel', {
35
+ encoding: 'utf-8',
36
+ stdio: 'pipe',
37
+ }).trim();
38
+ }
39
+ else {
40
+ // We're in a worktree, get the parent directory of the .git directory
41
+ projectRoot = path.dirname(gitCommonDir);
42
+ }
43
+ }
44
+ catch {
45
+ projectRoot = process.cwd();
46
+ }
47
+ }
48
+ const settingsManager = new SettingsManager(projectRoot);
49
+ const settings = settingsManager.getSettings();
50
+ // If no agent specified, check settings for default agent
51
+ if (!agent && settings.defaultAgent) {
52
+ // Only use default if it's available
53
+ if (availableAgents.includes(settings.defaultAgent)) {
54
+ agent = settings.defaultAgent;
55
+ }
56
+ }
12
57
  // Determine if we need agent choice
13
58
  if (!agent && availableAgents.length > 1) {
14
59
  // Need to ask which agent to use
@@ -21,19 +66,13 @@ export async function createPane(options, availableAgents) {
21
66
  if (!agent && availableAgents.length === 1) {
22
67
  agent = availableAgents[0];
23
68
  }
69
+ // Trigger before_pane_create hook
70
+ await triggerHook('before_pane_create', projectRoot, undefined, {
71
+ DMUX_PROMPT: prompt,
72
+ DMUX_AGENT: agent || 'unknown',
73
+ });
24
74
  // Generate slug
25
75
  const slug = await generateSlug(prompt);
26
- // Get project root
27
- let projectRoot;
28
- try {
29
- projectRoot = execSync('git rev-parse --show-toplevel', {
30
- encoding: 'utf-8',
31
- stdio: 'pipe',
32
- }).trim();
33
- }
34
- catch {
35
- projectRoot = process.cwd();
36
- }
37
76
  const worktreePath = path.join(projectRoot, '.dmux', 'worktrees', slug);
38
77
  const originalPaneId = execSync('tmux display-message -p "#{pane_id}"', {
39
78
  encoding: 'utf-8',
@@ -65,17 +104,46 @@ export async function createPane(options, availableAgents) {
65
104
  // Apply smart layout based on pane count
66
105
  const newPaneCount = paneCount + 1;
67
106
  applySmartLayout(newPaneCount);
107
+ // Trigger pane_created hook (after pane created, before worktree)
108
+ await triggerHook('pane_created', projectRoot, undefined, {
109
+ DMUX_PANE_ID: `dmux-${Date.now()}`,
110
+ DMUX_SLUG: slug,
111
+ DMUX_PROMPT: prompt,
112
+ DMUX_AGENT: agent || 'unknown',
113
+ DMUX_TMUX_PANE_ID: paneInfo,
114
+ });
115
+ // Check if this is a hooks editing session (before worktree creation)
116
+ const isHooksEditingSession = prompt && /edit.*dmux.*hooks/i.test(prompt);
68
117
  // Create git worktree and cd into it
69
118
  try {
70
119
  const worktreeCmd = `git worktree add "${worktreePath}" -b ${slug} 2>/dev/null ; cd "${worktreePath}"`;
71
120
  execSync(`tmux send-keys -t '${paneInfo}' '${worktreeCmd}' Enter`, {
72
121
  stdio: 'pipe',
73
122
  });
74
- // Wait for worktree creation and cd to complete
75
- await new Promise((resolve) => setTimeout(resolve, 2500));
76
- // Verify we're in the worktree directory
77
- execSync(`tmux send-keys -t '${paneInfo}' 'echo "Worktree created at:" && pwd' Enter`, { stdio: 'pipe' });
123
+ // Wait for worktree to actually exist on the filesystem
124
+ const maxWaitTime = 5000; // 5 seconds max
125
+ const checkInterval = 100; // Check every 100ms
126
+ const startTime = Date.now();
127
+ while (!fs.existsSync(worktreePath) && (Date.now() - startTime) < maxWaitTime) {
128
+ await new Promise((resolve) => setTimeout(resolve, checkInterval));
129
+ }
130
+ // Give a bit more time for git to finish setting up the worktree
78
131
  await new Promise((resolve) => setTimeout(resolve, 500));
132
+ // Initialize .dmux-hooks if this is a hooks editing session
133
+ if (isHooksEditingSession) {
134
+ const hooksDir = path.join(worktreePath, '.dmux-hooks');
135
+ // Check if .dmux-hooks already exists
136
+ if (!fs.existsSync(hooksDir)) {
137
+ // Create the directory
138
+ fs.mkdirSync(hooksDir, { recursive: true });
139
+ // Import and write the documentation content
140
+ const { AGENTS_MD } = await import('./generated-agents-doc.js');
141
+ // Write AGENTS.md
142
+ fs.writeFileSync(path.join(hooksDir, 'AGENTS.md'), AGENTS_MD, 'utf-8');
143
+ // Copy to CLAUDE.md
144
+ fs.writeFileSync(path.join(hooksDir, 'CLAUDE.md'), AGENTS_MD, 'utf-8');
145
+ }
146
+ }
79
147
  }
80
148
  catch (error) {
81
149
  // Even if worktree creation failed, try to cd to the directory
@@ -138,7 +206,11 @@ export async function createPane(options, availableAgents) {
138
206
  paneId: paneInfo,
139
207
  worktreePath,
140
208
  agent,
209
+ // Set autopilot based on settings (use ?? to properly handle false vs undefined)
210
+ autopilot: settings.enableAutopilotByDefault ?? false,
141
211
  };
212
+ // Trigger worktree_created hook (after full pane setup)
213
+ await triggerHook('worktree_created', projectRoot, newPane);
142
214
  // Switch back to the original pane
143
215
  execSync(`tmux select-pane -t '${originalPaneId}'`, { stdio: 'pipe' });
144
216
  // Re-set the title for the dmux pane
@@ -196,7 +268,7 @@ async function autoApproveTrustPrompt(paneInfo, prompt) {
196
268
  await new Promise((resolve) => setTimeout(resolve, checkInterval));
197
269
  try {
198
270
  // Capture the pane content
199
- const paneContent = execSync(`tmux capture-pane -t '${paneInfo}' -p -S -30`, { encoding: 'utf-8', stdio: 'pipe' });
271
+ const paneContent = capturePaneContent(paneInfo, 30);
200
272
  // Check if content has stabilized
201
273
  if (paneContent === lastContent) {
202
274
  stableContentCount++;
@@ -240,7 +312,7 @@ async function autoApproveTrustPrompt(paneInfo, prompt) {
240
312
  // Wait and check if prompt is gone
241
313
  await new Promise((resolve) => setTimeout(resolve, 500));
242
314
  // Verify the prompt is gone
243
- const updatedContent = execSync(`tmux capture-pane -t '${paneInfo}' -p -S -10`, { encoding: 'utf-8', stdio: 'pipe' });
315
+ const updatedContent = capturePaneContent(paneInfo, 10);
244
316
  const promptGone = !trustPromptPatterns.some((p) => p.test(updatedContent));
245
317
  if (promptGone) {
246
318
  // Check if Claude is running
@@ -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,49 @@
1
+ import type { DmuxSettings, SettingsScope, SettingDefinition } from '../types.js';
2
+ export declare const SETTING_DEFINITIONS: SettingDefinition[];
3
+ export declare class SettingsManager {
4
+ private globalPath;
5
+ private projectPath;
6
+ private globalSettings;
7
+ private projectSettings;
8
+ constructor(projectRoot?: string);
9
+ private loadSettings;
10
+ /**
11
+ * Get merged settings (project settings override global)
12
+ */
13
+ getSettings(): DmuxSettings;
14
+ /**
15
+ * Get a specific setting value (with project override)
16
+ */
17
+ getSetting<K extends keyof DmuxSettings>(key: K): DmuxSettings[K];
18
+ /**
19
+ * Get global settings only
20
+ */
21
+ getGlobalSettings(): DmuxSettings;
22
+ /**
23
+ * Get project settings only
24
+ */
25
+ getProjectSettings(): DmuxSettings;
26
+ /**
27
+ * Update a setting at the specified scope
28
+ */
29
+ updateSetting<K extends keyof DmuxSettings>(key: K, value: DmuxSettings[K], scope: SettingsScope): void;
30
+ /**
31
+ * Update multiple settings at once
32
+ */
33
+ updateSettings(settings: Partial<DmuxSettings>, scope: SettingsScope): void;
34
+ /**
35
+ * Remove a setting from the specified scope
36
+ */
37
+ removeSetting(key: keyof DmuxSettings, scope: SettingsScope): void;
38
+ private saveGlobalSettings;
39
+ private saveProjectSettings;
40
+ /**
41
+ * Check if a setting is overridden at the project level
42
+ */
43
+ isProjectOverride(key: keyof DmuxSettings): boolean;
44
+ /**
45
+ * Get the effective scope for a setting (where it's currently defined)
46
+ */
47
+ getEffectiveScope(key: keyof DmuxSettings): SettingsScope | null;
48
+ }
49
+ //# sourceMappingURL=settingsManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settingsManager.d.ts","sourceRoot":"","sources":["../../src/utils/settingsManager.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAIlF,eAAO,MAAM,mBAAmB,EAAE,iBAAiB,EAwBlD,CAAC;AAEF,qBAAa,eAAe;IAC1B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,cAAc,CAAoB;IAC1C,OAAO,CAAC,eAAe,CAAoB;gBAE/B,WAAW,CAAC,EAAE,MAAM;IAMhC,OAAO,CAAC,YAAY;IAsBpB;;OAEG;IACH,WAAW,IAAI,YAAY;IAO3B;;OAEG;IACH,UAAU,CAAC,CAAC,SAAS,MAAM,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;IAKjE;;OAEG;IACH,iBAAiB,IAAI,YAAY;IAIjC;;OAEG;IACH,kBAAkB,IAAI,YAAY;IAIlC;;OAEG;IACH,aAAa,CAAC,CAAC,SAAS,MAAM,YAAY,EACxC,GAAG,EAAE,CAAC,EACN,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,EACtB,KAAK,EAAE,aAAa,GACnB,IAAI;IAUP;;OAEG;IACH,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,aAAa,GAAG,IAAI;IAU3E;;OAEG;IACH,aAAa,CAAC,GAAG,EAAE,MAAM,YAAY,EAAE,KAAK,EAAE,aAAa,GAAG,IAAI;IAUlE,OAAO,CAAC,kBAAkB;IAa1B,OAAO,CAAC,mBAAmB;IAa3B;;OAEG;IACH,iBAAiB,CAAC,GAAG,EAAE,MAAM,YAAY,GAAG,OAAO;IAInD;;OAEG;IACH,iBAAiB,CAAC,GAAG,EAAE,MAAM,YAAY,GAAG,aAAa,GAAG,IAAI;CAKjE"}
@@ -0,0 +1,172 @@
1
+ import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'fs';
2
+ import { dirname, join } from 'path';
3
+ import { homedir } from 'os';
4
+ const GLOBAL_SETTINGS_PATH = join(homedir(), '.dmux.global.json');
5
+ export const SETTING_DEFINITIONS = [
6
+ {
7
+ key: 'enableAutopilotByDefault',
8
+ label: 'Enable Autopilot by Default',
9
+ description: 'Automatically accept options when no risk is detected for new panes',
10
+ type: 'boolean',
11
+ },
12
+ {
13
+ key: 'defaultAgent',
14
+ label: 'Default Agent',
15
+ description: 'Skip agent selection and use this agent for all new panes',
16
+ type: 'select',
17
+ options: [
18
+ { value: '', label: 'Ask each time' },
19
+ { value: 'claude', label: 'Claude Code' },
20
+ { value: 'opencode', label: 'OpenCode' },
21
+ ],
22
+ },
23
+ {
24
+ key: 'hooks',
25
+ label: 'Manage Hooks',
26
+ description: 'View and edit dmux lifecycle hooks',
27
+ type: 'action',
28
+ },
29
+ ];
30
+ export class SettingsManager {
31
+ globalPath;
32
+ projectPath;
33
+ globalSettings = {};
34
+ projectSettings = {};
35
+ constructor(projectRoot) {
36
+ this.globalPath = GLOBAL_SETTINGS_PATH;
37
+ this.projectPath = join(projectRoot || process.cwd(), '.dmux', 'settings.json');
38
+ this.loadSettings();
39
+ }
40
+ loadSettings() {
41
+ // Load global settings
42
+ if (existsSync(this.globalPath)) {
43
+ try {
44
+ const data = readFileSync(this.globalPath, 'utf-8');
45
+ this.globalSettings = JSON.parse(data);
46
+ }
47
+ catch (error) {
48
+ console.error('Failed to load global settings:', error);
49
+ }
50
+ }
51
+ // Load project settings
52
+ if (existsSync(this.projectPath)) {
53
+ try {
54
+ const data = readFileSync(this.projectPath, 'utf-8');
55
+ this.projectSettings = JSON.parse(data);
56
+ }
57
+ catch (error) {
58
+ console.error('Failed to load project settings:', error);
59
+ }
60
+ }
61
+ }
62
+ /**
63
+ * Get merged settings (project settings override global)
64
+ */
65
+ getSettings() {
66
+ return {
67
+ ...this.globalSettings,
68
+ ...this.projectSettings,
69
+ };
70
+ }
71
+ /**
72
+ * Get a specific setting value (with project override)
73
+ */
74
+ getSetting(key) {
75
+ const merged = this.getSettings();
76
+ return merged[key];
77
+ }
78
+ /**
79
+ * Get global settings only
80
+ */
81
+ getGlobalSettings() {
82
+ return { ...this.globalSettings };
83
+ }
84
+ /**
85
+ * Get project settings only
86
+ */
87
+ getProjectSettings() {
88
+ return { ...this.projectSettings };
89
+ }
90
+ /**
91
+ * Update a setting at the specified scope
92
+ */
93
+ updateSetting(key, value, scope) {
94
+ if (scope === 'global') {
95
+ this.globalSettings[key] = value;
96
+ this.saveGlobalSettings();
97
+ }
98
+ else {
99
+ this.projectSettings[key] = value;
100
+ this.saveProjectSettings();
101
+ }
102
+ }
103
+ /**
104
+ * Update multiple settings at once
105
+ */
106
+ updateSettings(settings, scope) {
107
+ if (scope === 'global') {
108
+ this.globalSettings = { ...this.globalSettings, ...settings };
109
+ this.saveGlobalSettings();
110
+ }
111
+ else {
112
+ this.projectSettings = { ...this.projectSettings, ...settings };
113
+ this.saveProjectSettings();
114
+ }
115
+ }
116
+ /**
117
+ * Remove a setting from the specified scope
118
+ */
119
+ removeSetting(key, scope) {
120
+ if (scope === 'global') {
121
+ delete this.globalSettings[key];
122
+ this.saveGlobalSettings();
123
+ }
124
+ else {
125
+ delete this.projectSettings[key];
126
+ this.saveProjectSettings();
127
+ }
128
+ }
129
+ saveGlobalSettings() {
130
+ try {
131
+ const dir = dirname(this.globalPath);
132
+ if (!existsSync(dir)) {
133
+ mkdirSync(dir, { recursive: true });
134
+ }
135
+ writeFileSync(this.globalPath, JSON.stringify(this.globalSettings, null, 2));
136
+ }
137
+ catch (error) {
138
+ console.error('Failed to save global settings:', error);
139
+ throw error;
140
+ }
141
+ }
142
+ saveProjectSettings() {
143
+ try {
144
+ const dir = dirname(this.projectPath);
145
+ if (!existsSync(dir)) {
146
+ mkdirSync(dir, { recursive: true });
147
+ }
148
+ writeFileSync(this.projectPath, JSON.stringify(this.projectSettings, null, 2));
149
+ }
150
+ catch (error) {
151
+ console.error('Failed to save project settings:', error);
152
+ throw error;
153
+ }
154
+ }
155
+ /**
156
+ * Check if a setting is overridden at the project level
157
+ */
158
+ isProjectOverride(key) {
159
+ return key in this.projectSettings;
160
+ }
161
+ /**
162
+ * Get the effective scope for a setting (where it's currently defined)
163
+ */
164
+ getEffectiveScope(key) {
165
+ if (key in this.projectSettings)
166
+ return 'project';
167
+ if (key in this.globalSettings)
168
+ return 'global';
169
+ return null;
170
+ }
171
+ }
172
+ //# sourceMappingURL=settingsManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settingsManager.js","sourceRoot":"","sources":["../../src/utils/settingsManager.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"tmux.d.ts","sourceRoot":"","sources":["../../src/utils/tmux.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,eAAO,MAAM,gBAAgB,QAAO,YAAY,EAoB/C,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,WAAW,MAAM,SA+BjD,CAAC"}
1
+ {"version":3,"file":"tmux.d.ts","sourceRoot":"","sources":["../../src/utils/tmux.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,eAAO,MAAM,gBAAgB,QAAO,YAAY,EAoB/C,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,WAAW,MAAM,SAmBjD,CAAC"}