aimux-cli 0.1.5 → 0.1.7

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 (160) 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.d.ts +7 -0
  36. package/dist/metadata-server.js +15 -17
  37. package/dist/metadata-server.js.map +1 -1
  38. package/dist/multiplexer/agent-io-methods.d.ts +40 -0
  39. package/dist/multiplexer/agent-io-methods.js +177 -0
  40. package/dist/multiplexer/agent-io-methods.js.map +1 -0
  41. package/dist/multiplexer/archives.d.ts +15 -0
  42. package/dist/multiplexer/archives.js +270 -0
  43. package/dist/multiplexer/archives.js.map +1 -0
  44. package/dist/multiplexer/dashboard-actions-methods.d.ts +57 -0
  45. package/dist/multiplexer/dashboard-actions-methods.js +159 -0
  46. package/dist/multiplexer/dashboard-actions-methods.js.map +1 -0
  47. package/dist/multiplexer/dashboard-control.d.ts +36 -0
  48. package/dist/multiplexer/dashboard-control.js +608 -0
  49. package/dist/multiplexer/dashboard-control.js.map +1 -0
  50. package/dist/multiplexer/dashboard-interaction.d.ts +12 -0
  51. package/dist/multiplexer/dashboard-interaction.js +552 -0
  52. package/dist/multiplexer/dashboard-interaction.js.map +1 -0
  53. package/dist/multiplexer/dashboard-model.d.ts +40 -0
  54. package/dist/multiplexer/dashboard-model.js +421 -0
  55. package/dist/multiplexer/dashboard-model.js.map +1 -0
  56. package/dist/multiplexer/dashboard-ops.d.ts +35 -0
  57. package/dist/multiplexer/dashboard-ops.js +158 -0
  58. package/dist/multiplexer/dashboard-ops.js.map +1 -0
  59. package/dist/multiplexer/dashboard-state-methods.d.ts +56 -0
  60. package/dist/multiplexer/dashboard-state-methods.js +123 -0
  61. package/dist/multiplexer/dashboard-state-methods.js.map +1 -0
  62. package/dist/multiplexer/dashboard-tail-methods.d.ts +104 -0
  63. package/dist/multiplexer/dashboard-tail-methods.js +252 -0
  64. package/dist/multiplexer/dashboard-tail-methods.js.map +1 -0
  65. package/dist/multiplexer/dashboard-view-methods.d.ts +51 -0
  66. package/dist/multiplexer/dashboard-view-methods.js +159 -0
  67. package/dist/multiplexer/dashboard-view-methods.js.map +1 -0
  68. package/dist/multiplexer/index.d.ts +205 -0
  69. package/dist/multiplexer/index.js +444 -0
  70. package/dist/multiplexer/index.js.map +1 -0
  71. package/dist/multiplexer/navigation.d.ts +17 -0
  72. package/dist/multiplexer/navigation.js +203 -0
  73. package/dist/multiplexer/navigation.js.map +1 -0
  74. package/dist/multiplexer/notifications.d.ts +6 -0
  75. package/dist/multiplexer/notifications.js +75 -0
  76. package/dist/multiplexer/notifications.js.map +1 -0
  77. package/dist/multiplexer/persistence-methods.d.ts +83 -0
  78. package/dist/multiplexer/persistence-methods.js +370 -0
  79. package/dist/multiplexer/persistence-methods.js.map +1 -0
  80. package/dist/multiplexer/runtime-lifecycle-methods.d.ts +36 -0
  81. package/dist/multiplexer/runtime-lifecycle-methods.js +235 -0
  82. package/dist/multiplexer/runtime-lifecycle-methods.js.map +1 -0
  83. package/dist/multiplexer/runtime-state.d.ts +32 -0
  84. package/dist/multiplexer/runtime-state.js +439 -0
  85. package/dist/multiplexer/runtime-state.js.map +1 -0
  86. package/dist/{multiplexer-runtime-sync.d.ts → multiplexer/runtime-sync.d.ts} +2 -2
  87. package/dist/{multiplexer-runtime-sync.js → multiplexer/runtime-sync.js} +1 -1
  88. package/dist/multiplexer/runtime-sync.js.map +1 -0
  89. package/dist/multiplexer/services.d.ts +23 -0
  90. package/dist/multiplexer/services.js +187 -0
  91. package/dist/multiplexer/services.js.map +1 -0
  92. package/dist/multiplexer/session-actions.d.ts +36 -0
  93. package/dist/multiplexer/session-actions.js +108 -0
  94. package/dist/multiplexer/session-actions.js.map +1 -0
  95. package/dist/multiplexer/session-launch.d.ts +20 -0
  96. package/dist/multiplexer/session-launch.js +407 -0
  97. package/dist/multiplexer/session-launch.js.map +1 -0
  98. package/dist/multiplexer/session-runtime-core.d.ts +37 -0
  99. package/dist/multiplexer/session-runtime-core.js +402 -0
  100. package/dist/multiplexer/session-runtime-core.js.map +1 -0
  101. package/dist/multiplexer/subscreens.d.ts +30 -0
  102. package/dist/multiplexer/subscreens.js +685 -0
  103. package/dist/multiplexer/subscreens.js.map +1 -0
  104. package/dist/multiplexer/tool-picker.d.ts +8 -0
  105. package/dist/multiplexer/tool-picker.js +142 -0
  106. package/dist/multiplexer/tool-picker.js.map +1 -0
  107. package/dist/multiplexer/worktrees.d.ts +12 -0
  108. package/dist/multiplexer/worktrees.js +181 -0
  109. package/dist/multiplexer/worktrees.js.map +1 -0
  110. package/dist/project-scanner.d.ts +1 -1
  111. package/dist/project-scanner.js +1 -1
  112. package/dist/session-bootstrap.d.ts +1 -1
  113. package/dist/session-semantics.d.ts +1 -1
  114. package/dist/{tmux-doctor.d.ts → tmux/doctor.d.ts} +14 -1
  115. package/dist/{tmux-doctor.js → tmux/doctor.js} +78 -3
  116. package/dist/tmux/doctor.js.map +1 -0
  117. package/dist/{tmux-runtime-manager.d.ts → tmux/runtime-manager.d.ts} +1 -0
  118. package/dist/{tmux-runtime-manager.js → tmux/runtime-manager.js} +31 -12
  119. package/dist/tmux/runtime-manager.js.map +1 -0
  120. package/dist/{tmux-session-transport.d.ts → tmux/session-transport.d.ts} +3 -2
  121. package/dist/{tmux-session-transport.js → tmux/session-transport.js} +5 -2
  122. package/dist/tmux/session-transport.js.map +1 -0
  123. package/dist/{tmux-statusline.d.ts → tmux/statusline.d.ts} +1 -1
  124. package/dist/{tmux-statusline.js → tmux/statusline.js} +4 -4
  125. package/dist/tmux/statusline.js.map +1 -0
  126. package/dist/{tmux-switcher.js → tmux/switcher.js} +7 -7
  127. package/dist/tmux/switcher.js.map +1 -0
  128. package/dist/{tmux-window-open.d.ts → tmux/window-open.d.ts} +1 -1
  129. package/dist/{tmux-window-open.js → tmux/window-open.js} +1 -1
  130. package/dist/tmux/window-open.js.map +1 -0
  131. package/dist/tool-output-watchers.js +1 -1
  132. package/dist/tui/render/box.js +25 -6
  133. package/dist/tui/render/box.js.map +1 -1
  134. package/dist/tui/screens/dashboard-renderers.d.ts +3 -2
  135. package/dist/tui/screens/dashboard-renderers.js +17 -2
  136. package/dist/tui/screens/dashboard-renderers.js.map +1 -1
  137. package/dist/tui/screens/overlay-renderers.js +2 -2
  138. package/dist/tui/screens/overlay-renderers.js.map +1 -1
  139. package/package.json +1 -1
  140. package/dist/dashboard-feedback.js.map +0 -1
  141. package/dist/dashboard-pending-actions.js +0 -52
  142. package/dist/dashboard-pending-actions.js.map +0 -1
  143. package/dist/dashboard-session-actions.js.map +0 -1
  144. package/dist/dashboard-session-registry.js.map +0 -1
  145. package/dist/dashboard-state.js.map +0 -1
  146. package/dist/dashboard-targets.js.map +0 -1
  147. package/dist/dashboard-ui-state-store.js.map +0 -1
  148. package/dist/dashboard.js.map +0 -1
  149. package/dist/multiplexer-runtime-sync.js.map +0 -1
  150. package/dist/multiplexer.d.ts +0 -500
  151. package/dist/multiplexer.js +0 -6081
  152. package/dist/multiplexer.js.map +0 -1
  153. package/dist/tmux-doctor.js.map +0 -1
  154. package/dist/tmux-runtime-manager.js.map +0 -1
  155. package/dist/tmux-session-transport.js.map +0 -1
  156. package/dist/tmux-statusline.js.map +0 -1
  157. package/dist/tmux-switcher.js.map +0 -1
  158. package/dist/tmux-window-open.js.map +0 -1
  159. /package/dist/{dashboard-feedback.d.ts → dashboard/feedback.d.ts} +0 -0
  160. /package/dist/{tmux-switcher.d.ts → tmux/switcher.d.ts} +0 -0
@@ -0,0 +1,608 @@
1
+ import { loadConfig } from "../config.js";
2
+ import { mkdirSync, renameSync, writeFileSync } from "node:fs";
3
+ import { join } from "node:path";
4
+ import { updateNotificationContext } from "../notification-context.js";
5
+ import { requestJson } from "../http-client.js";
6
+ import { markLastUsed } from "../last-used.js";
7
+ import { loadMetadataState, resolveProjectServiceEndpoint } from "../metadata-store.js";
8
+ import { parseKeys } from "../key-parser.js";
9
+ import { ensureDaemonRunning, ensureProjectService } from "../daemon.js";
10
+ import { getProjectStateDir } from "../paths.js";
11
+ import { loadTeamConfig } from "../team.js";
12
+ import { loadStatusline, renderTmuxStatuslineFromData } from "../tmux/statusline.js";
13
+ import { openManagedServiceWindow, openManagedSessionWindow } from "../tmux/window-open.js";
14
+ import { resolveOrchestrationRecipients } from "../orchestration-routing.js";
15
+ function writeStatuslineTextFile(name, content) {
16
+ const dir = join(getProjectStateDir(), "tmux-statusline");
17
+ mkdirSync(dir, { recursive: true });
18
+ const filePath = join(dir, name);
19
+ const tmpPath = `${filePath}.tmp`;
20
+ writeFileSync(tmpPath, `${content}\n`);
21
+ renameSync(tmpPath, filePath);
22
+ }
23
+ function primeLiveTmuxFooter(host, target) {
24
+ try {
25
+ const data = loadStatusline(process.cwd());
26
+ if (!data)
27
+ return;
28
+ const currentPath = host.tmuxRuntimeManager.displayMessage("#{pane_current_path}", target.windowId) ?? process.cwd();
29
+ const top = renderTmuxStatuslineFromData(data, process.cwd(), "top", {
30
+ currentWindow: target.windowName,
31
+ currentWindowId: target.windowId,
32
+ currentPath,
33
+ });
34
+ const bottom = renderTmuxStatuslineFromData(data, process.cwd(), "bottom", {
35
+ currentWindow: target.windowName,
36
+ currentWindowId: target.windowId,
37
+ currentPath,
38
+ });
39
+ writeStatuslineTextFile(`top-${target.windowId}.txt`, top);
40
+ writeStatuslineTextFile(`bottom-${target.windowId}.txt`, bottom);
41
+ }
42
+ catch { }
43
+ }
44
+ export function updateWorktreeSessions(host) {
45
+ const allDash = host.getDashboardSessions();
46
+ host.dashboardState.worktreeSessions = allDash.filter((s) => {
47
+ return (s.worktreePath ?? undefined) === host.dashboardState.focusedWorktreePath;
48
+ });
49
+ const worktreeServices = host.getDashboardServices().filter((service) => {
50
+ return (service.worktreePath ?? undefined) === host.dashboardState.focusedWorktreePath;
51
+ });
52
+ host.dashboardState.worktreeEntries = [
53
+ ...host.dashboardState.worktreeSessions.map((session) => ({ kind: "session", id: session.id })),
54
+ ...worktreeServices.map((service) => ({ kind: "service", id: service.id })),
55
+ ];
56
+ }
57
+ export function syncTuiNotificationContext(host, panelOpen = false) {
58
+ if (host.mode !== "dashboard")
59
+ return;
60
+ const selected = host.dashboardState.level === "sessions" && host.dashboardState.worktreeEntries.length > 0
61
+ ? host.dashboardState.worktreeEntries[host.dashboardState.sessionIndex]?.kind === "session"
62
+ ? host.dashboardState.worktreeEntries[host.dashboardState.sessionIndex]?.id
63
+ : undefined
64
+ : host.getDashboardSessions()[host.activeIndex]?.id;
65
+ updateNotificationContext("tui", {
66
+ focused: true,
67
+ screen: host.dashboardState.screen,
68
+ sessionId: selected,
69
+ panelOpen,
70
+ });
71
+ }
72
+ export function isDashboardScreen(host, screen) {
73
+ return host.dashboardState.isScreen(screen);
74
+ }
75
+ export function setDashboardScreen(host, screen) {
76
+ host.dashboardState.setScreen(screen);
77
+ syncTuiNotificationContext(host, false);
78
+ host.writeDashboardClientStatuslineFile();
79
+ host.persistDashboardUiState();
80
+ host.tmuxRuntimeManager.refreshStatus();
81
+ }
82
+ export function handleActiveDashboardOverlayKey(host, data) {
83
+ if (host.dashboardBusyState) {
84
+ return true;
85
+ }
86
+ if (host.dashboardErrorState) {
87
+ const events = parseKeys(data);
88
+ if (events.length === 0)
89
+ return true;
90
+ const key = events[0].name || events[0].char;
91
+ if (key === "escape" || key === "enter" || key === "return") {
92
+ host.dismissDashboardError();
93
+ }
94
+ return true;
95
+ }
96
+ if (host.pickerActive) {
97
+ host.handleToolPickerKey(data);
98
+ return true;
99
+ }
100
+ if (host.notificationPanelState) {
101
+ host.handleNotificationPanelKey(data);
102
+ return true;
103
+ }
104
+ if (host.worktreeRemoveConfirm) {
105
+ host.handleWorktreeRemoveConfirmKey(data);
106
+ return true;
107
+ }
108
+ if (host.worktreeInputActive) {
109
+ host.handleWorktreeInputKey(data);
110
+ return true;
111
+ }
112
+ if (host.serviceInputActive) {
113
+ host.handleServiceInputKey(data);
114
+ return true;
115
+ }
116
+ if (host.worktreeListActive) {
117
+ host.handleWorktreeListKey(data);
118
+ return true;
119
+ }
120
+ if (host.migratePickerActive) {
121
+ host.handleMigratePickerKey(data);
122
+ return true;
123
+ }
124
+ if (host.switcherActive) {
125
+ host.handleSwitcherKey(data);
126
+ return true;
127
+ }
128
+ if (host.threadReplyActive) {
129
+ host.handleThreadReplyKey(data);
130
+ return true;
131
+ }
132
+ if (host.orchestrationRoutePickerActive) {
133
+ host.handleOrchestrationRoutePickerKey(data);
134
+ return true;
135
+ }
136
+ if (host.orchestrationInputActive) {
137
+ host.handleOrchestrationInputKey(data);
138
+ return true;
139
+ }
140
+ if (host.labelInputActive) {
141
+ host.handleLabelInputKey(data);
142
+ return true;
143
+ }
144
+ return false;
145
+ }
146
+ export function renderActiveDashboardOverlay(host) {
147
+ if (host.worktreeRemoveConfirm) {
148
+ host.renderWorktreeRemoveConfirm();
149
+ return true;
150
+ }
151
+ if (host.dashboardErrorState) {
152
+ host.renderDashboardErrorOverlay();
153
+ return true;
154
+ }
155
+ if (host.dashboardBusyState) {
156
+ host.renderDashboardBusyOverlay();
157
+ return true;
158
+ }
159
+ if (host.switcherActive) {
160
+ host.renderSwitcher();
161
+ return true;
162
+ }
163
+ if (host.notificationPanelState) {
164
+ host.renderNotificationPanel();
165
+ return true;
166
+ }
167
+ if (host.threadReplyActive) {
168
+ host.renderThreadReply();
169
+ return true;
170
+ }
171
+ if (host.orchestrationInputActive) {
172
+ host.renderOrchestrationInput();
173
+ return true;
174
+ }
175
+ if (host.migratePickerActive) {
176
+ host.renderMigratePicker();
177
+ return true;
178
+ }
179
+ if (host.worktreeListActive) {
180
+ host.renderWorktreeList();
181
+ return true;
182
+ }
183
+ if (host.labelInputActive) {
184
+ host.renderLabelInput();
185
+ return true;
186
+ }
187
+ if (host.worktreeInputActive) {
188
+ host.renderWorktreeInput();
189
+ return true;
190
+ }
191
+ if (host.serviceInputActive) {
192
+ host.renderServiceInput();
193
+ return true;
194
+ }
195
+ if (host.pickerActive) {
196
+ host.renderToolPicker();
197
+ return true;
198
+ }
199
+ if (host.orchestrationRoutePickerActive) {
200
+ host.renderOrchestrationRoutePicker();
201
+ return true;
202
+ }
203
+ return false;
204
+ }
205
+ export function handleDashboardSubscreenNavigationKey(host, key, currentScreen) {
206
+ if (key === "d") {
207
+ setDashboardScreen(host, "dashboard");
208
+ syncTuiNotificationContext(host, false);
209
+ host.renderDashboard();
210
+ return true;
211
+ }
212
+ if (key === "a") {
213
+ if (currentScreen === "activity") {
214
+ host.renderActivityDashboard();
215
+ }
216
+ else {
217
+ host.showActivityDashboard();
218
+ }
219
+ return true;
220
+ }
221
+ if (key === "t") {
222
+ if (currentScreen === "threads") {
223
+ host.renderThreads();
224
+ }
225
+ else {
226
+ host.showThreads();
227
+ }
228
+ return true;
229
+ }
230
+ if (key === "y") {
231
+ if (currentScreen === "workflow") {
232
+ host.renderWorkflow();
233
+ }
234
+ else {
235
+ host.showWorkflow();
236
+ }
237
+ return true;
238
+ }
239
+ if (key === "p") {
240
+ if (currentScreen === "plans") {
241
+ host.renderPlans();
242
+ }
243
+ else {
244
+ host.showPlans();
245
+ }
246
+ return true;
247
+ }
248
+ if (key === "g") {
249
+ if (currentScreen === "graveyard") {
250
+ host.renderGraveyard();
251
+ }
252
+ else {
253
+ host.showGraveyard();
254
+ }
255
+ return true;
256
+ }
257
+ if (key === "i") {
258
+ host.showNotificationPanel();
259
+ return true;
260
+ }
261
+ return false;
262
+ }
263
+ export function openLiveTmuxWindowForEntry(host, entry) {
264
+ try {
265
+ const target = openManagedSessionWindow(host.tmuxRuntimeManager, process.cwd(), entry);
266
+ if (!target)
267
+ return "missing";
268
+ primeLiveTmuxFooter(host, target);
269
+ void host.postToProjectService("/statusline/refresh", { sessionId: entry.id }).catch(() => { });
270
+ host.agentTracker.markSeen(entry.id);
271
+ updateNotificationContext("tui", {
272
+ focused: true,
273
+ sessionId: entry.id,
274
+ panelOpen: false,
275
+ });
276
+ noteLastUsedItem(host, entry.id);
277
+ return "opened";
278
+ }
279
+ catch (error) {
280
+ host.showDashboardError("Failed to open agent", [
281
+ error instanceof Error ? error.message : String(error),
282
+ "The tmux window may still be starting. Try again in a moment.",
283
+ ]);
284
+ return "error";
285
+ }
286
+ }
287
+ export function openLiveTmuxWindowForService(host, serviceId) {
288
+ try {
289
+ const target = openManagedServiceWindow(host.tmuxRuntimeManager, process.cwd(), serviceId);
290
+ if (!target)
291
+ return "missing";
292
+ primeLiveTmuxFooter(host, target);
293
+ void host.postToProjectService("/statusline/refresh", { sessionId: serviceId }).catch(() => { });
294
+ noteLastUsedItem(host, serviceId);
295
+ return "opened";
296
+ }
297
+ catch (error) {
298
+ host.showDashboardError("Failed to open service", [
299
+ error instanceof Error ? error.message : String(error),
300
+ "The tmux window may still be starting. Try again in a moment.",
301
+ ]);
302
+ return "error";
303
+ }
304
+ }
305
+ export function noteLastUsedItem(host, itemId) {
306
+ markLastUsed(process.cwd(), {
307
+ itemId,
308
+ clientSession: host.tmuxRuntimeManager.currentClientSession() ?? undefined,
309
+ });
310
+ host.invalidateDesktopStateSnapshot();
311
+ }
312
+ export function getSelectedDashboardWorktreeEntry(host) {
313
+ if (host.dashboardState.level === "sessions" && host.dashboardState.worktreeEntries.length > 0) {
314
+ return host.dashboardState.worktreeEntries[host.dashboardState.sessionIndex];
315
+ }
316
+ return undefined;
317
+ }
318
+ export function getSelectedDashboardSessionForActions(host) {
319
+ const selectedEntry = getSelectedDashboardWorktreeEntry(host);
320
+ if (selectedEntry?.kind === "session") {
321
+ return host.dashboardState.worktreeSessions.find((session) => session.id === selectedEntry.id);
322
+ }
323
+ if (host.dashboardState.worktreeNavOrder.length <= 1) {
324
+ return host.getDashboardSessions()[host.activeIndex];
325
+ }
326
+ return undefined;
327
+ }
328
+ export function getSelectedDashboardServiceForActions(host) {
329
+ const selectedEntry = getSelectedDashboardWorktreeEntry(host);
330
+ if (selectedEntry?.kind !== "service")
331
+ return undefined;
332
+ return host.getDashboardServices().find((service) => service.id === selectedEntry.id);
333
+ }
334
+ export function showOrchestrationRoutePicker(host, mode) {
335
+ const selected = getSelectedDashboardSessionForActions(host);
336
+ const options = [];
337
+ const focusedWorktreePath = host.mode === "dashboard" ? host.dashboardState.focusedWorktreePath : undefined;
338
+ const metadataState = loadMetadataState().sessions;
339
+ const candidates = host.sessions.map((session) => ({
340
+ id: session.id,
341
+ tool: host.sessionToolKeys.get(session.id) ?? session.command,
342
+ role: host.sessionRoles.get(session.id),
343
+ worktreePath: host.sessionWorktreePaths.get(session.id),
344
+ status: metadataState[session.id]?.derived?.activity,
345
+ availability: host.deriveSessionSemanticState(session.id, metadataState[session.id]?.derived?.activity === "running"
346
+ ? "running"
347
+ : metadataState[session.id]?.derived?.activity === "waiting"
348
+ ? "waiting"
349
+ : session.status).availability,
350
+ workflowPressure: host.orchestrationWorkflowPressure(session.id, metadataState[session.id]?.derived?.activity === "running"
351
+ ? "running"
352
+ : metadataState[session.id]?.derived?.activity === "waiting"
353
+ ? "waiting"
354
+ : session.status),
355
+ exited: session.exited,
356
+ }));
357
+ if (selected && !selected.remoteInstancePid) {
358
+ options.push({
359
+ label: `${selected.label ?? selected.command ?? selected.id} (${selected.id})`,
360
+ sessionId: selected.id,
361
+ });
362
+ }
363
+ const team = loadTeamConfig();
364
+ for (const [role, cfg] of Object.entries(team.roles)) {
365
+ const recipientIds = resolveOrchestrationRecipients({
366
+ candidates,
367
+ assignee: role,
368
+ worktreePath: focusedWorktreePath,
369
+ });
370
+ if (recipientIds.length === 0)
371
+ continue;
372
+ options.push({
373
+ label: `Role: ${role}${cfg.description ? ` — ${cfg.description}` : ""}${host.formatRoutePreview(recipientIds)}`,
374
+ assignee: role,
375
+ worktreePath: focusedWorktreePath,
376
+ recipientIds,
377
+ });
378
+ }
379
+ const config = loadConfig();
380
+ for (const [toolKey, toolCfg] of Object.entries(config.tools)) {
381
+ if (!toolCfg.enabled)
382
+ continue;
383
+ const recipientIds = resolveOrchestrationRecipients({
384
+ candidates,
385
+ tool: toolKey,
386
+ worktreePath: focusedWorktreePath,
387
+ });
388
+ if (recipientIds.length === 0)
389
+ continue;
390
+ options.push({
391
+ label: `Tool: ${toolKey}${host.formatRoutePreview(recipientIds)}`,
392
+ tool: toolKey,
393
+ worktreePath: focusedWorktreePath,
394
+ recipientIds,
395
+ });
396
+ }
397
+ if (options.length === 0) {
398
+ host.showDashboardError("No orchestration targets available", [
399
+ "Select a local agent, define team roles, or enable tools before sending orchestration actions.",
400
+ ]);
401
+ return;
402
+ }
403
+ host.orchestrationRouteMode = mode;
404
+ host.orchestrationRouteOptions = options;
405
+ host.orchestrationRoutePickerActive = true;
406
+ host.renderOrchestrationRoutePicker();
407
+ }
408
+ export function showOrchestrationInput(host, mode, target) {
409
+ host.orchestrationInputMode = mode;
410
+ host.orchestrationInputTarget = target;
411
+ host.orchestrationInputBuffer = "";
412
+ host.orchestrationInputActive = true;
413
+ host.renderOrchestrationInput();
414
+ }
415
+ export function renderOrchestrationInput(host) {
416
+ const target = host.orchestrationInputTarget;
417
+ const mode = host.orchestrationInputMode;
418
+ if (!target || !mode)
419
+ return;
420
+ const cols = process.stdout.columns ?? 80;
421
+ const rows = process.stdout.rows ?? 24;
422
+ const modeLabel = mode === "message" ? "Send message" : mode === "handoff" ? "Handoff" : "Assign task";
423
+ const actionLabel = mode === "task" ? "assign" : "send";
424
+ const worktreeLine = target.worktreePath ? ` Worktree: ${target.worktreePath}` : null;
425
+ const recipientCount = target.sessionId ? 1 : (target.recipientIds?.length ?? 0);
426
+ const recipientPreview = target.sessionId || recipientCount === 0
427
+ ? null
428
+ : mode === "task"
429
+ ? ` Route: best match from ${recipientCount} live ${recipientCount === 1 ? "agent" : "agents"}`
430
+ : ` Recipients: ${recipientCount} live ${recipientCount === 1 ? "agent" : "agents"}${target.recipientIds && target.recipientIds.length > 0 ? ` (${target.recipientIds.slice(0, 3).join(", ")}${target.recipientIds.length > 3 ? ", ..." : ""})` : ""}`;
431
+ const lines = [
432
+ `${modeLabel}:`,
433
+ "",
434
+ ` To: ${target.label}`,
435
+ ...(worktreeLine ? [worktreeLine] : []),
436
+ ...(recipientPreview ? [recipientPreview] : []),
437
+ ` Text: ${host.orchestrationInputBuffer}_`,
438
+ "",
439
+ ` [Enter] ${actionLabel} [Esc] cancel`,
440
+ ];
441
+ const boxWidth = Math.max(...lines.map((l) => l.length)) + 4;
442
+ const startRow = Math.floor((rows - lines.length - 2) / 2);
443
+ const startCol = Math.floor((cols - boxWidth) / 2);
444
+ let output = "\x1b7";
445
+ for (let i = 0; i < lines.length + 2; i++) {
446
+ const row = startRow + i;
447
+ output += `\x1b[${row};${startCol}H`;
448
+ if (i === 0 || i === lines.length + 1) {
449
+ output += `\x1b[44;97m${"─".repeat(boxWidth)}\x1b[0m`;
450
+ }
451
+ else {
452
+ const line = lines[i - 1];
453
+ output += `\x1b[44;97m ${line.padEnd(boxWidth - 2)}\x1b[0m`;
454
+ }
455
+ }
456
+ output += "\x1b8";
457
+ process.stdout.write(output);
458
+ }
459
+ export function renderOrchestrationRoutePicker(host) {
460
+ const mode = host.orchestrationRouteMode;
461
+ if (!mode)
462
+ return;
463
+ const cols = process.stdout.columns ?? 80;
464
+ const rows = process.stdout.rows ?? 24;
465
+ const modeLabel = mode === "message" ? "Send message" : mode === "handoff" ? "Send handoff" : "Assign task";
466
+ const lines = [`${modeLabel}: choose target`, ""];
467
+ for (let i = 0; i < Math.min(host.orchestrationRouteOptions.length, 9); i++) {
468
+ lines.push(` [${i + 1}] ${host.orchestrationRouteOptions[i].label}`);
469
+ }
470
+ if (host.orchestrationRouteOptions.length > 9) {
471
+ lines.push(" ...");
472
+ }
473
+ lines.push("");
474
+ lines.push(" [Esc] cancel");
475
+ const boxWidth = Math.max(...lines.map((l) => l.length)) + 4;
476
+ const startRow = Math.floor((rows - lines.length - 2) / 2);
477
+ const startCol = Math.floor((cols - boxWidth) / 2);
478
+ let output = "\x1b7";
479
+ for (let i = 0; i < lines.length + 2; i++) {
480
+ const row = startRow + i;
481
+ output += `\x1b[${row};${startCol}H`;
482
+ if (i === 0 || i === lines.length + 1) {
483
+ output += `\x1b[44;97m${"─".repeat(boxWidth)}\x1b[0m`;
484
+ }
485
+ else {
486
+ const line = lines[i - 1];
487
+ output += `\x1b[44;97m ${line.padEnd(boxWidth - 2)}\x1b[0m`;
488
+ }
489
+ }
490
+ output += "\x1b8";
491
+ process.stdout.write(output);
492
+ }
493
+ export async function postToProjectService(host, path, body) {
494
+ for (let attempt = 0; attempt < 2; attempt += 1) {
495
+ const endpoint = resolveProjectServiceEndpoint(process.cwd());
496
+ if (!endpoint) {
497
+ await ensureDashboardControlPlane(host);
498
+ continue;
499
+ }
500
+ try {
501
+ const { status, json } = await requestJson(`http://${endpoint.host}:${endpoint.port}${path}`, {
502
+ method: "POST",
503
+ headers: { "content-type": "application/json" },
504
+ body,
505
+ timeoutMs: 1000,
506
+ });
507
+ if (status >= 200 && status < 300 && json?.ok !== false) {
508
+ return json;
509
+ }
510
+ if (attempt === 0) {
511
+ await ensureDashboardControlPlane(host);
512
+ continue;
513
+ }
514
+ throw new Error(json?.error || `request failed: ${status}`);
515
+ }
516
+ catch (error) {
517
+ if (attempt === 0) {
518
+ await ensureDashboardControlPlane(host);
519
+ continue;
520
+ }
521
+ throw error;
522
+ }
523
+ }
524
+ throw new Error("no live project service endpoint");
525
+ }
526
+ export async function ensureDashboardControlPlane(host) {
527
+ if (host.dashboardServiceRecovery) {
528
+ await host.dashboardServiceRecovery;
529
+ return;
530
+ }
531
+ host.dashboardServiceRecovery = (async () => {
532
+ await ensureDaemonRunning();
533
+ await ensureProjectService(process.cwd());
534
+ })();
535
+ try {
536
+ await host.dashboardServiceRecovery;
537
+ }
538
+ finally {
539
+ host.dashboardServiceRecovery = null;
540
+ }
541
+ }
542
+ export function handleOrchestrationInputKey(host, data) {
543
+ const events = parseKeys(data);
544
+ if (events.length === 0)
545
+ return;
546
+ const event = events[0];
547
+ const key = event.name || event.char;
548
+ if (key === "escape") {
549
+ host.orchestrationInputActive = false;
550
+ host.orchestrationInputBuffer = "";
551
+ host.orchestrationInputMode = null;
552
+ host.orchestrationInputTarget = null;
553
+ host.renderDashboard();
554
+ return;
555
+ }
556
+ if (key === "enter" || key === "return") {
557
+ const mode = host.orchestrationInputMode;
558
+ const target = host.orchestrationInputTarget;
559
+ const body = host.orchestrationInputBuffer.trim();
560
+ host.orchestrationInputActive = false;
561
+ host.orchestrationInputBuffer = "";
562
+ host.orchestrationInputMode = null;
563
+ host.orchestrationInputTarget = null;
564
+ if (!mode || !target || !body) {
565
+ host.renderDashboard();
566
+ return;
567
+ }
568
+ void host.submitDashboardOrchestrationAction(mode, target, body);
569
+ return;
570
+ }
571
+ if (key === "backspace" || key === "delete") {
572
+ host.orchestrationInputBuffer = host.orchestrationInputBuffer.slice(0, -1);
573
+ host.renderOrchestrationInput();
574
+ return;
575
+ }
576
+ if (event.char && event.char.length === 1 && !event.ctrl && !event.alt) {
577
+ host.orchestrationInputBuffer += event.char;
578
+ host.renderOrchestrationInput();
579
+ }
580
+ }
581
+ export function handleOrchestrationRoutePickerKey(host, data) {
582
+ const events = parseKeys(data);
583
+ if (events.length === 0)
584
+ return;
585
+ const event = events[0];
586
+ const key = event.name || event.char;
587
+ if (key === "escape") {
588
+ host.orchestrationRoutePickerActive = false;
589
+ host.orchestrationRouteMode = null;
590
+ host.orchestrationRouteOptions = [];
591
+ host.renderDashboard();
592
+ return;
593
+ }
594
+ if (key && /^[1-9]$/.test(key)) {
595
+ const idx = parseInt(key, 10) - 1;
596
+ const target = host.orchestrationRouteOptions[idx];
597
+ const mode = host.orchestrationRouteMode;
598
+ host.orchestrationRoutePickerActive = false;
599
+ host.orchestrationRouteMode = null;
600
+ host.orchestrationRouteOptions = [];
601
+ if (!target || !mode) {
602
+ host.renderDashboard();
603
+ return;
604
+ }
605
+ showOrchestrationInput(host, mode, target);
606
+ }
607
+ }
608
+ //# sourceMappingURL=dashboard-control.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dashboard-control.js","sourceRoot":"","sources":["../../src/multiplexer/dashboard-control.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { DashboardSession } from "../dashboard/index.js";
2
+ export declare const dashboardInteractionMethods: {
3
+ handleDashboardKey(this: any, data: Buffer): void;
4
+ activateDashboardEntryByNumber(this: any, index: number): Promise<void>;
5
+ activateDashboardEntry(this: any, entry: DashboardSession): Promise<void>;
6
+ handleServiceInputKey(this: any, data: Buffer): void;
7
+ handleLabelInputKey(this: any, data: Buffer): void;
8
+ handleReviewRequest(this: any): void;
9
+ formatRoutePreview(this: any, recipientIds: string[]): string;
10
+ submitDashboardOrchestrationAction(this: any, mode: "message" | "handoff" | "task", target: any, body: string): Promise<void>;
11
+ };
12
+ export type DashboardInteractionMethods = typeof dashboardInteractionMethods;