aimux-cli 0.1.5 → 0.1.6

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 (159) hide show
  1. package/dist/builtin-metadata-watchers.js +1 -1
  2. package/dist/context/context-bridge.d.ts +1 -1
  3. package/dist/context/context-bridge.js +1 -1
  4. package/dist/dashboard/command-spec.d.ts +7 -0
  5. package/dist/dashboard/command-spec.js +127 -0
  6. package/dist/dashboard/command-spec.js.map +1 -0
  7. package/dist/{dashboard-feedback.js → dashboard/feedback.js} +1 -1
  8. package/dist/dashboard/feedback.js.map +1 -0
  9. package/dist/{dashboard.d.ts → dashboard/index.d.ts} +16 -5
  10. package/dist/{dashboard.js → dashboard/index.js} +7 -4
  11. package/dist/dashboard/index.js.map +1 -0
  12. package/dist/{dashboard-pending-actions.d.ts → dashboard/pending-actions.d.ts} +8 -3
  13. package/dist/dashboard/pending-actions.js +90 -0
  14. package/dist/dashboard/pending-actions.js.map +1 -0
  15. package/dist/{dashboard-session-actions.d.ts → dashboard/session-actions.d.ts} +2 -2
  16. package/dist/{dashboard-session-actions.js → dashboard/session-actions.js} +1 -1
  17. package/dist/dashboard/session-actions.js.map +1 -0
  18. package/dist/{dashboard-session-registry.d.ts → dashboard/session-registry.d.ts} +7 -7
  19. package/dist/{dashboard-session-registry.js → dashboard/session-registry.js} +2 -2
  20. package/dist/dashboard/session-registry.js.map +1 -0
  21. package/dist/{dashboard-state.d.ts → dashboard/state.d.ts} +1 -1
  22. package/dist/{dashboard-state.js → dashboard/state.js} +1 -1
  23. package/dist/dashboard/state.js.map +1 -0
  24. package/dist/{dashboard-targets.d.ts → dashboard/targets.d.ts} +1 -6
  25. package/dist/{dashboard-targets.js → dashboard/targets.js} +5 -123
  26. package/dist/dashboard/targets.js.map +1 -0
  27. package/dist/{dashboard-ui-state-store.d.ts → dashboard/ui-state-store.d.ts} +2 -2
  28. package/dist/{dashboard-ui-state-store.js → dashboard/ui-state-store.js} +2 -2
  29. package/dist/dashboard/ui-state-store.js.map +1 -0
  30. package/dist/fast-control.d.ts +1 -1
  31. package/dist/fast-control.js +1 -1
  32. package/dist/instance-directory.js +1 -1
  33. package/dist/main.js +6 -5
  34. package/dist/main.js.map +1 -1
  35. package/dist/metadata-server.js +3 -17
  36. package/dist/metadata-server.js.map +1 -1
  37. package/dist/multiplexer/agent-io-methods.d.ts +40 -0
  38. package/dist/multiplexer/agent-io-methods.js +177 -0
  39. package/dist/multiplexer/agent-io-methods.js.map +1 -0
  40. package/dist/multiplexer/archives.d.ts +15 -0
  41. package/dist/multiplexer/archives.js +270 -0
  42. package/dist/multiplexer/archives.js.map +1 -0
  43. package/dist/multiplexer/dashboard-actions-methods.d.ts +57 -0
  44. package/dist/multiplexer/dashboard-actions-methods.js +159 -0
  45. package/dist/multiplexer/dashboard-actions-methods.js.map +1 -0
  46. package/dist/multiplexer/dashboard-control.d.ts +36 -0
  47. package/dist/multiplexer/dashboard-control.js +571 -0
  48. package/dist/multiplexer/dashboard-control.js.map +1 -0
  49. package/dist/multiplexer/dashboard-interaction.d.ts +12 -0
  50. package/dist/multiplexer/dashboard-interaction.js +552 -0
  51. package/dist/multiplexer/dashboard-interaction.js.map +1 -0
  52. package/dist/multiplexer/dashboard-model.d.ts +40 -0
  53. package/dist/multiplexer/dashboard-model.js +420 -0
  54. package/dist/multiplexer/dashboard-model.js.map +1 -0
  55. package/dist/multiplexer/dashboard-ops.d.ts +35 -0
  56. package/dist/multiplexer/dashboard-ops.js +158 -0
  57. package/dist/multiplexer/dashboard-ops.js.map +1 -0
  58. package/dist/multiplexer/dashboard-state-methods.d.ts +56 -0
  59. package/dist/multiplexer/dashboard-state-methods.js +123 -0
  60. package/dist/multiplexer/dashboard-state-methods.js.map +1 -0
  61. package/dist/multiplexer/dashboard-tail-methods.d.ts +104 -0
  62. package/dist/multiplexer/dashboard-tail-methods.js +252 -0
  63. package/dist/multiplexer/dashboard-tail-methods.js.map +1 -0
  64. package/dist/multiplexer/dashboard-view-methods.d.ts +51 -0
  65. package/dist/multiplexer/dashboard-view-methods.js +159 -0
  66. package/dist/multiplexer/dashboard-view-methods.js.map +1 -0
  67. package/dist/multiplexer/index.d.ts +205 -0
  68. package/dist/multiplexer/index.js +444 -0
  69. package/dist/multiplexer/index.js.map +1 -0
  70. package/dist/multiplexer/navigation.d.ts +17 -0
  71. package/dist/multiplexer/navigation.js +203 -0
  72. package/dist/multiplexer/navigation.js.map +1 -0
  73. package/dist/multiplexer/notifications.d.ts +6 -0
  74. package/dist/multiplexer/notifications.js +75 -0
  75. package/dist/multiplexer/notifications.js.map +1 -0
  76. package/dist/multiplexer/persistence-methods.d.ts +77 -0
  77. package/dist/multiplexer/persistence-methods.js +347 -0
  78. package/dist/multiplexer/persistence-methods.js.map +1 -0
  79. package/dist/multiplexer/runtime-lifecycle-methods.d.ts +36 -0
  80. package/dist/multiplexer/runtime-lifecycle-methods.js +235 -0
  81. package/dist/multiplexer/runtime-lifecycle-methods.js.map +1 -0
  82. package/dist/multiplexer/runtime-state.d.ts +32 -0
  83. package/dist/multiplexer/runtime-state.js +439 -0
  84. package/dist/multiplexer/runtime-state.js.map +1 -0
  85. package/dist/{multiplexer-runtime-sync.d.ts → multiplexer/runtime-sync.d.ts} +2 -2
  86. package/dist/{multiplexer-runtime-sync.js → multiplexer/runtime-sync.js} +1 -1
  87. package/dist/multiplexer/runtime-sync.js.map +1 -0
  88. package/dist/multiplexer/services.d.ts +23 -0
  89. package/dist/multiplexer/services.js +187 -0
  90. package/dist/multiplexer/services.js.map +1 -0
  91. package/dist/multiplexer/session-actions.d.ts +36 -0
  92. package/dist/multiplexer/session-actions.js +108 -0
  93. package/dist/multiplexer/session-actions.js.map +1 -0
  94. package/dist/multiplexer/session-launch.d.ts +20 -0
  95. package/dist/multiplexer/session-launch.js +407 -0
  96. package/dist/multiplexer/session-launch.js.map +1 -0
  97. package/dist/multiplexer/session-runtime-core.d.ts +37 -0
  98. package/dist/multiplexer/session-runtime-core.js +400 -0
  99. package/dist/multiplexer/session-runtime-core.js.map +1 -0
  100. package/dist/multiplexer/subscreens.d.ts +30 -0
  101. package/dist/multiplexer/subscreens.js +685 -0
  102. package/dist/multiplexer/subscreens.js.map +1 -0
  103. package/dist/multiplexer/tool-picker.d.ts +8 -0
  104. package/dist/multiplexer/tool-picker.js +142 -0
  105. package/dist/multiplexer/tool-picker.js.map +1 -0
  106. package/dist/multiplexer/worktrees.d.ts +12 -0
  107. package/dist/multiplexer/worktrees.js +181 -0
  108. package/dist/multiplexer/worktrees.js.map +1 -0
  109. package/dist/project-scanner.d.ts +1 -1
  110. package/dist/project-scanner.js +1 -1
  111. package/dist/session-bootstrap.d.ts +1 -1
  112. package/dist/session-semantics.d.ts +1 -1
  113. package/dist/{tmux-doctor.d.ts → tmux/doctor.d.ts} +1 -1
  114. package/dist/{tmux-doctor.js → tmux/doctor.js} +4 -3
  115. package/dist/tmux/doctor.js.map +1 -0
  116. package/dist/{tmux-runtime-manager.d.ts → tmux/runtime-manager.d.ts} +1 -0
  117. package/dist/{tmux-runtime-manager.js → tmux/runtime-manager.js} +29 -10
  118. package/dist/tmux/runtime-manager.js.map +1 -0
  119. package/dist/{tmux-session-transport.d.ts → tmux/session-transport.d.ts} +2 -2
  120. package/dist/{tmux-session-transport.js → tmux/session-transport.js} +2 -2
  121. package/dist/tmux/session-transport.js.map +1 -0
  122. package/dist/{tmux-statusline.d.ts → tmux/statusline.d.ts} +1 -1
  123. package/dist/{tmux-statusline.js → tmux/statusline.js} +4 -4
  124. package/dist/tmux/statusline.js.map +1 -0
  125. package/dist/{tmux-switcher.js → tmux/switcher.js} +7 -7
  126. package/dist/tmux/switcher.js.map +1 -0
  127. package/dist/{tmux-window-open.d.ts → tmux/window-open.d.ts} +1 -1
  128. package/dist/{tmux-window-open.js → tmux/window-open.js} +1 -1
  129. package/dist/tmux/window-open.js.map +1 -0
  130. package/dist/tool-output-watchers.js +1 -1
  131. package/dist/tui/render/box.js +25 -6
  132. package/dist/tui/render/box.js.map +1 -1
  133. package/dist/tui/screens/dashboard-renderers.d.ts +3 -2
  134. package/dist/tui/screens/dashboard-renderers.js +17 -2
  135. package/dist/tui/screens/dashboard-renderers.js.map +1 -1
  136. package/dist/tui/screens/overlay-renderers.js +2 -2
  137. package/dist/tui/screens/overlay-renderers.js.map +1 -1
  138. package/package.json +1 -1
  139. package/dist/dashboard-feedback.js.map +0 -1
  140. package/dist/dashboard-pending-actions.js +0 -52
  141. package/dist/dashboard-pending-actions.js.map +0 -1
  142. package/dist/dashboard-session-actions.js.map +0 -1
  143. package/dist/dashboard-session-registry.js.map +0 -1
  144. package/dist/dashboard-state.js.map +0 -1
  145. package/dist/dashboard-targets.js.map +0 -1
  146. package/dist/dashboard-ui-state-store.js.map +0 -1
  147. package/dist/dashboard.js.map +0 -1
  148. package/dist/multiplexer-runtime-sync.js.map +0 -1
  149. package/dist/multiplexer.d.ts +0 -500
  150. package/dist/multiplexer.js +0 -6081
  151. package/dist/multiplexer.js.map +0 -1
  152. package/dist/tmux-doctor.js.map +0 -1
  153. package/dist/tmux-runtime-manager.js.map +0 -1
  154. package/dist/tmux-session-transport.js.map +0 -1
  155. package/dist/tmux-statusline.js.map +0 -1
  156. package/dist/tmux-switcher.js.map +0 -1
  157. package/dist/tmux-window-open.js.map +0 -1
  158. /package/dist/{dashboard-feedback.d.ts → dashboard/feedback.d.ts} +0 -0
  159. /package/dist/{tmux-switcher.d.ts → tmux/switcher.d.ts} +0 -0
@@ -0,0 +1,407 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import { initProject, loadConfig } from "../config.js";
3
+ import { buildContextPreamble } from "../context/context-bridge.js";
4
+ import { readHistory } from "../context/history.js";
5
+ import { findMainRepo } from "../worktree.js";
6
+ import { TmuxSessionTransport } from "../tmux/session-transport.js";
7
+ import { injectClaudeHookArgs } from "../claude-hooks.js";
8
+ import { wrapCommandWithShellIntegration } from "../shell-hooks.js";
9
+ import { debug } from "../debug.js";
10
+ import { updateNotificationContext } from "../notification-context.js";
11
+ import { markNotificationsRead } from "../notifications.js";
12
+ export async function run(host, opts) {
13
+ initProject();
14
+ await host.instanceDirectory.registerInstance(host.instanceId, process.cwd());
15
+ host.startHeartbeat();
16
+ host.syncSessionsFromState();
17
+ host.taskDispatcher = host.createTaskDispatcher();
18
+ host.orchestrationDispatcher = host.createOrchestrationDispatcher();
19
+ host.defaultCommand = opts.command;
20
+ host.defaultArgs = opts.args;
21
+ const config = loadConfig();
22
+ const toolEntry = Object.entries(config.tools).find(([, t]) => t.command === opts.command);
23
+ const toolConfig = toolEntry?.[1];
24
+ const toolConfigKey = toolEntry?.[0];
25
+ host.writeInstructionFiles();
26
+ host.createSession(opts.command, opts.args, toolConfig?.preambleFlag, toolConfigKey, undefined, toolConfig?.sessionIdFlag);
27
+ host.focusSession(host.sessions.length - 1);
28
+ return 0;
29
+ }
30
+ export async function runDashboard(host) {
31
+ initProject();
32
+ await host.instanceDirectory.registerInstance(host.instanceId, process.cwd());
33
+ host.startHeartbeat();
34
+ host.startedInDashboard = true;
35
+ host.mode = "dashboard";
36
+ host.syncSessionsFromState();
37
+ const config = loadConfig();
38
+ const defaultTool = config.tools[config.defaultTool];
39
+ if (defaultTool) {
40
+ host.defaultCommand = defaultTool.command;
41
+ host.defaultArgs = defaultTool.args;
42
+ }
43
+ host.writeInstructionFiles();
44
+ host.terminalHost.enterRawMode();
45
+ host.onStdinData = (data) => {
46
+ if (host.isFocusInReport(data)) {
47
+ host.handleDashboardFocusIn();
48
+ return;
49
+ }
50
+ if (host.handleActiveDashboardOverlayKey(data)) {
51
+ return;
52
+ }
53
+ if (host.isDashboardScreen("activity")) {
54
+ host.handleActivityKey(data);
55
+ return;
56
+ }
57
+ if (host.isDashboardScreen("workflow")) {
58
+ host.handleWorkflowKey(data);
59
+ return;
60
+ }
61
+ if (host.isDashboardScreen("threads")) {
62
+ host.handleThreadsKey(data);
63
+ return;
64
+ }
65
+ if (host.isDashboardScreen("plans")) {
66
+ host.handlePlansKey(data);
67
+ return;
68
+ }
69
+ if (host.isDashboardScreen("help")) {
70
+ host.handleHelpKey(data);
71
+ return;
72
+ }
73
+ if (host.isDashboardScreen("graveyard")) {
74
+ host.handleGraveyardKey(data);
75
+ return;
76
+ }
77
+ if (host.mode === "dashboard") {
78
+ host.handleDashboardKey(data);
79
+ }
80
+ };
81
+ process.stdin.on("data", host.onStdinData);
82
+ host.onResize = () => {
83
+ host.renderCurrentDashboardView();
84
+ };
85
+ process.stdout.on("resize", host.onResize);
86
+ host.mode = "dashboard";
87
+ host.loadDashboardUiState();
88
+ const primed = await host.refreshDashboardModelFromService(true);
89
+ if (!primed) {
90
+ throw new Error("dashboard requires a live project service desktop-state endpoint");
91
+ }
92
+ host.terminalHost.enterAlternateScreen(true);
93
+ host.startStatusRefresh();
94
+ host.renderDashboard();
95
+ const exitCode = await new Promise((resolve) => {
96
+ host.resolveRun = resolve;
97
+ });
98
+ host.teardown();
99
+ return exitCode;
100
+ }
101
+ export async function runProjectService(host) {
102
+ initProject();
103
+ host.mode = "project-service";
104
+ host.syncSessionsFromState();
105
+ host.taskDispatcher = host.createTaskDispatcher();
106
+ host.orchestrationDispatcher = host.createOrchestrationDispatcher();
107
+ host.writeInstructionFiles();
108
+ await host.startProjectServices();
109
+ host.refreshDesktopStateSnapshot();
110
+ host.writeStatuslineFile();
111
+ host.startStatusRefresh();
112
+ host.startProjectServiceRefresh();
113
+ const exitCode = await new Promise((resolve) => {
114
+ host.resolveRun = resolve;
115
+ });
116
+ host.teardown();
117
+ return exitCode;
118
+ }
119
+ export async function resumeSessions(host, toolFilter) {
120
+ initProject();
121
+ await host.instanceDirectory.registerInstance(host.instanceId, process.cwd());
122
+ host.startHeartbeat();
123
+ const state = host.constructor.loadState();
124
+ if (!state || state.sessions.length === 0) {
125
+ console.error("No saved session state found (or state is stale). Starting fresh.");
126
+ return host.runDashboard();
127
+ }
128
+ const config = loadConfig();
129
+ const sessionsToResume = toolFilter
130
+ ? state.sessions.filter((s) => s.tool === toolFilter || s.toolConfigKey === toolFilter)
131
+ : state.sessions;
132
+ if (sessionsToResume.length === 0) {
133
+ console.error(`No saved sessions found for tool "${toolFilter}". Starting fresh.`);
134
+ return host.runDashboard();
135
+ }
136
+ const ownedByOthers = host.getRemoteOwnedSessionKeys();
137
+ for (const saved of sessionsToResume) {
138
+ if (ownedByOthers.has(saved.id) || (saved.backendSessionId && ownedByOthers.has(saved.backendSessionId))) {
139
+ debug(`skipping resume of ${saved.id} — owned by another instance`, "session");
140
+ continue;
141
+ }
142
+ const toolCfg = config.tools[saved.toolConfigKey];
143
+ if (!toolCfg)
144
+ continue;
145
+ const bsid = saved.backendSessionId;
146
+ let resumeArgs;
147
+ if (host.sessionBootstrap.canResumeWithBackendSessionId(toolCfg, bsid)) {
148
+ resumeArgs = toolCfg.resumeArgs.map((a) => a.replace("{sessionId}", bsid));
149
+ }
150
+ else {
151
+ resumeArgs = toolCfg.resumeFallback ?? [];
152
+ }
153
+ const args = host.sessionBootstrap.composeToolArgs(toolCfg, resumeArgs, saved.args);
154
+ debug(`resuming ${saved.command} with backendSessionId=${bsid ?? "none (fallback)"}`, "session");
155
+ host.createSession(saved.command, args, toolCfg.preambleFlag, saved.toolConfigKey, undefined, undefined, saved.worktreePath, saved.backendSessionId);
156
+ }
157
+ host.openTmuxDashboardTarget();
158
+ return 0;
159
+ }
160
+ export async function restoreSessions(host, toolFilter) {
161
+ initProject();
162
+ const state = host.constructor.loadState();
163
+ if (!state || state.sessions.length === 0) {
164
+ console.error("No saved session state found (or state is stale). Starting fresh.");
165
+ return host.runDashboard();
166
+ }
167
+ const config = loadConfig();
168
+ const sessionsToRestore = toolFilter
169
+ ? state.sessions.filter((s) => s.tool === toolFilter || s.toolConfigKey === toolFilter)
170
+ : state.sessions;
171
+ if (sessionsToRestore.length === 0) {
172
+ console.error(`No saved sessions found for tool "${toolFilter}". Starting fresh.`);
173
+ return host.runDashboard();
174
+ }
175
+ for (const saved of sessionsToRestore) {
176
+ const toolCfg = config.tools[saved.toolConfigKey];
177
+ if (!toolCfg)
178
+ continue;
179
+ const turns = readHistory(saved.id, { lastN: 20 });
180
+ let historyContext = "";
181
+ if (turns.length > 0) {
182
+ const formattedTurns = turns.map((t) => {
183
+ const time = t.ts.slice(0, 16);
184
+ if (t.type === "prompt")
185
+ return `[${time}] User: ${t.content}`;
186
+ if (t.type === "response")
187
+ return `[${time}] Agent: ${t.content}`;
188
+ if (t.type === "git")
189
+ return `[${time}] Git: ${t.content}${t.files ? ` (${t.files.join(", ")})` : ""}`;
190
+ return `[${time}] ${t.content}`;
191
+ });
192
+ historyContext =
193
+ "\n\n=== Your previous session context ===\n" +
194
+ "You were previously working in this codebase. Here's what happened:\n" +
195
+ formattedTurns.join("\n") +
196
+ "\n=== End previous context ===\n";
197
+ }
198
+ const liveContext = buildContextPreamble(sessionsToRestore.filter((s) => s.id !== saved.id).map((s) => s.id));
199
+ const extraPreamble = historyContext + (liveContext ? "\n" + liveContext : "");
200
+ host.createSession(saved.command, saved.args, toolCfg.preambleFlag, saved.toolConfigKey, extraPreamble.trim() || undefined, undefined, saved.worktreePath);
201
+ }
202
+ host.openTmuxDashboardTarget();
203
+ return 0;
204
+ }
205
+ export function createSession(host, command, args, preambleFlag, toolConfigKey, extraPreamble, sessionIdFlag, worktreePath, backendSessionIdOverride, sessionIdOverride, detachedInTmux = false) {
206
+ const cols = process.stdout.columns ?? 80;
207
+ const sessionId = sessionIdOverride ?? `${command}-${Math.random().toString(36).slice(2, 8)}`;
208
+ const backendSessionId = backendSessionIdOverride ?? (sessionIdFlag ? randomUUID() : undefined);
209
+ const preamble = host.sessionBootstrap.buildSessionPreamble({
210
+ sessionId,
211
+ command,
212
+ worktreePath,
213
+ extraPreamble,
214
+ });
215
+ host.sessionBootstrap.ensurePlanFile(sessionId, command, worktreePath);
216
+ let finalArgs = preambleFlag ? [...args, ...preambleFlag, preamble] : [...args];
217
+ let launchCommand = command;
218
+ if (sessionIdFlag && backendSessionId) {
219
+ const expandedFlag = sessionIdFlag.map((a) => a.replace("{sessionId}", backendSessionId));
220
+ finalArgs = [...finalArgs, ...expandedFlag];
221
+ }
222
+ const toolCfg = toolConfigKey ? loadConfig().tools[toolConfigKey] : undefined;
223
+ let projectRoot = process.cwd();
224
+ try {
225
+ projectRoot = findMainRepo(worktreePath ?? process.cwd());
226
+ }
227
+ catch {
228
+ projectRoot = process.cwd();
229
+ }
230
+ if (toolCfg && toolConfigKey === "claude" && toolCfg.command === command && toolCfg.wrapperEnabled !== false) {
231
+ finalArgs = injectClaudeHookArgs(finalArgs, {
232
+ sessionId,
233
+ projectRoot,
234
+ backendSessionId,
235
+ });
236
+ launchCommand = toolCfg.command;
237
+ }
238
+ else if (toolCfg && toolCfg.command === command) {
239
+ const wrapped = wrapCommandWithShellIntegration({
240
+ projectRoot,
241
+ sessionId,
242
+ tool: toolConfigKey ?? command,
243
+ command: launchCommand,
244
+ args: finalArgs,
245
+ });
246
+ launchCommand = wrapped.command;
247
+ finalArgs = wrapped.args;
248
+ }
249
+ if (preambleFlag) {
250
+ host.sessionBootstrap.finalizePreamble(command, preamble);
251
+ }
252
+ debug(`creating session: ${command} (configKey=${toolConfigKey ?? "cli"}, backendId=${backendSessionId ?? "none"}, cwd=${worktreePath ?? process.cwd()}, args=${finalArgs.length})`, "session");
253
+ debug(`spawn args: ${JSON.stringify(finalArgs.map((a) => (a.length > 100 ? a.slice(0, 100) + "..." : a)))}`, "session");
254
+ const sessionStartTime = Date.now();
255
+ const tmuxSession = host.tmuxRuntimeManager.ensureProjectSession(process.cwd());
256
+ const target = host.tmuxRuntimeManager.createWindow(tmuxSession.sessionName, host.getSessionLabel(sessionId) ?? command, worktreePath ?? process.cwd(), launchCommand, finalArgs, { detached: detachedInTmux });
257
+ const tmuxTransport = new TmuxSessionTransport(sessionId, command, target, host.tmuxRuntimeManager, cols, process.stdout.rows ?? 24);
258
+ host.sessionTmuxTargets.set(sessionId, target);
259
+ const session = tmuxTransport;
260
+ host.registerManagedSession(tmuxTransport, args, toolConfigKey, worktreePath, undefined, sessionStartTime);
261
+ session.backendSessionId = backendSessionId;
262
+ if (session instanceof TmuxSessionTransport) {
263
+ host.syncTmuxWindowMetadata(sessionId);
264
+ }
265
+ host.activeIndex = host.sessions.length - 1;
266
+ if (host.startedInDashboard && host.mode === "dashboard") {
267
+ host.invalidateDesktopStateSnapshot();
268
+ host.refreshLocalDashboardModel();
269
+ host.updateWorktreeSessions();
270
+ host.preferDashboardEntrySelection("session", sessionId, worktreePath);
271
+ host.renderDashboard();
272
+ }
273
+ host.saveState();
274
+ return session;
275
+ }
276
+ export async function migrateAgent(host, sessionId, targetWorktreePath) {
277
+ const session = host.sessions.find((s) => s.id === sessionId);
278
+ if (!session) {
279
+ throw new Error(`Session "${sessionId}" not found`);
280
+ }
281
+ const sourceWorktree = host.sessionWorktreePaths.get(sessionId);
282
+ const sourceCwd = sourceWorktree ?? process.cwd();
283
+ const toolConfigKey = host.sessionToolKeys.get(sessionId) ?? session.command;
284
+ const config = loadConfig();
285
+ const toolCfg = config.tools[toolConfigKey];
286
+ const originalArgs = host.sessionOriginalArgs.get(sessionId) ?? [];
287
+ const backendSessionId = session.backendSessionId;
288
+ let migrateArgs = originalArgs;
289
+ let historyContext = "";
290
+ const useBackendResume = host.sessionBootstrap.canResumeWithBackendSessionId(toolCfg, backendSessionId);
291
+ await host.contextWatcher.syncNow(sessionId).catch(() => { });
292
+ const sourceSnapshot = host.sessionBootstrap.readForkSourceSnapshot(sessionId);
293
+ if (useBackendResume) {
294
+ migrateArgs = host.sessionBootstrap.composeToolArgs(toolCfg, toolCfg.resumeArgs.map((arg) => arg.replace("{sessionId}", backendSessionId)), originalArgs);
295
+ }
296
+ else if (sourceSnapshot.historyText) {
297
+ historyContext =
298
+ "\n\n=== Your previous session context ===\n" +
299
+ "You were previously working in a different worktree. Here's what happened:\n" +
300
+ sourceSnapshot.historyText +
301
+ "\n=== End previous context ===\n";
302
+ }
303
+ else if (sourceSnapshot.liveText) {
304
+ historyContext =
305
+ "\n\n=== Your previous session context ===\n" +
306
+ "You were previously working in a different worktree. Here's the most recent terminal context:\n" +
307
+ sourceSnapshot.liveText +
308
+ "\n=== End previous context ===\n";
309
+ }
310
+ debug(`migrating session ${sessionId} from ${sourceCwd} to ${targetWorktreePath}`, "session");
311
+ session.kill();
312
+ const effectiveTarget = targetWorktreePath === process.cwd() ? undefined : targetWorktreePath;
313
+ createSession(host, session.command, migrateArgs, useBackendResume ? undefined : toolCfg?.preambleFlag, toolConfigKey, historyContext.trim() || undefined, useBackendResume ? undefined : toolCfg?.sessionIdFlag, effectiveTarget, backendSessionId, sessionId);
314
+ }
315
+ export function getSessionWorktreePath(host, sessionId) {
316
+ return host.sessionWorktreePaths.get(sessionId);
317
+ }
318
+ export function getSessionsByWorktree(host) {
319
+ const groups = new Map();
320
+ for (const session of host.sessions) {
321
+ const wtPath = host.sessionWorktreePaths.get(session.id);
322
+ const group = groups.get(wtPath) ?? [];
323
+ group.push(session);
324
+ groups.set(wtPath, group);
325
+ }
326
+ return groups;
327
+ }
328
+ export function getScopedSessionEntries(host) {
329
+ return host.sessions.map((session, index) => ({ session, index }));
330
+ }
331
+ export function focusSession(host, index) {
332
+ if (index < 0 || index >= host.sessions.length)
333
+ return;
334
+ host.activeIndex = index;
335
+ const sid = host.sessions[index].id;
336
+ host.sessionMRU = [sid, ...host.sessionMRU.filter((id) => id !== sid)];
337
+ host.agentTracker.markSeen(sid);
338
+ updateNotificationContext("tui", {
339
+ focused: true,
340
+ sessionId: sid,
341
+ panelOpen: false,
342
+ });
343
+ host.noteLastUsedItem(sid);
344
+ markNotificationsRead({ sessionId: sid });
345
+ host.syncTuiNotificationContext(false);
346
+ const target = host.sessionTmuxTargets.get(sid);
347
+ if (target) {
348
+ host.saveState();
349
+ host.selectLinkedOrOpenTarget(target);
350
+ }
351
+ }
352
+ export function handleAction(host, action) {
353
+ switch (action.type) {
354
+ case "dashboard":
355
+ host.openTmuxDashboardTarget();
356
+ break;
357
+ case "help":
358
+ host.showHelp();
359
+ break;
360
+ case "focus":
361
+ if (action.index < host.getScopedSessionEntries().length) {
362
+ host.focusSession(host.getScopedSessionEntries()[action.index].index);
363
+ }
364
+ break;
365
+ case "next":
366
+ if (host.getScopedSessionEntries().length > 1) {
367
+ const scoped = host.getScopedSessionEntries();
368
+ const currentPos = scoped.findIndex(({ index }) => index === host.activeIndex);
369
+ if (currentPos >= 0) {
370
+ host.focusSession(scoped[(currentPos + 1) % scoped.length].index);
371
+ }
372
+ }
373
+ break;
374
+ case "prev":
375
+ if (host.getScopedSessionEntries().length > 1) {
376
+ const scoped = host.getScopedSessionEntries();
377
+ const currentPos = scoped.findIndex(({ index }) => index === host.activeIndex);
378
+ if (currentPos >= 0) {
379
+ host.focusSession(scoped[(currentPos - 1 + scoped.length) % scoped.length].index);
380
+ }
381
+ }
382
+ break;
383
+ case "create":
384
+ host.showToolPicker();
385
+ break;
386
+ case "kill":
387
+ if (host.sessions.length > 0) {
388
+ host.sessions[host.activeIndex].kill();
389
+ }
390
+ break;
391
+ case "switcher":
392
+ if (host.getScopedSessionEntries().length > 1) {
393
+ host.showSwitcher();
394
+ }
395
+ break;
396
+ case "worktree-create":
397
+ host.showWorktreeCreatePrompt();
398
+ break;
399
+ case "worktree-list":
400
+ host.showWorktreeList();
401
+ break;
402
+ case "review":
403
+ host.handleReviewRequest();
404
+ break;
405
+ }
406
+ }
407
+ //# sourceMappingURL=session-launch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-launch.js","sourceRoot":"","sources":["../../src/multiplexer/session-launch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ import { TmuxSessionTransport } from "../tmux/session-transport.js";
2
+ import { readSessionMessages } from "../session-message-history.js";
3
+ type SessionRuntimeHost = any;
4
+ export declare function getSessionLabel(host: SessionRuntimeHost, sessionId: string): string | undefined;
5
+ export declare function applySessionLabel(host: SessionRuntimeHost, sessionId: string, label?: string): void;
6
+ export declare function applyDashboardSessionLabel(host: SessionRuntimeHost, sessionId: string, label?: string): void;
7
+ export declare function updateSessionLabel(host: SessionRuntimeHost, sessionId: string, label?: string): Promise<void>;
8
+ export declare function readStatusHeadline(_host: SessionRuntimeHost, sessionId: string): string | undefined;
9
+ export declare function deriveHeadline(host: SessionRuntimeHost, sessionId: string): string | undefined;
10
+ export declare function resolveRunningSession(host: SessionRuntimeHost, sessionId: string): any;
11
+ export declare function writeTmuxAgentInput(host: SessionRuntimeHost, sessionId: string, transport: TmuxSessionTransport, data: string): void;
12
+ export declare function normalizeAgentInput(_host: SessionRuntimeHost, data: string, submit: boolean): string;
13
+ export declare function paneStillContainsAgentDraft(host: SessionRuntimeHost, target: any, draft: string): boolean;
14
+ export declare function scheduleTmuxAgentSubmit(host: SessionRuntimeHost, sessionId: string, target: any, draft: string): void;
15
+ export declare function writeAgentInput(host: SessionRuntimeHost, sessionId: string, data?: string, parts?: any[], clientMessageId?: string, submit?: boolean): Promise<{
16
+ sessionId: string;
17
+ }>;
18
+ export declare function readAgentHistory(host: SessionRuntimeHost, sessionId: string, lastN?: number): Promise<{
19
+ sessionId: string;
20
+ messages: ReturnType<typeof readSessionMessages>;
21
+ lastN?: number;
22
+ }>;
23
+ export declare function interruptAgent(host: SessionRuntimeHost, sessionId: string): Promise<{
24
+ sessionId: string;
25
+ }>;
26
+ export declare function readAgentOutput(host: SessionRuntimeHost, sessionId: string, startLine?: number): Promise<{
27
+ sessionId: string;
28
+ output: string;
29
+ startLine?: number;
30
+ parsed: any;
31
+ }>;
32
+ export declare function registerManagedSession(host: SessionRuntimeHost, session: any, args: string[], toolConfigKey?: string, worktreePath?: string, role?: string, startTime?: number): any;
33
+ export declare function handleSessionRuntimeEvent(host: SessionRuntimeHost, runtime: any, event: any): void;
34
+ export declare function buildTmuxWindowMetadata(host: SessionRuntimeHost, sessionId: string, command: string): any;
35
+ export declare function syncTmuxWindowMetadata(host: SessionRuntimeHost, sessionId: string): void;
36
+ export declare function updateContextWatcherSessions(host: SessionRuntimeHost): void;
37
+ export {};