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.
- package/dist/builtin-metadata-watchers.js +1 -1
- package/dist/context/context-bridge.d.ts +1 -1
- package/dist/context/context-bridge.js +1 -1
- package/dist/dashboard/command-spec.d.ts +7 -0
- package/dist/dashboard/command-spec.js +127 -0
- package/dist/dashboard/command-spec.js.map +1 -0
- package/dist/{dashboard-feedback.js → dashboard/feedback.js} +1 -1
- package/dist/dashboard/feedback.js.map +1 -0
- package/dist/{dashboard.d.ts → dashboard/index.d.ts} +16 -5
- package/dist/{dashboard.js → dashboard/index.js} +7 -4
- package/dist/dashboard/index.js.map +1 -0
- package/dist/{dashboard-pending-actions.d.ts → dashboard/pending-actions.d.ts} +8 -3
- package/dist/dashboard/pending-actions.js +90 -0
- package/dist/dashboard/pending-actions.js.map +1 -0
- package/dist/{dashboard-session-actions.d.ts → dashboard/session-actions.d.ts} +2 -2
- package/dist/{dashboard-session-actions.js → dashboard/session-actions.js} +1 -1
- package/dist/dashboard/session-actions.js.map +1 -0
- package/dist/{dashboard-session-registry.d.ts → dashboard/session-registry.d.ts} +7 -7
- package/dist/{dashboard-session-registry.js → dashboard/session-registry.js} +2 -2
- package/dist/dashboard/session-registry.js.map +1 -0
- package/dist/{dashboard-state.d.ts → dashboard/state.d.ts} +1 -1
- package/dist/{dashboard-state.js → dashboard/state.js} +1 -1
- package/dist/dashboard/state.js.map +1 -0
- package/dist/{dashboard-targets.d.ts → dashboard/targets.d.ts} +1 -6
- package/dist/{dashboard-targets.js → dashboard/targets.js} +5 -123
- package/dist/dashboard/targets.js.map +1 -0
- package/dist/{dashboard-ui-state-store.d.ts → dashboard/ui-state-store.d.ts} +2 -2
- package/dist/{dashboard-ui-state-store.js → dashboard/ui-state-store.js} +2 -2
- package/dist/dashboard/ui-state-store.js.map +1 -0
- package/dist/fast-control.d.ts +1 -1
- package/dist/fast-control.js +1 -1
- package/dist/instance-directory.js +1 -1
- package/dist/main.js +6 -5
- package/dist/main.js.map +1 -1
- package/dist/metadata-server.js +3 -17
- package/dist/metadata-server.js.map +1 -1
- package/dist/multiplexer/agent-io-methods.d.ts +40 -0
- package/dist/multiplexer/agent-io-methods.js +177 -0
- package/dist/multiplexer/agent-io-methods.js.map +1 -0
- package/dist/multiplexer/archives.d.ts +15 -0
- package/dist/multiplexer/archives.js +270 -0
- package/dist/multiplexer/archives.js.map +1 -0
- package/dist/multiplexer/dashboard-actions-methods.d.ts +57 -0
- package/dist/multiplexer/dashboard-actions-methods.js +159 -0
- package/dist/multiplexer/dashboard-actions-methods.js.map +1 -0
- package/dist/multiplexer/dashboard-control.d.ts +36 -0
- package/dist/multiplexer/dashboard-control.js +571 -0
- package/dist/multiplexer/dashboard-control.js.map +1 -0
- package/dist/multiplexer/dashboard-interaction.d.ts +12 -0
- package/dist/multiplexer/dashboard-interaction.js +552 -0
- package/dist/multiplexer/dashboard-interaction.js.map +1 -0
- package/dist/multiplexer/dashboard-model.d.ts +40 -0
- package/dist/multiplexer/dashboard-model.js +420 -0
- package/dist/multiplexer/dashboard-model.js.map +1 -0
- package/dist/multiplexer/dashboard-ops.d.ts +35 -0
- package/dist/multiplexer/dashboard-ops.js +158 -0
- package/dist/multiplexer/dashboard-ops.js.map +1 -0
- package/dist/multiplexer/dashboard-state-methods.d.ts +56 -0
- package/dist/multiplexer/dashboard-state-methods.js +123 -0
- package/dist/multiplexer/dashboard-state-methods.js.map +1 -0
- package/dist/multiplexer/dashboard-tail-methods.d.ts +104 -0
- package/dist/multiplexer/dashboard-tail-methods.js +252 -0
- package/dist/multiplexer/dashboard-tail-methods.js.map +1 -0
- package/dist/multiplexer/dashboard-view-methods.d.ts +51 -0
- package/dist/multiplexer/dashboard-view-methods.js +159 -0
- package/dist/multiplexer/dashboard-view-methods.js.map +1 -0
- package/dist/multiplexer/index.d.ts +205 -0
- package/dist/multiplexer/index.js +444 -0
- package/dist/multiplexer/index.js.map +1 -0
- package/dist/multiplexer/navigation.d.ts +17 -0
- package/dist/multiplexer/navigation.js +203 -0
- package/dist/multiplexer/navigation.js.map +1 -0
- package/dist/multiplexer/notifications.d.ts +6 -0
- package/dist/multiplexer/notifications.js +75 -0
- package/dist/multiplexer/notifications.js.map +1 -0
- package/dist/multiplexer/persistence-methods.d.ts +77 -0
- package/dist/multiplexer/persistence-methods.js +347 -0
- package/dist/multiplexer/persistence-methods.js.map +1 -0
- package/dist/multiplexer/runtime-lifecycle-methods.d.ts +36 -0
- package/dist/multiplexer/runtime-lifecycle-methods.js +235 -0
- package/dist/multiplexer/runtime-lifecycle-methods.js.map +1 -0
- package/dist/multiplexer/runtime-state.d.ts +32 -0
- package/dist/multiplexer/runtime-state.js +439 -0
- package/dist/multiplexer/runtime-state.js.map +1 -0
- package/dist/{multiplexer-runtime-sync.d.ts → multiplexer/runtime-sync.d.ts} +2 -2
- package/dist/{multiplexer-runtime-sync.js → multiplexer/runtime-sync.js} +1 -1
- package/dist/multiplexer/runtime-sync.js.map +1 -0
- package/dist/multiplexer/services.d.ts +23 -0
- package/dist/multiplexer/services.js +187 -0
- package/dist/multiplexer/services.js.map +1 -0
- package/dist/multiplexer/session-actions.d.ts +36 -0
- package/dist/multiplexer/session-actions.js +108 -0
- package/dist/multiplexer/session-actions.js.map +1 -0
- package/dist/multiplexer/session-launch.d.ts +20 -0
- package/dist/multiplexer/session-launch.js +407 -0
- package/dist/multiplexer/session-launch.js.map +1 -0
- package/dist/multiplexer/session-runtime-core.d.ts +37 -0
- package/dist/multiplexer/session-runtime-core.js +400 -0
- package/dist/multiplexer/session-runtime-core.js.map +1 -0
- package/dist/multiplexer/subscreens.d.ts +30 -0
- package/dist/multiplexer/subscreens.js +685 -0
- package/dist/multiplexer/subscreens.js.map +1 -0
- package/dist/multiplexer/tool-picker.d.ts +8 -0
- package/dist/multiplexer/tool-picker.js +142 -0
- package/dist/multiplexer/tool-picker.js.map +1 -0
- package/dist/multiplexer/worktrees.d.ts +12 -0
- package/dist/multiplexer/worktrees.js +181 -0
- package/dist/multiplexer/worktrees.js.map +1 -0
- package/dist/project-scanner.d.ts +1 -1
- package/dist/project-scanner.js +1 -1
- package/dist/session-bootstrap.d.ts +1 -1
- package/dist/session-semantics.d.ts +1 -1
- package/dist/{tmux-doctor.d.ts → tmux/doctor.d.ts} +1 -1
- package/dist/{tmux-doctor.js → tmux/doctor.js} +4 -3
- package/dist/tmux/doctor.js.map +1 -0
- package/dist/{tmux-runtime-manager.d.ts → tmux/runtime-manager.d.ts} +1 -0
- package/dist/{tmux-runtime-manager.js → tmux/runtime-manager.js} +29 -10
- package/dist/tmux/runtime-manager.js.map +1 -0
- package/dist/{tmux-session-transport.d.ts → tmux/session-transport.d.ts} +2 -2
- package/dist/{tmux-session-transport.js → tmux/session-transport.js} +2 -2
- package/dist/tmux/session-transport.js.map +1 -0
- package/dist/{tmux-statusline.d.ts → tmux/statusline.d.ts} +1 -1
- package/dist/{tmux-statusline.js → tmux/statusline.js} +4 -4
- package/dist/tmux/statusline.js.map +1 -0
- package/dist/{tmux-switcher.js → tmux/switcher.js} +7 -7
- package/dist/tmux/switcher.js.map +1 -0
- package/dist/{tmux-window-open.d.ts → tmux/window-open.d.ts} +1 -1
- package/dist/{tmux-window-open.js → tmux/window-open.js} +1 -1
- package/dist/tmux/window-open.js.map +1 -0
- package/dist/tool-output-watchers.js +1 -1
- package/dist/tui/render/box.js +25 -6
- package/dist/tui/render/box.js.map +1 -1
- package/dist/tui/screens/dashboard-renderers.d.ts +3 -2
- package/dist/tui/screens/dashboard-renderers.js +17 -2
- package/dist/tui/screens/dashboard-renderers.js.map +1 -1
- package/dist/tui/screens/overlay-renderers.js +2 -2
- package/dist/tui/screens/overlay-renderers.js.map +1 -1
- package/package.json +1 -1
- package/dist/dashboard-feedback.js.map +0 -1
- package/dist/dashboard-pending-actions.js +0 -52
- package/dist/dashboard-pending-actions.js.map +0 -1
- package/dist/dashboard-session-actions.js.map +0 -1
- package/dist/dashboard-session-registry.js.map +0 -1
- package/dist/dashboard-state.js.map +0 -1
- package/dist/dashboard-targets.js.map +0 -1
- package/dist/dashboard-ui-state-store.js.map +0 -1
- package/dist/dashboard.js.map +0 -1
- package/dist/multiplexer-runtime-sync.js.map +0 -1
- package/dist/multiplexer.d.ts +0 -500
- package/dist/multiplexer.js +0 -6081
- package/dist/multiplexer.js.map +0 -1
- package/dist/tmux-doctor.js.map +0 -1
- package/dist/tmux-runtime-manager.js.map +0 -1
- package/dist/tmux-session-transport.js.map +0 -1
- package/dist/tmux-statusline.js.map +0 -1
- package/dist/tmux-switcher.js.map +0 -1
- package/dist/tmux-window-open.js.map +0 -1
- /package/dist/{dashboard-feedback.d.ts → dashboard/feedback.d.ts} +0 -0
- /package/dist/{tmux-switcher.d.ts → tmux/switcher.d.ts} +0 -0
|
@@ -0,0 +1,444 @@
|
|
|
1
|
+
import { randomUUID } from "node:crypto";
|
|
2
|
+
import { HotkeyHandler } from "../hotkeys.js";
|
|
3
|
+
import { Dashboard } from "../dashboard/index.js";
|
|
4
|
+
import { DashboardState } from "../dashboard/state.js";
|
|
5
|
+
import { ContextWatcher } from "../context/context-bridge.js";
|
|
6
|
+
import { loadConfig } from "../config.js";
|
|
7
|
+
import { debug } from "../debug.js";
|
|
8
|
+
import { findMainRepo } from "../worktree.js";
|
|
9
|
+
import { TaskDispatcher } from "../task-dispatcher.js";
|
|
10
|
+
import { TerminalHost } from "../terminal-host.js";
|
|
11
|
+
import { AgentTracker } from "../agent-tracker.js";
|
|
12
|
+
import { InstanceDirectory } from "../instance-directory.js";
|
|
13
|
+
import { TmuxRuntimeManager } from "../tmux/runtime-manager.js";
|
|
14
|
+
import { loadMetadataState } from "../metadata-store.js";
|
|
15
|
+
import { SessionBootstrapService } from "../session-bootstrap.js";
|
|
16
|
+
import { createThread, appendMessage, updateThread } from "../threads.js";
|
|
17
|
+
import { OrchestrationDispatcher } from "../orchestration-dispatcher.js";
|
|
18
|
+
import { ProjectEventBus } from "../project-events.js";
|
|
19
|
+
import { deriveSessionSemantics } from "../session-semantics.js";
|
|
20
|
+
import { DashboardUiStateStore } from "../dashboard/ui-state-store.js";
|
|
21
|
+
import { DashboardPendingActions } from "../dashboard/pending-actions.js";
|
|
22
|
+
import { DashboardFeedbackController, } from "../dashboard/feedback.js";
|
|
23
|
+
import { MultiplexerRuntimeSync } from "./runtime-sync.js";
|
|
24
|
+
import { selectLinkedOrOpenTarget } from "../tmux/window-open.js";
|
|
25
|
+
import { dashboardActionMethods } from "./dashboard-actions-methods.js";
|
|
26
|
+
import { agentIoMethods } from "./agent-io-methods.js";
|
|
27
|
+
import { dashboardInteractionMethods } from "./dashboard-interaction.js";
|
|
28
|
+
import { dashboardStateMethods } from "./dashboard-state-methods.js";
|
|
29
|
+
import { persistenceMethods } from "./persistence-methods.js";
|
|
30
|
+
import { dashboardTailMethods } from "./dashboard-tail-methods.js";
|
|
31
|
+
import { loadStateStatic, runtimeLifecycleMethods } from "./runtime-lifecycle-methods.js";
|
|
32
|
+
import { dashboardViewMethods } from "./dashboard-view-methods.js";
|
|
33
|
+
import { buildTmuxWindowMetadata as buildTmuxWindowMetadataImpl, handleSessionRuntimeEvent as handleSessionRuntimeEventImpl, registerManagedSession as registerManagedSessionImpl, syncTmuxWindowMetadata as syncTmuxWindowMetadataImpl, updateContextWatcherSessions as updateContextWatcherSessionsImpl, } from "./session-runtime-core.js";
|
|
34
|
+
import { createSession as createSessionImpl, focusSession as focusSessionImpl, getScopedSessionEntries as getScopedSessionEntriesImpl, getSessionWorktreePath as getSessionWorktreePathImpl, getSessionsByWorktree as getSessionsByWorktreeImpl, handleAction as handleActionImpl, migrateAgent as migrateAgentImpl, restoreSessions as restoreSessionsImpl, resumeSessions as resumeSessionsImpl, run as runImpl, runDashboard as runDashboardImpl, runProjectService as runProjectServiceImpl, } from "./session-launch.js";
|
|
35
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-declaration-merging
|
|
36
|
+
export class Multiplexer {
|
|
37
|
+
projectRoot;
|
|
38
|
+
sessions = [];
|
|
39
|
+
offlineServices = [];
|
|
40
|
+
activeIndex = 0;
|
|
41
|
+
mode = "dashboard";
|
|
42
|
+
hotkeys;
|
|
43
|
+
dashboard;
|
|
44
|
+
terminalHost;
|
|
45
|
+
onStdinData = null;
|
|
46
|
+
onResize = null;
|
|
47
|
+
resolveRun = null;
|
|
48
|
+
defaultCommand = "";
|
|
49
|
+
defaultArgs = [];
|
|
50
|
+
startedInDashboard = false;
|
|
51
|
+
pickerActive = false;
|
|
52
|
+
pickerMode = "create";
|
|
53
|
+
forkSourceSessionId = null;
|
|
54
|
+
worktreeInputActive = false;
|
|
55
|
+
worktreeInputBuffer = "";
|
|
56
|
+
serviceInputActive = false;
|
|
57
|
+
serviceInputBuffer = "";
|
|
58
|
+
labelInputActive = false;
|
|
59
|
+
labelInputBuffer = "";
|
|
60
|
+
labelInputTarget = null;
|
|
61
|
+
orchestrationInputActive = false;
|
|
62
|
+
orchestrationInputBuffer = "";
|
|
63
|
+
orchestrationInputTarget = null;
|
|
64
|
+
orchestrationInputMode = null;
|
|
65
|
+
orchestrationRoutePickerActive = false;
|
|
66
|
+
orchestrationRouteMode = null;
|
|
67
|
+
orchestrationRouteOptions = [];
|
|
68
|
+
worktreeListActive = false;
|
|
69
|
+
worktreeRemoveConfirm = null;
|
|
70
|
+
worktreeRemovalJob = null;
|
|
71
|
+
pendingWorktreeRemovals = new Map();
|
|
72
|
+
dashboardFeedback = new DashboardFeedbackController({
|
|
73
|
+
renderDashboard: () => this.renderDashboard(),
|
|
74
|
+
isDashboardMode: () => this.mode === "dashboard",
|
|
75
|
+
});
|
|
76
|
+
migratePickerActive = false;
|
|
77
|
+
migratePickerWorktrees = [];
|
|
78
|
+
graveyardEntries = [];
|
|
79
|
+
graveyardIndex = 0;
|
|
80
|
+
activityEntries = [];
|
|
81
|
+
activityIndex = 0;
|
|
82
|
+
workflowEntries = [];
|
|
83
|
+
workflowIndex = 0;
|
|
84
|
+
workflowFilter = "all";
|
|
85
|
+
threadEntries = [];
|
|
86
|
+
threadIndex = 0;
|
|
87
|
+
threadReplyActive = false;
|
|
88
|
+
threadReplyBuffer = "";
|
|
89
|
+
planEntries = [];
|
|
90
|
+
planIndex = 0;
|
|
91
|
+
notificationPanelState = null;
|
|
92
|
+
dashboardPendingActions = new DashboardPendingActions(() => {
|
|
93
|
+
if (this.mode === "dashboard") {
|
|
94
|
+
this.renderCurrentDashboardView();
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
stoppingSessionIds = new Set();
|
|
98
|
+
graveyardAfterStopSessionIds = new Set();
|
|
99
|
+
/** Quick switcher overlay state */
|
|
100
|
+
switcherActive = false;
|
|
101
|
+
switcherIndex = 0;
|
|
102
|
+
switcherTimeout = null;
|
|
103
|
+
/** MRU order of session IDs (most recent first) */
|
|
104
|
+
sessionMRU = [];
|
|
105
|
+
/** Sessions confirmed registered in the instance registry (for claim detection) */
|
|
106
|
+
confirmedRegistered = new Set();
|
|
107
|
+
/** The focused worktree path on the dashboard (undefined = main repo) */
|
|
108
|
+
dashboardState = new DashboardState();
|
|
109
|
+
dashboardUiStateStore = new DashboardUiStateStore();
|
|
110
|
+
statusInterval = null;
|
|
111
|
+
agentTracker = new AgentTracker();
|
|
112
|
+
instanceId = randomUUID();
|
|
113
|
+
contextWatcher = new ContextWatcher((target) => this.tmuxRuntimeManager.captureTarget(target, { startLine: -120 }));
|
|
114
|
+
taskDispatcher = null;
|
|
115
|
+
orchestrationDispatcher = null;
|
|
116
|
+
/** Maps session ID → toolConfigKey for state saving */
|
|
117
|
+
sessionToolKeys = new Map();
|
|
118
|
+
/** Maps session ID → original args (before preamble injection) */
|
|
119
|
+
sessionOriginalArgs = new Map();
|
|
120
|
+
/** Maps session ID → worktree path (if session runs in a worktree) */
|
|
121
|
+
sessionWorktreePaths = new Map();
|
|
122
|
+
/** Maps session ID → team role (e.g. "coder", "reviewer") */
|
|
123
|
+
sessionRoles = new Map();
|
|
124
|
+
/** Maps session ID → user-provided stable label */
|
|
125
|
+
sessionLabels = new Map();
|
|
126
|
+
/** Offline sessions from previous runs (loaded from state.json) */
|
|
127
|
+
offlineSessions = [];
|
|
128
|
+
/** Cross-instance discovery and claim/heartbeat ownership */
|
|
129
|
+
instanceDirectory = new InstanceDirectory();
|
|
130
|
+
tmuxRuntimeManager = new TmuxRuntimeManager();
|
|
131
|
+
sessionBootstrap = new SessionBootstrapService({
|
|
132
|
+
tmuxRuntimeManager: this.tmuxRuntimeManager,
|
|
133
|
+
getSessionLabel: (sessionId) => this.getSessionLabel(sessionId),
|
|
134
|
+
getSessionRole: (sessionId) => this.sessionRoles.get(sessionId),
|
|
135
|
+
getSessionWorktreePath: (sessionId) => this.sessionWorktreePaths.get(sessionId),
|
|
136
|
+
getSessionTmuxTarget: (sessionId) => this.sessionTmuxTargets.get(sessionId),
|
|
137
|
+
});
|
|
138
|
+
sessionTmuxTargets = new Map();
|
|
139
|
+
metadataServer = null;
|
|
140
|
+
eventBus = new ProjectEventBus();
|
|
141
|
+
pluginRuntime = null;
|
|
142
|
+
lastRenderedFrame = null;
|
|
143
|
+
lastStatuslineSnapshotKey = null;
|
|
144
|
+
desktopStateSnapshot = null;
|
|
145
|
+
dashboardSessionsCache = [];
|
|
146
|
+
dashboardServicesCache = [];
|
|
147
|
+
dashboardWorktreeGroupsCache = [];
|
|
148
|
+
dashboardMainCheckoutInfoCache = { name: "Main Checkout", branch: "" };
|
|
149
|
+
dashboardModelSnapshotKey = null;
|
|
150
|
+
dashboardModelRefreshedAt = 0;
|
|
151
|
+
dashboardServiceSnapshotRefreshing = false;
|
|
152
|
+
dashboardServiceRecovery = null;
|
|
153
|
+
dashboardNextBackgroundRefreshAt = 0;
|
|
154
|
+
runtimeSync;
|
|
155
|
+
constructor() {
|
|
156
|
+
this.projectRoot = (() => {
|
|
157
|
+
try {
|
|
158
|
+
return findMainRepo(process.cwd());
|
|
159
|
+
}
|
|
160
|
+
catch {
|
|
161
|
+
return process.cwd();
|
|
162
|
+
}
|
|
163
|
+
})();
|
|
164
|
+
this.terminalHost = new TerminalHost();
|
|
165
|
+
this.hotkeys = new HotkeyHandler((action) => this.handleAction(action));
|
|
166
|
+
this.dashboard = new Dashboard();
|
|
167
|
+
this.runtimeSync = new MultiplexerRuntimeSync({
|
|
168
|
+
instanceDirectory: this.instanceDirectory,
|
|
169
|
+
instanceId: this.instanceId,
|
|
170
|
+
cwd: process.cwd(),
|
|
171
|
+
getMode: () => this.mode,
|
|
172
|
+
getConfirmedRegistered: () => this.confirmedRegistered,
|
|
173
|
+
setConfirmedRegistered: (value) => {
|
|
174
|
+
this.confirmedRegistered = value;
|
|
175
|
+
},
|
|
176
|
+
getInstanceSessionRefs: () => this.getInstanceSessionRefs(),
|
|
177
|
+
syncSessionsFromState: () => this.syncSessionsFromState(),
|
|
178
|
+
loadOfflineSessions: () => this.loadOfflineSessions(),
|
|
179
|
+
renderCurrentDashboardView: () => this.renderCurrentDashboardView(),
|
|
180
|
+
renderDashboard: () => this.renderDashboard(),
|
|
181
|
+
handleSessionClaimed: (sessionId) => this.handleSessionClaimed(sessionId),
|
|
182
|
+
writeStatuslineFile: () => this.writeStatuslineFile(),
|
|
183
|
+
});
|
|
184
|
+
this.eventBus.subscribe((event) => {
|
|
185
|
+
if (event.type !== "alert")
|
|
186
|
+
return;
|
|
187
|
+
if (event.kind === "notification") {
|
|
188
|
+
this.footerFlash = `◌ ${event.title}`;
|
|
189
|
+
}
|
|
190
|
+
else if (event.kind === "needs_input") {
|
|
191
|
+
this.footerFlash = `◉ ${event.sessionId ?? "agent"} needs input`;
|
|
192
|
+
}
|
|
193
|
+
else if (event.kind === "message_waiting") {
|
|
194
|
+
this.footerFlash = `✉ Message waiting → ${event.sessionId ?? "agent"}`;
|
|
195
|
+
}
|
|
196
|
+
else if (event.kind === "handoff_waiting") {
|
|
197
|
+
this.footerFlash = `⇢ Handoff waiting → ${event.sessionId ?? "agent"}`;
|
|
198
|
+
}
|
|
199
|
+
else if (event.kind === "task_assigned") {
|
|
200
|
+
this.footerFlash = `⧫ Task assigned → ${event.sessionId ?? "agent"}`;
|
|
201
|
+
}
|
|
202
|
+
else if (event.kind === "review_waiting") {
|
|
203
|
+
this.footerFlash = `◌ Review waiting → ${event.sessionId ?? "agent"}`;
|
|
204
|
+
}
|
|
205
|
+
else if (event.kind === "blocked") {
|
|
206
|
+
this.footerFlash = `⧗ ${event.title}`;
|
|
207
|
+
}
|
|
208
|
+
else if (event.kind === "task_done") {
|
|
209
|
+
this.footerFlash = `✓ ${event.title}`;
|
|
210
|
+
}
|
|
211
|
+
else if (event.kind === "task_failed") {
|
|
212
|
+
this.footerFlash = `✗ ${event.title}`;
|
|
213
|
+
}
|
|
214
|
+
this.footerFlashTicks = 4;
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
get sessionCount() {
|
|
218
|
+
return this.sessions.length;
|
|
219
|
+
}
|
|
220
|
+
get activeSession() {
|
|
221
|
+
return this.sessions[this.activeIndex] ?? null;
|
|
222
|
+
}
|
|
223
|
+
publishAlert(input) {
|
|
224
|
+
this.eventBus.publishAlert(input);
|
|
225
|
+
}
|
|
226
|
+
deriveSessionSemanticState(sessionId, status) {
|
|
227
|
+
const derived = loadMetadataState().sessions[sessionId]?.derived;
|
|
228
|
+
return deriveSessionSemantics({
|
|
229
|
+
status: status ?? this.sessions.find((session) => session.id === sessionId)?.status ?? "offline",
|
|
230
|
+
activity: derived?.activity,
|
|
231
|
+
attention: derived?.attention,
|
|
232
|
+
unseenCount: derived?.unseenCount,
|
|
233
|
+
hasActiveTask: Boolean(this.taskDispatcher?.getSessionTask(sessionId)),
|
|
234
|
+
});
|
|
235
|
+
}
|
|
236
|
+
registerManagedSession(session, args, toolConfigKey, worktreePath, role, startTime) {
|
|
237
|
+
return registerManagedSessionImpl(this, session, args, toolConfigKey, worktreePath, role, startTime);
|
|
238
|
+
}
|
|
239
|
+
handleSessionRuntimeEvent(runtime, event) {
|
|
240
|
+
handleSessionRuntimeEventImpl(this, runtime, event);
|
|
241
|
+
}
|
|
242
|
+
buildTmuxWindowMetadata(sessionId, command) {
|
|
243
|
+
return buildTmuxWindowMetadataImpl(this, sessionId, command);
|
|
244
|
+
}
|
|
245
|
+
syncTmuxWindowMetadata(sessionId) {
|
|
246
|
+
syncTmuxWindowMetadataImpl(this, sessionId);
|
|
247
|
+
}
|
|
248
|
+
updateContextWatcherSessions() {
|
|
249
|
+
updateContextWatcherSessionsImpl(this);
|
|
250
|
+
}
|
|
251
|
+
createTaskDispatcher() {
|
|
252
|
+
return new TaskDispatcher((id) => this.sessions.find((s) => s.id === id), (id) => this.sessionToolKeys.get(id), (id) => this.sessionRoles.get(id), (id) => this.deriveSessionSemanticState(id).availability);
|
|
253
|
+
}
|
|
254
|
+
createOrchestrationDispatcher() {
|
|
255
|
+
return new OrchestrationDispatcher((id) => this.sessions.find((s) => s.id === id));
|
|
256
|
+
}
|
|
257
|
+
selectLinkedOrOpenTarget(target) {
|
|
258
|
+
selectLinkedOrOpenTarget(this.tmuxRuntimeManager, target);
|
|
259
|
+
}
|
|
260
|
+
async run(opts) {
|
|
261
|
+
return runImpl(this, opts);
|
|
262
|
+
}
|
|
263
|
+
async runDashboard() {
|
|
264
|
+
return runDashboardImpl(this);
|
|
265
|
+
}
|
|
266
|
+
async runProjectService() {
|
|
267
|
+
return runProjectServiceImpl(this);
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* Resume previous sessions using each tool's native resume mechanism.
|
|
271
|
+
* Reads state.json and spawns sessions with resumeArgs instead of normal args.
|
|
272
|
+
*/
|
|
273
|
+
async resumeSessions(toolFilter) {
|
|
274
|
+
return resumeSessionsImpl(this, toolFilter);
|
|
275
|
+
}
|
|
276
|
+
/**
|
|
277
|
+
* Restore previous sessions by injecting prior history into the preamble.
|
|
278
|
+
* Starts fresh sessions but with context from the previous conversation.
|
|
279
|
+
*/
|
|
280
|
+
async restoreSessions(toolFilter) {
|
|
281
|
+
return restoreSessionsImpl(this, toolFilter);
|
|
282
|
+
}
|
|
283
|
+
createSession(command, args, preambleFlag, toolConfigKey, extraPreamble, sessionIdFlag, worktreePath, backendSessionIdOverride, sessionIdOverride, detachedInTmux = false) {
|
|
284
|
+
return createSessionImpl(this, command, args, preambleFlag, toolConfigKey, extraPreamble, sessionIdFlag, worktreePath, backendSessionIdOverride, sessionIdOverride, detachedInTmux);
|
|
285
|
+
}
|
|
286
|
+
/**
|
|
287
|
+
* Migrate an agent from its current worktree to a target worktree.
|
|
288
|
+
* Copies history and context, kills the old session, starts a new one
|
|
289
|
+
* with injected prior history.
|
|
290
|
+
*/
|
|
291
|
+
async migrateAgent(sessionId, targetWorktreePath) {
|
|
292
|
+
await migrateAgentImpl(this, sessionId, targetWorktreePath);
|
|
293
|
+
}
|
|
294
|
+
/** Get worktree path for a session */
|
|
295
|
+
getSessionWorktreePath(sessionId) {
|
|
296
|
+
return getSessionWorktreePathImpl(this, sessionId);
|
|
297
|
+
}
|
|
298
|
+
/** Get all sessions grouped by worktree path */
|
|
299
|
+
getSessionsByWorktree() {
|
|
300
|
+
return getSessionsByWorktreeImpl(this);
|
|
301
|
+
}
|
|
302
|
+
getScopedSessionEntries() {
|
|
303
|
+
return getScopedSessionEntriesImpl(this);
|
|
304
|
+
}
|
|
305
|
+
focusSession(index) {
|
|
306
|
+
focusSessionImpl(this, index);
|
|
307
|
+
}
|
|
308
|
+
handleAction(action) {
|
|
309
|
+
handleActionImpl(this, action);
|
|
310
|
+
}
|
|
311
|
+
async forkSessionFromSource(sourceSessionId, targetToolConfigKey, instruction, targetWorktreePath) {
|
|
312
|
+
const sourceSession = this.sessions.find((session) => session.id === sourceSessionId);
|
|
313
|
+
if (!sourceSession) {
|
|
314
|
+
this.showDashboardError("Cannot fork missing session", [`Source session ${sourceSessionId} not found.`]);
|
|
315
|
+
return undefined;
|
|
316
|
+
}
|
|
317
|
+
const config = loadConfig();
|
|
318
|
+
const toolCfg = config.tools[targetToolConfigKey];
|
|
319
|
+
if (!toolCfg) {
|
|
320
|
+
this.showDashboardError("Cannot fork session", [`Unknown tool config: ${targetToolConfigKey}`]);
|
|
321
|
+
return undefined;
|
|
322
|
+
}
|
|
323
|
+
const targetSessionId = `${toolCfg.command}-${Math.random().toString(36).slice(2, 8)}`;
|
|
324
|
+
const targetWorktree = targetWorktreePath === process.cwd()
|
|
325
|
+
? undefined
|
|
326
|
+
: (targetWorktreePath ?? this.sessionWorktreePaths.get(sourceSessionId));
|
|
327
|
+
const thread = createThread({
|
|
328
|
+
title: `Handoff: ${this.getSessionLabel(sourceSessionId) ?? sourceSession.command} → ${toolCfg.command}`,
|
|
329
|
+
kind: "handoff",
|
|
330
|
+
createdBy: sourceSessionId,
|
|
331
|
+
participants: [sourceSessionId, targetSessionId],
|
|
332
|
+
owner: targetSessionId,
|
|
333
|
+
waitingOn: [targetSessionId],
|
|
334
|
+
worktreePath: targetWorktree,
|
|
335
|
+
});
|
|
336
|
+
const handoffBody = instruction?.trim() || "Continue this work with the same context and take over as needed.";
|
|
337
|
+
appendMessage(thread.id, {
|
|
338
|
+
from: sourceSessionId,
|
|
339
|
+
to: [targetSessionId],
|
|
340
|
+
kind: "handoff",
|
|
341
|
+
body: handoffBody,
|
|
342
|
+
metadata: {
|
|
343
|
+
sourceSessionId,
|
|
344
|
+
},
|
|
345
|
+
});
|
|
346
|
+
updateThread(thread.id, (current) => ({
|
|
347
|
+
...current,
|
|
348
|
+
status: "waiting",
|
|
349
|
+
owner: targetSessionId,
|
|
350
|
+
waitingOn: [targetSessionId],
|
|
351
|
+
}));
|
|
352
|
+
await this.contextWatcher.syncNow(sourceSessionId).catch(() => { });
|
|
353
|
+
const sourceSnapshot = this.sessionBootstrap.readForkSourceSnapshot(sourceSessionId);
|
|
354
|
+
this.sessionBootstrap.seedForkArtifacts(sourceSessionId, targetSessionId, targetToolConfigKey);
|
|
355
|
+
const extraPreamble = [
|
|
356
|
+
this.sessionBootstrap.buildForkPreamble(sourceSessionId, targetSessionId),
|
|
357
|
+
instruction?.trim(),
|
|
358
|
+
]
|
|
359
|
+
.filter(Boolean)
|
|
360
|
+
.join("\n\n");
|
|
361
|
+
const transport = this.createSession(toolCfg.command, toolCfg.args, toolCfg.preambleFlag, targetToolConfigKey, extraPreamble, toolCfg.sessionIdFlag, targetWorktree, undefined, targetSessionId, !toolCfg.preambleFlag);
|
|
362
|
+
if (!toolCfg.preambleFlag) {
|
|
363
|
+
const kickoff = this.sessionBootstrap.buildForkKickoffPrompt(sourceSessionId, targetSessionId, sourceSnapshot, instruction);
|
|
364
|
+
await new Promise((resolve) => {
|
|
365
|
+
setTimeout(async () => {
|
|
366
|
+
try {
|
|
367
|
+
const target = this.sessionTmuxTargets.get(targetSessionId);
|
|
368
|
+
debug(`fork kickoff: source=${sourceSessionId} target=${targetSessionId} toolKey=${targetToolConfigKey} targetFound=${target ? "yes" : "no"} kickoffPreview=${JSON.stringify(kickoff.slice(0, 220))}`, "fork");
|
|
369
|
+
if (target) {
|
|
370
|
+
this.tmuxRuntimeManager.sendText(target, kickoff);
|
|
371
|
+
await this.sessionBootstrap.waitForCodexKickoffSubmit(targetSessionId, target, kickoff);
|
|
372
|
+
}
|
|
373
|
+
else {
|
|
374
|
+
debug(`fork kickoff fallback transport write: target=${targetSessionId} toolKey=${targetToolConfigKey}`, "fork");
|
|
375
|
+
transport.write(kickoff + "\r");
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
catch {
|
|
379
|
+
// Continue even if kickoff automation fails; user can still recover manually.
|
|
380
|
+
}
|
|
381
|
+
finally {
|
|
382
|
+
resolve();
|
|
383
|
+
}
|
|
384
|
+
}, 1800);
|
|
385
|
+
});
|
|
386
|
+
}
|
|
387
|
+
this.agentTracker.emit(sourceSessionId, {
|
|
388
|
+
kind: "status",
|
|
389
|
+
message: `Forked ${targetSessionId} from this session`,
|
|
390
|
+
threadId: thread.id,
|
|
391
|
+
threadName: thread.title,
|
|
392
|
+
source: "fork",
|
|
393
|
+
tone: "info",
|
|
394
|
+
});
|
|
395
|
+
this.agentTracker.emit(targetSessionId, {
|
|
396
|
+
kind: "task_assigned",
|
|
397
|
+
message: `Forked from ${sourceSessionId}`,
|
|
398
|
+
threadId: thread.id,
|
|
399
|
+
threadName: thread.title,
|
|
400
|
+
source: "fork",
|
|
401
|
+
tone: "info",
|
|
402
|
+
});
|
|
403
|
+
return {
|
|
404
|
+
sessionId: targetSessionId,
|
|
405
|
+
threadId: thread.id,
|
|
406
|
+
target: this.sessionTmuxTargets.get(transport.id),
|
|
407
|
+
};
|
|
408
|
+
}
|
|
409
|
+
/** Instruction files we've written (to clean up on exit) */
|
|
410
|
+
writtenInstructionFiles = new Set();
|
|
411
|
+
/** Track previous statuses for notification on transition */
|
|
412
|
+
prevStatuses = new Map();
|
|
413
|
+
/** Flash message shown temporarily in footer, cleared after a few renders */
|
|
414
|
+
get dashboardBusyState() {
|
|
415
|
+
return this.dashboardFeedback.busyState;
|
|
416
|
+
}
|
|
417
|
+
set dashboardBusyState(value) {
|
|
418
|
+
this.dashboardFeedback.busyState = value;
|
|
419
|
+
}
|
|
420
|
+
get dashboardErrorState() {
|
|
421
|
+
return this.dashboardFeedback.errorState;
|
|
422
|
+
}
|
|
423
|
+
set dashboardErrorState(value) {
|
|
424
|
+
this.dashboardFeedback.errorState = value;
|
|
425
|
+
}
|
|
426
|
+
get footerFlash() {
|
|
427
|
+
return this.dashboardFeedback.flash;
|
|
428
|
+
}
|
|
429
|
+
set footerFlash(value) {
|
|
430
|
+
this.dashboardFeedback.flash = value;
|
|
431
|
+
}
|
|
432
|
+
get footerFlashTicks() {
|
|
433
|
+
return this.dashboardFeedback.flashTicks;
|
|
434
|
+
}
|
|
435
|
+
set footerFlashTicks(value) {
|
|
436
|
+
this.dashboardFeedback.flashTicks = value;
|
|
437
|
+
}
|
|
438
|
+
/** Load saved state from global project state dir */
|
|
439
|
+
static loadState() {
|
|
440
|
+
return loadStateStatic();
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
Object.assign(Multiplexer.prototype, dashboardInteractionMethods, dashboardViewMethods, dashboardActionMethods, dashboardTailMethods, persistenceMethods, dashboardStateMethods, agentIoMethods, runtimeLifecycleMethods);
|
|
444
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/multiplexer/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
type NavigationHost = any;
|
|
2
|
+
export declare function getSwitcherList(host: NavigationHost): any[];
|
|
3
|
+
export declare function showSwitcher(host: NavigationHost): void;
|
|
4
|
+
export declare function resetSwitcherTimeout(host: NavigationHost): void;
|
|
5
|
+
export declare function confirmSwitcher(host: NavigationHost): void;
|
|
6
|
+
export declare function dismissSwitcher(host: NavigationHost): void;
|
|
7
|
+
export declare function redrawCurrentView(host: NavigationHost): void;
|
|
8
|
+
export declare function showHelp(host: NavigationHost): void;
|
|
9
|
+
export declare function dismissHelp(host: NavigationHost): void;
|
|
10
|
+
export declare function renderHelp(host: NavigationHost): void;
|
|
11
|
+
export declare function handleHelpKey(host: NavigationHost, data: Buffer): void;
|
|
12
|
+
export declare function renderSwitcher(host: NavigationHost): void;
|
|
13
|
+
export declare function handleSwitcherKey(host: NavigationHost, data: Buffer): void;
|
|
14
|
+
export declare function showMigratePicker(host: NavigationHost): void;
|
|
15
|
+
export declare function renderMigratePicker(host: NavigationHost): void;
|
|
16
|
+
export declare function handleMigratePickerKey(host: NavigationHost, data: Buffer): void;
|
|
17
|
+
export {};
|