aimux-cli 0.1.15 → 0.1.18
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/README.md +184 -67
- package/bin/aimux-dev +10 -0
- package/dist/alert-display.d.ts +21 -0
- package/dist/alert-display.js +86 -0
- package/dist/alert-display.js.map +1 -0
- package/dist/attachment-store.d.ts +0 -7
- package/dist/attachment-store.js +2 -86
- package/dist/attachment-store.js.map +1 -1
- package/dist/builtin-metadata-watchers.js +4 -4
- package/dist/builtin-metadata-watchers.js.map +1 -1
- package/dist/claude-hooks.d.ts +1 -0
- package/dist/claude-hooks.js +25 -0
- package/dist/claude-hooks.js.map +1 -1
- package/dist/config.d.ts +19 -13
- package/dist/config.js +28 -14
- package/dist/config.js.map +1 -1
- package/dist/connection-targets.d.ts +8 -0
- package/dist/connection-targets.js +28 -0
- package/dist/connection-targets.js.map +1 -0
- package/dist/credentials.d.ts +12 -0
- package/dist/credentials.js +49 -0
- package/dist/credentials.js.map +1 -0
- package/dist/daemon.d.ts +23 -0
- package/dist/daemon.js +391 -66
- package/dist/daemon.js.map +1 -1
- package/dist/dashboard/index.d.ts +13 -10
- package/dist/dashboard/index.js +3 -26
- package/dist/dashboard/index.js.map +1 -1
- package/dist/dashboard/order.d.ts +22 -0
- package/dist/dashboard/order.js +55 -0
- package/dist/dashboard/order.js.map +1 -0
- package/dist/dashboard/pending-actions.d.ts +39 -10
- package/dist/dashboard/pending-actions.js +166 -36
- package/dist/dashboard/pending-actions.js.map +1 -1
- package/dist/dashboard/quick-jump.d.ts +2 -1
- package/dist/dashboard/quick-jump.js +7 -4
- package/dist/dashboard/quick-jump.js.map +1 -1
- package/dist/dashboard/session-actions.d.ts +4 -4
- package/dist/dashboard/session-actions.js +1 -1
- package/dist/dashboard/session-actions.js.map +1 -1
- package/dist/dashboard/session-registry.d.ts +4 -3
- package/dist/dashboard/session-registry.js +16 -50
- package/dist/dashboard/session-registry.js.map +1 -1
- package/dist/dashboard/state.d.ts +1 -1
- package/dist/dashboard/state.js.map +1 -1
- package/dist/dashboard/ui-state-store.d.ts +16 -1
- package/dist/dashboard/ui-state-store.js +73 -2
- package/dist/dashboard/ui-state-store.js.map +1 -1
- package/dist/debug-state.d.ts +97 -0
- package/dist/debug-state.js +541 -0
- package/dist/debug-state.js.map +1 -0
- package/dist/debug.d.ts +38 -0
- package/dist/debug.js +219 -15
- package/dist/debug.js.map +1 -1
- package/dist/default-plugins/gh-pr-context.d.ts +2 -1
- package/dist/default-plugins/gh-pr-context.js +17 -11
- package/dist/default-plugins/gh-pr-context.js.map +1 -1
- package/dist/default-plugins/transcript-length.js +15 -2
- package/dist/default-plugins/transcript-length.js.map +1 -1
- package/dist/fast-control.js +37 -19
- package/dist/fast-control.js.map +1 -1
- package/dist/http-client.js +31 -2
- package/dist/http-client.js.map +1 -1
- package/dist/local-ui-server.d.ts +22 -0
- package/dist/local-ui-server.js +186 -0
- package/dist/local-ui-server.js.map +1 -0
- package/dist/login-flow.d.ts +7 -0
- package/dist/login-flow.js +120 -0
- package/dist/login-flow.js.map +1 -0
- package/dist/main.js +824 -152
- package/dist/main.js.map +1 -1
- package/dist/managed-launch-env.js +14 -0
- package/dist/managed-launch-env.js.map +1 -1
- package/dist/metadata-server.d.ts +36 -36
- package/dist/metadata-server.js +638 -137
- package/dist/metadata-server.js.map +1 -1
- package/dist/metadata-store.d.ts +4 -1
- package/dist/metadata-store.js +30 -2
- package/dist/metadata-store.js.map +1 -1
- package/dist/multiplexer/agent-io-methods.d.ts +2 -10
- package/dist/multiplexer/agent-io-methods.js +12 -43
- package/dist/multiplexer/agent-io-methods.js.map +1 -1
- package/dist/multiplexer/archives.js +8 -9
- package/dist/multiplexer/archives.js.map +1 -1
- package/dist/multiplexer/dashboard-control.js +45 -13
- package/dist/multiplexer/dashboard-control.js.map +1 -1
- package/dist/multiplexer/dashboard-interaction.d.ts +8 -2
- package/dist/multiplexer/dashboard-interaction.js +187 -28
- package/dist/multiplexer/dashboard-interaction.js.map +1 -1
- package/dist/multiplexer/dashboard-model.d.ts +10 -3
- package/dist/multiplexer/dashboard-model.js +417 -35
- package/dist/multiplexer/dashboard-model.js.map +1 -1
- package/dist/multiplexer/dashboard-ops.d.ts +9 -7
- package/dist/multiplexer/dashboard-ops.js +178 -68
- package/dist/multiplexer/dashboard-ops.js.map +1 -1
- package/dist/multiplexer/dashboard-state-methods.d.ts +2 -1
- package/dist/multiplexer/dashboard-state-methods.js +3 -2
- package/dist/multiplexer/dashboard-state-methods.js.map +1 -1
- package/dist/multiplexer/dashboard-tail-methods.d.ts +22 -10
- package/dist/multiplexer/dashboard-tail-methods.js +164 -47
- package/dist/multiplexer/dashboard-tail-methods.js.map +1 -1
- package/dist/multiplexer/dashboard-view-methods.d.ts +1 -1
- package/dist/multiplexer/dashboard-view-methods.js +23 -8
- package/dist/multiplexer/dashboard-view-methods.js.map +1 -1
- package/dist/multiplexer/graveyard-view-model.d.ts +9 -1
- package/dist/multiplexer/graveyard-view-model.js +39 -0
- package/dist/multiplexer/graveyard-view-model.js.map +1 -1
- package/dist/multiplexer/index.d.ts +15 -12
- package/dist/multiplexer/index.js +64 -43
- package/dist/multiplexer/index.js.map +1 -1
- package/dist/multiplexer/notifications.js +107 -24
- package/dist/multiplexer/notifications.js.map +1 -1
- package/dist/multiplexer/persistence-methods.d.ts +31 -4
- package/dist/multiplexer/persistence-methods.js +304 -308
- package/dist/multiplexer/persistence-methods.js.map +1 -1
- package/dist/multiplexer/runtime-lifecycle-methods.d.ts +8 -10
- package/dist/multiplexer/runtime-lifecycle-methods.js +104 -86
- package/dist/multiplexer/runtime-lifecycle-methods.js.map +1 -1
- package/dist/multiplexer/runtime-state.d.ts +8 -10
- package/dist/multiplexer/runtime-state.js +82 -145
- package/dist/multiplexer/runtime-state.js.map +1 -1
- package/dist/multiplexer/runtime-sync.d.ts +2 -10
- package/dist/multiplexer/runtime-sync.js +3 -18
- package/dist/multiplexer/runtime-sync.js.map +1 -1
- package/dist/multiplexer/service-state-snapshot.d.ts +2 -4
- package/dist/multiplexer/service-state-snapshot.js +4 -51
- package/dist/multiplexer/service-state-snapshot.js.map +1 -1
- package/dist/multiplexer/services.d.ts +1 -0
- package/dist/multiplexer/services.js +55 -5
- package/dist/multiplexer/services.js.map +1 -1
- package/dist/multiplexer/session-capture.d.ts +1 -0
- package/dist/multiplexer/session-capture.js +24 -0
- package/dist/multiplexer/session-capture.js.map +1 -0
- package/dist/multiplexer/session-launch.d.ts +4 -1
- package/dist/multiplexer/session-launch.js +152 -63
- package/dist/multiplexer/session-launch.js.map +1 -1
- package/dist/multiplexer/session-runtime-core.d.ts +8 -20
- package/dist/multiplexer/session-runtime-core.js +40 -135
- package/dist/multiplexer/session-runtime-core.js.map +1 -1
- package/dist/multiplexer/subscreens.js +10 -3
- package/dist/multiplexer/subscreens.js.map +1 -1
- package/dist/multiplexer/worktree-graveyard.d.ts +0 -1
- package/dist/multiplexer/worktree-graveyard.js +15 -16
- package/dist/multiplexer/worktree-graveyard.js.map +1 -1
- package/dist/multiplexer/worktrees.js +96 -40
- package/dist/multiplexer/worktrees.js.map +1 -1
- package/dist/notification-context.js +8 -4
- package/dist/notification-context.js.map +1 -1
- package/dist/notifications.js +163 -101
- package/dist/notifications.js.map +1 -1
- package/dist/notify.d.ts +4 -0
- package/dist/notify.js +14 -0
- package/dist/notify.js.map +1 -1
- package/dist/paths.d.ts +32 -7
- package/dist/paths.js +82 -58
- package/dist/paths.js.map +1 -1
- package/dist/pending-actions.d.ts +5 -0
- package/dist/pending-actions.js +14 -0
- package/dist/pending-actions.js.map +1 -0
- package/dist/plugin-runtime.js +9 -2
- package/dist/plugin-runtime.js.map +1 -1
- package/dist/project-events.d.ts +1 -10
- package/dist/project-events.js +0 -10
- package/dist/project-events.js.map +1 -1
- package/dist/project-scanner.d.ts +2 -3
- package/dist/project-scanner.js +58 -129
- package/dist/project-scanner.js.map +1 -1
- package/dist/project-service-manifest.d.ts +1 -3
- package/dist/project-service-manifest.js +1 -3
- package/dist/project-service-manifest.js.map +1 -1
- package/dist/relay-client.d.ts +30 -0
- package/dist/relay-client.js +191 -0
- package/dist/relay-client.js.map +1 -0
- package/dist/remote-access.d.ts +16 -0
- package/dist/remote-access.js +91 -0
- package/dist/remote-access.js.map +1 -0
- package/dist/runtime-core/exchange-derived.d.ts +2 -0
- package/dist/runtime-core/exchange-derived.js +154 -0
- package/dist/runtime-core/exchange-derived.js.map +1 -0
- package/dist/runtime-core/exchange-import.d.ts +24 -0
- package/dist/runtime-core/exchange-import.js +318 -0
- package/dist/runtime-core/exchange-import.js.map +1 -0
- package/dist/runtime-core/exchange-store.d.ts +157 -0
- package/dist/runtime-core/exchange-store.js +453 -0
- package/dist/runtime-core/exchange-store.js.map +1 -0
- package/dist/runtime-core/topology-services.d.ts +38 -0
- package/dist/runtime-core/topology-services.js +171 -0
- package/dist/runtime-core/topology-services.js.map +1 -0
- package/dist/runtime-core/topology-sessions.d.ts +52 -0
- package/dist/runtime-core/topology-sessions.js +239 -0
- package/dist/runtime-core/topology-sessions.js.map +1 -0
- package/dist/runtime-core/topology-store.d.ts +171 -0
- package/dist/runtime-core/topology-store.js +420 -0
- package/dist/runtime-core/topology-store.js.map +1 -0
- package/dist/runtime-core/topology-worktrees.d.ts +60 -0
- package/dist/runtime-core/topology-worktrees.js +200 -0
- package/dist/runtime-core/topology-worktrees.js.map +1 -0
- package/dist/runtime-migration.d.ts +69 -0
- package/dist/runtime-migration.js +399 -0
- package/dist/runtime-migration.js.map +1 -0
- package/dist/session-bootstrap.d.ts +8 -6
- package/dist/session-bootstrap.js +51 -158
- package/dist/session-bootstrap.js.map +1 -1
- package/dist/session-runtime.d.ts +2 -0
- package/dist/session-runtime.js +1 -0
- package/dist/session-runtime.js.map +1 -1
- package/dist/session-semantics.d.ts +12 -4
- package/dist/session-semantics.js +14 -0
- package/dist/session-semantics.js.map +1 -1
- package/dist/shell-hooks.js +32 -10
- package/dist/shell-hooks.js.map +1 -1
- package/dist/shell-state.d.ts +2 -0
- package/dist/shell-state.js +26 -1
- package/dist/shell-state.js.map +1 -1
- package/dist/statusline-model.d.ts +10 -2
- package/dist/statusline-model.js +106 -30
- package/dist/statusline-model.js.map +1 -1
- package/dist/task-workflow.d.ts +6 -9
- package/dist/task-workflow.js +37 -84
- package/dist/task-workflow.js.map +1 -1
- package/dist/tasks.d.ts +6 -33
- package/dist/tasks.js +46 -88
- package/dist/tasks.js.map +1 -1
- package/dist/team.d.ts +29 -0
- package/dist/team.js +40 -0
- package/dist/team.js.map +1 -1
- package/dist/threads.d.ts +6 -35
- package/dist/threads.js +89 -98
- package/dist/threads.js.map +1 -1
- package/dist/tmux/inbox-popup.js +37 -15
- package/dist/tmux/inbox-popup.js.map +1 -1
- package/dist/tmux/runtime-manager.d.ts +3 -0
- package/dist/tmux/runtime-manager.js +21 -4
- package/dist/tmux/runtime-manager.js.map +1 -1
- package/dist/tmux/statusline.js +49 -9
- package/dist/tmux/statusline.js.map +1 -1
- package/dist/tmux/window-open.js +1 -2
- package/dist/tmux/window-open.js.map +1 -1
- package/dist/tool-output-watchers.d.ts +0 -18
- package/dist/tool-output-watchers.js +0 -322
- package/dist/tool-output-watchers.js.map +1 -1
- package/dist/tui/screens/dashboard-renderers.js +37 -25
- package/dist/tui/screens/dashboard-renderers.js.map +1 -1
- package/dist/tui/screens/overlay-renderers.d.ts +2 -0
- package/dist/tui/screens/overlay-renderers.js +37 -1
- package/dist/tui/screens/overlay-renderers.js.map +1 -1
- package/dist/tui/screens/subscreen-renderers.js +7 -0
- package/dist/tui/screens/subscreen-renderers.js.map +1 -1
- package/dist/worktree.js +17 -0
- package/dist/worktree.js.map +1 -1
- package/dist-ui/_expo/static/css/web-30453ede1678c16acb08b97e83e8646d.css +1 -0
- package/dist-ui/_expo/static/js/web/entry-477c745b2adc79367a4380ecf07d9ff6.js +14620 -0
- package/dist-ui/assets/assets/images/icon.a5413dcd2e811c9f2317d01a28118d8a.png +0 -0
- package/dist-ui/assets/node_modules/@react-navigation/elements/lib/module/assets/back-icon-mask.0a328cd9c1afd0afe8e3b1ec5165b1b4.png +0 -0
- package/dist-ui/assets/node_modules/@react-navigation/elements/lib/module/assets/back-icon.35ba0eaec5a4f5ed12ca16fabeae451d.png +0 -0
- package/dist-ui/assets/node_modules/@react-navigation/elements/lib/module/assets/clear-icon.c94f6478e7ae0cdd9f15de1fcb9e5e55.png +0 -0
- package/dist-ui/assets/node_modules/@react-navigation/elements/lib/module/assets/clear-icon.c94f6478e7ae0cdd9f15de1fcb9e5e55@2x.png +0 -0
- package/dist-ui/assets/node_modules/@react-navigation/elements/lib/module/assets/clear-icon.c94f6478e7ae0cdd9f15de1fcb9e5e55@3x.png +0 -0
- package/dist-ui/assets/node_modules/@react-navigation/elements/lib/module/assets/clear-icon.c94f6478e7ae0cdd9f15de1fcb9e5e55@4x.png +0 -0
- package/dist-ui/assets/node_modules/@react-navigation/elements/lib/module/assets/close-icon.808e1b1b9b53114ec2838071a7e6daa7.png +0 -0
- package/dist-ui/assets/node_modules/@react-navigation/elements/lib/module/assets/close-icon.808e1b1b9b53114ec2838071a7e6daa7@2x.png +0 -0
- package/dist-ui/assets/node_modules/@react-navigation/elements/lib/module/assets/close-icon.808e1b1b9b53114ec2838071a7e6daa7@3x.png +0 -0
- package/dist-ui/assets/node_modules/@react-navigation/elements/lib/module/assets/close-icon.808e1b1b9b53114ec2838071a7e6daa7@4x.png +0 -0
- package/dist-ui/assets/node_modules/@react-navigation/elements/lib/module/assets/search-icon.286d67d3f74808a60a78d3ebf1a5fb57.png +0 -0
- package/dist-ui/assets/node_modules/expo-router/assets/arrow_down.017bc6ba3fc25503e5eb5e53826d48a8.png +0 -0
- package/dist-ui/assets/node_modules/expo-router/assets/error.d1ea1496f9057eb392d5bbf3732a61b7.png +0 -0
- package/dist-ui/assets/node_modules/expo-router/assets/file.19eeb73b9593a38f8e9f418337fc7d10.png +0 -0
- package/dist-ui/assets/node_modules/expo-router/assets/forward.d8b800c443b8972542883e0b9de2bdc6.png +0 -0
- package/dist-ui/assets/node_modules/expo-router/assets/pkg.ab19f4cbc543357183a20571f68380a3.png +0 -0
- package/dist-ui/assets/node_modules/expo-router/assets/sitemap.412dd9275b6b48ad28f5e3d81bb1f626.png +0 -0
- package/dist-ui/assets/node_modules/expo-router/assets/unmatched.20e71bdf79e3a97bf55fd9e164041578.png +0 -0
- package/dist-ui/favicon.ico +0 -0
- package/dist-ui/index.html +38 -0
- package/dist-ui/metadata.json +1 -0
- package/package.json +31 -15
- package/dist/agent-message-parts.d.ts +0 -17
- package/dist/agent-message-parts.js +0 -31
- package/dist/agent-message-parts.js.map +0 -1
- package/dist/instance-directory.d.ts +0 -32
- package/dist/instance-directory.js +0 -82
- package/dist/instance-directory.js.map +0 -1
- package/dist/instance-registry.d.ts +0 -39
- package/dist/instance-registry.js +0 -208
- package/dist/instance-registry.js.map +0 -1
- package/dist/multiplexer/session-actions.d.ts +0 -40
- package/dist/multiplexer/session-actions.js +0 -110
- package/dist/multiplexer/session-actions.js.map +0 -1
- package/dist/orchestration-dispatcher.d.ts +0 -25
- package/dist/orchestration-dispatcher.js +0 -59
- package/dist/orchestration-dispatcher.js.map +0 -1
- package/dist/session-input-operations.d.ts +0 -19
- package/dist/session-input-operations.js +0 -46
- package/dist/session-input-operations.js.map +0 -1
- package/dist/session-message-history.d.ts +0 -27
- package/dist/session-message-history.js +0 -105
- package/dist/session-message-history.js.map +0 -1
- package/dist/task-dispatcher.d.ts +0 -64
- package/dist/task-dispatcher.js +0 -213
- package/dist/task-dispatcher.js.map +0 -1
|
@@ -2,6 +2,7 @@ import { closeNotificationPanel as closeNotificationPanelImpl, handleNotificatio
|
|
|
2
2
|
import { beginWorktreeRemoval as beginWorktreeRemovalImpl, finishWorktreeRemoval as finishWorktreeRemovalImpl, handleWorktreeInputKey as handleWorktreeInputKeyImpl, handleWorktreeRemoveConfirmKey as handleWorktreeRemoveConfirmKeyImpl, handleWorktreeListKey as handleWorktreeListKeyImpl, renderWorktreeInput as renderWorktreeInputImpl, renderWorktreeList as renderWorktreeListImpl, renderWorktreeRemoveConfirm as renderWorktreeRemoveConfirmImpl, showWorktreeCreatePrompt as showWorktreeCreatePromptImpl, showWorktreeList as showWorktreeListImpl, } from "./worktrees.js";
|
|
3
3
|
import { createService as createServiceImpl, removeOfflineService as removeOfflineServiceImpl, resumeOfflineService as resumeOfflineServiceImpl, resumeOfflineServiceById as resumeOfflineServiceByIdImpl, serviceLabelForCommand as serviceLabelForCommandImpl, stopService as stopServiceImpl, } from "./services.js";
|
|
4
4
|
import { derivedStatusLabel } from "../dashboard/index.js";
|
|
5
|
+
import { selectDashboardTeammates } from "../dashboard/session-registry.js";
|
|
5
6
|
import { hasRuntimeEvidence, isAttachableDashboardSessionEntry } from "../dashboard/runtime-evidence.js";
|
|
6
7
|
export const dashboardViewMethods = {
|
|
7
8
|
serviceLabelForCommand(commandLine) {
|
|
@@ -10,29 +11,38 @@ export const dashboardViewMethods = {
|
|
|
10
11
|
generateDashboardSessionId(command) {
|
|
11
12
|
return `${command}-${Math.random().toString(36).slice(2, 8)}`;
|
|
12
13
|
},
|
|
13
|
-
settleDashboardCreatePending(itemId) {
|
|
14
|
+
settleDashboardCreatePending(itemId, target) {
|
|
14
15
|
if (!(this.startedInDashboard && this.mode === "dashboard"))
|
|
15
16
|
return;
|
|
16
|
-
|
|
17
|
+
const pendingTarget = target ??
|
|
18
|
+
(itemId.startsWith("worktree:")
|
|
19
|
+
? "worktree"
|
|
20
|
+
: this.getDashboardSessions?.().some((entry) => entry.id === itemId)
|
|
21
|
+
? "session"
|
|
22
|
+
: "service");
|
|
23
|
+
this.dashboardPendingActions.settleCreatePending(pendingTarget, itemId, () => {
|
|
17
24
|
this.refreshLocalDashboardModel();
|
|
18
25
|
this.renderDashboard();
|
|
19
26
|
}, {
|
|
20
|
-
timeoutMs:
|
|
27
|
+
timeoutMs: pendingTarget === "worktree" ? 180_000 : undefined,
|
|
21
28
|
isSettled: async () => {
|
|
22
29
|
if (typeof this.refreshDashboardModelFromService === "function") {
|
|
23
30
|
await this.refreshDashboardModelFromService(true);
|
|
24
31
|
}
|
|
25
|
-
if (
|
|
26
|
-
const path = itemId.slice("worktree:".length);
|
|
32
|
+
if (pendingTarget === "worktree") {
|
|
33
|
+
const path = itemId.startsWith("worktree:") ? itemId.slice("worktree:".length) : itemId;
|
|
27
34
|
const rawWorktree = this.listDesktopWorktrees?.().find((entry) => entry.path === path);
|
|
28
35
|
if (rawWorktree && rawWorktree.pending !== true && rawWorktree.pendingAction !== "creating")
|
|
29
36
|
return true;
|
|
30
37
|
const group = this.dashboardWorktreeGroupsCache?.find((entry) => entry.path === path);
|
|
31
38
|
return Boolean(group) && group.pendingAction !== "creating" && group.pending !== true;
|
|
32
39
|
}
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
40
|
+
if (pendingTarget === "service") {
|
|
41
|
+
const service = this.getDashboardServices?.().find((entry) => entry.id === itemId);
|
|
42
|
+
if (service)
|
|
43
|
+
return service.pendingAction !== "creating" || hasRuntimeEvidence(service);
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
36
46
|
const session = this.getDashboardSessions?.().find((entry) => entry.id === itemId);
|
|
37
47
|
return isAttachableDashboardSessionEntry(session);
|
|
38
48
|
},
|
|
@@ -72,6 +82,7 @@ export const dashboardViewMethods = {
|
|
|
72
82
|
}
|
|
73
83
|
: this.getViewportSize();
|
|
74
84
|
const dashSessions = this.dashboardSessionsCache;
|
|
85
|
+
const dashTeammates = this.dashboardTeammatesCache ?? [];
|
|
75
86
|
const dashServices = this.dashboardServicesCache;
|
|
76
87
|
const worktreeGroups = this.dashboardWorktreeGroupsCache;
|
|
77
88
|
const mainCheckoutInfo = this.dashboardMainCheckoutInfoCache;
|
|
@@ -88,6 +99,9 @@ export const dashboardViewMethods = {
|
|
|
88
99
|
else if (!hasWorktrees && dashSessions.length > 0) {
|
|
89
100
|
selectedSession = dashSessions[this.activeIndex]?.id;
|
|
90
101
|
}
|
|
102
|
+
const selectedSessionEntry = selectedSession
|
|
103
|
+
? dashSessions.find((session) => session.id === selectedSession)
|
|
104
|
+
: undefined;
|
|
91
105
|
this.dashboard.update({
|
|
92
106
|
sessions: dashSessions,
|
|
93
107
|
services: dashServices,
|
|
@@ -97,6 +111,7 @@ export const dashboardViewMethods = {
|
|
|
97
111
|
navLevel: hasWorktrees ? this.dashboardState.level : "sessions",
|
|
98
112
|
selectedSessionId: selectedSession,
|
|
99
113
|
selectedServiceId: selectedService,
|
|
114
|
+
selectedTeammates: selectDashboardTeammates(dashTeammates, selectedSessionEntry),
|
|
100
115
|
runtimeLabel: "tmux",
|
|
101
116
|
mainCheckout: mainCheckoutInfo,
|
|
102
117
|
operationFailures: this.dashboardOperationFailuresCache ?? [],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dashboard-view-methods.js","sourceRoot":"","sources":["../../src/multiplexer/dashboard-view-methods.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,IAAI,0BAA0B,EACpD,0BAA0B,IAAI,8BAA8B,EAC5D,qBAAqB,IAAI,yBAAyB,GACnD,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,oBAAoB,IAAI,wBAAwB,EAChD,qBAAqB,IAAI,yBAAyB,EAClD,sBAAsB,IAAI,0BAA0B,EACpD,8BAA8B,IAAI,kCAAkC,EACpE,qBAAqB,IAAI,yBAAyB,EAClD,mBAAmB,IAAI,uBAAuB,EAC9C,kBAAkB,IAAI,sBAAsB,EAC5C,2BAA2B,IAAI,+BAA+B,EAC9D,wBAAwB,IAAI,4BAA4B,EACxD,gBAAgB,IAAI,oBAAoB,GACzC,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,aAAa,IAAI,iBAAiB,EAClC,oBAAoB,IAAI,wBAAwB,EAChD,oBAAoB,IAAI,wBAAwB,EAChD,wBAAwB,IAAI,4BAA4B,EACxD,sBAAsB,IAAI,0BAA0B,EACpD,WAAW,IAAI,eAAe,GAC/B,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,iCAAiC,EAAE,MAAM,kCAAkC,CAAC;AAEzG,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,sBAAsB,CAAY,WAAmB;QACnD,OAAO,0BAA0B,CAAC,WAAW,CAAC,CAAC;IACjD,CAAC;IAED,0BAA0B,CAAY,OAAe;QACnD,OAAO,GAAG,OAAO,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;IAChE,CAAC;IAED,4BAA4B,CAAY,MAAc;
|
|
1
|
+
{"version":3,"file":"dashboard-view-methods.js","sourceRoot":"","sources":["../../src/multiplexer/dashboard-view-methods.ts"],"names":[],"mappings":"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"}
|
|
@@ -54,7 +54,13 @@ export type GraveyardStandaloneAgentRow = {
|
|
|
54
54
|
actionNumber: number;
|
|
55
55
|
lastUsedAt?: string;
|
|
56
56
|
};
|
|
57
|
-
export type
|
|
57
|
+
export type GraveyardOrphanTeammateRow = {
|
|
58
|
+
kind: "orphan-teammate";
|
|
59
|
+
entry: SessionState;
|
|
60
|
+
parentSessionId: string;
|
|
61
|
+
lastUsedAt?: string;
|
|
62
|
+
};
|
|
63
|
+
export type GraveyardViewRow = GraveyardSectionRow | GraveyardAgentWorktreeRow | GraveyardWorktreeRow | GraveyardAttachedAgentRow | GraveyardAttachedServiceRow | GraveyardAttachedMoreRow | GraveyardStandaloneAgentRow | GraveyardOrphanTeammateRow;
|
|
58
64
|
export type GraveyardSelectableRow = GraveyardWorktreeRow | GraveyardStandaloneAgentRow;
|
|
59
65
|
export interface GraveyardViewModel {
|
|
60
66
|
rows: GraveyardViewRow[];
|
|
@@ -63,6 +69,8 @@ export interface GraveyardViewModel {
|
|
|
63
69
|
export interface BuildGraveyardViewModelInput {
|
|
64
70
|
worktrees: WorktreeGraveyardEntry[];
|
|
65
71
|
agents: SessionState[];
|
|
72
|
+
parentSessions?: SessionState[];
|
|
73
|
+
teammates?: SessionState[];
|
|
66
74
|
lastUsedById?: Record<string, LastUsedEntry | undefined>;
|
|
67
75
|
}
|
|
68
76
|
export declare function buildGraveyardViewModel(input: BuildGraveyardViewModelInput): GraveyardViewModel;
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { basename } from "node:path";
|
|
2
2
|
import { parseRecencyTimestamp } from "../recency.js";
|
|
3
|
+
import { isTeammateSession, selectOrphanTeammates } from "../team.js";
|
|
3
4
|
export const MAX_VISIBLE_ATTACHED_AGENTS_PER_WORKTREE = 5;
|
|
4
5
|
export function buildGraveyardViewModel(input) {
|
|
5
6
|
const rows = [];
|
|
6
7
|
const selectableRows = [];
|
|
7
8
|
const flatAgentsClaimedByWorktree = new Set();
|
|
9
|
+
const renderedAgentIds = new Set();
|
|
8
10
|
const addSelectable = (row) => {
|
|
9
11
|
const actionIndex = selectableRows.length;
|
|
10
12
|
const withAction = { ...row, actionIndex, actionNumber: actionIndex + 1 };
|
|
@@ -34,6 +36,9 @@ export function buildGraveyardViewModel(input) {
|
|
|
34
36
|
sortAt: worktreeSortTimestamp(worktree, attachedAgents, attachedServices),
|
|
35
37
|
});
|
|
36
38
|
rows.push(worktreeRow);
|
|
39
|
+
for (const agent of attachedAgents) {
|
|
40
|
+
renderedAgentIds.add(agent.entry.id);
|
|
41
|
+
}
|
|
37
42
|
for (const agent of visibleAttachedAgents) {
|
|
38
43
|
rows.push({ kind: "attached-agent-display", parentPath: worktree.path, agent });
|
|
39
44
|
}
|
|
@@ -61,6 +66,7 @@ export function buildGraveyardViewModel(input) {
|
|
|
61
66
|
entry: agent,
|
|
62
67
|
lastUsedAt: input.lastUsedById?.[agent.id]?.lastUsedAt,
|
|
63
68
|
}));
|
|
69
|
+
renderedAgentIds.add(agent.id);
|
|
64
70
|
}
|
|
65
71
|
}
|
|
66
72
|
}
|
|
@@ -73,10 +79,43 @@ export function buildGraveyardViewModel(input) {
|
|
|
73
79
|
entry: agent,
|
|
74
80
|
lastUsedAt: input.lastUsedById?.[agent.id]?.lastUsedAt,
|
|
75
81
|
}));
|
|
82
|
+
renderedAgentIds.add(agent.id);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
const orphanTeammates = selectOrphanTeammates(input.teammates ?? [], collectKnownParentIds(input)).filter((session) => !renderedAgentIds.has(session.id) && !input.agents.some((agent) => agent.id === session.id));
|
|
86
|
+
if (orphanTeammates.length > 0) {
|
|
87
|
+
rows.push({ kind: "section", label: "Orphaned Teammates" });
|
|
88
|
+
for (const teammate of orphanTeammates) {
|
|
89
|
+
const parentSessionId = teammate.team?.parentSessionId;
|
|
90
|
+
if (!parentSessionId)
|
|
91
|
+
continue;
|
|
92
|
+
rows.push({
|
|
93
|
+
kind: "orphan-teammate",
|
|
94
|
+
entry: teammate,
|
|
95
|
+
parentSessionId,
|
|
96
|
+
lastUsedAt: input.lastUsedById?.[teammate.id]?.lastUsedAt,
|
|
97
|
+
});
|
|
76
98
|
}
|
|
77
99
|
}
|
|
78
100
|
return { rows, selectableRows };
|
|
79
101
|
}
|
|
102
|
+
function collectKnownParentIds(input) {
|
|
103
|
+
const ids = new Set();
|
|
104
|
+
const add = (session) => {
|
|
105
|
+
if (!session || isTeammateSession(session))
|
|
106
|
+
return;
|
|
107
|
+
ids.add(session.id);
|
|
108
|
+
};
|
|
109
|
+
for (const session of input.parentSessions ?? [])
|
|
110
|
+
add(session);
|
|
111
|
+
for (const agent of input.agents)
|
|
112
|
+
add(agent);
|
|
113
|
+
for (const worktree of input.worktrees) {
|
|
114
|
+
for (const agent of worktree.agents ?? [])
|
|
115
|
+
add(agent);
|
|
116
|
+
}
|
|
117
|
+
return ids;
|
|
118
|
+
}
|
|
80
119
|
function sortWorktrees(worktrees, flatAgents, lastUsedById) {
|
|
81
120
|
const sortMsByPath = new Map();
|
|
82
121
|
for (const worktree of worktrees) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graveyard-view-model.js","sourceRoot":"","sources":["../../src/multiplexer/graveyard-view-model.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"graveyard-view-model.js","sourceRoot":"","sources":["../../src/multiplexer/graveyard-view-model.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { SessionRuntime, type SessionTransport } from "../session-runtime.js";
|
|
2
2
|
import { type TmuxTarget } from "../tmux/runtime-manager.js";
|
|
3
|
+
import type { SessionTeamMetadata } from "../team.js";
|
|
3
4
|
import { type DashboardActionMethods } from "./dashboard-actions-methods.js";
|
|
4
5
|
import { type AgentIoMethods } from "./agent-io-methods.js";
|
|
5
6
|
import { type DashboardInteractionMethods } from "./dashboard-interaction.js";
|
|
@@ -18,6 +19,7 @@ export interface SessionState {
|
|
|
18
19
|
lifecycle?: "live" | "offline";
|
|
19
20
|
createdAt?: string;
|
|
20
21
|
backendSessionId?: string;
|
|
22
|
+
team?: SessionTeamMetadata;
|
|
21
23
|
worktreePath?: string;
|
|
22
24
|
label?: string;
|
|
23
25
|
headline?: string;
|
|
@@ -36,7 +38,6 @@ export interface ServiceState {
|
|
|
36
38
|
export interface SavedState {
|
|
37
39
|
savedAt: string;
|
|
38
40
|
cwd: string;
|
|
39
|
-
sessions: SessionState[];
|
|
40
41
|
services?: ServiceState[];
|
|
41
42
|
}
|
|
42
43
|
type ManagedSession = SessionRuntime;
|
|
@@ -95,8 +96,10 @@ export declare class Multiplexer {
|
|
|
95
96
|
private planEntries;
|
|
96
97
|
private planIndex;
|
|
97
98
|
private notificationPanelState;
|
|
99
|
+
private teammatePickerState;
|
|
98
100
|
private dashboardPendingActions;
|
|
99
101
|
private stoppingSessionIds;
|
|
102
|
+
private unpreservedExitedSessionIds;
|
|
100
103
|
private graveyardAfterStopSessionIds;
|
|
101
104
|
private dashboardQuickJumpTimeout;
|
|
102
105
|
/** Quick switcher overlay state */
|
|
@@ -105,7 +108,6 @@ export declare class Multiplexer {
|
|
|
105
108
|
/** MRU order of session IDs (most recent first) */
|
|
106
109
|
private sessionMRU;
|
|
107
110
|
/** Sessions confirmed registered in the instance registry (for claim detection) */
|
|
108
|
-
private confirmedRegistered;
|
|
109
111
|
/** The focused worktree path on the dashboard (undefined = main repo) */
|
|
110
112
|
private dashboardState;
|
|
111
113
|
private dashboardUiStateStore;
|
|
@@ -117,11 +119,8 @@ export declare class Multiplexer {
|
|
|
117
119
|
private dashboardPendingExpandedViewportCount;
|
|
118
120
|
private dashboardModelVersion;
|
|
119
121
|
private agentTracker;
|
|
120
|
-
private instanceId;
|
|
121
122
|
private contextWatcher;
|
|
122
|
-
|
|
123
|
-
private orchestrationDispatcher;
|
|
124
|
-
/** Maps session ID → toolConfigKey for state saving */
|
|
123
|
+
/** Maps session ID → toolConfigKey for topology persistence */
|
|
125
124
|
private sessionToolKeys;
|
|
126
125
|
/** Maps session ID → original args (before preamble injection) */
|
|
127
126
|
private sessionOriginalArgs;
|
|
@@ -131,10 +130,9 @@ export declare class Multiplexer {
|
|
|
131
130
|
private sessionRoles;
|
|
132
131
|
/** Maps session ID → user-provided stable label */
|
|
133
132
|
private sessionLabels;
|
|
134
|
-
/** Offline sessions from previous runs (loaded from
|
|
133
|
+
/** Offline sessions from previous runs (loaded from runtime topology) */
|
|
135
134
|
private offlineSessions;
|
|
136
135
|
/** Cross-instance discovery and claim/heartbeat ownership */
|
|
137
|
-
private instanceDirectory;
|
|
138
136
|
private tmuxRuntimeManager;
|
|
139
137
|
private sessionBootstrap;
|
|
140
138
|
private sessionTmuxTargets;
|
|
@@ -147,7 +145,9 @@ export declare class Multiplexer {
|
|
|
147
145
|
private lastStatuslineSnapshotKey;
|
|
148
146
|
private desktopStateSnapshot;
|
|
149
147
|
private dashboardSessionsCache;
|
|
148
|
+
private dashboardTeammatesCache;
|
|
150
149
|
private dashboardServicesCache;
|
|
150
|
+
private dashboardRawWorktreeGroupsCache;
|
|
151
151
|
private dashboardWorktreeGroupsCache;
|
|
152
152
|
private dashboardOperationFailuresCache;
|
|
153
153
|
private dashboardMainCheckoutInfoCache;
|
|
@@ -161,14 +161,13 @@ export declare class Multiplexer {
|
|
|
161
161
|
get sessionCount(): number;
|
|
162
162
|
get activeSession(): ManagedSession | null;
|
|
163
163
|
private publishAlert;
|
|
164
|
+
private resolveSessionAlertDisplayContext;
|
|
164
165
|
private deriveSessionSemanticState;
|
|
165
166
|
private registerManagedSession;
|
|
166
167
|
private handleSessionRuntimeEvent;
|
|
167
168
|
private buildTmuxWindowMetadata;
|
|
168
169
|
private syncTmuxWindowMetadata;
|
|
169
170
|
private updateContextWatcherSessions;
|
|
170
|
-
private createTaskDispatcher;
|
|
171
|
-
private createOrchestrationDispatcher;
|
|
172
171
|
private selectLinkedOrOpenTarget;
|
|
173
172
|
run(opts: {
|
|
174
173
|
command: string;
|
|
@@ -178,7 +177,7 @@ export declare class Multiplexer {
|
|
|
178
177
|
runProjectService(): Promise<number>;
|
|
179
178
|
/**
|
|
180
179
|
* Resume previous sessions using each tool's native resume mechanism.
|
|
181
|
-
* Reads
|
|
180
|
+
* Reads runtime topology and spawns sessions with resumeArgs instead of normal args.
|
|
182
181
|
*/
|
|
183
182
|
resumeSessions(toolFilter?: string): Promise<number>;
|
|
184
183
|
/**
|
|
@@ -186,7 +185,11 @@ export declare class Multiplexer {
|
|
|
186
185
|
* Starts fresh sessions but with context from the previous conversation.
|
|
187
186
|
*/
|
|
188
187
|
restoreSessions(toolFilter?: string): Promise<number>;
|
|
189
|
-
createSession(command: string, args: string[], preambleFlag?: string[], toolConfigKey?: string, extraPreamble?: string, sessionIdFlag?: string[], worktreePath?: string, backendSessionIdOverride?: string, sessionIdOverride?: string, detachedInTmux?: boolean, suppressStartupPreamble?: boolean): SessionTransport;
|
|
188
|
+
createSession(command: string, args: string[], preambleFlag?: string[], toolConfigKey?: string, extraPreamble?: string, sessionIdFlag?: string[], worktreePath?: string, backendSessionIdOverride?: string, sessionIdOverride?: string, detachedInTmux?: boolean, suppressStartupPreamble?: boolean, team?: SessionTeamMetadata): SessionTransport;
|
|
189
|
+
recordSessionBackendSessionId(sessionId: string, backendSessionId: string): {
|
|
190
|
+
sessionId: string;
|
|
191
|
+
backendSessionId: string;
|
|
192
|
+
};
|
|
190
193
|
/**
|
|
191
194
|
* Migrate an agent from its current worktree to a target worktree.
|
|
192
195
|
* Copies history and context, kills the old session, starts a new one
|
|
@@ -1,20 +1,17 @@
|
|
|
1
|
-
import { randomUUID } from "node:crypto";
|
|
2
1
|
import { HotkeyHandler } from "../hotkeys.js";
|
|
3
2
|
import { Dashboard } from "../dashboard/index.js";
|
|
4
3
|
import { DashboardOverlayState, DashboardState } from "../dashboard/state.js";
|
|
5
4
|
import { ContextWatcher } from "../context/context-bridge.js";
|
|
6
5
|
import { loadConfig } from "../config.js";
|
|
7
6
|
import { findMainRepo } from "../worktree.js";
|
|
8
|
-
import { TaskDispatcher } from "../task-dispatcher.js";
|
|
9
7
|
import { TerminalHost } from "../terminal-host.js";
|
|
10
8
|
import { AgentTracker } from "../agent-tracker.js";
|
|
11
|
-
import { InstanceDirectory } from "../instance-directory.js";
|
|
12
9
|
import { TmuxRuntimeManager } from "../tmux/runtime-manager.js";
|
|
13
10
|
import { loadMetadataState } from "../metadata-store.js";
|
|
14
11
|
import { SessionBootstrapService } from "../session-bootstrap.js";
|
|
15
12
|
import { createThread, appendMessage, updateThread } from "../threads.js";
|
|
16
|
-
import { OrchestrationDispatcher } from "../orchestration-dispatcher.js";
|
|
17
13
|
import { ProjectEventBus } from "../project-events.js";
|
|
14
|
+
import { contextualizeAlertInput, mergeDisplayContext, metadataDisplayContext, } from "../alert-display.js";
|
|
18
15
|
import { deriveSessionSemantics } from "../session-semantics.js";
|
|
19
16
|
import { listNotifications } from "../notifications.js";
|
|
20
17
|
import { DashboardUiStateStore } from "../dashboard/ui-state-store.js";
|
|
@@ -91,12 +88,19 @@ export class Multiplexer {
|
|
|
91
88
|
planEntries = [];
|
|
92
89
|
planIndex = 0;
|
|
93
90
|
notificationPanelState = null;
|
|
91
|
+
teammatePickerState = null;
|
|
94
92
|
dashboardPendingActions = new DashboardPendingActions(() => {
|
|
95
93
|
if (this.mode === "dashboard") {
|
|
94
|
+
void this.refreshDashboardModelFromService(true).then(() => {
|
|
95
|
+
if (this.mode === "dashboard") {
|
|
96
|
+
this.renderCurrentDashboardView();
|
|
97
|
+
}
|
|
98
|
+
});
|
|
96
99
|
this.renderCurrentDashboardView();
|
|
97
100
|
}
|
|
98
101
|
});
|
|
99
102
|
stoppingSessionIds = new Set();
|
|
103
|
+
unpreservedExitedSessionIds = new Set();
|
|
100
104
|
graveyardAfterStopSessionIds = new Set();
|
|
101
105
|
dashboardQuickJumpTimeout = null;
|
|
102
106
|
/** Quick switcher overlay state */
|
|
@@ -105,7 +109,6 @@ export class Multiplexer {
|
|
|
105
109
|
/** MRU order of session IDs (most recent first) */
|
|
106
110
|
sessionMRU = [];
|
|
107
111
|
/** Sessions confirmed registered in the instance registry (for claim detection) */
|
|
108
|
-
confirmedRegistered = new Set();
|
|
109
112
|
/** The focused worktree path on the dashboard (undefined = main repo) */
|
|
110
113
|
dashboardState = new DashboardState();
|
|
111
114
|
dashboardUiStateStore = new DashboardUiStateStore();
|
|
@@ -117,11 +120,8 @@ export class Multiplexer {
|
|
|
117
120
|
dashboardPendingExpandedViewportCount = 0;
|
|
118
121
|
dashboardModelVersion = 0;
|
|
119
122
|
agentTracker = new AgentTracker();
|
|
120
|
-
instanceId = randomUUID();
|
|
121
123
|
contextWatcher = new ContextWatcher((target) => this.tmuxRuntimeManager.captureTarget(target, { startLine: -120 }));
|
|
122
|
-
|
|
123
|
-
orchestrationDispatcher = null;
|
|
124
|
-
/** Maps session ID → toolConfigKey for state saving */
|
|
124
|
+
/** Maps session ID → toolConfigKey for topology persistence */
|
|
125
125
|
sessionToolKeys = new Map();
|
|
126
126
|
/** Maps session ID → original args (before preamble injection) */
|
|
127
127
|
sessionOriginalArgs = new Map();
|
|
@@ -131,10 +131,9 @@ export class Multiplexer {
|
|
|
131
131
|
sessionRoles = new Map();
|
|
132
132
|
/** Maps session ID → user-provided stable label */
|
|
133
133
|
sessionLabels = new Map();
|
|
134
|
-
/** Offline sessions from previous runs (loaded from
|
|
134
|
+
/** Offline sessions from previous runs (loaded from runtime topology) */
|
|
135
135
|
offlineSessions = [];
|
|
136
136
|
/** Cross-instance discovery and claim/heartbeat ownership */
|
|
137
|
-
instanceDirectory = new InstanceDirectory();
|
|
138
137
|
tmuxRuntimeManager = new TmuxRuntimeManager();
|
|
139
138
|
sessionBootstrap = new SessionBootstrapService({
|
|
140
139
|
tmuxRuntimeManager: this.tmuxRuntimeManager,
|
|
@@ -153,7 +152,9 @@ export class Multiplexer {
|
|
|
153
152
|
lastStatuslineSnapshotKey = null;
|
|
154
153
|
desktopStateSnapshot = null;
|
|
155
154
|
dashboardSessionsCache = [];
|
|
155
|
+
dashboardTeammatesCache = [];
|
|
156
156
|
dashboardServicesCache = [];
|
|
157
|
+
dashboardRawWorktreeGroupsCache = [];
|
|
157
158
|
dashboardWorktreeGroupsCache = [];
|
|
158
159
|
dashboardOperationFailuresCache = [];
|
|
159
160
|
dashboardMainCheckoutInfoCache = { name: "Main Checkout", branch: "" };
|
|
@@ -176,20 +177,12 @@ export class Multiplexer {
|
|
|
176
177
|
this.hotkeys = new HotkeyHandler((action) => this.handleAction(action));
|
|
177
178
|
this.dashboard = new Dashboard();
|
|
178
179
|
this.runtimeSync = new MultiplexerRuntimeSync({
|
|
179
|
-
instanceDirectory: this.instanceDirectory,
|
|
180
|
-
instanceId: this.instanceId,
|
|
181
180
|
cwd: process.cwd(),
|
|
182
181
|
getMode: () => this.mode,
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
this.confirmedRegistered = value;
|
|
186
|
-
},
|
|
187
|
-
getInstanceSessionRefs: () => this.getInstanceSessionRefs(),
|
|
188
|
-
syncSessionsFromState: () => this.syncSessionsFromState(),
|
|
189
|
-
loadOfflineSessions: () => this.loadOfflineSessions(),
|
|
182
|
+
syncSessionsFromTopology: () => this.syncSessionsFromTopology(),
|
|
183
|
+
loadOfflineTopologySessions: () => this.loadOfflineTopologySessions(),
|
|
190
184
|
renderCurrentDashboardView: () => this.renderCurrentDashboardView(),
|
|
191
185
|
renderDashboard: () => this.renderDashboard(),
|
|
192
|
-
handleSessionClaimed: (sessionId) => this.handleSessionClaimed(sessionId),
|
|
193
186
|
writeStatuslineFile: () => this.writeStatuslineFile(),
|
|
194
187
|
});
|
|
195
188
|
this.eventBus.subscribe((event) => {
|
|
@@ -232,7 +225,42 @@ export class Multiplexer {
|
|
|
232
225
|
return this.sessions[this.activeIndex] ?? null;
|
|
233
226
|
}
|
|
234
227
|
publishAlert(input) {
|
|
235
|
-
this.
|
|
228
|
+
const displayContext = this.resolveSessionAlertDisplayContext(input.sessionId, input.worktreePath);
|
|
229
|
+
this.eventBus.publishAlert(contextualizeAlertInput(input, displayContext));
|
|
230
|
+
}
|
|
231
|
+
resolveSessionAlertDisplayContext(sessionId, worktreePath) {
|
|
232
|
+
if (!sessionId)
|
|
233
|
+
return worktreePath ? { worktreePath } : undefined;
|
|
234
|
+
let context = {};
|
|
235
|
+
try {
|
|
236
|
+
context = metadataDisplayContext(loadMetadataState().sessions[sessionId]);
|
|
237
|
+
}
|
|
238
|
+
catch { }
|
|
239
|
+
const session = this.dashboardSessionsCache.find((entry) => entry.id === sessionId) ??
|
|
240
|
+
this.sessions.find((entry) => entry.id === sessionId) ??
|
|
241
|
+
this.offlineSessions.find((entry) => entry.id === sessionId);
|
|
242
|
+
const service = this.dashboardServicesCache.find((entry) => entry.id === sessionId) ??
|
|
243
|
+
this.offlineServices?.find?.((entry) => entry.id === sessionId);
|
|
244
|
+
const sessionAny = session;
|
|
245
|
+
const serviceAny = service;
|
|
246
|
+
const resolvedWorktreePath = worktreePath ?? this.sessionWorktreePaths.get(sessionId) ?? sessionAny?.worktreePath ?? serviceAny?.worktreePath;
|
|
247
|
+
const group = resolvedWorktreePath
|
|
248
|
+
? this.dashboardWorktreeGroupsCache.find((entry) => entry.path === resolvedWorktreePath)
|
|
249
|
+
: this.dashboardWorktreeGroupsCache.find((entry) => !entry.path);
|
|
250
|
+
const serviceCommand = serviceAny?.launchCommandLine ?? serviceAny?.command ?? "";
|
|
251
|
+
const liveContext = {
|
|
252
|
+
label: this.getSessionLabel(sessionId) ??
|
|
253
|
+
sessionAny?.label ??
|
|
254
|
+
serviceAny?.label ??
|
|
255
|
+
(serviceCommand ? this.serviceLabelForCommand?.(serviceCommand) : undefined) ??
|
|
256
|
+
sessionAny?.command,
|
|
257
|
+
command: sessionAny?.command ?? serviceAny?.command ?? serviceAny?.launchCommandLine,
|
|
258
|
+
worktreePath: resolvedWorktreePath,
|
|
259
|
+
worktreeName: sessionAny?.worktreeName ?? serviceAny?.worktreeName ?? group?.name,
|
|
260
|
+
branch: sessionAny?.worktreeBranch ?? serviceAny?.worktreeBranch ?? group?.branch,
|
|
261
|
+
};
|
|
262
|
+
context = mergeDisplayContext(context, liveContext);
|
|
263
|
+
return Object.values(context).some((value) => value !== undefined) ? context : undefined;
|
|
236
264
|
}
|
|
237
265
|
deriveSessionSemanticState(sessionId, status) {
|
|
238
266
|
const derived = loadMetadataState().sessions[sessionId]?.derived;
|
|
@@ -245,11 +273,11 @@ export class Multiplexer {
|
|
|
245
273
|
unseenCount: derived?.unseenCount,
|
|
246
274
|
notificationUnreadCount: unreadNotifications.length,
|
|
247
275
|
latestNotification,
|
|
248
|
-
hasActiveTask:
|
|
276
|
+
hasActiveTask: false,
|
|
249
277
|
});
|
|
250
278
|
}
|
|
251
|
-
registerManagedSession(session, args, toolConfigKey, worktreePath, role, startTime) {
|
|
252
|
-
return registerManagedSessionImpl(this, session, args, toolConfigKey, worktreePath, role, startTime);
|
|
279
|
+
registerManagedSession(session, args, toolConfigKey, worktreePath, role, startTime, team) {
|
|
280
|
+
return registerManagedSessionImpl(this, session, args, toolConfigKey, worktreePath, role, startTime, team);
|
|
253
281
|
}
|
|
254
282
|
handleSessionRuntimeEvent(runtime, event) {
|
|
255
283
|
handleSessionRuntimeEventImpl(this, runtime, event);
|
|
@@ -263,16 +291,6 @@ export class Multiplexer {
|
|
|
263
291
|
updateContextWatcherSessions() {
|
|
264
292
|
updateContextWatcherSessionsImpl(this);
|
|
265
293
|
}
|
|
266
|
-
createTaskDispatcher() {
|
|
267
|
-
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).runtime.canReceiveInput, (session, prompt) => {
|
|
268
|
-
void this.writeAgentInput(session.id, prompt, undefined, undefined, true);
|
|
269
|
-
});
|
|
270
|
-
}
|
|
271
|
-
createOrchestrationDispatcher() {
|
|
272
|
-
return new OrchestrationDispatcher((id) => this.sessions.find((s) => s.id === id), (id) => this.deriveSessionSemanticState(id).runtime.canReceiveInput, (session, prompt) => {
|
|
273
|
-
void this.writeAgentInput(session.id, prompt, undefined, undefined, true);
|
|
274
|
-
});
|
|
275
|
-
}
|
|
276
294
|
selectLinkedOrOpenTarget(target) {
|
|
277
295
|
selectLinkedOrOpenTarget(this.tmuxRuntimeManager, target);
|
|
278
296
|
}
|
|
@@ -287,7 +305,7 @@ export class Multiplexer {
|
|
|
287
305
|
}
|
|
288
306
|
/**
|
|
289
307
|
* Resume previous sessions using each tool's native resume mechanism.
|
|
290
|
-
* Reads
|
|
308
|
+
* Reads runtime topology and spawns sessions with resumeArgs instead of normal args.
|
|
291
309
|
*/
|
|
292
310
|
async resumeSessions(toolFilter) {
|
|
293
311
|
return resumeSessionsImpl(this, toolFilter);
|
|
@@ -299,8 +317,11 @@ export class Multiplexer {
|
|
|
299
317
|
async restoreSessions(toolFilter) {
|
|
300
318
|
return restoreSessionsImpl(this, toolFilter);
|
|
301
319
|
}
|
|
302
|
-
createSession(command, args, preambleFlag, toolConfigKey, extraPreamble, sessionIdFlag, worktreePath, backendSessionIdOverride, sessionIdOverride, detachedInTmux = false, suppressStartupPreamble = false) {
|
|
303
|
-
return createSessionImpl(this, command, args, preambleFlag, toolConfigKey, extraPreamble, sessionIdFlag, worktreePath, backendSessionIdOverride, sessionIdOverride, detachedInTmux, suppressStartupPreamble);
|
|
320
|
+
createSession(command, args, preambleFlag, toolConfigKey, extraPreamble, sessionIdFlag, worktreePath, backendSessionIdOverride, sessionIdOverride, detachedInTmux = false, suppressStartupPreamble = false, team) {
|
|
321
|
+
return createSessionImpl(this, command, args, preambleFlag, toolConfigKey, extraPreamble, sessionIdFlag, worktreePath, backendSessionIdOverride, sessionIdOverride, detachedInTmux, suppressStartupPreamble, team);
|
|
322
|
+
}
|
|
323
|
+
recordSessionBackendSessionId(sessionId, backendSessionId) {
|
|
324
|
+
return runtimeLifecycleMethods.recordSessionBackendSessionId.call(this, sessionId, backendSessionId);
|
|
304
325
|
}
|
|
305
326
|
/**
|
|
306
327
|
* Migrate an agent from its current worktree to a target worktree.
|
|
@@ -371,17 +392,17 @@ export class Multiplexer {
|
|
|
371
392
|
await this.contextWatcher.syncNow(sourceSessionId).catch(() => { });
|
|
372
393
|
const sourceSnapshot = this.sessionBootstrap.readForkSourceSnapshot(sourceSessionId);
|
|
373
394
|
this.sessionBootstrap.seedForkArtifacts(sourceSessionId, targetSessionId, targetToolConfigKey);
|
|
395
|
+
const codexContinuityPreamble = !toolCfg.preambleFlag
|
|
396
|
+
? this.sessionBootstrap.buildCodexForkContinuityPreamble(sourceSessionId, targetSessionId, sourceSnapshot, instruction)
|
|
397
|
+
: undefined;
|
|
374
398
|
const extraPreamble = [
|
|
375
399
|
this.sessionBootstrap.buildForkPreamble(sourceSessionId, targetSessionId),
|
|
376
|
-
instruction?.trim(),
|
|
400
|
+
codexContinuityPreamble ? undefined : instruction?.trim(),
|
|
401
|
+
codexContinuityPreamble,
|
|
377
402
|
]
|
|
378
403
|
.filter(Boolean)
|
|
379
404
|
.join("\n\n");
|
|
380
405
|
const transport = this.createSession(toolCfg.command, [...toolCfg.args, ...extraArgs], toolCfg.preambleFlag, targetToolConfigKey, extraPreamble, toolCfg.sessionIdFlag, targetWorktree, undefined, targetSessionId, !toolCfg.preambleFlag);
|
|
381
|
-
if (!toolCfg.preambleFlag) {
|
|
382
|
-
const kickoff = this.sessionBootstrap.buildCodexForkKickoffPrompt(sourceSessionId, targetSessionId, sourceSnapshot, instruction);
|
|
383
|
-
await this.sessionBootstrap.deliverDetachedCodexKickoffPrompt(targetSessionId, kickoff, 1800);
|
|
384
|
-
}
|
|
385
406
|
this.agentTracker.emit(sourceSessionId, {
|
|
386
407
|
kind: "status",
|
|
387
408
|
message: `Forked ${targetSessionId} from this session`,
|