dmux 5.7.1 → 5.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (93) hide show
  1. package/README.md +2 -1
  2. package/dist/DmuxApp.d.ts.map +1 -1
  3. package/dist/DmuxApp.js +14 -5
  4. package/dist/DmuxApp.js.map +1 -1
  5. package/dist/components/popups/newPanePopup.d.ts.map +1 -1
  6. package/dist/components/popups/newPanePopup.js +13 -2
  7. package/dist/components/popups/newPanePopup.js.map +1 -1
  8. package/dist/hooks/useInputHandling.d.ts.map +1 -1
  9. package/dist/hooks/useInputHandling.js +1 -0
  10. package/dist/hooks/useInputHandling.js.map +1 -1
  11. package/dist/hooks/usePaneCreation.d.ts +1 -0
  12. package/dist/hooks/usePaneCreation.d.ts.map +1 -1
  13. package/dist/hooks/usePaneCreation.js +4 -0
  14. package/dist/hooks/usePaneCreation.js.map +1 -1
  15. package/dist/hooks/usePaneLoading.d.ts.map +1 -1
  16. package/dist/hooks/usePaneLoading.js +16 -1
  17. package/dist/hooks/usePaneLoading.js.map +1 -1
  18. package/dist/i18n/index.d.ts +33 -0
  19. package/dist/i18n/index.d.ts.map +1 -0
  20. package/dist/i18n/index.js +70 -0
  21. package/dist/i18n/index.js.map +1 -0
  22. package/dist/i18n/locales/en.d.ts +4 -0
  23. package/dist/i18n/locales/en.d.ts.map +1 -0
  24. package/dist/i18n/locales/en.js +114 -0
  25. package/dist/i18n/locales/en.js.map +1 -0
  26. package/dist/i18n/locales/ja.d.ts +4 -0
  27. package/dist/i18n/locales/ja.d.ts.map +1 -0
  28. package/dist/i18n/locales/ja.js +114 -0
  29. package/dist/i18n/locales/ja.js.map +1 -0
  30. package/dist/index.js +1 -1
  31. package/dist/index.js.map +1 -1
  32. package/dist/services/DmuxAttentionService.d.ts +2 -0
  33. package/dist/services/DmuxAttentionService.d.ts.map +1 -1
  34. package/dist/services/DmuxAttentionService.js +17 -0
  35. package/dist/services/DmuxAttentionService.js.map +1 -1
  36. package/dist/services/DmuxFocusService.d.ts +1 -0
  37. package/dist/services/DmuxFocusService.d.ts.map +1 -1
  38. package/dist/services/DmuxFocusService.js +7 -0
  39. package/dist/services/DmuxFocusService.js.map +1 -1
  40. package/dist/services/PopupManager.d.ts.map +1 -1
  41. package/dist/services/PopupManager.js +15 -4
  42. package/dist/services/PopupManager.js.map +1 -1
  43. package/dist/services/StatusDetector.d.ts +1 -1
  44. package/dist/services/StatusDetector.d.ts.map +1 -1
  45. package/dist/services/StatusDetector.js +6 -3
  46. package/dist/services/StatusDetector.js.map +1 -1
  47. package/dist/types.d.ts +5 -0
  48. package/dist/types.d.ts.map +1 -1
  49. package/dist/utils/agentLaunch.d.ts +4 -0
  50. package/dist/utils/agentLaunch.d.ts.map +1 -1
  51. package/dist/utils/agentLaunch.js +28 -10
  52. package/dist/utils/agentLaunch.js.map +1 -1
  53. package/dist/utils/attachAgent.d.ts +1 -0
  54. package/dist/utils/attachAgent.d.ts.map +1 -1
  55. package/dist/utils/attachAgent.js +17 -1
  56. package/dist/utils/attachAgent.js.map +1 -1
  57. package/dist/utils/claudeHooks.d.ts +9 -0
  58. package/dist/utils/claudeHooks.d.ts.map +1 -0
  59. package/dist/utils/claudeHooks.js +104 -0
  60. package/dist/utils/claudeHooks.js.map +1 -0
  61. package/dist/utils/codexHooks.d.ts +5 -0
  62. package/dist/utils/codexHooks.d.ts.map +1 -1
  63. package/dist/utils/codexHooks.js +17 -3
  64. package/dist/utils/codexHooks.js.map +1 -1
  65. package/dist/utils/generated-agents-doc.d.ts +1 -1
  66. package/dist/utils/generated-agents-doc.js +1 -1
  67. package/dist/utils/paneBootstrapConfig.d.ts +2 -0
  68. package/dist/utils/paneBootstrapConfig.d.ts.map +1 -1
  69. package/dist/utils/paneBootstrapRunner.js +20 -4
  70. package/dist/utils/paneBootstrapRunner.js.map +1 -1
  71. package/dist/utils/paneCreation.d.ts +1 -0
  72. package/dist/utils/paneCreation.d.ts.map +1 -1
  73. package/dist/utils/paneCreation.js +5 -1
  74. package/dist/utils/paneCreation.js.map +1 -1
  75. package/dist/utils/reopenWorktree.d.ts.map +1 -1
  76. package/dist/utils/reopenWorktree.js +18 -1
  77. package/dist/utils/reopenWorktree.js.map +1 -1
  78. package/dist/utils/settingsManager.d.ts +6 -0
  79. package/dist/utils/settingsManager.d.ts.map +1 -1
  80. package/dist/utils/settingsManager.js +154 -0
  81. package/dist/utils/settingsManager.js.map +1 -1
  82. package/dist/utils/worktreeMetadata.d.ts +1 -0
  83. package/dist/utils/worktreeMetadata.d.ts.map +1 -1
  84. package/dist/utils/worktreeMetadata.js +3 -0
  85. package/dist/utils/worktreeMetadata.js.map +1 -1
  86. package/dist/workers/PaneWorker.js +43 -18
  87. package/dist/workers/PaneWorker.js.map +1 -1
  88. package/dist/workers/WorkerMessages.d.ts +5 -2
  89. package/dist/workers/WorkerMessages.d.ts.map +1 -1
  90. package/dist/workers/WorkerMessages.js.map +1 -1
  91. package/native/macos/dmux-helper.swift +1 -18
  92. package/native/macos/prebuilt/dmux-helper.app/Contents/MacOS/dmux-helper +0 -0
  93. package/package.json +1 -1
@@ -1,6 +1,6 @@
1
1
  import { TmuxService } from '../services/TmuxService.js';
2
2
  import { buildPromptReadAndDeleteSnippet, shellQuote, writePromptFile, } from './promptStore.js';
3
- import { buildCodexPaneEnvironmentPrefix, } from './codexHooks.js';
3
+ import { buildCodexPaneEnvironmentPrefix, CODEX_ENABLE_HOOKS_FLAG, CODEX_ENABLE_GOALS_FLAG, } from './codexHooks.js';
4
4
  export const AGENT_IDS = [
5
5
  'claude',
6
6
  'opencode',
@@ -347,6 +347,19 @@ export function getSendKeysReadyDelayMs(agent) {
347
347
  export function getDefaultEnabledAgents() {
348
348
  return AGENT_IDS.filter((agent) => AGENT_REGISTRY[agent].defaultEnabled);
349
349
  }
350
+ export function supportsAgentGoalMode(agent) {
351
+ return agent === 'claude' || agent === 'codex';
352
+ }
353
+ export function buildGoalModePrompt(agent, prompt, goalMode) {
354
+ const trimmedPrompt = prompt.trim();
355
+ if (!goalMode || !supportsAgentGoalMode(agent) || !trimmedPrompt) {
356
+ return prompt;
357
+ }
358
+ return `/goal ${trimmedPrompt}`;
359
+ }
360
+ export function shouldEnableCodexGoals(agent, goalMode) {
361
+ return agent === 'codex' && goalMode === true;
362
+ }
350
363
  /**
351
364
  * Resolve enabled agent list from settings.
352
365
  * If the user has not configured enabledAgents, fall back to registry defaults.
@@ -438,7 +451,8 @@ export function buildAgentResumeOrLaunchCommand(agent, permissionMode) {
438
451
  export async function launchAgentInPane(opts) {
439
452
  const { paneId, agent, prompt, slug, projectRoot, permissionMode } = opts;
440
453
  const tmuxService = TmuxService.getInstance();
441
- const hasInitialPrompt = !!(prompt && prompt.trim());
454
+ const launchPrompt = buildGoalModePrompt(agent, prompt, opts.goalMode);
455
+ const hasInitialPrompt = !!(launchPrompt && launchPrompt.trim());
442
456
  if (agent === 'claude') {
443
457
  const permissionFlags = getPermissionFlags('claude', permissionMode);
444
458
  const permissionSuffix = permissionFlags ? ` ${permissionFlags}` : '';
@@ -446,7 +460,7 @@ export async function launchAgentInPane(opts) {
446
460
  if (hasInitialPrompt) {
447
461
  let promptFilePath = null;
448
462
  try {
449
- promptFilePath = await writePromptFile(projectRoot, slug, prompt);
463
+ promptFilePath = await writePromptFile(projectRoot, slug, launchPrompt);
450
464
  }
451
465
  catch {
452
466
  // Fall back to inline escaping if prompt file write fails
@@ -456,7 +470,7 @@ export async function launchAgentInPane(opts) {
456
470
  claudeCmd = `${promptBootstrap}; claude "$DMUX_PROMPT_CONTENT"${permissionSuffix}`;
457
471
  }
458
472
  else {
459
- const escapedPrompt = prompt
473
+ const escapedPrompt = launchPrompt
460
474
  .replace(/\\/g, '\\\\')
461
475
  .replace(/"/g, '\\"')
462
476
  .replace(/`/g, '\\`')
@@ -478,25 +492,29 @@ export async function launchAgentInPane(opts) {
478
492
  tmuxPaneId: paneId,
479
493
  eventFile: opts.codexHookEventFile,
480
494
  });
495
+ const codexFeatureFlags = [
496
+ CODEX_ENABLE_HOOKS_FLAG,
497
+ ...(shouldEnableCodexGoals(agent, opts.goalMode) ? [CODEX_ENABLE_GOALS_FLAG] : []),
498
+ ].join(' ');
481
499
  let codexCmd;
482
500
  if (hasInitialPrompt) {
483
501
  let promptFilePath = null;
484
502
  try {
485
- promptFilePath = await writePromptFile(projectRoot, slug, prompt);
503
+ promptFilePath = await writePromptFile(projectRoot, slug, launchPrompt);
486
504
  }
487
505
  catch {
488
506
  // Fall back to inline escaping if prompt file write fails
489
507
  }
490
508
  if (promptFilePath) {
491
509
  const promptBootstrap = buildPromptReadAndDeleteSnippet(promptFilePath);
492
- codexCmd = `${promptBootstrap}; ${codexEnvPrefix} codex --enable codex_hooks "$DMUX_PROMPT_CONTENT"${permissionSuffix}`;
510
+ codexCmd = `${promptBootstrap}; ${codexEnvPrefix} codex ${codexFeatureFlags} "$DMUX_PROMPT_CONTENT"${permissionSuffix}`;
493
511
  }
494
512
  else {
495
- codexCmd = `${codexEnvPrefix} codex --enable codex_hooks ${shellQuote(prompt)}${permissionSuffix}`;
513
+ codexCmd = `${codexEnvPrefix} codex ${codexFeatureFlags} ${shellQuote(launchPrompt)}${permissionSuffix}`;
496
514
  }
497
515
  }
498
516
  else {
499
- codexCmd = `${codexEnvPrefix} codex --enable codex_hooks${permissionSuffix}`;
517
+ codexCmd = `${codexEnvPrefix} codex ${codexFeatureFlags}${permissionSuffix}`;
500
518
  }
501
519
  await tmuxService.sendShellCommand(paneId, codexCmd);
502
520
  await tmuxService.sendTmuxKeys(paneId, 'Enter');
@@ -506,7 +524,7 @@ export async function launchAgentInPane(opts) {
506
524
  if (hasInitialPrompt) {
507
525
  let promptFilePath = null;
508
526
  try {
509
- promptFilePath = await writePromptFile(projectRoot, slug, prompt);
527
+ promptFilePath = await writePromptFile(projectRoot, slug, launchPrompt);
510
528
  }
511
529
  catch {
512
530
  // Fall back to inline escaping if prompt file write fails
@@ -516,7 +534,7 @@ export async function launchAgentInPane(opts) {
516
534
  opencodeCmd = `${promptBootstrap}; opencode --prompt "$DMUX_PROMPT_CONTENT"`;
517
535
  }
518
536
  else {
519
- const escapedPrompt = prompt
537
+ const escapedPrompt = launchPrompt
520
538
  .replace(/\\/g, '\\\\')
521
539
  .replace(/"/g, '\\"')
522
540
  .replace(/`/g, '\\`')
@@ -1 +1 @@
1
- {"version":3,"file":"agentLaunch.js","sourceRoot":"","sources":["../../src/utils/agentLaunch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agentLaunch.js","sourceRoot":"","sources":["../../src/utils/agentLaunch.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,7 @@ export interface AttachAgentOptions {
11
11
  targetPane: DmuxPane;
12
12
  prompt: string;
13
13
  agent: AgentName;
14
+ goalMode?: boolean;
14
15
  existingPanes: DmuxPane[];
15
16
  sessionProjectRoot: string;
16
17
  sessionConfigPath: string;
@@ -1 +1 @@
1
- {"version":3,"file":"attachAgent.d.ts","sourceRoot":"","sources":["../../src/utils/attachAgent.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EAAE,QAAQ,EAAc,MAAM,aAAa,CAAC;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAYlD,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,QAAQ,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,SAAS,CAAC;IACjB,aAAa,EAAE,QAAQ,EAAE,CAAC;IAC1B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,wBAAgB,gCAAgC,CAC9C,UAAU,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,CAAC,EACnD,aAAa,EAAE,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,GACnD,MAAM,CAmBR;AAED,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC,CAsJ7B"}
1
+ {"version":3,"file":"attachAgent.d.ts","sourceRoot":"","sources":["../../src/utils/attachAgent.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EAAE,QAAQ,EAAc,MAAM,aAAa,CAAC;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAalD,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,QAAQ,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,SAAS,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE,QAAQ,EAAE,CAAC;IAC1B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,wBAAgB,gCAAgC,CAC9C,UAAU,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,CAAC,EACnD,aAAa,EAAE,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,GACnD,MAAM,CAmBR;AAED,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC,CAyK7B"}
@@ -16,6 +16,7 @@ import { buildWorktreePaneTitle } from './paneTitle.js';
16
16
  import { SettingsManager } from './settingsManager.js';
17
17
  import { LogService } from '../services/LogService.js';
18
18
  import { installCodexPaneHooks } from './codexHooks.js';
19
+ import { installClaudePaneHooks } from './claudeHooks.js';
19
20
  import { resolveProjectColorTheme } from './paneColors.js';
20
21
  /**
21
22
  * Generate a unique sibling slug like `fix-auth-a2`, `fix-auth-a3`, etc.
@@ -40,7 +41,7 @@ export function generateSiblingSlugForTargetPane(targetPane, existingPanes) {
40
41
  return `${baseSlug}-a${maxSibling + 1}`;
41
42
  }
42
43
  export async function attachAgentToWorktree(options) {
43
- const { targetPane, prompt, agent, existingPanes, sessionProjectRoot, sessionConfigPath, } = options;
44
+ const { targetPane, prompt, agent, goalMode: goalModeOverride, existingPanes, sessionProjectRoot, sessionConfigPath, } = options;
44
45
  if (!targetPane.worktreePath) {
45
46
  throw new Error('Target pane has no worktree to attach to');
46
47
  }
@@ -97,6 +98,7 @@ export async function attachAgentToWorktree(options) {
97
98
  // Small delay for cd to complete
98
99
  await new Promise(r => setTimeout(r, 300));
99
100
  const dmuxPaneId = `dmux-${Date.now()}`;
101
+ const goalMode = goalModeOverride ?? settings.enableGoalModeByDefault ?? false;
100
102
  let codexHookEventFile;
101
103
  if (agent === 'codex') {
102
104
  try {
@@ -110,6 +112,18 @@ export async function attachAgentToWorktree(options) {
110
112
  LogService.getInstance().warn(`Failed to install Codex hooks for ${slug}: ${error instanceof Error ? error.message : String(error)}`, 'attachAgent', dmuxPaneId);
111
113
  }
112
114
  }
115
+ if (agent === 'claude') {
116
+ try {
117
+ installClaudePaneHooks({
118
+ worktreePath: targetPane.worktreePath,
119
+ dmuxPaneId,
120
+ tmuxPaneId: paneInfo,
121
+ });
122
+ }
123
+ catch (error) {
124
+ LogService.getInstance().warn(`Failed to install Claude hooks for ${slug}: ${error instanceof Error ? error.message : String(error)}`, 'attachAgent', dmuxPaneId);
125
+ }
126
+ }
113
127
  // Launch the agent
114
128
  await launchAgentInPane({
115
129
  paneId: paneInfo,
@@ -117,6 +131,7 @@ export async function attachAgentToWorktree(options) {
117
131
  prompt,
118
132
  slug,
119
133
  projectRoot,
134
+ goalMode,
120
135
  dmuxPaneId,
121
136
  codexHookEventFile,
122
137
  permissionMode: settings.permissionMode,
@@ -143,6 +158,7 @@ export async function attachAgentToWorktree(options) {
143
158
  agent,
144
159
  permissionMode: settings.permissionMode,
145
160
  autopilot: settings.enableAutopilotByDefault ?? false,
161
+ goalMode,
146
162
  };
147
163
  // Switch focus back to control pane
148
164
  await tmuxService.selectPane(originalPaneId);
@@ -1 +1 @@
1
- {"version":3,"file":"attachAgent.js","sourceRoot":"","sources":["../../src/utils/attachAgent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"attachAgent.js","sourceRoot":"","sources":["../../src/utils/attachAgent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ export interface ClaudeHookInstallResult {
2
+ eventFile: string;
3
+ }
4
+ export declare function installClaudePaneHooks(opts: {
5
+ worktreePath: string;
6
+ dmuxPaneId: string;
7
+ tmuxPaneId: string;
8
+ }): ClaudeHookInstallResult;
9
+ //# sourceMappingURL=claudeHooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claudeHooks.d.ts","sourceRoot":"","sources":["../../src/utils/claudeHooks.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,MAAM,CAAC;CACnB;AA8CD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE;IAC3C,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB,GAAG,uBAAuB,CAgE1B"}
@@ -0,0 +1,104 @@
1
+ import * as fs from 'fs';
2
+ import path from 'path';
3
+ import { atomicWriteFileSync, atomicWriteJsonSync } from './atomicWrite.js';
4
+ import { shellQuote } from './promptStore.js';
5
+ function escapeForSingleQuotedJs(value) {
6
+ return value.replace(/\\/g, '\\\\').replace(/'/g, "\\'");
7
+ }
8
+ function mergeDmuxStopHook(settingsPath, hookCommand) {
9
+ let settingsConfig = {};
10
+ if (fs.existsSync(settingsPath)) {
11
+ try {
12
+ settingsConfig = JSON.parse(fs.readFileSync(settingsPath, 'utf-8'));
13
+ }
14
+ catch {
15
+ settingsConfig = {};
16
+ }
17
+ }
18
+ if (!settingsConfig || typeof settingsConfig !== 'object' || Array.isArray(settingsConfig)) {
19
+ settingsConfig = {};
20
+ }
21
+ if (!settingsConfig.hooks || typeof settingsConfig.hooks !== 'object' || Array.isArray(settingsConfig.hooks)) {
22
+ settingsConfig.hooks = {};
23
+ }
24
+ const stopHooks = Array.isArray(settingsConfig.hooks.Stop) ? settingsConfig.hooks.Stop : [];
25
+ const nextStopHooks = stopHooks.filter((group) => {
26
+ const handlers = Array.isArray(group?.hooks) ? group.hooks : [];
27
+ return !handlers.some((handler) => (typeof handler?.command === 'string'
28
+ && handler.command.includes('dmux-stop-hook.cjs')));
29
+ });
30
+ nextStopHooks.push({
31
+ hooks: [
32
+ {
33
+ type: 'command',
34
+ command: hookCommand,
35
+ timeout: 5,
36
+ },
37
+ ],
38
+ });
39
+ settingsConfig.hooks.Stop = nextStopHooks;
40
+ atomicWriteJsonSync(settingsPath, settingsConfig);
41
+ }
42
+ export function installClaudePaneHooks(opts) {
43
+ const claudeDir = path.join(opts.worktreePath, '.claude');
44
+ const hookDir = path.join(claudeDir, 'hooks');
45
+ const stateDir = path.join(claudeDir, 'dmux');
46
+ fs.mkdirSync(hookDir, { recursive: true });
47
+ fs.mkdirSync(stateDir, { recursive: true });
48
+ const eventFile = path.join(stateDir, `${opts.dmuxPaneId}.json`);
49
+ const hookScriptPath = path.join(hookDir, 'dmux-stop-hook.cjs');
50
+ const hookScript = `#!/usr/bin/env node
51
+ const fs = require('fs');
52
+
53
+ let input = '';
54
+ process.stdin.setEncoding('utf8');
55
+ process.stdin.on('data', (chunk) => {
56
+ input += chunk;
57
+ });
58
+ process.stdin.on('end', () => {
59
+ let payload = {};
60
+ try {
61
+ payload = input.trim() ? JSON.parse(input) : {};
62
+ } catch (error) {
63
+ payload = { parse_error: String(error), raw: input };
64
+ }
65
+
66
+ const event = {
67
+ source: 'claude-stop-hook',
68
+ dmuxPaneId: process.env.DMUX_PANE_ID || '',
69
+ tmuxPaneId: process.env.DMUX_TMUX_PANE_ID || '',
70
+ expectedDmuxPaneId: '${escapeForSingleQuotedJs(opts.dmuxPaneId)}',
71
+ expectedTmuxPaneId: '${escapeForSingleQuotedJs(opts.tmuxPaneId)}',
72
+ hookEventName: payload.hook_event_name || payload.hookEventName || '',
73
+ stopHookActive: payload.stop_hook_active === true || payload.stopHookActive === true,
74
+ turnId: payload.session_id || payload.turn_id || payload.turnId || '',
75
+ lastAssistantMessage: payload.last_assistant_message || null,
76
+ transcriptPath: payload.transcript_path || null,
77
+ cwd: payload.cwd || process.cwd(),
78
+ timestamp: Date.now()
79
+ };
80
+
81
+ if (event.hookEventName && event.hookEventName !== 'Stop') {
82
+ process.exit(0);
83
+ }
84
+
85
+ if (event.dmuxPaneId !== event.expectedDmuxPaneId) {
86
+ process.exit(0);
87
+ }
88
+
89
+ try {
90
+ fs.writeFileSync('${escapeForSingleQuotedJs(eventFile)}', JSON.stringify(event, null, 2));
91
+ } catch (error) {
92
+ process.exit(0);
93
+ }
94
+
95
+ process.stdout.write(JSON.stringify({ continue: true, suppressOutput: true }));
96
+ });
97
+ `;
98
+ atomicWriteFileSync(hookScriptPath, hookScript);
99
+ fs.chmodSync(hookScriptPath, 0o755);
100
+ const settingsPath = path.join(claudeDir, 'settings.local.json');
101
+ mergeDmuxStopHook(settingsPath, `node ${shellQuote(hookScriptPath)}`);
102
+ return { eventFile };
103
+ }
104
+ //# sourceMappingURL=claudeHooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claudeHooks.js","sourceRoot":"","sources":["../../src/utils/claudeHooks.ts"],"names":[],"mappings":"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"}
@@ -16,10 +16,15 @@ export declare function buildCodexPaneExportSnippet(opts: {
16
16
  tmuxPaneId: string;
17
17
  eventFile?: string;
18
18
  }): string;
19
+ export declare const CODEX_ENABLE_HOOKS_FLAG = "--enable hooks";
20
+ export declare const CODEX_ENABLE_GOALS_FLAG = "--enable goals";
19
21
  export declare function enableCodexHooksFlag(command: string): string;
22
+ export declare function enableCodexFeatureFlags(command: string, flags: string[]): string;
20
23
  export declare function buildCodexHookedCommand(command: string, opts: {
21
24
  dmuxPaneId: string;
22
25
  tmuxPaneId: string;
23
26
  eventFile?: string;
27
+ }, featureOptions?: {
28
+ enableGoals?: boolean;
24
29
  }): string;
25
30
  //# sourceMappingURL=codexHooks.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"codexHooks.d.ts","sourceRoot":"","sources":["../../src/utils/codexHooks.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,MAAM,CAAC;CACnB;AAiDD,wBAAgB,qBAAqB,CAAC,IAAI,EAAE;IAC1C,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB,GAAG,sBAAsB,CA+DzB;AAmBD,wBAAgB,+BAA+B,CAAC,IAAI,EAAE;IACpD,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,MAAM,CAIT;AAED,wBAAgB,2BAA2B,CAAC,IAAI,EAAE;IAChD,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,MAAM,CAKT;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE;IACJ,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GACA,MAAM,CAER"}
1
+ {"version":3,"file":"codexHooks.d.ts","sourceRoot":"","sources":["../../src/utils/codexHooks.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,MAAM,CAAC;CACnB;AAiDD,wBAAgB,qBAAqB,CAAC,IAAI,EAAE;IAC1C,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB,GAAG,sBAAsB,CAgEzB;AAmBD,wBAAgB,+BAA+B,CAAC,IAAI,EAAE;IACpD,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,MAAM,CAIT;AAED,wBAAgB,2BAA2B,CAAC,IAAI,EAAE;IAChD,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,MAAM,CAKT;AAED,eAAO,MAAM,uBAAuB,mBAAmB,CAAC;AACxD,eAAO,MAAM,uBAAuB,mBAAmB,CAAC;AAExD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAOhF;AAED,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE;IACJ,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,EACD,cAAc,GAAE;IACd,WAAW,CAAC,EAAE,OAAO,CAAC;CAClB,GACL,MAAM,CAMR"}
@@ -72,6 +72,7 @@ process.stdin.on('end', () => {
72
72
  expectedTmuxPaneId: '${escapeForSingleQuotedJs(opts.tmuxPaneId)}',
73
73
  hookEventName: payload.hook_event_name || payload.hookEventName || '',
74
74
  turnId: payload.turn_id || payload.turnId || '',
75
+ stopHookActive: payload.stop_hook_active === true || payload.stopHookActive === true,
75
76
  lastAssistantMessage: payload.last_assistant_message || null,
76
77
  transcriptPath: payload.transcript_path || null,
77
78
  cwd: payload.cwd || process.cwd(),
@@ -122,10 +123,23 @@ export function buildCodexPaneExportSnippet(opts) {
122
123
  .map((assignment) => `export ${assignment}`)
123
124
  .join('; ');
124
125
  }
126
+ export const CODEX_ENABLE_HOOKS_FLAG = '--enable hooks';
127
+ export const CODEX_ENABLE_GOALS_FLAG = '--enable goals';
125
128
  export function enableCodexHooksFlag(command) {
126
- return command.replace(/(^|;\s*)codex(?=\s|$)/, '$1codex --enable codex_hooks');
129
+ return enableCodexFeatureFlags(command, [CODEX_ENABLE_HOOKS_FLAG]);
127
130
  }
128
- export function buildCodexHookedCommand(command, opts) {
129
- return `${buildCodexPaneExportSnippet(opts)}; ${enableCodexHooksFlag(command)}`;
131
+ export function enableCodexFeatureFlags(command, flags) {
132
+ const flagsToAdd = flags.filter((flag) => !command.includes(flag));
133
+ if (flagsToAdd.length === 0) {
134
+ return command;
135
+ }
136
+ return command.replace(/(^|;\s*)codex(?=\s|$)/, `$1codex ${flagsToAdd.join(' ')}`);
137
+ }
138
+ export function buildCodexHookedCommand(command, opts, featureOptions = {}) {
139
+ const flags = [
140
+ CODEX_ENABLE_HOOKS_FLAG,
141
+ ...(featureOptions.enableGoals ? [CODEX_ENABLE_GOALS_FLAG] : []),
142
+ ];
143
+ return `${buildCodexPaneExportSnippet(opts)}; ${enableCodexFeatureFlags(command, flags)}`;
130
144
  }
131
145
  //# sourceMappingURL=codexHooks.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"codexHooks.js","sourceRoot":"","sources":["../../src/utils/codexHooks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"codexHooks.js","sourceRoot":"","sources":["../../src/utils/codexHooks.ts"],"names":[],"mappings":"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"}
@@ -2,5 +2,5 @@
2
2
  * Auto-generated AGENTS.md content
3
3
  * DO NOT EDIT MANUALLY - run 'pnpm generate:hooks-docs' to regenerate
4
4
  */
5
- export declare const AGENTS_MD = "# dmux Hooks System - Agent Reference\n\n**Auto-generated documentation for AI agents**\n\nThis document contains everything an AI agent needs to create, modify, and understand dmux hooks. It is automatically generated from the dmux source code and embedded in the binary.\n\n## What You're Working On\n\nYou are editing hooks for **dmux**, a tmux pane manager that creates AI-powered development workflows. Each pane runs in its own git worktree with an AI agent.\n\n## Your Goal\n\nCreate executable bash scripts in `.dmux-hooks/` that run automatically at key lifecycle events.\n\n## Quick Start\n\n1. **Create a hook file**: `touch .dmux-hooks/worktree_created`\n2. **Make it executable**: `chmod +x .dmux-hooks/worktree_created`\n3. **Add shebang**: Start with `#!/bin/bash`\n4. **Use environment variables**: Access `$DMUX_ROOT`, `$DMUX_WORKTREE_PATH`, etc.\n5. **Test it**: Set env vars manually and run the script\n\n## Hook Execution Model\n\n- **Mostly non-blocking**: Most hooks run in background (detached processes)\n- **Bootstrap-gated**: `worktree_created` blocks agent launch so setup can finish first, with no fixed timeout\n- **Live bootstrap output**: During `worktree_created`, stdout/stderr is streamed into the new pane's setup UI\n- **Failure behavior**: Background hook errors are logged; gated hooks can abort the operation\n- **Environment-based**: All context passed via environment variables\n- **Version controlled**: Hooks in `.dmux-hooks/` are shared with team\n- **Priority resolution**: `.dmux-hooks/` \u2192 `.dmux/hooks/` \u2192 `~/.dmux/hooks/`\n\n## Available Hooks\n\n### Pane Lifecycle Hooks\n\n| Hook | When | Common Use Cases |\n|------|------|------------------|\n| `before_pane_create` | Before pane creation | Validation, notifications, pre-flight checks |\n| `pane_created` | After pane, before worktree | Configure tmux settings, prepare environment |\n| `worktree_created` | After worktree creation, before agent launch | Install deps, copy configs, setup git |\n| `before_pane_close` | Before closing | Save state, backup uncommitted work |\n| `pane_closed` | After closed | Cleanup resources, analytics, notifications |\n\n### Worktree Lifecycle Hooks\n\n| Hook | When | Common Use Cases |\n|------|------|------------------|\n| `before_worktree_remove` | Before worktree removal | Archive worktree, save artifacts |\n| `worktree_removed` | After worktree removed | Cleanup external references |\n\n### Merge Lifecycle Hooks\n\n| Hook | When | Common Use Cases |\n|------|------|------------------|\n| `pre_merge` | Before merge operation | Run final tests, create backups |\n| `post_merge` | After successful merge | Deploy, close issues, notify team |\n\n### Interactive Hooks (with HTTP callbacks)\n\n| Hook | When | Common Use Cases |\n|------|------|------------------|\n| `run_test` | When tests triggered | Run test suite, report status via HTTP |\n| `run_dev` | When dev server triggered | Start dev server, create tunnel, report URL |\n\n\n## Environment Variables\n\n### Always Available\n```bash\nDMUX_ROOT=\"/path/to/project\" # Project root directory\nDMUX_SERVER_PORT=\"3142\" # HTTP server port\n```\n\n### Pane Context (most hooks)\n```bash\nDMUX_PANE_ID=\"dmux-1234567890\" # dmux pane identifier\nDMUX_SLUG=\"fix-auth-bug\" # Branch/worktree name\nDMUX_PROMPT=\"Fix authentication bug\" # User's prompt\nDMUX_AGENT=\"claude\" # Agent type (registry id, e.g. claude, codex, opencode)\nDMUX_TMUX_PANE_ID=\"%38\" # tmux pane ID\n```\n\n### Worktree Context\n```bash\nDMUX_WORKTREE_PATH=\"/path/.dmux/worktrees/fix-auth-bug\"\nDMUX_BRANCH=\"fix-auth-bug\" # Same as slug\n```\n\n### Bootstrap Progress Context\n```bash\nDMUX_PROGRESS=\"1\" # Set when output is shown in the new pane setup UI\nDMUX_STATUS_PREFIX=\"DMUX_STATUS:\" # Prefix for clean status messages\n```\n\n`worktree_created` can emit progress while it runs. Any stdout/stderr line is shown in the setup UI; lines prefixed with `$DMUX_STATUS_PREFIX` are displayed without the prefix.\n\n```bash\nstatus() {\n if [ \"${DMUX_PROGRESS:-0}\" = \"1\" ]; then\n echo \"${DMUX_STATUS_PREFIX:-DMUX_STATUS:} $*\"\n else\n echo \"[Hook] $*\"\n fi\n}\n```\n\n### Merge Context\n```bash\nDMUX_TARGET_BRANCH=\"main\" # Branch being merged into\n```\n\n## HTTP Callback API\n\nInteractive hooks (`run_test` and `run_dev`) can update dmux UI via HTTP.\n\n### Update Test Status\n```bash\ncurl -X PUT \"http://localhost:$DMUX_SERVER_PORT/api/panes/$DMUX_PANE_ID/test\" -H \"Content-Type: application/json\" -d '{\"status\": \"running\", \"output\": \"optional test output\"}'\n\n# Status values: \"running\" | \"passed\" | \"failed\"\n```\n\n### Update Dev Server\n```bash\ncurl -X PUT \"http://localhost:$DMUX_SERVER_PORT/api/panes/$DMUX_PANE_ID/dev\" -H \"Content-Type: application/json\" -d '{\"status\": \"running\", \"url\": \"http://localhost:3000\"}'\n\n# Status values: \"running\" | \"stopped\"\n# url: Can be localhost or tunnel URL (ngrok, cloudflared, etc.)\n```\n\n## Common Patterns\n\n### Pattern 1: Install Dependencies\n```bash\n#!/bin/bash\n# .dmux-hooks/worktree_created\n\ncd \"$DMUX_WORKTREE_PATH\"\n\nstatus() {\n if [ \"${DMUX_PROGRESS:-0}\" = \"1\" ]; then\n echo \"${DMUX_STATUS_PREFIX:-DMUX_STATUS:} $*\"\n else\n echo \"[Hook] $*\"\n fi\n}\n\nif [ -f \"pnpm-lock.yaml\" ]; then\n status \"Installing dependencies with pnpm\"\n pnpm install --prefer-offline\nelif [ -f \"package-lock.json\" ]; then\n status \"Installing dependencies with npm\"\n npm install\nelif [ -f \"yarn.lock\" ]; then\n status \"Installing dependencies with yarn\"\n yarn install\nelif [ -f \"Gemfile\" ]; then\n status \"Installing gems\"\n bundle install\nelif [ -f \"requirements.txt\" ]; then\n status \"Installing Python dependencies\"\n pip install -r requirements.txt\nelif [ -f \"Cargo.toml\" ]; then\n status \"Building Rust project\"\n cargo build\nfi\n```\n\n### Pattern 2: Copy Configuration\n```bash\n#!/bin/bash\n# .dmux-hooks/worktree_created\n\n# Copy environment file\nif [ -f \"$DMUX_ROOT/.env.local\" ]; then\n cp \"$DMUX_ROOT/.env.local\" \"$DMUX_WORKTREE_PATH/.env.local\"\nfi\n\n# Copy other config files\nfor file in .env.development .npmrc .yarnrc; do\n if [ -f \"$DMUX_ROOT/$file\" ]; then\n cp \"$DMUX_ROOT/$file\" \"$DMUX_WORKTREE_PATH/$file\"\n fi\ndone\n```\n\n### Pattern 3: Run Tests with Status Updates\n```bash\n#!/bin/bash\n# .dmux-hooks/run_test\n\nset -e\ncd \"$DMUX_WORKTREE_PATH\"\nAPI=\"http://localhost:$DMUX_SERVER_PORT/api/panes/$DMUX_PANE_ID/test\"\n\n# Update: starting\ncurl -s -X PUT \"$API\" -H \"Content-Type: application/json\" -d '{\"status\": \"running\"}' > /dev/null\n\n# Run tests and capture output\nOUTPUT_FILE=\"/tmp/dmux-test-$DMUX_PANE_ID.txt\"\nif pnpm test > \"$OUTPUT_FILE\" 2>&1; then\n STATUS=\"passed\"\nelse\n STATUS=\"failed\"\nfi\n\n# Get output (truncate if too long)\nOUTPUT=$(head -c 5000 \"$OUTPUT_FILE\")\n\n# Update: complete\ncurl -s -X PUT \"$API\" -H \"Content-Type: application/json\" -d \"$(jq -n --arg status \"$STATUS\" --arg output \"$OUTPUT\" '{status: $status, output: $output}')\" > /dev/null\n\nrm -f \"$OUTPUT_FILE\"\n```\n\n### Pattern 4: Dev Server with Tunnel\n```bash\n#!/bin/bash\n# .dmux-hooks/run_dev\n\nset -e\ncd \"$DMUX_WORKTREE_PATH\"\nAPI=\"http://localhost:$DMUX_SERVER_PORT/api/panes/$DMUX_PANE_ID/dev\"\n\n# Start dev server in background\nLOG_FILE=\"/tmp/dmux-dev-$DMUX_PANE_ID.log\"\npnpm dev > \"$LOG_FILE\" 2>&1 &\nDEV_PID=$!\n\n# Wait for server to start\nsleep 5\n\n# Detect port from logs\nPORT=$(grep -oP 'localhost:Kd+' \"$LOG_FILE\" | head -1)\n[ -z \"$PORT\" ] && PORT=3000\n\n# Optional: Create tunnel with cloudflared\nif command -v cloudflared &> /dev/null; then\n TUNNEL=$(cloudflared tunnel --url \"http://localhost:$PORT\" 2>&1 | grep -oP 'https://[a-z0-9-]+.trycloudflare.com' | head -1)\n URL=\"${TUNNEL:-http://localhost:$PORT}\"\nelse\n URL=\"http://localhost:$PORT\"\nfi\n\n# Report status\ncurl -s -X PUT \"$API\" -H \"Content-Type: application/json\" -d \"{\"status\": \"running\", \"url\": \"$URL\"}\" > /dev/null\n\necho \"[Hook] Dev server running at $URL (PID: $DEV_PID)\"\n```\n\n### Pattern 5: Post-Merge Deployment\n```bash\n#!/bin/bash\n# .dmux-hooks/post_merge\n\nset -e\ncd \"$DMUX_ROOT\"\n\n# Only deploy from main/master\nif [ \"$DMUX_TARGET_BRANCH\" != \"main\" ] && [ \"$DMUX_TARGET_BRANCH\" != \"master\" ]; then\n exit 0\nfi\n\n# Push to remote\ngit push origin \"$DMUX_TARGET_BRANCH\"\n\n# Trigger deployment (example: Vercel)\nif [ -n \"$VERCEL_TOKEN\" ]; then\n curl -s -X POST \"https://api.vercel.com/v1/deployments\" -H \"Authorization: Bearer $VERCEL_TOKEN\" -H \"Content-Type: application/json\" -d '{\"name\": \"my-project\"}' > /dev/null\nfi\n\n# Close GitHub issue if prompt contains #123\nISSUE=$(echo \"$DMUX_PROMPT\" | grep -oP '#Kd+' | head -1)\nif [ -n \"$ISSUE\" ] && command -v gh &> /dev/null; then\n gh issue close \"$ISSUE\" -c \"Resolved in $DMUX_SLUG, merged to $DMUX_TARGET_BRANCH\" 2>/dev/null || true\nfi\n```\n\n## Best Practices\n\n1. **Always start with shebang**: `#!/bin/bash`\n2. **Set error handling**: `set -e` (exit on error)\n3. **Make executable**: `chmod +x .dmux-hooks/hook_name`\n4. **Background long operations**: Append `&` to avoid blocking\n5. **Check for required tools**: `command -v tool &> /dev/null`\n6. **Log for debugging**: `echo \"[Hook] message\" >> \"$DMUX_ROOT/.dmux/hooks.log\"`\n7. **Handle missing vars gracefully**: `[ -z \"$VAR\" ] && exit 0`\n8. **Use silent curl**: `curl -s` to avoid noise in logs\n9. **Clean up temp files**: Remove files in `/tmp/`\n10. **Test before committing**: Run hooks manually with mock env vars\n\n## Testing Hooks\n\n### Manual Testing\n```bash\n# 1. Set environment variables\nexport DMUX_ROOT=\"$(pwd)\"\nexport DMUX_PANE_ID=\"test-pane\"\nexport DMUX_SLUG=\"test-branch\"\nexport DMUX_WORKTREE_PATH=\"$(pwd)\"\nexport DMUX_SERVER_PORT=\"3142\"\nexport DMUX_AGENT=\"claude\"\nexport DMUX_PROMPT=\"Test prompt\"\n\n# 2. Run hook directly\n./.dmux-hooks/worktree_created\n\n# 3. Check exit code\necho $? # Should be 0 for success\n```\n\n### Syntax Check\n```bash\n# Check for syntax errors without running\nbash -n ./.dmux-hooks/worktree_created\n```\n\n### Shellcheck (if available)\n```bash\nshellcheck ./.dmux-hooks/worktree_created\n```\n\n## Project Context Analysis\n\nBefore creating hooks, analyze these files in the project:\n\n### Package Manager Detection\n```bash\n# Check which package manager is used\nif [ -f \"pnpm-lock.yaml\" ]; then\n # Use: pnpm install, pnpm test, pnpm dev\nelif [ -f \"package-lock.json\" ]; then\n # Use: npm install, npm test, npm run dev\nelif [ -f \"yarn.lock\" ]; then\n # Use: yarn install, yarn test, yarn dev\nfi\n```\n\n### Test Command Discovery\n```bash\n# Read package.json to find test command\ncat package.json | grep '\"test\"'\n# Or with jq:\njq -r '.scripts.test' package.json\n```\n\n### Dev Command Discovery\n```bash\n# Read package.json to find dev command\ncat package.json | grep '\"dev\"'\n# Or with jq:\njq -r '.scripts.dev' package.json\n```\n\n### Environment Variables\n```bash\n# Check for .env files to copy\nls -la | grep '.env'\n```\n\n### Build System\n```bash\n# Detect build system\nif [ -f \"vite.config.ts\" ]; then\n # Vite project\nelif [ -f \"next.config.js\" ]; then\n # Next.js project\nelif [ -f \"nuxt.config.ts\" ]; then\n # Nuxt project\nfi\n```\n\n## Common Mistakes to Avoid\n\n\u274C **Blocking operations**: `sleep 60` (blocks dmux)\n\u2705 **Background long tasks**: `slow_operation &`\n\n\u274C **Hardcoded paths**: `/Users/me/project`\n\u2705 **Use variables**: `\"$DMUX_ROOT\"`\n\n\u274C **Assuming tools exist**: `pnpm install`\n\u2705 **Check first**: `command -v pnpm && pnpm install`\n\n\u274C **No error handling**: Script fails silently\n\u2705 **Set error mode**: `set -e` or check exit codes\n\n\u274C **Forgetting executable bit**: Hook won't run\n\u2705 **Make executable**: `chmod +x`\n\n\u274C **Noisy output**: Clutters dmux logs\n\u2705 **Silent operations**: `curl -s`, `> /dev/null 2>&1`\n\n\u274C **Not testing**: Deploy and hope\n\u2705 **Test manually**: Run with mock env vars first\n\n## Debugging\n\nIf a hook isn't working:\n\n1. **Check if file exists**: `ls -la .dmux-hooks/`\n2. **Check permissions**: Should show `x` in `rwxr-xr-x`\n3. **Check syntax**: `bash -n .dmux-hooks/hook_name`\n4. **Test manually**: Set env vars and run\n5. **Check logs**: dmux logs to stderr with `[Hooks]` prefix\n6. **Simplify**: Remove complex parts, test basic version\n7. **Check tool availability**: `command -v required_tool`\n\n### Debug Mode\n```bash\n#!/bin/bash\n# Add to top of hook for debugging\nset -x # Print each command before executing\nset -e # Exit on error\n\n# Your hook logic here\n```\n\n## Summary Checklist\n\nWhen creating a new hook:\n\n- [ ] Create file in `.dmux-hooks/`\n- [ ] Add shebang: `#!/bin/bash`\n- [ ] Make executable: `chmod +x`\n- [ ] Add `set -e` for error handling\n- [ ] Use environment variables (never hardcode paths)\n- [ ] Keep blocking hooks chatty with status output\n- [ ] Background long operations with `&` only when the hook does not gate the operation\n- [ ] Check for required tools before using\n- [ ] Test manually with mock env vars\n- [ ] Add comments explaining what it does\n- [ ] Commit to version control\n\n## Getting Help\n\n- **Full documentation**: See `HOOKS.md` in project root\n- **Claude-specific tips**: See `CLAUDE.md` in `.dmux-hooks/`\n- **Examples**: Check `.dmux-hooks/examples/` directory\n- **dmux API**: See `API.md` for REST endpoints\n\n---\n\n*This documentation was auto-generated from dmux source code.*\n*Version: 2026-04-22*\n";
5
+ export declare const AGENTS_MD = "# dmux Hooks System - Agent Reference\n\n**Auto-generated documentation for AI agents**\n\nThis document contains everything an AI agent needs to create, modify, and understand dmux hooks. It is automatically generated from the dmux source code and embedded in the binary.\n\n## What You're Working On\n\nYou are editing hooks for **dmux**, a tmux pane manager that creates AI-powered development workflows. Each pane runs in its own git worktree with an AI agent.\n\n## Your Goal\n\nCreate executable bash scripts in `.dmux-hooks/` that run automatically at key lifecycle events.\n\n## Quick Start\n\n1. **Create a hook file**: `touch .dmux-hooks/worktree_created`\n2. **Make it executable**: `chmod +x .dmux-hooks/worktree_created`\n3. **Add shebang**: Start with `#!/bin/bash`\n4. **Use environment variables**: Access `$DMUX_ROOT`, `$DMUX_WORKTREE_PATH`, etc.\n5. **Test it**: Set env vars manually and run the script\n\n## Hook Execution Model\n\n- **Mostly non-blocking**: Most hooks run in background (detached processes)\n- **Bootstrap-gated**: `worktree_created` blocks agent launch so setup can finish first, with no fixed timeout\n- **Live bootstrap output**: During `worktree_created`, stdout/stderr is streamed into the new pane's setup UI\n- **Failure behavior**: Background hook errors are logged; gated hooks can abort the operation\n- **Environment-based**: All context passed via environment variables\n- **Version controlled**: Hooks in `.dmux-hooks/` are shared with team\n- **Priority resolution**: `.dmux-hooks/` \u2192 `.dmux/hooks/` \u2192 `~/.dmux/hooks/`\n\n## Available Hooks\n\n### Pane Lifecycle Hooks\n\n| Hook | When | Common Use Cases |\n|------|------|------------------|\n| `before_pane_create` | Before pane creation | Validation, notifications, pre-flight checks |\n| `pane_created` | After pane, before worktree | Configure tmux settings, prepare environment |\n| `worktree_created` | After worktree creation, before agent launch | Install deps, copy configs, setup git |\n| `before_pane_close` | Before closing | Save state, backup uncommitted work |\n| `pane_closed` | After closed | Cleanup resources, analytics, notifications |\n\n### Worktree Lifecycle Hooks\n\n| Hook | When | Common Use Cases |\n|------|------|------------------|\n| `before_worktree_remove` | Before worktree removal | Archive worktree, save artifacts |\n| `worktree_removed` | After worktree removed | Cleanup external references |\n\n### Merge Lifecycle Hooks\n\n| Hook | When | Common Use Cases |\n|------|------|------------------|\n| `pre_merge` | Before merge operation | Run final tests, create backups |\n| `post_merge` | After successful merge | Deploy, close issues, notify team |\n\n### Interactive Hooks (with HTTP callbacks)\n\n| Hook | When | Common Use Cases |\n|------|------|------------------|\n| `run_test` | When tests triggered | Run test suite, report status via HTTP |\n| `run_dev` | When dev server triggered | Start dev server, create tunnel, report URL |\n\n\n## Environment Variables\n\n### Always Available\n```bash\nDMUX_ROOT=\"/path/to/project\" # Project root directory\nDMUX_SERVER_PORT=\"3142\" # HTTP server port\n```\n\n### Pane Context (most hooks)\n```bash\nDMUX_PANE_ID=\"dmux-1234567890\" # dmux pane identifier\nDMUX_SLUG=\"fix-auth-bug\" # Branch/worktree name\nDMUX_PROMPT=\"Fix authentication bug\" # User's prompt\nDMUX_AGENT=\"claude\" # Agent type (registry id, e.g. claude, codex, opencode)\nDMUX_TMUX_PANE_ID=\"%38\" # tmux pane ID\n```\n\n### Worktree Context\n```bash\nDMUX_WORKTREE_PATH=\"/path/.dmux/worktrees/fix-auth-bug\"\nDMUX_BRANCH=\"fix-auth-bug\" # Same as slug\n```\n\n### Bootstrap Progress Context\n```bash\nDMUX_PROGRESS=\"1\" # Set when output is shown in the new pane setup UI\nDMUX_STATUS_PREFIX=\"DMUX_STATUS:\" # Prefix for clean status messages\n```\n\n`worktree_created` can emit progress while it runs. Any stdout/stderr line is shown in the setup UI; lines prefixed with `$DMUX_STATUS_PREFIX` are displayed without the prefix.\n\n```bash\nstatus() {\n if [ \"${DMUX_PROGRESS:-0}\" = \"1\" ]; then\n echo \"${DMUX_STATUS_PREFIX:-DMUX_STATUS:} $*\"\n else\n echo \"[Hook] $*\"\n fi\n}\n```\n\n### Merge Context\n```bash\nDMUX_TARGET_BRANCH=\"main\" # Branch being merged into\n```\n\n## HTTP Callback API\n\nInteractive hooks (`run_test` and `run_dev`) can update dmux UI via HTTP.\n\n### Update Test Status\n```bash\ncurl -X PUT \"http://localhost:$DMUX_SERVER_PORT/api/panes/$DMUX_PANE_ID/test\" -H \"Content-Type: application/json\" -d '{\"status\": \"running\", \"output\": \"optional test output\"}'\n\n# Status values: \"running\" | \"passed\" | \"failed\"\n```\n\n### Update Dev Server\n```bash\ncurl -X PUT \"http://localhost:$DMUX_SERVER_PORT/api/panes/$DMUX_PANE_ID/dev\" -H \"Content-Type: application/json\" -d '{\"status\": \"running\", \"url\": \"http://localhost:3000\"}'\n\n# Status values: \"running\" | \"stopped\"\n# url: Can be localhost or tunnel URL (ngrok, cloudflared, etc.)\n```\n\n## Common Patterns\n\n### Pattern 1: Install Dependencies\n```bash\n#!/bin/bash\n# .dmux-hooks/worktree_created\n\ncd \"$DMUX_WORKTREE_PATH\"\n\nstatus() {\n if [ \"${DMUX_PROGRESS:-0}\" = \"1\" ]; then\n echo \"${DMUX_STATUS_PREFIX:-DMUX_STATUS:} $*\"\n else\n echo \"[Hook] $*\"\n fi\n}\n\nif [ -f \"pnpm-lock.yaml\" ]; then\n status \"Installing dependencies with pnpm\"\n pnpm install --prefer-offline\nelif [ -f \"package-lock.json\" ]; then\n status \"Installing dependencies with npm\"\n npm install\nelif [ -f \"yarn.lock\" ]; then\n status \"Installing dependencies with yarn\"\n yarn install\nelif [ -f \"Gemfile\" ]; then\n status \"Installing gems\"\n bundle install\nelif [ -f \"requirements.txt\" ]; then\n status \"Installing Python dependencies\"\n pip install -r requirements.txt\nelif [ -f \"Cargo.toml\" ]; then\n status \"Building Rust project\"\n cargo build\nfi\n```\n\n### Pattern 2: Copy Configuration\n```bash\n#!/bin/bash\n# .dmux-hooks/worktree_created\n\n# Copy environment file\nif [ -f \"$DMUX_ROOT/.env.local\" ]; then\n cp \"$DMUX_ROOT/.env.local\" \"$DMUX_WORKTREE_PATH/.env.local\"\nfi\n\n# Copy other config files\nfor file in .env.development .npmrc .yarnrc; do\n if [ -f \"$DMUX_ROOT/$file\" ]; then\n cp \"$DMUX_ROOT/$file\" \"$DMUX_WORKTREE_PATH/$file\"\n fi\ndone\n```\n\n### Pattern 3: Run Tests with Status Updates\n```bash\n#!/bin/bash\n# .dmux-hooks/run_test\n\nset -e\ncd \"$DMUX_WORKTREE_PATH\"\nAPI=\"http://localhost:$DMUX_SERVER_PORT/api/panes/$DMUX_PANE_ID/test\"\n\n# Update: starting\ncurl -s -X PUT \"$API\" -H \"Content-Type: application/json\" -d '{\"status\": \"running\"}' > /dev/null\n\n# Run tests and capture output\nOUTPUT_FILE=\"/tmp/dmux-test-$DMUX_PANE_ID.txt\"\nif pnpm test > \"$OUTPUT_FILE\" 2>&1; then\n STATUS=\"passed\"\nelse\n STATUS=\"failed\"\nfi\n\n# Get output (truncate if too long)\nOUTPUT=$(head -c 5000 \"$OUTPUT_FILE\")\n\n# Update: complete\ncurl -s -X PUT \"$API\" -H \"Content-Type: application/json\" -d \"$(jq -n --arg status \"$STATUS\" --arg output \"$OUTPUT\" '{status: $status, output: $output}')\" > /dev/null\n\nrm -f \"$OUTPUT_FILE\"\n```\n\n### Pattern 4: Dev Server with Tunnel\n```bash\n#!/bin/bash\n# .dmux-hooks/run_dev\n\nset -e\ncd \"$DMUX_WORKTREE_PATH\"\nAPI=\"http://localhost:$DMUX_SERVER_PORT/api/panes/$DMUX_PANE_ID/dev\"\n\n# Start dev server in background\nLOG_FILE=\"/tmp/dmux-dev-$DMUX_PANE_ID.log\"\npnpm dev > \"$LOG_FILE\" 2>&1 &\nDEV_PID=$!\n\n# Wait for server to start\nsleep 5\n\n# Detect port from logs\nPORT=$(grep -oP 'localhost:Kd+' \"$LOG_FILE\" | head -1)\n[ -z \"$PORT\" ] && PORT=3000\n\n# Optional: Create tunnel with cloudflared\nif command -v cloudflared &> /dev/null; then\n TUNNEL=$(cloudflared tunnel --url \"http://localhost:$PORT\" 2>&1 | grep -oP 'https://[a-z0-9-]+.trycloudflare.com' | head -1)\n URL=\"${TUNNEL:-http://localhost:$PORT}\"\nelse\n URL=\"http://localhost:$PORT\"\nfi\n\n# Report status\ncurl -s -X PUT \"$API\" -H \"Content-Type: application/json\" -d \"{\"status\": \"running\", \"url\": \"$URL\"}\" > /dev/null\n\necho \"[Hook] Dev server running at $URL (PID: $DEV_PID)\"\n```\n\n### Pattern 5: Post-Merge Deployment\n```bash\n#!/bin/bash\n# .dmux-hooks/post_merge\n\nset -e\ncd \"$DMUX_ROOT\"\n\n# Only deploy from main/master\nif [ \"$DMUX_TARGET_BRANCH\" != \"main\" ] && [ \"$DMUX_TARGET_BRANCH\" != \"master\" ]; then\n exit 0\nfi\n\n# Push to remote\ngit push origin \"$DMUX_TARGET_BRANCH\"\n\n# Trigger deployment (example: Vercel)\nif [ -n \"$VERCEL_TOKEN\" ]; then\n curl -s -X POST \"https://api.vercel.com/v1/deployments\" -H \"Authorization: Bearer $VERCEL_TOKEN\" -H \"Content-Type: application/json\" -d '{\"name\": \"my-project\"}' > /dev/null\nfi\n\n# Close GitHub issue if prompt contains #123\nISSUE=$(echo \"$DMUX_PROMPT\" | grep -oP '#Kd+' | head -1)\nif [ -n \"$ISSUE\" ] && command -v gh &> /dev/null; then\n gh issue close \"$ISSUE\" -c \"Resolved in $DMUX_SLUG, merged to $DMUX_TARGET_BRANCH\" 2>/dev/null || true\nfi\n```\n\n## Best Practices\n\n1. **Always start with shebang**: `#!/bin/bash`\n2. **Set error handling**: `set -e` (exit on error)\n3. **Make executable**: `chmod +x .dmux-hooks/hook_name`\n4. **Background long operations**: Append `&` to avoid blocking\n5. **Check for required tools**: `command -v tool &> /dev/null`\n6. **Log for debugging**: `echo \"[Hook] message\" >> \"$DMUX_ROOT/.dmux/hooks.log\"`\n7. **Handle missing vars gracefully**: `[ -z \"$VAR\" ] && exit 0`\n8. **Use silent curl**: `curl -s` to avoid noise in logs\n9. **Clean up temp files**: Remove files in `/tmp/`\n10. **Test before committing**: Run hooks manually with mock env vars\n\n## Testing Hooks\n\n### Manual Testing\n```bash\n# 1. Set environment variables\nexport DMUX_ROOT=\"$(pwd)\"\nexport DMUX_PANE_ID=\"test-pane\"\nexport DMUX_SLUG=\"test-branch\"\nexport DMUX_WORKTREE_PATH=\"$(pwd)\"\nexport DMUX_SERVER_PORT=\"3142\"\nexport DMUX_AGENT=\"claude\"\nexport DMUX_PROMPT=\"Test prompt\"\n\n# 2. Run hook directly\n./.dmux-hooks/worktree_created\n\n# 3. Check exit code\necho $? # Should be 0 for success\n```\n\n### Syntax Check\n```bash\n# Check for syntax errors without running\nbash -n ./.dmux-hooks/worktree_created\n```\n\n### Shellcheck (if available)\n```bash\nshellcheck ./.dmux-hooks/worktree_created\n```\n\n## Project Context Analysis\n\nBefore creating hooks, analyze these files in the project:\n\n### Package Manager Detection\n```bash\n# Check which package manager is used\nif [ -f \"pnpm-lock.yaml\" ]; then\n # Use: pnpm install, pnpm test, pnpm dev\nelif [ -f \"package-lock.json\" ]; then\n # Use: npm install, npm test, npm run dev\nelif [ -f \"yarn.lock\" ]; then\n # Use: yarn install, yarn test, yarn dev\nfi\n```\n\n### Test Command Discovery\n```bash\n# Read package.json to find test command\ncat package.json | grep '\"test\"'\n# Or with jq:\njq -r '.scripts.test' package.json\n```\n\n### Dev Command Discovery\n```bash\n# Read package.json to find dev command\ncat package.json | grep '\"dev\"'\n# Or with jq:\njq -r '.scripts.dev' package.json\n```\n\n### Environment Variables\n```bash\n# Check for .env files to copy\nls -la | grep '.env'\n```\n\n### Build System\n```bash\n# Detect build system\nif [ -f \"vite.config.ts\" ]; then\n # Vite project\nelif [ -f \"next.config.js\" ]; then\n # Next.js project\nelif [ -f \"nuxt.config.ts\" ]; then\n # Nuxt project\nfi\n```\n\n## Common Mistakes to Avoid\n\n\u274C **Blocking operations**: `sleep 60` (blocks dmux)\n\u2705 **Background long tasks**: `slow_operation &`\n\n\u274C **Hardcoded paths**: `/Users/me/project`\n\u2705 **Use variables**: `\"$DMUX_ROOT\"`\n\n\u274C **Assuming tools exist**: `pnpm install`\n\u2705 **Check first**: `command -v pnpm && pnpm install`\n\n\u274C **No error handling**: Script fails silently\n\u2705 **Set error mode**: `set -e` or check exit codes\n\n\u274C **Forgetting executable bit**: Hook won't run\n\u2705 **Make executable**: `chmod +x`\n\n\u274C **Noisy output**: Clutters dmux logs\n\u2705 **Silent operations**: `curl -s`, `> /dev/null 2>&1`\n\n\u274C **Not testing**: Deploy and hope\n\u2705 **Test manually**: Run with mock env vars first\n\n## Debugging\n\nIf a hook isn't working:\n\n1. **Check if file exists**: `ls -la .dmux-hooks/`\n2. **Check permissions**: Should show `x` in `rwxr-xr-x`\n3. **Check syntax**: `bash -n .dmux-hooks/hook_name`\n4. **Test manually**: Set env vars and run\n5. **Check logs**: dmux logs to stderr with `[Hooks]` prefix\n6. **Simplify**: Remove complex parts, test basic version\n7. **Check tool availability**: `command -v required_tool`\n\n### Debug Mode\n```bash\n#!/bin/bash\n# Add to top of hook for debugging\nset -x # Print each command before executing\nset -e # Exit on error\n\n# Your hook logic here\n```\n\n## Summary Checklist\n\nWhen creating a new hook:\n\n- [ ] Create file in `.dmux-hooks/`\n- [ ] Add shebang: `#!/bin/bash`\n- [ ] Make executable: `chmod +x`\n- [ ] Add `set -e` for error handling\n- [ ] Use environment variables (never hardcode paths)\n- [ ] Keep blocking hooks chatty with status output\n- [ ] Background long operations with `&` only when the hook does not gate the operation\n- [ ] Check for required tools before using\n- [ ] Test manually with mock env vars\n- [ ] Add comments explaining what it does\n- [ ] Commit to version control\n\n## Getting Help\n\n- **Full documentation**: See `HOOKS.md` in project root\n- **Claude-specific tips**: See `CLAUDE.md` in `.dmux-hooks/`\n- **Examples**: Check `.dmux-hooks/examples/` directory\n- **dmux API**: See `API.md` for REST endpoints\n\n---\n\n*This documentation was auto-generated from dmux source code.*\n*Version: 2026-05-13*\n";
6
6
  //# sourceMappingURL=generated-agents-doc.d.ts.map
@@ -460,6 +460,6 @@ When creating a new hook:
460
460
  ---
461
461
 
462
462
  *This documentation was auto-generated from dmux source code.*
463
- *Version: 2026-04-22*
463
+ *Version: 2026-05-13*
464
464
  `;
465
465
  //# sourceMappingURL=generated-agents-doc.js.map
@@ -10,6 +10,7 @@ export interface PaneBootstrapConfig {
10
10
  prompt: string;
11
11
  agent?: AgentName;
12
12
  permissionMode?: PermissionMode;
13
+ goalMode?: boolean;
13
14
  pane: DmuxPane;
14
15
  tmuxTitle: string;
15
16
  existingWorktree: boolean;
@@ -18,6 +19,7 @@ export interface PaneBootstrapConfig {
18
19
  metadata: {
19
20
  agent?: AgentName;
20
21
  permissionMode?: PermissionMode;
22
+ goalMode?: boolean;
21
23
  displayName?: string;
22
24
  branchName?: string;
23
25
  mergeTargetChain?: DmuxPane['mergeTargetChain'];
@@ -1 +1 @@
1
- {"version":3,"file":"paneBootstrapConfig.d.ts","sourceRoot":"","sources":["../../src/utils/paneBootstrapConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElE,eAAO,MAAM,gCAAgC,oBAAoB,CAAC;AAElE,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,CAAC,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,IAAI,EAAE,QAAQ,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,qBAAqB,EAAE,OAAO,CAAC;IAC/B,QAAQ,EAAE;QACR,KAAK,CAAC,EAAE,SAAS,CAAC;QAClB,cAAc,CAAC,EAAE,cAAc,CAAC;QAChC,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,gBAAgB,CAAC,EAAE,QAAQ,CAAC,kBAAkB,CAAC,CAAC;KACjD,CAAC;IACF,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACvC"}
1
+ {"version":3,"file":"paneBootstrapConfig.d.ts","sourceRoot":"","sources":["../../src/utils/paneBootstrapConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElE,eAAO,MAAM,gCAAgC,oBAAoB,CAAC;AAElE,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,CAAC,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,EAAE,QAAQ,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,qBAAqB,EAAE,OAAO,CAAC;IAC/B,QAAQ,EAAE;QACR,KAAK,CAAC,EAAE,SAAS,CAAC;QAClB,cAAc,CAAC,EAAE,cAAc,CAAC;QAChC,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,gBAAgB,CAAC,EAAE,QAAQ,CAAC,kBAAkB,CAAC,CAAC;KACjD,CAAC;IACF,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACvC"}