dmux 5.7.0 → 5.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (89) hide show
  1. package/README.md +9 -0
  2. package/dist/DmuxApp.d.ts.map +1 -1
  3. package/dist/DmuxApp.js +9 -8
  4. package/dist/DmuxApp.js.map +1 -1
  5. package/dist/components/inputs/InlineCursorInput.d.ts +10 -0
  6. package/dist/components/inputs/InlineCursorInput.d.ts.map +1 -0
  7. package/dist/components/inputs/InlineCursorInput.js +101 -0
  8. package/dist/components/inputs/InlineCursorInput.js.map +1 -0
  9. package/dist/components/popups/newPaneFieldNavigation.d.ts +9 -0
  10. package/dist/components/popups/newPaneFieldNavigation.d.ts.map +1 -0
  11. package/dist/components/popups/newPaneFieldNavigation.js +20 -0
  12. package/dist/components/popups/newPaneFieldNavigation.js.map +1 -0
  13. package/dist/components/popups/newPaneGitOptions.d.ts +23 -0
  14. package/dist/components/popups/newPaneGitOptions.d.ts.map +1 -0
  15. package/dist/components/popups/newPaneGitOptions.js +91 -0
  16. package/dist/components/popups/newPaneGitOptions.js.map +1 -0
  17. package/dist/components/popups/newPanePopup.d.ts +7 -2
  18. package/dist/components/popups/newPanePopup.d.ts.map +1 -1
  19. package/dist/components/popups/newPanePopup.js +256 -19
  20. package/dist/components/popups/newPanePopup.js.map +1 -1
  21. package/dist/hooks/useInputHandling.d.ts +3 -2
  22. package/dist/hooks/useInputHandling.d.ts.map +1 -1
  23. package/dist/hooks/useInputHandling.js +10 -15
  24. package/dist/hooks/useInputHandling.js.map +1 -1
  25. package/dist/hooks/usePaneCreation.d.ts +5 -3
  26. package/dist/hooks/usePaneCreation.d.ts.map +1 -1
  27. package/dist/hooks/usePaneCreation.js +16 -3
  28. package/dist/hooks/usePaneCreation.js.map +1 -1
  29. package/dist/index.js +14 -13
  30. package/dist/index.js.map +1 -1
  31. package/dist/server/embedded-assets.d.ts.map +1 -1
  32. package/dist/server/embedded-assets.js +4 -12
  33. package/dist/server/embedded-assets.js.map +1 -1
  34. package/dist/services/PopupManager.d.ts +7 -2
  35. package/dist/services/PopupManager.d.ts.map +1 -1
  36. package/dist/services/PopupManager.js +30 -3
  37. package/dist/services/PopupManager.js.map +1 -1
  38. package/dist/types.d.ts +6 -0
  39. package/dist/types.d.ts.map +1 -1
  40. package/dist/utils/devWatchCommand.d.ts.map +1 -1
  41. package/dist/utils/devWatchCommand.js +6 -2
  42. package/dist/utils/devWatchCommand.js.map +1 -1
  43. package/dist/utils/dmuxCommand.d.ts +4 -3
  44. package/dist/utils/dmuxCommand.d.ts.map +1 -1
  45. package/dist/utils/dmuxCommand.js +15 -14
  46. package/dist/utils/dmuxCommand.js.map +1 -1
  47. package/dist/utils/generated-agents-doc.d.ts +1 -1
  48. package/dist/utils/generated-agents-doc.d.ts.map +1 -1
  49. package/dist/utils/generated-agents-doc.js +46 -11
  50. package/dist/utils/generated-agents-doc.js.map +1 -1
  51. package/dist/utils/git.d.ts +8 -0
  52. package/dist/utils/git.d.ts.map +1 -1
  53. package/dist/utils/git.js +26 -0
  54. package/dist/utils/git.js.map +1 -1
  55. package/dist/utils/hooks.d.ts +15 -0
  56. package/dist/utils/hooks.d.ts.map +1 -1
  57. package/dist/utils/hooks.js +105 -0
  58. package/dist/utils/hooks.js.map +1 -1
  59. package/dist/utils/hooksDocs.d.ts +1 -1
  60. package/dist/utils/hooksDocs.d.ts.map +1 -1
  61. package/dist/utils/hooksDocs.js +21 -11
  62. package/dist/utils/hooksDocs.js.map +1 -1
  63. package/dist/utils/paneBootstrapConfig.d.ts +27 -0
  64. package/dist/utils/paneBootstrapConfig.d.ts.map +1 -0
  65. package/dist/utils/paneBootstrapConfig.js +2 -0
  66. package/dist/utils/paneBootstrapConfig.js.map +1 -0
  67. package/dist/utils/paneBootstrapRunner.d.ts +3 -0
  68. package/dist/utils/paneBootstrapRunner.d.ts.map +1 -0
  69. package/dist/utils/paneBootstrapRunner.js +517 -0
  70. package/dist/utils/paneBootstrapRunner.js.map +1 -0
  71. package/dist/utils/paneCreation.d.ts +3 -1
  72. package/dist/utils/paneCreation.d.ts.map +1 -1
  73. package/dist/utils/paneCreation.js +138 -267
  74. package/dist/utils/paneCreation.js.map +1 -1
  75. package/dist/utils/paneNaming.d.ts +16 -0
  76. package/dist/utils/paneNaming.d.ts.map +1 -0
  77. package/dist/utils/paneNaming.js +47 -0
  78. package/dist/utils/paneNaming.js.map +1 -0
  79. package/dist/utils/pathEnvironment.d.ts +6 -0
  80. package/dist/utils/pathEnvironment.d.ts.map +1 -0
  81. package/dist/utils/pathEnvironment.js +59 -0
  82. package/dist/utils/pathEnvironment.js.map +1 -0
  83. package/dist/utils/settingsManager.d.ts.map +1 -1
  84. package/dist/utils/settingsManager.js +10 -0
  85. package/dist/utils/settingsManager.js.map +1 -1
  86. package/dist/utils/shellPaneDetection.d.ts.map +1 -1
  87. package/dist/utils/shellPaneDetection.js +4 -0
  88. package/dist/utils/shellPaneDetection.js.map +1 -1
  89. package/package.json +1 -1
@@ -0,0 +1,517 @@
1
+ #!/usr/bin/env node
2
+ import fs from 'fs';
3
+ import path from 'path';
4
+ import { spawn } from 'child_process';
5
+ import React, { useEffect, useState } from 'react';
6
+ import { Box, Text, render as renderInk, useApp, } from 'ink';
7
+ import { buildAgentCommand, buildInitialPromptCommand, getAgentLabel, getSendKeysPostPasteDelayMs, getSendKeysPrePrompt, getSendKeysReadyDelayMs, getSendKeysSubmit, getPromptTransport, } from './agentLaunch.js';
8
+ import { buildPromptReadAndDeleteSnippet, writePromptFile, } from './promptStore.js';
9
+ import { triggerHookWithProgress, initializeHooksDirectory } from './hooks.js';
10
+ import { writeWorktreeMetadata } from './worktreeMetadata.js';
11
+ import { ensureGeminiFolderTrusted } from './geminiTrust.js';
12
+ import { buildCodexHookedCommand, installCodexPaneHooks, } from './codexHooks.js';
13
+ import { TmuxService } from '../services/TmuxService.js';
14
+ import { getPaneTmuxTitle } from './paneTitle.js';
15
+ const spinnerFrames = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'];
16
+ const BOOTSTRAP_HOOK_TIMEOUT_MS = 0;
17
+ let inkInstance = null;
18
+ let viewState = {
19
+ steps: [],
20
+ currentDetail: '',
21
+ };
22
+ const viewListeners = new Set();
23
+ function sleep(ms) {
24
+ return new Promise((resolve) => setTimeout(resolve, ms));
25
+ }
26
+ function cloneSteps(steps) {
27
+ return steps.map((step) => ({ ...step }));
28
+ }
29
+ function updateViewState(patch) {
30
+ viewState = {
31
+ ...viewState,
32
+ ...patch,
33
+ steps: patch.steps ? cloneSteps(patch.steps) : viewState.steps,
34
+ };
35
+ for (const listener of viewListeners) {
36
+ listener(viewState);
37
+ }
38
+ }
39
+ function normalizeProgressLine(line) {
40
+ return line
41
+ .replace(/^\s*(DMUX_STATUS:|dmux:|status:)\s*/i, '')
42
+ .replace(/\s+/g, ' ')
43
+ .trim()
44
+ .slice(0, 180);
45
+ }
46
+ function appendProgressLine(line, stream = 'stdout') {
47
+ const normalized = normalizeProgressLine(line);
48
+ if (!normalized)
49
+ return;
50
+ const prefix = stream === 'stderr' ? '! ' : '';
51
+ const nextLine = `${prefix}${normalized}`;
52
+ updateViewState({
53
+ currentDetail: normalized,
54
+ recentMessages: [...(viewState.recentMessages || []), nextLine].slice(-5),
55
+ });
56
+ }
57
+ function appendProgressChunk(chunk, stream, remainder) {
58
+ const content = remainder + chunk;
59
+ const lines = content.split(/\r?\n/);
60
+ const nextRemainder = lines.pop() || '';
61
+ for (const line of lines) {
62
+ appendProgressLine(line, stream);
63
+ }
64
+ return nextRemainder;
65
+ }
66
+ function useBootstrapSpinner(active) {
67
+ const [frame, setFrame] = useState(0);
68
+ useEffect(() => {
69
+ if (!active)
70
+ return undefined;
71
+ const timer = setInterval(() => {
72
+ setFrame((current) => (current + 1) % spinnerFrames.length);
73
+ }, 80);
74
+ return () => clearInterval(timer);
75
+ }, [active]);
76
+ return spinnerFrames[frame];
77
+ }
78
+ function StepMarker(props) {
79
+ const { step, spinner } = props;
80
+ if (step.state === 'done') {
81
+ return React.createElement(Text, { color: 'green' }, '✔');
82
+ }
83
+ if (step.state === 'failed') {
84
+ return React.createElement(Text, { color: 'red' }, '✖');
85
+ }
86
+ if (step.state === 'skipped') {
87
+ return React.createElement(Text, { dimColor: true }, '◌');
88
+ }
89
+ if (step.state === 'active') {
90
+ return React.createElement(Text, { color: 'cyan' }, spinner);
91
+ }
92
+ return React.createElement(Text, { dimColor: true }, '○');
93
+ }
94
+ function BootstrapApp(props) {
95
+ const { config } = props;
96
+ const [state, setState] = useState(viewState);
97
+ const hasActiveStep = state.steps.some((step) => step.state === 'active');
98
+ const spinner = useBootstrapSpinner(hasActiveStep);
99
+ const agentLabel = config.agent ? getAgentLabel(config.agent) : 'shell';
100
+ const { exit } = useApp();
101
+ useEffect(() => {
102
+ const listener = (nextState) => setState(nextState);
103
+ viewListeners.add(listener);
104
+ return () => {
105
+ viewListeners.delete(listener);
106
+ };
107
+ }, []);
108
+ useEffect(() => {
109
+ if (state.completeMessage) {
110
+ const timer = setTimeout(exit, 80);
111
+ return () => clearTimeout(timer);
112
+ }
113
+ return undefined;
114
+ }, [exit, state.completeMessage]);
115
+ const borderColor = state.failedMessage ? 'red' : state.completeMessage ? 'green' : 'cyan';
116
+ const activeStep = state.steps.find((step) => step.state === 'active');
117
+ const totalSteps = state.steps.length;
118
+ const completedSteps = state.steps.filter((step) => step.state === 'done' || step.state === 'skipped').length;
119
+ const progressWidth = 12;
120
+ const filledBars = totalSteps === 0
121
+ ? 0
122
+ : Math.round((completedSteps / totalSteps) * progressWidth);
123
+ const progressBar = '▰'.repeat(filledBars) + '▱'.repeat(progressWidth - filledBars);
124
+ const headline = state.failedMessage
125
+ ? 'setup needs attention'
126
+ : state.completeMessage
127
+ ? 'ready to launch'
128
+ : 'preparing your agent';
129
+ return React.createElement(Box, { flexDirection: 'column', paddingX: 1, paddingY: 1 }, React.createElement(Box, {
130
+ borderStyle: 'round',
131
+ borderColor,
132
+ flexDirection: 'column',
133
+ paddingX: 2,
134
+ paddingY: 1,
135
+ }, React.createElement(Box, { flexDirection: 'column', marginBottom: 1 }, React.createElement(Text, null, React.createElement(Text, { bold: true, color: borderColor }, 'dmux'), React.createElement(Text, { dimColor: true }, ' · '), React.createElement(Text, null, headline)), React.createElement(Text, { dimColor: true }, 'Worktree and hooks go first, then your agent takes over.')), React.createElement(Box, { flexDirection: 'column', marginBottom: 1 }, React.createElement(Text, null, React.createElement(Text, { dimColor: true }, 'pane '), React.createElement(Text, { bold: true }, config.slug)), React.createElement(Text, null, React.createElement(Text, { dimColor: true }, 'branch '), React.createElement(Text, { bold: true }, config.branchName)), React.createElement(Text, null, React.createElement(Text, { dimColor: true }, 'agent '), React.createElement(Text, { bold: true }, agentLabel))), React.createElement(Box, { flexDirection: 'column' }, ...state.steps.map((step) => React.createElement(Box, { key: step.id }, React.createElement(StepMarker, { step, spinner }), React.createElement(Text, null, ' '), React.createElement(Text, {
136
+ color: step.state === 'active'
137
+ ? 'cyan'
138
+ : step.state === 'failed'
139
+ ? 'red'
140
+ : undefined,
141
+ dimColor: step.state === 'pending' || step.state === 'skipped'
142
+ ? true
143
+ : undefined,
144
+ }, step.label), step.detail
145
+ ? React.createElement(Text, { dimColor: true }, ` ${step.detail}`)
146
+ : null))), React.createElement(Box, { marginTop: 1 }, React.createElement(Text, { color: borderColor }, progressBar), React.createElement(Text, { dimColor: true }, ` ${completedSteps} / ${totalSteps}`)), React.createElement(Box, { marginTop: 1, flexDirection: 'column' }, state.failedMessage
147
+ ? React.createElement(Text, { color: 'red' }, `✖ ${state.failedMessage}`)
148
+ : React.createElement(Text, { dimColor: true }, state.currentDetail
149
+ ? `→ ${state.currentDetail}`
150
+ : activeStep
151
+ ? `→ ${activeStep.label}`
152
+ : state.completeMessage
153
+ ? '✓ ready to launch'
154
+ : 'waiting for the next setup step…')), state.recentMessages && state.recentMessages.length > 0
155
+ ? React.createElement(Box, { flexDirection: 'column', marginTop: 1 }, React.createElement(Text, { dimColor: true }, 'recent output'), ...state.recentMessages.map((message, index) => React.createElement(Text, {
156
+ key: `${index}-${message}`,
157
+ color: message.startsWith('! ') ? 'yellow' : undefined,
158
+ dimColor: !message.startsWith('! '),
159
+ }, ` ${message}`)))
160
+ : null));
161
+ }
162
+ function startRendering(config, steps) {
163
+ viewState = {
164
+ steps: cloneSteps(steps),
165
+ currentDetail: 'Starting setup...',
166
+ };
167
+ inkInstance = renderInk(React.createElement(BootstrapApp, { config }));
168
+ }
169
+ function stopRendering(message) {
170
+ updateViewState({
171
+ completeMessage: message || 'Setup complete',
172
+ currentDetail: message || '',
173
+ });
174
+ inkInstance?.unmount();
175
+ inkInstance = null;
176
+ }
177
+ function setStep(config, steps, id, state, detail) {
178
+ const step = steps.find((candidate) => candidate.id === id);
179
+ if (!step)
180
+ return;
181
+ step.state = state;
182
+ step.detail = detail;
183
+ updateViewState({ steps });
184
+ }
185
+ function buildSteps(config) {
186
+ return [
187
+ {
188
+ id: 'worktree',
189
+ label: config.existingWorktree ? 'Opening existing worktree' : 'Creating git worktree',
190
+ state: 'pending',
191
+ },
192
+ {
193
+ id: 'metadata',
194
+ label: 'Writing dmux metadata',
195
+ state: 'pending',
196
+ },
197
+ {
198
+ id: 'hooks-docs',
199
+ label: 'Preparing hook docs',
200
+ state: config.isHooksEditingSession ? 'pending' : 'skipped',
201
+ },
202
+ {
203
+ id: 'worktree-hook',
204
+ label: 'Running worktree_created hook',
205
+ state: 'pending',
206
+ },
207
+ {
208
+ id: 'agent',
209
+ label: config.agent ? `Launching ${getAgentLabel(config.agent)}` : 'Opening shell',
210
+ state: 'pending',
211
+ },
212
+ ];
213
+ }
214
+ function commandToString(command, args) {
215
+ return [command, ...args].join(' ');
216
+ }
217
+ async function runCommand(command, args, opts) {
218
+ return new Promise((resolve, reject) => {
219
+ updateViewState({ currentDetail: commandToString(command, args) });
220
+ const child = spawn(command, args, {
221
+ cwd: opts.cwd,
222
+ env: opts.env || process.env,
223
+ stdio: ['ignore', 'pipe', 'pipe'],
224
+ });
225
+ let stdout = '';
226
+ let stderr = '';
227
+ let stdoutRemainder = '';
228
+ let stderrRemainder = '';
229
+ child.stdout?.on('data', (data) => {
230
+ const chunk = data.toString();
231
+ stdout += chunk;
232
+ stdoutRemainder = appendProgressChunk(chunk, 'stdout', stdoutRemainder);
233
+ });
234
+ child.stderr?.on('data', (data) => {
235
+ const chunk = data.toString();
236
+ stderr += chunk;
237
+ stderrRemainder = appendProgressChunk(chunk, 'stderr', stderrRemainder);
238
+ });
239
+ child.on('error', (error) => {
240
+ reject(error);
241
+ });
242
+ child.on('close', (code) => {
243
+ appendProgressLine(stdoutRemainder, 'stdout');
244
+ appendProgressLine(stderrRemainder, 'stderr');
245
+ updateViewState({ currentDetail: '' });
246
+ if (code === 0 || opts.allowFailure) {
247
+ resolve({ stdout, stderr, code });
248
+ return;
249
+ }
250
+ const message = (stderr || stdout || `Command failed with exit code ${code}`).trim();
251
+ reject(new Error(message));
252
+ });
253
+ });
254
+ }
255
+ async function enforcePaneTitle(config) {
256
+ const tmuxTitle = config.tmuxTitle
257
+ || getPaneTmuxTitle(config.pane, config.projectRoot, config.pane.projectName);
258
+ try {
259
+ await TmuxService.getInstance().setPaneTitle(config.pane.paneId, tmuxTitle);
260
+ }
261
+ catch {
262
+ // The pane may already be gone; title repair is best-effort.
263
+ }
264
+ }
265
+ async function commandSucceeds(command, args, cwd) {
266
+ const result = await runCommand(command, args, {
267
+ cwd,
268
+ allowFailure: true,
269
+ });
270
+ return result.code === 0;
271
+ }
272
+ async function prepareWorktree(config) {
273
+ if (config.existingWorktree) {
274
+ if (!fs.existsSync(path.join(config.worktreePath, '.git'))) {
275
+ throw new Error(`Existing worktree not found at ${config.worktreePath}`);
276
+ }
277
+ return;
278
+ }
279
+ await runCommand('git', ['worktree', 'prune'], {
280
+ cwd: config.projectRoot,
281
+ allowFailure: true,
282
+ });
283
+ if (config.resolvedStartPoint) {
284
+ const startPointExists = await commandSucceeds('git', ['rev-parse', '--verify', '--end-of-options', config.resolvedStartPoint], config.projectRoot);
285
+ if (!startPointExists) {
286
+ throw new Error(`Worktree start point "${config.resolvedStartPoint}" does not exist`);
287
+ }
288
+ }
289
+ if (fs.existsSync(config.worktreePath)) {
290
+ if (fs.existsSync(path.join(config.worktreePath, '.git'))) {
291
+ return;
292
+ }
293
+ throw new Error(`Path already exists and is not a git worktree: ${config.worktreePath}`);
294
+ }
295
+ fs.mkdirSync(path.dirname(config.worktreePath), { recursive: true });
296
+ const branchExists = await commandSucceeds('git', ['show-ref', '--verify', '--quiet', `refs/heads/${config.branchName}`], config.projectRoot);
297
+ const args = branchExists
298
+ ? ['worktree', 'add', config.worktreePath, config.branchName]
299
+ : [
300
+ 'worktree',
301
+ 'add',
302
+ config.worktreePath,
303
+ '-b',
304
+ config.branchName,
305
+ ...(config.resolvedStartPoint ? [config.resolvedStartPoint] : []),
306
+ ];
307
+ await runCommand('git', args, { cwd: config.projectRoot });
308
+ }
309
+ async function sendInteractivePrompt(config) {
310
+ if (!config.agent || !config.prompt.trim()) {
311
+ return;
312
+ }
313
+ const tmuxService = TmuxService.getInstance();
314
+ const readyDelayMs = getSendKeysReadyDelayMs(config.agent);
315
+ if (readyDelayMs > 0) {
316
+ await sleep(readyDelayMs);
317
+ }
318
+ const bufferName = `dmux-prompt-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
319
+ try {
320
+ for (const key of getSendKeysPrePrompt(config.agent)) {
321
+ await tmuxService.sendTmuxKeys(config.pane.paneId, key);
322
+ await sleep(120);
323
+ }
324
+ await tmuxService.setBuffer(bufferName, config.prompt);
325
+ await tmuxService.pasteBuffer(bufferName, config.pane.paneId);
326
+ const postPasteDelayMs = getSendKeysPostPasteDelayMs(config.agent);
327
+ if (postPasteDelayMs > 0) {
328
+ await sleep(postPasteDelayMs);
329
+ }
330
+ for (const key of getSendKeysSubmit(config.agent)) {
331
+ await tmuxService.sendTmuxKeys(config.pane.paneId, key);
332
+ await sleep(60);
333
+ }
334
+ }
335
+ finally {
336
+ try {
337
+ await tmuxService.deleteBuffer(bufferName);
338
+ }
339
+ catch {
340
+ // Best-effort cleanup.
341
+ }
342
+ }
343
+ }
344
+ async function buildLaunchCommand(config) {
345
+ if (!config.agent) {
346
+ return null;
347
+ }
348
+ const hasInitialPrompt = !!config.prompt.trim();
349
+ const promptTransport = getPromptTransport(config.agent);
350
+ let launchCommand;
351
+ if (hasInitialPrompt && promptTransport !== 'send-keys') {
352
+ let promptFilePath = null;
353
+ try {
354
+ promptFilePath = await writePromptFile(config.projectRoot, config.slug, config.prompt);
355
+ }
356
+ catch {
357
+ promptFilePath = null;
358
+ }
359
+ if (promptFilePath) {
360
+ const promptBootstrap = buildPromptReadAndDeleteSnippet(promptFilePath);
361
+ launchCommand = `${promptBootstrap}; ${buildInitialPromptCommand(config.agent, '"$DMUX_PROMPT_CONTENT"', config.permissionMode)}`;
362
+ }
363
+ else {
364
+ const escapedPrompt = config.prompt
365
+ .replace(/\\/g, '\\\\')
366
+ .replace(/"/g, '\\"')
367
+ .replace(/`/g, '\\`')
368
+ .replace(/\$/g, '\\$');
369
+ launchCommand = buildInitialPromptCommand(config.agent, `"${escapedPrompt}"`, config.permissionMode);
370
+ }
371
+ }
372
+ else {
373
+ launchCommand = buildAgentCommand(config.agent, config.permissionMode);
374
+ }
375
+ if (config.agent === 'codex') {
376
+ let codexHookEventFile;
377
+ try {
378
+ codexHookEventFile = installCodexPaneHooks({
379
+ worktreePath: config.worktreePath,
380
+ dmuxPaneId: config.pane.id,
381
+ tmuxPaneId: config.pane.paneId,
382
+ }).eventFile;
383
+ }
384
+ catch {
385
+ codexHookEventFile = undefined;
386
+ }
387
+ launchCommand = buildCodexHookedCommand(launchCommand, {
388
+ dmuxPaneId: config.pane.id,
389
+ tmuxPaneId: config.pane.paneId,
390
+ eventFile: codexHookEventFile,
391
+ });
392
+ }
393
+ return launchCommand;
394
+ }
395
+ async function runAgent(config, launchCommand) {
396
+ if (!launchCommand) {
397
+ updateViewState({ currentDetail: `Worktree ready at ${config.worktreePath}` });
398
+ return 0;
399
+ }
400
+ await enforcePaneTitle(config);
401
+ updateViewState({ currentDetail: launchCommand });
402
+ process.stdout.write('\x1b[2J\x1b[H');
403
+ process.stdout.write(`dmux setup complete. Launching ${getAgentLabel(config.agent)}...\n\n`);
404
+ return new Promise((resolve, reject) => {
405
+ const child = spawn(launchCommand, {
406
+ cwd: config.worktreePath,
407
+ env: {
408
+ ...process.env,
409
+ DMUX_PANE_ID: config.pane.id,
410
+ DMUX_TMUX_PANE_ID: config.pane.paneId,
411
+ },
412
+ shell: true,
413
+ stdio: 'inherit',
414
+ });
415
+ const forwardSignal = (signal) => {
416
+ try {
417
+ child.kill(signal || 'SIGTERM');
418
+ }
419
+ catch {
420
+ // Ignore signal forwarding failures.
421
+ }
422
+ };
423
+ process.once('SIGINT', forwardSignal);
424
+ process.once('SIGTERM', forwardSignal);
425
+ if (config.agent && getPromptTransport(config.agent) === 'send-keys') {
426
+ sendInteractivePrompt(config).catch(() => {
427
+ // The agent may still accept manual input if automated paste fails.
428
+ });
429
+ }
430
+ child.on('error', (error) => {
431
+ process.off('SIGINT', forwardSignal);
432
+ process.off('SIGTERM', forwardSignal);
433
+ reject(error);
434
+ });
435
+ child.on('close', (code) => {
436
+ process.off('SIGINT', forwardSignal);
437
+ process.off('SIGTERM', forwardSignal);
438
+ resolve(code ?? 0);
439
+ });
440
+ });
441
+ }
442
+ async function main() {
443
+ const configPath = process.argv[2];
444
+ if (!configPath) {
445
+ process.stderr.write('Usage: paneBootstrapRunner <config.json>\n');
446
+ return 1;
447
+ }
448
+ const config = JSON.parse(fs.readFileSync(configPath, 'utf-8'));
449
+ const steps = buildSteps(config);
450
+ await enforcePaneTitle(config);
451
+ startRendering(config, steps);
452
+ try {
453
+ setStep(config, steps, 'worktree', 'active');
454
+ await prepareWorktree(config);
455
+ setStep(config, steps, 'worktree', 'done', config.worktreePath);
456
+ setStep(config, steps, 'metadata', 'active');
457
+ writeWorktreeMetadata(config.worktreePath, config.metadata);
458
+ setStep(config, steps, 'metadata', 'done');
459
+ if (config.isHooksEditingSession) {
460
+ setStep(config, steps, 'hooks-docs', 'active');
461
+ initializeHooksDirectory(config.worktreePath);
462
+ setStep(config, steps, 'hooks-docs', 'done');
463
+ }
464
+ setStep(config, steps, 'worktree-hook', 'active');
465
+ const hookResult = await triggerHookWithProgress('worktree_created', config.projectRoot, config.pane, {
466
+ ...config.hookExtraEnv,
467
+ DMUX_PROGRESS: '1',
468
+ DMUX_STATUS_PREFIX: 'DMUX_STATUS:',
469
+ }, (event) => appendProgressLine(event.line, event.stream), BOOTSTRAP_HOOK_TIMEOUT_MS);
470
+ if (!hookResult.success) {
471
+ throw new Error(hookResult.error || 'worktree_created hook failed');
472
+ }
473
+ setStep(config, steps, 'worktree-hook', 'done');
474
+ if (config.agent === 'gemini') {
475
+ ensureGeminiFolderTrusted(config.worktreePath);
476
+ }
477
+ setStep(config, steps, 'agent', 'active');
478
+ const launchCommand = await buildLaunchCommand(config);
479
+ setStep(config, steps, 'agent', 'done');
480
+ stopRendering('Setup complete. Starting agent...');
481
+ try {
482
+ fs.rmSync(configPath, { force: true });
483
+ }
484
+ catch {
485
+ // Keep going; stale bootstrap configs are harmless.
486
+ }
487
+ return await runAgent(config, launchCommand);
488
+ }
489
+ catch (error) {
490
+ const message = error instanceof Error ? error.message : String(error);
491
+ const activeStep = steps.find((step) => step.state === 'active');
492
+ if (activeStep) {
493
+ setStep(config, steps, activeStep.id, 'failed', message);
494
+ }
495
+ updateViewState({
496
+ currentDetail: message,
497
+ failedMessage: message,
498
+ });
499
+ await enforcePaneTitle(config);
500
+ inkInstance?.unmount();
501
+ inkInstance = null;
502
+ process.stdout.write('\n');
503
+ process.stdout.write('dmux setup failed. The agent was not launched.\n');
504
+ process.stdout.write(`${message}\n`);
505
+ process.stdout.write('Fix the issue above, then close this pane or retry from dmux.\n');
506
+ return 1;
507
+ }
508
+ }
509
+ main()
510
+ .then((code) => {
511
+ process.exitCode = code;
512
+ })
513
+ .catch((error) => {
514
+ process.stderr.write(`${error instanceof Error ? error.stack || error.message : String(error)}\n`);
515
+ process.exitCode = 1;
516
+ });
517
+ //# sourceMappingURL=paneBootstrapRunner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paneBootstrapRunner.js","sourceRoot":"","sources":["../../src/utils/paneBootstrapRunner.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACnD,OAAO,EACL,GAAG,EACH,IAAI,EACJ,MAAM,IAAI,SAAS,EACnB,MAAM,GACP,MAAM,KAAK,CAAC;AAEb,OAAO,EACL,iBAAiB,EACjB,yBAAyB,EACzB,aAAa,EACb,2BAA2B,EAC3B,oBAAoB,EACpB,uBAAuB,EACvB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,+BAA+B,EAC/B,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAC/E,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EACL,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAmBlD,MAAM,aAAa,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACzE,MAAM,yBAAyB,GAAG,CAAC,CAAC;AACpC,IAAI,WAAW,GAAwC,IAAI,CAAC;AAC5D,IAAI,SAAS,GAAc;IACzB,KAAK,EAAE,EAAE;IACT,aAAa,EAAE,EAAE;CAClB,CAAC;AACF,MAAM,aAAa,GAAG,IAAI,GAAG,EAA8B,CAAC;AAE5D,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,UAAU,CAAC,KAAa;IAC/B,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;AAC5C,CAAC;AAED,SAAS,eAAe,CAAC,KAAyB;IAChD,SAAS,GAAG;QACV,GAAG,SAAS;QACZ,GAAG,KAAK;QACR,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK;KAC/D,CAAC;IACF,KAAK,MAAM,QAAQ,IAAI,aAAa,EAAE,CAAC;QACrC,QAAQ,CAAC,SAAS,CAAC,CAAC;IACtB,CAAC;AACH,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAY;IACzC,OAAO,IAAI;SACR,OAAO,CAAC,sCAAsC,EAAE,EAAE,CAAC;SACnD,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;SACpB,IAAI,EAAE;SACN,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AACnB,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAY,EAAE,SAA8B,QAAQ;IAC9E,MAAM,UAAU,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAC/C,IAAI,CAAC,UAAU;QAAE,OAAO;IAExB,MAAM,MAAM,GAAG,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/C,MAAM,QAAQ,GAAG,GAAG,MAAM,GAAG,UAAU,EAAE,CAAC;IAC1C,eAAe,CAAC;QACd,aAAa,EAAE,UAAU;QACzB,cAAc,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,cAAc,IAAI,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KAC1E,CAAC,CAAC;AACL,CAAC;AAED,SAAS,mBAAmB,CAC1B,KAAa,EACb,MAA2B,EAC3B,SAAiB;IAEjB,MAAM,OAAO,GAAG,SAAS,GAAG,KAAK,CAAC;IAClC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACrC,MAAM,aAAa,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;IAExC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACnC,CAAC;IAED,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,SAAS,mBAAmB,CAAC,MAAe;IAC1C,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAEtC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,MAAM;YAAE,OAAO,SAAS,CAAC;QAC9B,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;YAC7B,QAAQ,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;QAC9D,CAAC,EAAE,EAAE,CAAC,CAAC;QACP,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEb,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC;AAC9B,CAAC;AAED,SAAS,UAAU,CAAC,KAAsC;IACxD,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;IAChC,IAAI,IAAI,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;QAC1B,OAAO,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,GAAG,CAAC,CAAC;IAC5D,CAAC;IACD,IAAI,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC5B,OAAO,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,GAAG,CAAC,CAAC;IAC1D,CAAC;IACD,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC7B,OAAO,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC;IAC5D,CAAC;IACD,IAAI,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC5B,OAAO,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,CAAC;IAC/D,CAAC;IACD,OAAO,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC;AAC5D,CAAC;AAED,SAAS,YAAY,CAAC,KAAsC;IAC1D,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IACzB,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAY,SAAS,CAAC,CAAC;IACzD,MAAM,aAAa,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC;IAC1E,MAAM,OAAO,GAAG,mBAAmB,CAAC,aAAa,CAAC,CAAC;IACnD,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IACxE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC;IAE1B,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,QAAQ,GAAG,CAAC,SAAoB,EAAE,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAC/D,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC5B,OAAO,GAAG,EAAE;YACV,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACjC,CAAC,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,KAAK,CAAC,eAAe,EAAE,CAAC;YAC1B,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACnC,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC;IAElC,MAAM,WAAW,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;IAC3F,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC;IACvE,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;IACtC,MAAM,cAAc,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CACvC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,MAAM,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,CAC5D,CAAC,MAAM,CAAC;IACT,MAAM,aAAa,GAAG,EAAE,CAAC;IACzB,MAAM,UAAU,GAAG,UAAU,KAAK,CAAC;QACjC,CAAC,CAAC,CAAC;QACH,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,cAAc,GAAG,UAAU,CAAC,GAAG,aAAa,CAAC,CAAC;IAC9D,MAAM,WAAW,GACf,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,aAAa,GAAG,UAAU,CAAC,CAAC;IAClE,MAAM,QAAQ,GAAG,KAAK,CAAC,aAAa;QAClC,CAAC,CAAC,uBAAuB;QACzB,CAAC,CAAC,KAAK,CAAC,eAAe;YACrB,CAAC,CAAC,iBAAiB;YACnB,CAAC,CAAC,sBAAsB,CAAC;IAE7B,OAAO,KAAK,CAAC,aAAa,CACxB,GAAG,EACH,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,EACrD,KAAK,CAAC,aAAa,CACjB,GAAG,EACH;QACE,WAAW,EAAE,OAAO;QACpB,WAAW;QACX,aAAa,EAAE,QAAQ;QACvB,QAAQ,EAAE,CAAC;QACX,QAAQ,EAAE,CAAC;KACZ,EACD,KAAK,CAAC,aAAa,CACjB,GAAG,EACH,EAAE,aAAa,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC,EAAE,EAC5C,KAAK,CAAC,aAAa,CACjB,IAAI,EACJ,IAAI,EACJ,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,MAAM,CAAC,EACrE,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,OAAO,CAAC,EACtD,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,CAC1C,EACD,KAAK,CAAC,aAAa,CACjB,IAAI,EACJ,EAAE,QAAQ,EAAE,IAAI,EAAE,EAClB,0DAA0D,CAC3D,CACF,EACD,KAAK,CAAC,aAAa,CACjB,GAAG,EACH,EAAE,aAAa,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC,EAAE,EAC5C,KAAK,CAAC,aAAa,CACjB,IAAI,EACJ,IAAI,EACJ,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,UAAU,CAAC,EACzD,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,CACvD,EACD,KAAK,CAAC,aAAa,CACjB,IAAI,EACJ,IAAI,EACJ,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,UAAU,CAAC,EACzD,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,MAAM,CAAC,UAAU,CAAC,CAC7D,EACD,KAAK,CAAC,aAAa,CACjB,IAAI,EACJ,IAAI,EACJ,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,UAAU,CAAC,EACzD,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,UAAU,CAAC,CACtD,CACF,EACD,KAAK,CAAC,aAAa,CACjB,GAAG,EACH,EAAE,aAAa,EAAE,QAAQ,EAAE,EAC3B,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAC1B,KAAK,CAAC,aAAa,CACjB,GAAG,EACH,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,EAChB,KAAK,CAAC,aAAa,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAClD,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EACrC,KAAK,CAAC,aAAa,CACjB,IAAI,EACJ;QACE,KAAK,EACH,IAAI,CAAC,KAAK,KAAK,QAAQ;YACrB,CAAC,CAAC,MAAM;YACR,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,QAAQ;gBACvB,CAAC,CAAC,KAAK;gBACP,CAAC,CAAC,SAAS;QACjB,QAAQ,EACN,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS;YAClD,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,SAAS;KAChB,EACD,IAAI,CAAC,KAAK,CACX,EACD,IAAI,CAAC,MAAM;QACT,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;QACnE,CAAC,CAAC,IAAI,CACT,CACF,CACF,EACD,KAAK,CAAC,aAAa,CACjB,GAAG,EACH,EAAE,SAAS,EAAE,CAAC,EAAE,EAChB,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,WAAW,CAAC,EAC9D,KAAK,CAAC,aAAa,CACjB,IAAI,EACJ,EAAE,QAAQ,EAAE,IAAI,EAAE,EAClB,KAAK,cAAc,MAAM,UAAU,EAAE,CACtC,CACF,EACD,KAAK,CAAC,aAAa,CACjB,GAAG,EACH,EAAE,SAAS,EAAE,CAAC,EAAE,aAAa,EAAE,QAAQ,EAAE,EACzC,KAAK,CAAC,aAAa;QACjB,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,MAAM,KAAK,CAAC,aAAa,EAAE,CAAC;QAC1E,CAAC,CAAC,KAAK,CAAC,aAAa,CACjB,IAAI,EACJ,EAAE,QAAQ,EAAE,IAAI,EAAE,EAClB,KAAK,CAAC,aAAa;YACjB,CAAC,CAAC,MAAM,KAAK,CAAC,aAAa,EAAE;YAC7B,CAAC,CAAC,UAAU;gBACV,CAAC,CAAC,MAAM,UAAU,CAAC,KAAK,EAAE;gBAC1B,CAAC,CAAC,KAAK,CAAC,eAAe;oBACrB,CAAC,CAAC,oBAAoB;oBACtB,CAAC,CAAC,kCAAkC,CAC3C,CACN,EACD,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC;QACrD,CAAC,CAAC,KAAK,CAAC,aAAa,CACjB,GAAG,EACH,EAAE,aAAa,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,EAAE,EACzC,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,eAAe,CAAC,EAC9D,GAAG,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAC7C,KAAK,CAAC,aAAa,CACjB,IAAI,EACJ;YACE,GAAG,EAAE,GAAG,KAAK,IAAI,OAAO,EAAE;YAC1B,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;YACtD,QAAQ,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC;SACpC,EACD,KAAK,OAAO,EAAE,CACf,CACF,CACF;QACH,CAAC,CAAC,IAAI,CACP,CACJ,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,MAA2B,EAAE,KAAa;IAChE,SAAS,GAAG;QACV,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC;QACxB,aAAa,EAAE,mBAAmB;KACnC,CAAC;IACF,WAAW,GAAG,SAAS,CAAC,KAAK,CAAC,aAAa,CAAC,YAAY,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;AACzE,CAAC;AAED,SAAS,aAAa,CAAC,OAAgB;IACrC,eAAe,CAAC;QACd,eAAe,EAAE,OAAO,IAAI,gBAAgB;QAC5C,aAAa,EAAE,OAAO,IAAI,EAAE;KAC7B,CAAC,CAAC;IACH,WAAW,EAAE,OAAO,EAAE,CAAC;IACvB,WAAW,GAAG,IAAI,CAAC;AACrB,CAAC;AAED,SAAS,OAAO,CACd,MAA2B,EAC3B,KAAa,EACb,EAAU,EACV,KAAgB,EAChB,MAAe;IAEf,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IAC5D,IAAI,CAAC,IAAI;QAAE,OAAO;IAClB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACnB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AAC7B,CAAC;AAED,SAAS,UAAU,CAAC,MAA2B;IAC7C,OAAO;QACL;YACE,EAAE,EAAE,UAAU;YACd,KAAK,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,uBAAuB;YACtF,KAAK,EAAE,SAAS;SACjB;QACD;YACE,EAAE,EAAE,UAAU;YACd,KAAK,EAAE,uBAAuB;YAC9B,KAAK,EAAE,SAAS;SACjB;QACD;YACE,EAAE,EAAE,YAAY;YAChB,KAAK,EAAE,qBAAqB;YAC5B,KAAK,EAAE,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;SAC5D;QACD;YACE,EAAE,EAAE,eAAe;YACnB,KAAK,EAAE,+BAA+B;YACtC,KAAK,EAAE,SAAS;SACjB;QACD;YACE,EAAE,EAAE,OAAO;YACX,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe;YAClF,KAAK,EAAE,SAAS;SACjB;KACF,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,OAAe,EAAE,IAAc;IACtD,OAAO,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACtC,CAAC;AAED,KAAK,UAAU,UAAU,CACvB,OAAe,EACf,IAAc,EACd,IAIC;IAED,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,eAAe,CAAC,EAAE,aAAa,EAAE,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QACnE,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE;YACjC,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG;YAC5B,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;SAClC,CAAC,CAAC;QAEH,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,eAAe,GAAG,EAAE,CAAC;QACzB,IAAI,eAAe,GAAG,EAAE,CAAC;QAEzB,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;YACxC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC;YAChB,eAAe,GAAG,mBAAmB,CAAC,KAAK,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC;QAC1E,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;YACxC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC;YAChB,eAAe,GAAG,mBAAmB,CAAC,KAAK,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC;QAC1E,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YAC1B,MAAM,CAAC,KAAK,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACzB,kBAAkB,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;YAC9C,kBAAkB,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;YAC9C,eAAe,CAAC,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC,CAAC;YACvC,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;gBACpC,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;gBAClC,OAAO;YACT,CAAC;YACD,MAAM,OAAO,GAAG,CAAC,MAAM,IAAI,MAAM,IAAI,iCAAiC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YACrF,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,MAA2B;IACzD,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS;WAC7B,gBAAgB,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAChF,IAAI,CAAC;QACH,MAAM,WAAW,CAAC,WAAW,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC9E,CAAC;IAAC,MAAM,CAAC;QACP,6DAA6D;IAC/D,CAAC;AACH,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,OAAe,EAAE,IAAc,EAAE,GAAW;IACzE,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,EAAE,IAAI,EAAE;QAC7C,GAAG;QACH,YAAY,EAAE,IAAI;KACnB,CAAC,CAAC;IACH,OAAO,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC;AAC3B,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,MAA2B;IACxD,IAAI,MAAM,CAAC,gBAAgB,EAAE,CAAC;QAC5B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;YAC3D,MAAM,IAAI,KAAK,CAAC,kCAAkC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;QAC3E,CAAC;QACD,OAAO;IACT,CAAC;IAED,MAAM,UAAU,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC,EAAE;QAC7C,GAAG,EAAE,MAAM,CAAC,WAAW;QACvB,YAAY,EAAE,IAAI;KACnB,CAAC,CAAC;IAEH,IAAI,MAAM,CAAC,kBAAkB,EAAE,CAAC;QAC9B,MAAM,gBAAgB,GAAG,MAAM,eAAe,CAC5C,KAAK,EACL,CAAC,WAAW,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,CAAC,kBAAkB,CAAC,EACxE,MAAM,CAAC,WAAW,CACnB,CAAC;QACF,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,yBAAyB,MAAM,CAAC,kBAAkB,kBAAkB,CAAC,CAAC;QACxF,CAAC;IACH,CAAC;IAED,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;QACvC,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;YAC1D,OAAO;QACT,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,kDAAkD,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;IAC3F,CAAC;IAED,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAErE,MAAM,YAAY,GAAG,MAAM,eAAe,CACxC,KAAK,EACL,CAAC,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,cAAc,MAAM,CAAC,UAAU,EAAE,CAAC,EACtE,MAAM,CAAC,WAAW,CACnB,CAAC;IAEF,MAAM,IAAI,GAAG,YAAY;QACvB,CAAC,CAAC,CAAC,UAAU,EAAE,KAAK,EAAE,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,UAAU,CAAC;QAC7D,CAAC,CAAC;YACE,UAAU;YACV,KAAK;YACL,MAAM,CAAC,YAAY;YACnB,IAAI;YACJ,MAAM,CAAC,UAAU;YACjB,GAAG,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;SAClE,CAAC;IAEN,MAAM,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;AAC7D,CAAC;AAED,KAAK,UAAU,qBAAqB,CAAC,MAA2B;IAC9D,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;QAC3C,OAAO;IACT,CAAC;IAED,MAAM,WAAW,GAAG,WAAW,CAAC,WAAW,EAAE,CAAC;IAC9C,MAAM,YAAY,GAAG,uBAAuB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3D,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;QACrB,MAAM,KAAK,CAAC,YAAY,CAAC,CAAC;IAC5B,CAAC;IAED,MAAM,UAAU,GAAG,eAAe,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;IACzF,IAAI,CAAC;QACH,KAAK,MAAM,GAAG,IAAI,oBAAoB,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YACrD,MAAM,WAAW,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YACxD,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;QAED,MAAM,WAAW,CAAC,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QACvD,MAAM,WAAW,CAAC,WAAW,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAE9D,MAAM,gBAAgB,GAAG,2BAA2B,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACnE,IAAI,gBAAgB,GAAG,CAAC,EAAE,CAAC;YACzB,MAAM,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAChC,CAAC;QAED,KAAK,MAAM,GAAG,IAAI,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YAClD,MAAM,WAAW,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YACxD,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;YAAS,CAAC;QACT,IAAI,CAAC;YACH,MAAM,WAAW,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QAC7C,CAAC;QAAC,MAAM,CAAC;YACP,uBAAuB;QACzB,CAAC;IACH,CAAC;AACH,CAAC;AAED,KAAK,UAAU,kBAAkB,CAAC,MAA2B;IAC3D,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAClB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IAChD,MAAM,eAAe,GAAG,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACzD,IAAI,aAAqB,CAAC;IAE1B,IAAI,gBAAgB,IAAI,eAAe,KAAK,WAAW,EAAE,CAAC;QACxD,IAAI,cAAc,GAAkB,IAAI,CAAC;QACzC,IAAI,CAAC;YACH,cAAc,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QACzF,CAAC;QAAC,MAAM,CAAC;YACP,cAAc,GAAG,IAAI,CAAC;QACxB,CAAC;QAED,IAAI,cAAc,EAAE,CAAC;YACnB,MAAM,eAAe,GAAG,+BAA+B,CAAC,cAAc,CAAC,CAAC;YACxE,aAAa,GAAG,GAAG,eAAe,KAAK,yBAAyB,CAC9D,MAAM,CAAC,KAAK,EACZ,wBAAwB,EACxB,MAAM,CAAC,cAAc,CACtB,EAAE,CAAC;QACN,CAAC;aAAM,CAAC;YACN,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM;iBAChC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC;iBACtB,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC;iBACpB,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC;iBACpB,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YACzB,aAAa,GAAG,yBAAyB,CACvC,MAAM,CAAC,KAAK,EACZ,IAAI,aAAa,GAAG,EACpB,MAAM,CAAC,cAAc,CACtB,CAAC;QACJ,CAAC;IACH,CAAC;SAAM,CAAC;QACN,aAAa,GAAG,iBAAiB,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC;IACzE,CAAC;IAED,IAAI,MAAM,CAAC,KAAK,KAAK,OAAO,EAAE,CAAC;QAC7B,IAAI,kBAAsC,CAAC;QAC3C,IAAI,CAAC;YACH,kBAAkB,GAAG,qBAAqB,CAAC;gBACzC,YAAY,EAAE,MAAM,CAAC,YAAY;gBACjC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE;gBAC1B,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM;aAC/B,CAAC,CAAC,SAAS,CAAC;QACf,CAAC;QAAC,MAAM,CAAC;YACP,kBAAkB,GAAG,SAAS,CAAC;QACjC,CAAC;QAED,aAAa,GAAG,uBAAuB,CAAC,aAAa,EAAE;YACrD,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE;YAC1B,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM;YAC9B,SAAS,EAAE,kBAAkB;SAC9B,CAAC,CAAC;IACL,CAAC;IAED,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,MAA2B,EAAE,aAA4B;IAC/E,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,eAAe,CAAC,EAAE,aAAa,EAAE,qBAAqB,MAAM,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;QAC/E,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC/B,eAAe,CAAC,EAAE,aAAa,EAAE,aAAa,EAAE,CAAC,CAAC;IAClD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IACtC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,kCAAkC,aAAa,CAAC,MAAM,CAAC,KAAM,CAAC,SAAS,CAAC,CAAC;IAE9F,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,KAAK,GAAG,KAAK,CAAC,aAAa,EAAE;YACjC,GAAG,EAAE,MAAM,CAAC,YAAY;YACxB,GAAG,EAAE;gBACH,GAAG,OAAO,CAAC,GAAG;gBACd,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE;gBAC5B,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM;aACtC;YACD,KAAK,EAAE,IAAI;YACX,KAAK,EAAE,SAAS;SACjB,CAAC,CAAC;QAEH,MAAM,aAAa,GAAG,CAAC,MAAuB,EAAE,EAAE;YAChD,IAAI,CAAC;gBACH,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,SAAS,CAAC,CAAC;YAClC,CAAC;YAAC,MAAM,CAAC;gBACP,qCAAqC;YACvC,CAAC;QACH,CAAC,CAAC;QAEF,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;QACtC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QAEvC,IAAI,MAAM,CAAC,KAAK,IAAI,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,WAAW,EAAE,CAAC;YACrE,qBAAqB,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;gBACvC,oEAAoE;YACtE,CAAC,CAAC,CAAC;QACL,CAAC;QAED,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YAC1B,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;YACrC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;YACtC,MAAM,CAAC,KAAK,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACzB,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;YACrC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;YACtC,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACnC,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC;QACnE,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAwB,CAAC;IACvF,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;IACjC,MAAM,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC/B,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAE9B,IAAI,CAAC;QACH,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;QAC7C,MAAM,eAAe,CAAC,MAAM,CAAC,CAAC;QAC9B,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;QAEhE,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;QAC7C,qBAAqB,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC5D,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;QAE3C,IAAI,MAAM,CAAC,qBAAqB,EAAE,CAAC;YACjC,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;YAC/C,wBAAwB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YAC9C,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;QAC/C,CAAC;QAED,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,QAAQ,CAAC,CAAC;QAClD,MAAM,UAAU,GAAG,MAAM,uBAAuB,CAC9C,kBAAkB,EAClB,MAAM,CAAC,WAAW,EAClB,MAAM,CAAC,IAAI,EACX;YACE,GAAG,MAAM,CAAC,YAAY;YACtB,aAAa,EAAE,GAAG;YAClB,kBAAkB,EAAE,cAAc;SACnC,EACD,CAAC,KAAK,EAAE,EAAE,CAAC,kBAAkB,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,EACvD,yBAAyB,CAC1B,CAAC;QACF,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,KAAK,IAAI,8BAA8B,CAAC,CAAC;QACtE,CAAC;QACD,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,CAAC,CAAC;QAEhD,IAAI,MAAM,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,yBAAyB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QACjD,CAAC;QAED,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;QAC1C,MAAM,aAAa,GAAG,MAAM,kBAAkB,CAAC,MAAM,CAAC,CAAC;QACvD,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QACxC,aAAa,CAAC,mCAAmC,CAAC,CAAC;QAEnD,IAAI,CAAC;YACH,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACzC,CAAC;QAAC,MAAM,CAAC;YACP,oDAAoD;QACtD,CAAC;QAED,OAAO,MAAM,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAC/C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC;QACjE,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC3D,CAAC;QACD,eAAe,CAAC;YACd,aAAa,EAAE,OAAO;YACtB,aAAa,EAAE,OAAO;SACvB,CAAC,CAAC;QACH,MAAM,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAC/B,WAAW,EAAE,OAAO,EAAE,CAAC;QACvB,WAAW,GAAG,IAAI,CAAC;QACnB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAAC;QACzE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,IAAI,CAAC,CAAC;QACrC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,iEAAiE,CAAC,CAAC;QACxF,OAAO,CAAC,CAAC;IACX,CAAC;AACH,CAAC;AAED,IAAI,EAAE;KACH,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;IACb,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;AAC1B,CAAC,CAAC;KACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACf,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACnG,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,CAAC,CAAC,CAAC"}
@@ -1,10 +1,12 @@
1
1
  import type { DmuxPane, MergeTargetReference } from '../types.js';
2
- import { type AgentName } from './agentLaunch.js';
2
+ import type { AgentName } from './agentLaunch.js';
3
3
  export interface CreatePaneOptions {
4
4
  prompt: string;
5
5
  agent?: AgentName;
6
6
  slugSuffix?: string;
7
7
  slugBase?: string;
8
+ baseBranchOverride?: string;
9
+ branchNameOverride?: string;
8
10
  existingWorktree?: {
9
11
  slug: string;
10
12
  worktreePath: string;
@@ -1 +1 @@
1
- {"version":3,"file":"paneCreation.d.ts","sourceRoot":"","sources":["../../src/utils/paneCreation.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAc,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAe9E,OAAO,EAUL,KAAK,SAAS,EACf,MAAM,kBAAkB,CAAC;AAiB1B,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,YAAY,EAAE,MAAM,CAAC;QACrB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,oBAAoB,EAAE,CAAC;IAC1C,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,QAAQ,EAAE,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,QAAQ,CAAC;IACf,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAgBD;;;GAGG;AACH,wBAAsB,UAAU,CAC9B,OAAO,EAAE,iBAAiB,EAC1B,eAAe,EAAE,SAAS,EAAE,GAC3B,OAAO,CAAC,gBAAgB,CAAC,CAsmB3B;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CAsHf"}
1
+ {"version":3,"file":"paneCreation.d.ts","sourceRoot":"","sources":["../../src/utils/paneCreation.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAc,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAe9E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAclD,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,gBAAgB,CAAC,EAAE;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,YAAY,EAAE,MAAM,CAAC;QACrB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,oBAAoB,EAAE,CAAC;IAC1C,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,QAAQ,EAAE,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,QAAQ,CAAC;IACf,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AA2FD;;;GAGG;AACH,wBAAsB,UAAU,CAC9B,OAAO,EAAE,iBAAiB,EAC1B,eAAe,EAAE,SAAS,EAAE,GAC3B,OAAO,CAAC,gBAAgB,CAAC,CAqa3B;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CAsHf"}