dmux 5.11.0 → 5.11.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.
@@ -1 +1 @@
1
- {"version":3,"file":"usePanes.d.ts","sourceRoot":"","sources":["../../src/hooks/usePanes.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAc,QAAQ,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAoBxE,OAAO,EAAoB,KAAK,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAmBvF,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,CAAC,OAAO,UAAU,QAAQ,CAC9B,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,OAAO,EACpB,WAAW,CAAC,EAAE,MAAM,EACpB,aAAa,CAAC,EAAE,MAAM,EACtB,QAAQ,CAAC,EAAE,OAAO;;;;;;mCAoJiB,QAAQ,EAAE;uDAkBU,cAAc,EAAE;;EAuMxE"}
1
+ {"version":3,"file":"usePanes.d.ts","sourceRoot":"","sources":["../../src/hooks/usePanes.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAc,QAAQ,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAoBxE,OAAO,EAAoB,KAAK,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAmBvF,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,CAAC,OAAO,UAAU,QAAQ,CAC9B,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,OAAO,EACpB,WAAW,CAAC,EAAE,MAAM,EACpB,aAAa,CAAC,EAAE,MAAM,EACtB,QAAQ,CAAC,EAAE,OAAO;;;;;;mCAoJiB,QAAQ,EAAE;uDAkBU,cAAc,EAAE;;EAyMxE"}
@@ -175,8 +175,10 @@ export default function usePanes(panesFile, skipLoading, sessionName, controlPan
175
175
  return normalizedProjects;
176
176
  });
177
177
  };
178
- // Regular terminals are named from settled screen captures. The service reads
179
- // through panesRef so a late LLM response cannot overwrite newer pane state.
178
+ // Regular terminals are named from screen captures: aggressively until a
179
+ // pane earns its first title, then only from settled output. The service
180
+ // reads through panesRef so a late LLM response cannot overwrite newer
181
+ // pane state.
180
182
  useEffect(() => {
181
183
  if (skipLoading)
182
184
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"usePanes.js","sourceRoot":"","sources":["../../src/hooks/usePanes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"usePanes.js","sourceRoot":"","sources":["../../src/hooks/usePanes.ts"],"names":[],"mappings":"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"}
@@ -1,16 +1,25 @@
1
1
  import type { DmuxPane } from '../types.js';
2
- export declare const TERMINAL_NAME_CAPTURE_INTERVAL_MS = 10000;
2
+ export declare const TERMINAL_NAME_CAPTURE_INTERVAL_MS = 2500;
3
+ export declare const TERMINAL_NAME_NAMED_CHECK_INTERVAL_MS = 10000;
3
4
  export declare const TERMINAL_NAME_SETTLE_MS = 15000;
5
+ export declare const TERMINAL_NAME_FAST_SETTLE_MS = 5000;
4
6
  export declare const TERMINAL_RENAME_COOLDOWN_MS: number;
7
+ export interface PaneActivity {
8
+ signature: string;
9
+ alternateScreen: boolean;
10
+ }
5
11
  interface TerminalPaneNamingOptions {
6
12
  getPanes: () => DmuxPane[];
7
13
  savePanes: (panes: DmuxPane[]) => Promise<void>;
8
14
  capturePane?: (paneId: string) => Promise<string>;
15
+ probePaneActivity?: () => Promise<Map<string, PaneActivity> | null>;
9
16
  generateName?: (content: string, pane: DmuxPane) => Promise<string | null>;
10
17
  canGenerateName?: () => boolean;
11
18
  setPaneTitle?: (paneId: string, title: string) => Promise<void>;
12
19
  intervalMs?: number;
20
+ namedCheckIntervalMs?: number;
13
21
  settleMs?: number;
22
+ fastSettleMs?: number;
14
23
  renameCooldownMs?: number;
15
24
  }
16
25
  export declare function normalizeTerminalCapture(content: string): string;
@@ -24,11 +33,14 @@ export declare class TerminalPaneNamingService {
24
33
  private readonly getPanes;
25
34
  private readonly savePanes;
26
35
  private readonly capturePane;
36
+ private readonly probePaneActivity;
27
37
  private readonly generateName;
28
38
  private readonly canGenerateName;
29
39
  private readonly setPaneTitle;
30
40
  private readonly intervalMs;
41
+ private readonly namedCheckIntervalMs;
31
42
  private readonly settleMs;
43
+ private readonly fastSettleMs;
32
44
  private readonly renameCooldownMs;
33
45
  private readonly captureStates;
34
46
  private readonly inFlight;
@@ -38,6 +50,7 @@ export declare class TerminalPaneNamingService {
38
50
  start(): void;
39
51
  stop(): void;
40
52
  checkNow(now?: number): Promise<void>;
53
+ private isDueForInspection;
41
54
  private inspectPane;
42
55
  }
43
56
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"TerminalPaneNamingService.d.ts","sourceRoot":"","sources":["../../src/services/TerminalPaneNamingService.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAQ5C,eAAO,MAAM,iCAAiC,QAAS,CAAC;AACxD,eAAO,MAAM,uBAAuB,QAAS,CAAC;AAC9C,eAAO,MAAM,2BAA2B,QAAa,CAAC;AAgBtD,UAAU,yBAAyB;IACjC,QAAQ,EAAE,MAAM,QAAQ,EAAE,CAAC;IAC3B,SAAS,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAClD,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC3E,eAAe,CAAC,EAAE,MAAM,OAAO,CAAC;IAChC,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAMD,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAchE;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAQlE;AAED,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,aAAa,GAAG,mBAAmB,CAAC,GACxD,OAAO,CAKT;AAED,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAqB1E;AAQD,8EAA8E;AAC9E,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAQnE;AAkBD,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,QAAQ,GACb,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAoBxB;AAQD,qBAAa,yBAAyB;IACpC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmB;IAC5C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAuC;IACjE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAsC;IAClE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA8D;IAC3F,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAgB;IAChD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAmD;IAChF,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAmC;IACjE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqB;IAC9C,OAAO,CAAC,KAAK,CAAC,CAAiB;IAC/B,OAAO,CAAC,QAAQ,CAAS;gBAEb,OAAO,EAAE,yBAAyB;IAe9C,KAAK,IAAI,IAAI;IAOb,IAAI,IAAI,IAAI;IAMN,QAAQ,CAAC,GAAG,GAAE,MAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;YAuBzC,WAAW;CA+G1B"}
1
+ {"version":3,"file":"TerminalPaneNamingService.d.ts","sourceRoot":"","sources":["../../src/services/TerminalPaneNamingService.ts"],"names":[],"mappings":"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"}
@@ -2,18 +2,45 @@ import { createHash } from 'crypto';
2
2
  import { callInference } from '../utils/aiMerge.js';
3
3
  import { hasConfiguredInferenceSync } from './InferenceService.js';
4
4
  import { capturePaneContentAsync } from '../utils/paneCapture.js';
5
+ import { execAsync } from '../utils/execAsync.js';
5
6
  import { getPaneTmuxTitle, sanitizePaneDisplayName } from '../utils/paneTitle.js';
6
7
  import { LogService } from './LogService.js';
7
8
  import { TmuxService } from './TmuxService.js';
8
- export const TERMINAL_NAME_CAPTURE_INTERVAL_MS = 10_000;
9
+ export const TERMINAL_NAME_CAPTURE_INTERVAL_MS = 2_500;
10
+ export const TERMINAL_NAME_NAMED_CHECK_INTERVAL_MS = 10_000;
9
11
  export const TERMINAL_NAME_SETTLE_MS = 15_000;
12
+ export const TERMINAL_NAME_FAST_SETTLE_MS = 5_000;
10
13
  export const TERMINAL_RENAME_COOLDOWN_MS = 5 * 60_000;
11
14
  const TERMINAL_NAME_FAILURE_RETRY_MS = 60_000;
15
+ const TERMINAL_NAME_FAST_FAILURE_RETRY_MS = 10_000;
12
16
  const TERMINAL_NAME_MAX_LENGTH = 48;
13
17
  const TERMINAL_CAPTURE_LINES = 60;
14
18
  const TERMINAL_CAPTURE_MAX_CHARS = 6_000;
15
19
  const TERMINAL_HISTORY_MAX_SNAPSHOTS = 4;
16
20
  const TERMINAL_HISTORY_MAX_CHARS = 12_000;
21
+ /**
22
+ * One batched tmux call covering every pane on the server. Output only
23
+ * reaches a pane's scrollback or moves its cursor when something actually
24
+ * ran, so comparing these counters between ticks detects change without
25
+ * capturing any content.
26
+ */
27
+ async function probeTmuxPaneActivity() {
28
+ const output = await execAsync(`tmux list-panes -a -F '#{pane_id}|#{alternate_on}|#{history_bytes},#{cursor_x},#{cursor_y},#{pane_width},#{pane_height},#{pane_current_command}'`, { silent: true, timeout: 5000 });
29
+ if (!output)
30
+ return null;
31
+ const activity = new Map();
32
+ for (const line of output.split('\n')) {
33
+ const first = line.indexOf('|');
34
+ const second = line.indexOf('|', first + 1);
35
+ if (first <= 0 || second < 0)
36
+ continue;
37
+ activity.set(line.slice(0, first), {
38
+ alternateScreen: line.slice(first + 1, second) === '1',
39
+ signature: line.slice(second + 1),
40
+ });
41
+ }
42
+ return activity.size > 0 ? activity : null;
43
+ }
17
44
  function fingerprintContent(content) {
18
45
  return createHash('sha256').update(content).digest('hex').slice(0, 20);
19
46
  }
@@ -118,11 +145,14 @@ export class TerminalPaneNamingService {
118
145
  getPanes;
119
146
  savePanes;
120
147
  capturePane;
148
+ probePaneActivity;
121
149
  generateName;
122
150
  canGenerateName;
123
151
  setPaneTitle;
124
152
  intervalMs;
153
+ namedCheckIntervalMs;
125
154
  settleMs;
155
+ fastSettleMs;
126
156
  renameCooldownMs;
127
157
  captureStates = new Map();
128
158
  inFlight = new Set();
@@ -133,13 +163,16 @@ export class TerminalPaneNamingService {
133
163
  this.savePanes = options.savePanes;
134
164
  this.capturePane = options.capturePane
135
165
  || ((paneId) => capturePaneContentAsync(paneId, TERMINAL_CAPTURE_LINES));
166
+ this.probePaneActivity = options.probePaneActivity || probeTmuxPaneActivity;
136
167
  this.generateName = options.generateName || generateTerminalPaneName;
137
168
  this.canGenerateName = options.canGenerateName
138
169
  || (() => hasConfiguredInferenceSync());
139
170
  this.setPaneTitle = options.setPaneTitle
140
171
  || ((paneId, title) => TmuxService.getInstance().setPaneTitle(paneId, title));
141
172
  this.intervalMs = options.intervalMs ?? TERMINAL_NAME_CAPTURE_INTERVAL_MS;
173
+ this.namedCheckIntervalMs = options.namedCheckIntervalMs ?? TERMINAL_NAME_NAMED_CHECK_INTERVAL_MS;
142
174
  this.settleMs = options.settleMs ?? TERMINAL_NAME_SETTLE_MS;
175
+ this.fastSettleMs = options.fastSettleMs ?? TERMINAL_NAME_FAST_SETTLE_MS;
143
176
  this.renameCooldownMs = options.renameCooldownMs ?? TERMINAL_RENAME_COOLDOWN_MS;
144
177
  }
145
178
  start() {
@@ -161,78 +194,164 @@ export class TerminalPaneNamingService {
161
194
  this.checking = true;
162
195
  try {
163
196
  const panes = this.getPanes();
164
- const eligibleIds = new Set(panes.filter(isEligibleTerminalPane).map((pane) => pane.id));
197
+ const eligible = panes.filter(isEligibleTerminalPane);
198
+ const eligibleIds = new Set(eligible.map((pane) => pane.id));
165
199
  for (const paneId of this.captureStates.keys()) {
166
200
  if (!eligibleIds.has(paneId))
167
201
  this.captureStates.delete(paneId);
168
202
  }
169
- await Promise.all(panes
170
- .filter(isEligibleTerminalPane)
171
- .map((pane) => this.inspectPane(pane, now)));
203
+ // A tick where every pane is throttled or busy costs no tmux calls at
204
+ // all; otherwise one batched probe decides which panes need capturing.
205
+ const due = eligible.filter((pane) => this.isDueForInspection(pane, now));
206
+ if (due.length === 0)
207
+ return;
208
+ const activity = await this.probePaneActivity();
209
+ await Promise.all(due.map((pane) => this.inspectPane(pane, now, activity?.get(pane.paneId) ?? null, activity !== null)));
172
210
  }
173
211
  finally {
174
212
  this.checking = false;
175
213
  }
176
214
  }
177
- async inspectPane(pane, now) {
215
+ // Once a pane has earned a title, watching it closely buys nothing: fall
216
+ // back to a relaxed cadence. Untitled panes are looked at on every tick so
217
+ // a fresh terminal gets its first title quickly.
218
+ isDueForInspection(pane, now) {
178
219
  if (this.inFlight.has(pane.id))
220
+ return false;
221
+ const state = this.captureStates.get(pane.id);
222
+ return !(Boolean(pane.displayName)
223
+ && state
224
+ && now - state.lastCapturedAt < this.namedCheckIntervalMs);
225
+ }
226
+ async inspectPane(pane, now, activity, probed) {
227
+ if (!this.isDueForInspection(pane, now))
228
+ return;
229
+ // A pane absent from a successful probe no longer exists in tmux.
230
+ if (probed && !activity)
179
231
  return;
232
+ const hasAutoName = Boolean(pane.displayName);
233
+ const previousState = this.captureStates.get(pane.id);
234
+ // When the probe shows no counter movement since the last look, the pane
235
+ // produced no new output: reuse the previous capture instead of spawning
236
+ // another capture-pane process. Full-screen apps (alternate_on) can
237
+ // repaint without moving any counter, so they are always recaptured.
238
+ const unchanged = Boolean(activity
239
+ && !activity.alternateScreen
240
+ && previousState?.activitySignature
241
+ && previousState.activitySignature === activity.signature);
180
242
  let content;
181
- try {
182
- content = normalizeTerminalCapture(await this.capturePane(pane.paneId));
243
+ if (unchanged) {
244
+ content = previousState.lastContent;
183
245
  }
184
- catch {
185
- return;
246
+ else {
247
+ try {
248
+ content = normalizeTerminalCapture(await this.capturePane(pane.paneId));
249
+ }
250
+ catch {
251
+ return;
252
+ }
186
253
  }
187
- if (!content)
254
+ if (!content) {
255
+ // Keep an existing state through a cleared or transiently empty screen
256
+ // so an empty pane is not recaptured every tick.
257
+ if (previousState) {
258
+ previousState.lastCapturedAt = now;
259
+ previousState.activitySignature = activity?.signature;
260
+ }
261
+ else {
262
+ this.captureStates.set(pane.id, {
263
+ fingerprint: fingerprintContent(''),
264
+ stableSince: now,
265
+ lastCapturedAt: now,
266
+ meaningful: false,
267
+ lastContent: '',
268
+ activitySignature: activity?.signature,
269
+ history: [],
270
+ });
271
+ }
188
272
  return;
273
+ }
189
274
  const fingerprint = fingerprintContent(content);
190
- const existingState = this.captureStates.get(pane.id);
191
- if (!existingState || existingState.fingerprint !== fingerprint) {
275
+ let state = this.captureStates.get(pane.id);
276
+ if (!state || state.fingerprint !== fingerprint) {
192
277
  const meaningful = hasMeaningfulTerminalWork(content);
193
- this.captureStates.set(pane.id, {
278
+ state = {
194
279
  fingerprint,
195
280
  stableSince: now,
281
+ lastCapturedAt: now,
196
282
  meaningful,
197
- history: appendTerminalHistory(existingState?.history || [], content, meaningful),
198
- });
199
- return;
283
+ meaningfulSince: meaningful ? state?.meaningfulSince ?? now : undefined,
284
+ lastContent: content,
285
+ activitySignature: activity?.signature,
286
+ lastAttemptAt: state?.lastAttemptAt,
287
+ history: appendTerminalHistory(state?.history || [], content, meaningful),
288
+ };
289
+ this.captureStates.set(pane.id, state);
290
+ // A titled pane only renames from settled output; an untitled one keeps
291
+ // going, since a streaming agent may never hold a stable screen.
292
+ if (hasAutoName)
293
+ return;
200
294
  }
201
- if (!existingState.meaningful || now - existingState.stableSince < this.settleMs) {
202
- return;
295
+ else {
296
+ state.lastCapturedAt = now;
297
+ state.activitySignature = activity?.signature;
203
298
  }
299
+ if (!state.meaningful)
300
+ return;
301
+ const readyAt = hasAutoName
302
+ ? state.stableSince + this.settleMs
303
+ : (state.meaningfulSince ?? now) + this.fastSettleMs;
304
+ if (now < readyAt)
305
+ return;
204
306
  if (pane.lastAutoNameFingerprint === fingerprint)
205
307
  return;
308
+ // Content that already produced an unusable name will produce one again;
309
+ // wait for the pane to show something new before asking the model again.
310
+ if (state.lastRejectedFingerprint === fingerprint)
311
+ return;
206
312
  if (pane.lastAutoNamedAt
207
313
  && now - pane.lastAutoNamedAt < this.renameCooldownMs) {
208
314
  return;
209
315
  }
210
- if (existingState.lastAttemptAt
211
- && now - existingState.lastAttemptAt < TERMINAL_NAME_FAILURE_RETRY_MS) {
316
+ const failureRetryMs = hasAutoName
317
+ ? TERMINAL_NAME_FAILURE_RETRY_MS
318
+ : TERMINAL_NAME_FAST_FAILURE_RETRY_MS;
319
+ if (state.lastAttemptAt
320
+ && now - state.lastAttemptAt < failureRetryMs) {
212
321
  return;
213
322
  }
214
- existingState.lastAttemptAt = now;
323
+ state.lastAttemptAt = now;
215
324
  this.inFlight.add(pane.id);
216
325
  try {
217
- const generatedName = await this.generateName(formatTerminalHistory(existingState.history, content), pane);
218
- if (!generatedName || isLowInformationTerminalName(generatedName))
326
+ const generatedName = await this.generateName(formatTerminalHistory(state.history, content), pane);
327
+ if (!generatedName || isLowInformationTerminalName(generatedName)) {
328
+ state.lastRejectedFingerprint = fingerprint;
219
329
  return;
220
- // Do not apply a name generated from stale output if the user started
221
- // another command while the model request was in flight.
330
+ }
331
+ // Do not replace a title using stale output if the user started another
332
+ // command while the model request was in flight. An untitled pane keeps
333
+ // the name anyway: its screen churns constantly while an agent streams,
334
+ // and an early title about the pane's purpose beats having none.
222
335
  const latestContent = normalizeTerminalCapture(await this.capturePane(pane.paneId));
223
336
  const latestFingerprint = latestContent
224
337
  ? fingerprintContent(latestContent)
225
338
  : '';
226
339
  if (latestFingerprint !== fingerprint) {
227
340
  if (latestFingerprint) {
341
+ const latestMeaningful = hasMeaningfulTerminalWork(latestContent);
228
342
  this.captureStates.set(pane.id, {
229
343
  fingerprint: latestFingerprint,
230
344
  stableSince: now,
231
- meaningful: hasMeaningfulTerminalWork(latestContent),
232
- history: appendTerminalHistory(existingState.history, latestContent, hasMeaningfulTerminalWork(latestContent)),
345
+ lastCapturedAt: now,
346
+ meaningful: latestMeaningful,
347
+ meaningfulSince: latestMeaningful ? state.meaningfulSince ?? now : undefined,
348
+ lastContent: latestContent,
349
+ lastAttemptAt: state.lastAttemptAt,
350
+ history: appendTerminalHistory(state.history, latestContent, latestMeaningful),
233
351
  });
234
352
  }
235
- return;
353
+ if (hasAutoName)
354
+ return;
236
355
  }
237
356
  const latestPanes = this.getPanes();
238
357
  const latestPane = latestPanes.find((candidate) => candidate.id === pane.id);
@@ -1 +1 @@
1
- {"version":3,"file":"TerminalPaneNamingService.js","sourceRoot":"","sources":["../../src/services/TerminalPaneNamingService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TerminalPaneNamingService.js","sourceRoot":"","sources":["../../src/services/TerminalPaneNamingService.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-08-15*\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-08-16*\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-08-15*
463
+ *Version: 2026-08-16*
464
464
  `;
465
465
  //# sourceMappingURL=generated-agents-doc.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dmux",
3
- "version": "5.11.0",
3
+ "version": "5.11.1",
4
4
  "description": "Tmux pane manager with AI agent integration for parallel development workflows",
5
5
  "type": "module",
6
6
  "author": "Justin Schroeder",