aimux-cli 0.1.13 → 0.1.15

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 (212) hide show
  1. package/README.md +54 -0
  2. package/dist/agent-prompt-delivery.d.ts +31 -0
  3. package/dist/agent-prompt-delivery.js +119 -0
  4. package/dist/agent-prompt-delivery.js.map +1 -0
  5. package/dist/agent-tracker.js +4 -2
  6. package/dist/agent-tracker.js.map +1 -1
  7. package/dist/atomic-write.d.ts +1 -0
  8. package/dist/atomic-write.js +9 -0
  9. package/dist/atomic-write.js.map +1 -0
  10. package/dist/builtin-metadata-watchers.js +10 -6
  11. package/dist/builtin-metadata-watchers.js.map +1 -1
  12. package/dist/daemon.js +3 -6
  13. package/dist/daemon.js.map +1 -1
  14. package/dist/dashboard/index.d.ts +26 -15
  15. package/dist/dashboard/index.js +26 -56
  16. package/dist/dashboard/index.js.map +1 -1
  17. package/dist/dashboard/operation-failures.d.ts +30 -0
  18. package/dist/dashboard/operation-failures.js +86 -0
  19. package/dist/dashboard/operation-failures.js.map +1 -0
  20. package/dist/dashboard/pending-actions.d.ts +9 -2
  21. package/dist/dashboard/pending-actions.js +66 -7
  22. package/dist/dashboard/pending-actions.js.map +1 -1
  23. package/dist/dashboard/quick-jump.d.ts +3 -1
  24. package/dist/dashboard/quick-jump.js +27 -8
  25. package/dist/dashboard/quick-jump.js.map +1 -1
  26. package/dist/dashboard/runtime-evidence.d.ts +4 -0
  27. package/dist/dashboard/runtime-evidence.js +22 -0
  28. package/dist/dashboard/runtime-evidence.js.map +1 -0
  29. package/dist/dashboard/session-actions.d.ts +1 -1
  30. package/dist/dashboard/session-actions.js +3 -1
  31. package/dist/dashboard/session-actions.js.map +1 -1
  32. package/dist/dashboard/session-registry.d.ts +1 -0
  33. package/dist/dashboard/session-registry.js +47 -30
  34. package/dist/dashboard/session-registry.js.map +1 -1
  35. package/dist/dashboard/state.d.ts +9 -0
  36. package/dist/dashboard/state.js +33 -1
  37. package/dist/dashboard/state.js.map +1 -1
  38. package/dist/dashboard/targets.js +11 -3
  39. package/dist/dashboard/targets.js.map +1 -1
  40. package/dist/dashboard/ui-state-store.d.ts +3 -3
  41. package/dist/dashboard/ui-state-store.js +23 -14
  42. package/dist/dashboard/ui-state-store.js.map +1 -1
  43. package/dist/default-plugins/gh-pr-context.d.ts +8 -0
  44. package/dist/default-plugins/gh-pr-context.js +256 -0
  45. package/dist/default-plugins/gh-pr-context.js.map +1 -0
  46. package/dist/default-plugins/transcript-length.d.ts +1 -0
  47. package/dist/default-plugins/transcript-length.js +10 -0
  48. package/dist/default-plugins/transcript-length.js.map +1 -1
  49. package/dist/fast-control.d.ts +8 -3
  50. package/dist/fast-control.js +13 -14
  51. package/dist/fast-control.js.map +1 -1
  52. package/dist/main.js +22 -35
  53. package/dist/main.js.map +1 -1
  54. package/dist/managed-launch-env.d.ts +10 -0
  55. package/dist/managed-launch-env.js +51 -0
  56. package/dist/managed-launch-env.js.map +1 -0
  57. package/dist/metadata-server.d.ts +41 -0
  58. package/dist/metadata-server.js +272 -15
  59. package/dist/metadata-server.js.map +1 -1
  60. package/dist/metadata-store.d.ts +1 -0
  61. package/dist/metadata-store.js +3 -5
  62. package/dist/metadata-store.js.map +1 -1
  63. package/dist/multiplexer/agent-io-methods.d.ts +1 -1
  64. package/dist/multiplexer/agent-io-methods.js +36 -29
  65. package/dist/multiplexer/agent-io-methods.js.map +1 -1
  66. package/dist/multiplexer/archives.d.ts +1 -0
  67. package/dist/multiplexer/archives.js +143 -25
  68. package/dist/multiplexer/archives.js.map +1 -1
  69. package/dist/multiplexer/dashboard-actions-methods.d.ts +10 -1
  70. package/dist/multiplexer/dashboard-actions-methods.js +16 -4
  71. package/dist/multiplexer/dashboard-actions-methods.js.map +1 -1
  72. package/dist/multiplexer/dashboard-control.d.ts +13 -1
  73. package/dist/multiplexer/dashboard-control.js +150 -121
  74. package/dist/multiplexer/dashboard-control.js.map +1 -1
  75. package/dist/multiplexer/dashboard-interaction.d.ts +2 -1
  76. package/dist/multiplexer/dashboard-interaction.js +175 -113
  77. package/dist/multiplexer/dashboard-interaction.js.map +1 -1
  78. package/dist/multiplexer/dashboard-model.d.ts +5 -1
  79. package/dist/multiplexer/dashboard-model.js +83 -8
  80. package/dist/multiplexer/dashboard-model.js.map +1 -1
  81. package/dist/multiplexer/dashboard-ops.d.ts +32 -1
  82. package/dist/multiplexer/dashboard-ops.js +517 -15
  83. package/dist/multiplexer/dashboard-ops.js.map +1 -1
  84. package/dist/multiplexer/dashboard-state-methods.d.ts +7 -0
  85. package/dist/multiplexer/dashboard-state-methods.js +79 -4
  86. package/dist/multiplexer/dashboard-state-methods.js.map +1 -1
  87. package/dist/multiplexer/dashboard-tail-methods.d.ts +12 -2
  88. package/dist/multiplexer/dashboard-tail-methods.js +18 -6
  89. package/dist/multiplexer/dashboard-tail-methods.js.map +1 -1
  90. package/dist/multiplexer/dashboard-view-methods.d.ts +3 -1
  91. package/dist/multiplexer/dashboard-view-methods.js +53 -38
  92. package/dist/multiplexer/dashboard-view-methods.js.map +1 -1
  93. package/dist/multiplexer/graveyard-view-model.d.ts +68 -0
  94. package/dist/multiplexer/graveyard-view-model.js +185 -0
  95. package/dist/multiplexer/graveyard-view-model.js.map +1 -0
  96. package/dist/multiplexer/index.d.ts +18 -11
  97. package/dist/multiplexer/index.js +30 -18
  98. package/dist/multiplexer/index.js.map +1 -1
  99. package/dist/multiplexer/navigation.d.ts +1 -1
  100. package/dist/multiplexer/navigation.js +31 -11
  101. package/dist/multiplexer/navigation.js.map +1 -1
  102. package/dist/multiplexer/notifications.d.ts +1 -0
  103. package/dist/multiplexer/notifications.js +27 -19
  104. package/dist/multiplexer/notifications.js.map +1 -1
  105. package/dist/multiplexer/persistence-methods.d.ts +16 -0
  106. package/dist/multiplexer/persistence-methods.js +349 -28
  107. package/dist/multiplexer/persistence-methods.js.map +1 -1
  108. package/dist/multiplexer/runtime-lifecycle-methods.js +81 -12
  109. package/dist/multiplexer/runtime-lifecycle-methods.js.map +1 -1
  110. package/dist/multiplexer/runtime-state.d.ts +6 -2
  111. package/dist/multiplexer/runtime-state.js +144 -23
  112. package/dist/multiplexer/runtime-state.js.map +1 -1
  113. package/dist/multiplexer/service-state-snapshot.d.ts +14 -0
  114. package/dist/multiplexer/service-state-snapshot.js +121 -0
  115. package/dist/multiplexer/service-state-snapshot.js.map +1 -0
  116. package/dist/multiplexer/services.d.ts +19 -1
  117. package/dist/multiplexer/services.js +114 -16
  118. package/dist/multiplexer/services.js.map +1 -1
  119. package/dist/multiplexer/session-actions.d.ts +3 -0
  120. package/dist/multiplexer/session-actions.js +10 -8
  121. package/dist/multiplexer/session-actions.js.map +1 -1
  122. package/dist/multiplexer/session-launch.d.ts +1 -1
  123. package/dist/multiplexer/session-launch.js +63 -22
  124. package/dist/multiplexer/session-launch.js.map +1 -1
  125. package/dist/multiplexer/session-runtime-core.d.ts +2 -1
  126. package/dist/multiplexer/session-runtime-core.js +107 -69
  127. package/dist/multiplexer/session-runtime-core.js.map +1 -1
  128. package/dist/multiplexer/subscreens.d.ts +1 -0
  129. package/dist/multiplexer/subscreens.js +17 -12
  130. package/dist/multiplexer/subscreens.js.map +1 -1
  131. package/dist/multiplexer/tool-picker.d.ts +6 -2
  132. package/dist/multiplexer/tool-picker.js +231 -81
  133. package/dist/multiplexer/tool-picker.js.map +1 -1
  134. package/dist/multiplexer/worktree-graveyard.d.ts +13 -0
  135. package/dist/multiplexer/worktree-graveyard.js +21 -0
  136. package/dist/multiplexer/worktree-graveyard.js.map +1 -0
  137. package/dist/multiplexer/worktrees.d.ts +1 -0
  138. package/dist/multiplexer/worktrees.js +151 -69
  139. package/dist/multiplexer/worktrees.js.map +1 -1
  140. package/dist/notification-context.js +9 -15
  141. package/dist/notification-context.js.map +1 -1
  142. package/dist/notifications.d.ts +22 -0
  143. package/dist/notifications.js +66 -11
  144. package/dist/notifications.js.map +1 -1
  145. package/dist/orchestration-actions.js +3 -3
  146. package/dist/orchestration-actions.js.map +1 -1
  147. package/dist/orchestration-dispatcher.d.ts +4 -3
  148. package/dist/orchestration-dispatcher.js +9 -7
  149. package/dist/orchestration-dispatcher.js.map +1 -1
  150. package/dist/orchestration-routing.d.ts +2 -2
  151. package/dist/orchestration-routing.js +3 -7
  152. package/dist/orchestration-routing.js.map +1 -1
  153. package/dist/paths.d.ts +3 -0
  154. package/dist/paths.js +9 -0
  155. package/dist/paths.js.map +1 -1
  156. package/dist/plugin-runtime.d.ts +5 -0
  157. package/dist/plugin-runtime.js +98 -34
  158. package/dist/plugin-runtime.js.map +1 -1
  159. package/dist/project-events.js +4 -2
  160. package/dist/project-events.js.map +1 -1
  161. package/dist/session-bootstrap.d.ts +0 -3
  162. package/dist/session-bootstrap.js +12 -104
  163. package/dist/session-bootstrap.js.map +1 -1
  164. package/dist/session-semantics.d.ts +44 -7
  165. package/dist/session-semantics.js +164 -69
  166. package/dist/session-semantics.js.map +1 -1
  167. package/dist/shell-args.d.ts +1 -0
  168. package/dist/shell-args.js +57 -0
  169. package/dist/shell-args.js.map +1 -0
  170. package/dist/shell-hooks.d.ts +3 -0
  171. package/dist/shell-hooks.js +19 -2
  172. package/dist/shell-hooks.js.map +1 -1
  173. package/dist/statusline-model.d.ts +5 -1
  174. package/dist/statusline-model.js +18 -29
  175. package/dist/statusline-model.js.map +1 -1
  176. package/dist/task-dispatcher.d.ts +3 -3
  177. package/dist/task-dispatcher.js +6 -5
  178. package/dist/task-dispatcher.js.map +1 -1
  179. package/dist/task-workflow.d.ts +2 -0
  180. package/dist/task-workflow.js +15 -6
  181. package/dist/task-workflow.js.map +1 -1
  182. package/dist/tasks.d.ts +4 -1
  183. package/dist/tasks.js +19 -1
  184. package/dist/tasks.js.map +1 -1
  185. package/dist/tmux/doctor.d.ts +1 -0
  186. package/dist/tmux/doctor.js +4 -1
  187. package/dist/tmux/doctor.js.map +1 -1
  188. package/dist/tmux/runtime-manager.d.ts +6 -0
  189. package/dist/tmux/runtime-manager.js +56 -18
  190. package/dist/tmux/runtime-manager.js.map +1 -1
  191. package/dist/tmux/statusline.js +17 -16
  192. package/dist/tmux/statusline.js.map +1 -1
  193. package/dist/tmux/window-open.d.ts +1 -0
  194. package/dist/tmux/window-open.js +10 -10
  195. package/dist/tmux/window-open.js.map +1 -1
  196. package/dist/tool-output-watchers.d.ts +2 -0
  197. package/dist/tool-output-watchers.js +123 -12
  198. package/dist/tool-output-watchers.js.map +1 -1
  199. package/dist/tui/screens/dashboard-renderers.d.ts +2 -21
  200. package/dist/tui/screens/dashboard-renderers.js +126 -32
  201. package/dist/tui/screens/dashboard-renderers.js.map +1 -1
  202. package/dist/tui/screens/overlay-renderers.d.ts +11 -1
  203. package/dist/tui/screens/overlay-renderers.js +68 -28
  204. package/dist/tui/screens/overlay-renderers.js.map +1 -1
  205. package/dist/tui/screens/subscreen-renderers.js +156 -33
  206. package/dist/tui/screens/subscreen-renderers.js.map +1 -1
  207. package/dist/workflow.js +2 -2
  208. package/dist/workflow.js.map +1 -1
  209. package/dist/worktree.d.ts +3 -0
  210. package/dist/worktree.js +27 -2
  211. package/dist/worktree.js.map +1 -1
  212. package/package.json +5 -1
@@ -25,78 +25,48 @@ export function derivedStatusLabel(session) {
25
25
  if (session.semantic) {
26
26
  return sessionSemanticStatusLabel(session.semantic, session.status);
27
27
  }
28
- if (session.attention === "error")
29
- return "error";
30
- if (session.attention === "needs_input")
31
- return "needs input";
32
- if (session.attention === "blocked")
33
- return "blocked";
34
- if (session.activity === "done")
35
- return "done";
36
- if (session.activity === "waiting")
37
- return "waiting";
38
- if (session.activity === "running")
39
- return "working";
40
- if (session.activity === "interrupted")
41
- return "interrupted";
42
- if (session.activity === "error")
43
- return "error";
44
28
  return STATUS_LABELS[session.status];
45
29
  }
46
30
  export class Dashboard {
47
- sessions = [];
48
- services = [];
49
- worktreeGroups = [];
50
- hasWorktrees = false;
51
- focusedWorktreePath = undefined;
52
- navLevel = "sessions";
53
- selectedSessionId = undefined;
54
- selectedServiceId = undefined;
31
+ viewModel = {
32
+ sessions: [],
33
+ services: [],
34
+ worktreeGroups: [],
35
+ hasWorktrees: false,
36
+ focusedWorktreePath: undefined,
37
+ navLevel: "sessions",
38
+ selectedSessionId: undefined,
39
+ selectedServiceId: undefined,
40
+ runtimeLabel: undefined,
41
+ mainCheckout: { name: "Main Checkout", branch: "" },
42
+ worktreeRemoval: undefined,
43
+ operationFailures: [],
44
+ detailsPaneVisible: true,
45
+ scrollOffset: 0,
46
+ derivedStatusLabel,
47
+ };
55
48
  scrollOffset = 0;
56
- runtimeLabel = undefined;
57
- mainCheckout = { name: "Main Checkout", branch: "" };
58
49
  detailsPaneVisible = true;
59
- worktreeRemoval = undefined;
60
- update(sessions, services, worktreeGroups, focusedWorktreePath, navLevel, selectedSessionId, selectedServiceId, runtimeLabel, mainCheckout, worktreeRemoval) {
61
- this.sessions = sessions;
62
- this.services = services;
63
- this.worktreeGroups = worktreeGroups ?? [];
64
- this.hasWorktrees =
65
- this.worktreeGroups.length > 0 || sessions.some((s) => s.worktreePath) || services.some((s) => s.worktreePath);
66
- this.focusedWorktreePath = focusedWorktreePath;
67
- this.navLevel = navLevel ?? "sessions";
68
- this.selectedSessionId = selectedSessionId;
69
- this.selectedServiceId = selectedServiceId;
70
- this.runtimeLabel = runtimeLabel;
71
- this.mainCheckout = mainCheckout ?? { name: "Main Checkout", branch: "" };
72
- this.worktreeRemoval = worktreeRemoval;
50
+ update(viewModel) {
51
+ this.viewModel = {
52
+ ...viewModel,
53
+ detailsPaneVisible: this.detailsPaneVisible,
54
+ scrollOffset: this.scrollOffset,
55
+ };
73
56
  }
74
57
  /** Scroll the viewport (called from multiplexer key handler) */
75
58
  scroll(delta) {
76
59
  this.scrollOffset = Math.max(0, this.scrollOffset + delta);
77
60
  }
78
61
  render(cols, rows) {
79
- const { frame, scrollOffset } = renderDashboardFrame({
80
- sessions: this.sessions,
81
- services: this.services,
82
- worktreeGroups: this.worktreeGroups,
83
- hasWorktrees: this.hasWorktrees,
84
- focusedWorktreePath: this.focusedWorktreePath,
85
- navLevel: this.navLevel,
86
- selectedSessionId: this.selectedSessionId,
87
- selectedServiceId: this.selectedServiceId,
88
- runtimeLabel: this.runtimeLabel,
89
- mainCheckout: this.mainCheckout,
90
- worktreeRemoval: this.worktreeRemoval,
91
- detailsPaneVisible: this.detailsPaneVisible,
92
- scrollOffset: this.scrollOffset,
93
- derivedStatusLabel,
94
- }, cols, rows);
62
+ const { frame, scrollOffset } = renderDashboardFrame(this.viewModel, cols, rows);
95
63
  this.scrollOffset = scrollOffset;
64
+ this.viewModel.scrollOffset = scrollOffset;
96
65
  return frame;
97
66
  }
98
67
  toggleDetailsPane() {
99
68
  this.detailsPaneVisible = !this.detailsPaneVisible;
69
+ this.viewModel.detailsPaneVisible = this.detailsPaneVisible;
100
70
  }
101
71
  }
102
72
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/dashboard/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/dashboard/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AA6I7E,MAAM,aAAa,GAA2C;IAC5D,OAAO,EAAE,SAAS;IAClB,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,UAAU;IACnB,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,SAAS;CACnB,CAAC;AAEF,MAAM,UAAU,kBAAkB,CAAC,OAAyB;IAC1D,IAAI,OAAO,CAAC,aAAa,KAAK,UAAU;QAAE,OAAO,UAAU,CAAC;IAC5D,IAAI,OAAO,CAAC,aAAa,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1D,IAAI,OAAO,CAAC,aAAa,KAAK,WAAW;QAAE,OAAO,WAAW,CAAC;IAC9D,IAAI,OAAO,CAAC,aAAa,KAAK,UAAU;QAAE,OAAO,UAAU,CAAC;IAC5D,IAAI,OAAO,CAAC,aAAa,KAAK,UAAU;QAAE,OAAO,UAAU,CAAC;IAC5D,IAAI,OAAO,CAAC,aAAa,KAAK,cAAc;QAAE,OAAO,cAAc,CAAC;IACpE,IAAI,OAAO,CAAC,aAAa,KAAK,UAAU;QAAE,OAAO,UAAU,CAAC;IAC5D,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrB,OAAO,0BAA0B,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACtE,CAAC;IACD,OAAO,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,OAAO,SAAS;IACZ,SAAS,GAAuB;QACtC,QAAQ,EAAE,EAAE;QACZ,QAAQ,EAAE,EAAE;QACZ,cAAc,EAAE,EAAE;QAClB,YAAY,EAAE,KAAK;QACnB,mBAAmB,EAAE,SAAS;QAC9B,QAAQ,EAAE,UAAU;QACpB,iBAAiB,EAAE,SAAS;QAC5B,iBAAiB,EAAE,SAAS;QAC5B,YAAY,EAAE,SAAS;QACvB,YAAY,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,EAAE,EAAE;QACnD,eAAe,EAAE,SAAS;QAC1B,iBAAiB,EAAE,EAAE;QACrB,kBAAkB,EAAE,IAAI;QACxB,YAAY,EAAE,CAAC;QACf,kBAAkB;KACnB,CAAC;IACM,YAAY,GAAG,CAAC,CAAC;IACjB,kBAAkB,GAAG,IAAI,CAAC;IAElC,MAAM,CAAC,SAA0E;QAC/E,IAAI,CAAC,SAAS,GAAG;YACf,GAAG,SAAS;YACZ,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;YAC3C,YAAY,EAAE,IAAI,CAAC,YAAY;SAChC,CAAC;IACJ,CAAC;IAED,gEAAgE;IAChE,MAAM,CAAC,KAAa;QAClB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,CAAC,IAAY,EAAE,IAAY;QAC/B,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,oBAAoB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACjF,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,YAAY,CAAC;QAC3C,OAAO,KAAK,CAAC;IACf,CAAC;IAED,iBAAiB;QACf,IAAI,CAAC,kBAAkB,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC;QACnD,IAAI,CAAC,SAAS,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC;IAC9D,CAAC;CACF"}
@@ -0,0 +1,30 @@
1
+ export type DashboardOperationTargetKind = "worktree" | "agent" | "service" | "dashboard";
2
+ export interface DashboardOperationFailure {
3
+ id: string;
4
+ targetKind: DashboardOperationTargetKind;
5
+ operation: string;
6
+ title: string;
7
+ message: string;
8
+ createdAt: string;
9
+ targetId?: string;
10
+ worktreePath?: string;
11
+ worktreeName?: string;
12
+ cleared?: boolean;
13
+ }
14
+ export declare function listDashboardOperationFailures(): DashboardOperationFailure[];
15
+ export declare function addDashboardOperationFailure(input: {
16
+ targetKind: DashboardOperationTargetKind;
17
+ operation: string;
18
+ title: string;
19
+ message: string;
20
+ targetId?: string;
21
+ worktreePath?: string;
22
+ worktreeName?: string;
23
+ createdAt?: string;
24
+ }): DashboardOperationFailure;
25
+ export declare function clearDashboardOperationFailures(match: {
26
+ targetKind?: DashboardOperationTargetKind;
27
+ operation?: string;
28
+ targetId?: string;
29
+ worktreePath?: string;
30
+ }): number;
@@ -0,0 +1,86 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import { existsSync, readFileSync } from "node:fs";
3
+ import { writeJsonAtomic } from "../atomic-write.js";
4
+ import { getDashboardOperationFailuresPath } from "../paths.js";
5
+ const MAX_FAILURES = 100;
6
+ const ACTIVE_FAILURE_MAX_AGE_MS = 24 * 60 * 60 * 1000;
7
+ function loadState() {
8
+ const path = getDashboardOperationFailuresPath();
9
+ if (!existsSync(path))
10
+ return { version: 1, failures: [] };
11
+ try {
12
+ const parsed = JSON.parse(readFileSync(path, "utf8"));
13
+ if (parsed.version !== 1 || !Array.isArray(parsed.failures)) {
14
+ return { version: 1, failures: [] };
15
+ }
16
+ return parsed;
17
+ }
18
+ catch {
19
+ return { version: 1, failures: [] };
20
+ }
21
+ }
22
+ function saveState(state) {
23
+ writeJsonAtomic(getDashboardOperationFailuresPath(), {
24
+ version: 1,
25
+ failures: state.failures.slice(0, MAX_FAILURES),
26
+ });
27
+ }
28
+ function isActiveFailure(failure, now = Date.now()) {
29
+ if (failure.cleared)
30
+ return false;
31
+ const createdAt = Date.parse(failure.createdAt);
32
+ if (!Number.isFinite(createdAt))
33
+ return true;
34
+ return now - createdAt < ACTIVE_FAILURE_MAX_AGE_MS;
35
+ }
36
+ export function listDashboardOperationFailures() {
37
+ const now = Date.now();
38
+ return loadState().failures.filter((failure) => isActiveFailure(failure, now));
39
+ }
40
+ export function addDashboardOperationFailure(input) {
41
+ const now = input.createdAt ?? new Date().toISOString();
42
+ const state = loadState();
43
+ const failure = {
44
+ id: randomUUID(),
45
+ targetKind: input.targetKind,
46
+ operation: input.operation,
47
+ title: input.title.trim() || "Operation failed",
48
+ message: input.message.trim() || "Unknown error",
49
+ targetId: input.targetId?.trim() || undefined,
50
+ worktreePath: input.worktreePath?.trim() || undefined,
51
+ worktreeName: input.worktreeName?.trim() || undefined,
52
+ createdAt: now,
53
+ };
54
+ state.failures = [
55
+ failure,
56
+ ...state.failures.filter((existing) => !(!existing.cleared &&
57
+ existing.targetKind === failure.targetKind &&
58
+ existing.operation === failure.operation &&
59
+ existing.targetId === failure.targetId &&
60
+ existing.worktreePath === failure.worktreePath)),
61
+ ];
62
+ saveState(state);
63
+ return failure;
64
+ }
65
+ export function clearDashboardOperationFailures(match) {
66
+ const state = loadState();
67
+ let changed = 0;
68
+ state.failures = state.failures.map((failure) => {
69
+ if (failure.cleared)
70
+ return failure;
71
+ if (match.targetKind && failure.targetKind !== match.targetKind)
72
+ return failure;
73
+ if (match.operation && failure.operation !== match.operation)
74
+ return failure;
75
+ if (match.targetId && failure.targetId !== match.targetId)
76
+ return failure;
77
+ if (match.worktreePath && failure.worktreePath !== match.worktreePath)
78
+ return failure;
79
+ changed += 1;
80
+ return { ...failure, cleared: true };
81
+ });
82
+ if (changed > 0)
83
+ saveState(state);
84
+ return changed;
85
+ }
86
+ //# sourceMappingURL=operation-failures.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operation-failures.js","sourceRoot":"","sources":["../../src/dashboard/operation-failures.ts"],"names":[],"mappings":"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"}
@@ -3,15 +3,22 @@ export type PendingDashboardActionKind = "creating" | "forking" | "migrating" |
3
3
  export declare class DashboardPendingActions {
4
4
  private readonly onChange;
5
5
  private actions;
6
+ private version;
6
7
  constructor(onChange: () => void);
7
- static worktreeKey(path: string): string;
8
+ static worktreeKey(path?: string): string;
8
9
  set(sessionId: string, kind: PendingDashboardActionKind | null, opts?: {
9
10
  timeoutMs?: number;
10
11
  onTimeout?: () => void;
12
+ sessionSeed?: DashboardSession;
13
+ serviceSeed?: DashboardService;
11
14
  }): void;
12
15
  get(sessionId: string): PendingDashboardActionKind | undefined;
16
+ getVersion(): number;
13
17
  applyToSessions(sessions: DashboardSession[]): DashboardSession[];
14
18
  applyToServices(services: DashboardService[]): DashboardService[];
15
19
  applyToWorktrees(worktrees: WorktreeGroup[]): WorktreeGroup[];
16
- settleCreatePending(itemId: string, onSettled: () => void): void;
20
+ settleCreatePending(itemId: string, onSettled: () => void, opts?: {
21
+ isSettled?: () => boolean | Promise<boolean>;
22
+ timeoutMs?: number;
23
+ }): void;
17
24
  }
@@ -1,14 +1,22 @@
1
+ function canSynthesizeMissingSession(kind) {
2
+ return (kind === "creating" || kind === "forking" || kind === "migrating" || kind === "starting" || kind === "stopping");
3
+ }
4
+ function canSynthesizeMissingService(kind) {
5
+ return kind === "creating" || kind === "starting" || kind === "stopping";
6
+ }
1
7
  export class DashboardPendingActions {
2
8
  onChange;
3
9
  actions = new Map();
10
+ version = 0;
4
11
  constructor(onChange) {
5
12
  this.onChange = onChange;
6
13
  }
7
14
  static worktreeKey(path) {
8
- return `worktree:${path}`;
15
+ return `worktree:${path ?? "__main__"}`;
9
16
  }
10
17
  set(sessionId, kind, opts) {
11
18
  const existing = this.actions.get(sessionId);
19
+ const previousKind = existing?.kind;
12
20
  if (existing?.timeoutId) {
13
21
  clearTimeout(existing.timeoutId);
14
22
  }
@@ -24,20 +32,28 @@ export class DashboardPendingActions {
24
32
  this.onChange();
25
33
  }, opts.timeoutMs);
26
34
  }
27
- this.actions.set(sessionId, { kind, timeoutId });
35
+ this.actions.set(sessionId, { kind, timeoutId, sessionSeed: opts?.sessionSeed, serviceSeed: opts?.serviceSeed });
28
36
  }
29
37
  else {
30
38
  this.actions.delete(sessionId);
31
39
  }
40
+ if (previousKind !== kind) {
41
+ this.version += 1;
42
+ }
32
43
  this.onChange();
33
44
  }
34
45
  get(sessionId) {
35
46
  return this.actions.get(sessionId)?.kind;
36
47
  }
48
+ getVersion() {
49
+ return this.version;
50
+ }
37
51
  applyToSessions(sessions) {
38
52
  if (this.actions.size === 0)
39
53
  return sessions;
40
- return sessions.map((session) => {
54
+ const seen = new Set();
55
+ const applied = sessions.map((session) => {
56
+ seen.add(session.id);
41
57
  const pendingAction = this.actions.get(session.id)?.kind;
42
58
  if (pendingAction === "removing")
43
59
  return session;
@@ -45,11 +61,28 @@ export class DashboardPendingActions {
45
61
  return session;
46
62
  return { ...session, pendingAction, optimistic: true };
47
63
  });
64
+ for (const [sessionId, entry] of this.actions.entries()) {
65
+ if (seen.has(sessionId))
66
+ continue;
67
+ if (!entry.sessionSeed)
68
+ continue;
69
+ if (!canSynthesizeMissingSession(entry.kind))
70
+ continue;
71
+ applied.push({
72
+ ...entry.sessionSeed,
73
+ id: sessionId,
74
+ pendingAction: entry.kind,
75
+ optimistic: true,
76
+ });
77
+ }
78
+ return applied;
48
79
  }
49
80
  applyToServices(services) {
50
81
  if (this.actions.size === 0)
51
82
  return services;
52
- return services.map((service) => {
83
+ const seen = new Set();
84
+ const applied = services.map((service) => {
85
+ seen.add(service.id);
53
86
  const pendingAction = this.actions.get(service.id)?.kind;
54
87
  if (pendingAction === "removing")
55
88
  return service;
@@ -57,6 +90,21 @@ export class DashboardPendingActions {
57
90
  return service;
58
91
  return { ...service, pendingAction, optimistic: true };
59
92
  });
93
+ for (const [serviceId, entry] of this.actions.entries()) {
94
+ if (seen.has(serviceId))
95
+ continue;
96
+ if (!entry.serviceSeed)
97
+ continue;
98
+ if (!canSynthesizeMissingService(entry.kind))
99
+ continue;
100
+ applied.push({
101
+ ...entry.serviceSeed,
102
+ id: serviceId,
103
+ pendingAction: entry.kind,
104
+ optimistic: true,
105
+ });
106
+ }
107
+ return applied;
60
108
  }
61
109
  applyToWorktrees(worktrees) {
62
110
  if (this.actions.size === 0)
@@ -68,20 +116,31 @@ export class DashboardPendingActions {
68
116
  return {
69
117
  ...worktree,
70
118
  pending: true,
71
- removing: pendingAction === "removing",
72
- pendingAction: pendingAction === "removing" || pendingAction === "creating" ? pendingAction : undefined,
119
+ removing: pendingAction === "removing" || pendingAction === "graveyarding",
120
+ pendingAction: pendingAction === "removing" || pendingAction === "creating" || pendingAction === "graveyarding"
121
+ ? pendingAction
122
+ : undefined,
73
123
  optimistic: true,
74
124
  };
75
125
  });
76
126
  }
77
- settleCreatePending(itemId, onSettled) {
127
+ settleCreatePending(itemId, onSettled, opts) {
78
128
  const minVisibleMs = 250;
129
+ const timeoutMs = opts?.timeoutMs ?? 10_000;
79
130
  const startedAt = Date.now();
80
131
  void (async () => {
81
132
  const remaining = minVisibleMs - (Date.now() - startedAt);
82
133
  if (remaining > 0) {
83
134
  await new Promise((resolve) => setTimeout(resolve, remaining));
84
135
  }
136
+ if (opts?.isSettled) {
137
+ const deadline = Date.now() + timeoutMs;
138
+ while (Date.now() < deadline) {
139
+ if (await opts.isSettled())
140
+ break;
141
+ await new Promise((resolve) => setTimeout(resolve, 100));
142
+ }
143
+ }
85
144
  this.set(itemId, null);
86
145
  onSettled();
87
146
  })();
@@ -1 +1 @@
1
- {"version":3,"file":"pending-actions.js","sourceRoot":"","sources":["../../src/dashboard/pending-actions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pending-actions.js","sourceRoot":"","sources":["../../src/dashboard/pending-actions.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { DashboardService, DashboardSession, MainCheckoutInfo, WorktreeGroup } from "./index.js";
2
+ import type { DashboardOperationFailure } from "./operation-failures.js";
2
3
  export declare const DASHBOARD_QUICK_JUMP_TIMEOUT_MS = 1000;
3
4
  export declare const DASHBOARD_QUICK_JUMP_LIMIT = 9;
4
5
  export interface DashboardQuickJumpEntry {
@@ -13,7 +14,8 @@ export interface DashboardQuickJumpWorktree {
13
14
  branch: string;
14
15
  pending?: boolean;
15
16
  removing?: boolean;
16
- pendingAction?: "creating" | "removing";
17
+ pendingAction?: "creating" | "removing" | "graveyarding";
18
+ operationFailure?: DashboardOperationFailure;
17
19
  sessions: DashboardSession[];
18
20
  services: DashboardService[];
19
21
  entries: DashboardQuickJumpEntry[];
@@ -59,15 +59,33 @@ export function buildDashboardQuickJumpWorktrees(input) {
59
59
  entries: buildEntryList(worktree.sessions, worktree.services),
60
60
  });
61
61
  };
62
- pushWorktree({
63
- path: undefined,
64
- name: input.mainCheckout.name,
65
- branch: input.mainCheckout.branch,
66
- sessions: sortDashboardEntriesByCreatedAt(mainSessions),
67
- services: sortDashboardEntriesByCreatedAt(mainServices),
68
- });
69
62
  const renderedPaths = new Set();
70
- const orderedGroups = [...input.worktreeGroups].sort((a, b) => dashboardCreatedSortKey(b) - dashboardCreatedSortKey(a));
63
+ const mainGroup = input.worktreeGroups.find((group) => group.path === undefined);
64
+ if (mainGroup) {
65
+ pushWorktree({
66
+ path: undefined,
67
+ name: mainGroup.name,
68
+ branch: mainGroup.branch,
69
+ pending: mainGroup.pending,
70
+ removing: mainGroup.removing,
71
+ pendingAction: mainGroup.pendingAction,
72
+ operationFailure: mainGroup.operationFailure,
73
+ sessions: sortDashboardEntriesByCreatedAt(mainSessions),
74
+ services: sortDashboardEntriesByCreatedAt(mainServices),
75
+ });
76
+ }
77
+ else {
78
+ pushWorktree({
79
+ path: undefined,
80
+ name: input.mainCheckout.name,
81
+ branch: input.mainCheckout.branch,
82
+ sessions: sortDashboardEntriesByCreatedAt(mainSessions),
83
+ services: sortDashboardEntriesByCreatedAt(mainServices),
84
+ });
85
+ }
86
+ const orderedGroups = [...input.worktreeGroups]
87
+ .filter((group) => group.path !== undefined)
88
+ .sort((a, b) => dashboardCreatedSortKey(b) - dashboardCreatedSortKey(a));
71
89
  for (const group of orderedGroups) {
72
90
  pushWorktree({
73
91
  path: group.path,
@@ -76,6 +94,7 @@ export function buildDashboardQuickJumpWorktrees(input) {
76
94
  pending: group.pending,
77
95
  removing: group.removing,
78
96
  pendingAction: group.pendingAction,
97
+ operationFailure: group.operationFailure,
79
98
  sessions: wtSessionMap.get(group.path) ?? [],
80
99
  services: wtServiceMap.get(group.path) ?? [],
81
100
  });
@@ -1 +1 @@
1
- {"version":3,"file":"quick-jump.js","sourceRoot":"","sources":["../../src/dashboard/quick-jump.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,uBAAuB,EAAE,+BAA+B,EAAE,MAAM,WAAW,CAAC;AAErF,MAAM,CAAC,MAAM,+BAA+B,GAAG,iBAAiB,CAAC;AACjE,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC;AAyB5C,SAAS,cAAc,CAAC,QAA4B,EAAE,QAA4B;IAChF,MAAM,OAAO,GAA8B,EAAE,CAAC;IAC9C,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,OAAO,CAAC,IAAI,CAAC;YACX,KAAK,EAAE,OAAO,CAAC,MAAM,GAAG,0BAA0B,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;YACnF,IAAI,EAAE,SAAS;YACf,EAAE,EAAE,OAAO,CAAC,EAAE;SACf,CAAC,CAAC;IACL,CAAC;IACD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,OAAO,CAAC,IAAI,CAAC;YACX,KAAK,EAAE,OAAO,CAAC,MAAM,GAAG,0BAA0B,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;YACnF,IAAI,EAAE,SAAS;YACf,EAAE,EAAE,OAAO,CAAC,EAAE;SACf,CAAC,CAAC;IACL,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,gCAAgC,CAAC,KAKhD;IACC,MAAM,YAAY,GAAG,IAAI,GAAG,EAA8B,CAAC;IAC3D,MAAM,YAAY,GAAG,IAAI,GAAG,EAA8B,CAAC;IAC3D,MAAM,YAAY,GAAuB,EAAE,CAAC;IAC5C,MAAM,YAAY,GAAuB,EAAE,CAAC;IAE5C,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QACrC,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;YAC1B,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC7B,CAAC;aAAM,CAAC;YACN,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;YAC3D,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACpB,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IAED,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QACrC,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;YAC1B,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC7B,CAAC;aAAM,CAAC;YACN,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;YAC3D,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACpB,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IAED,KAAK,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,YAAY,EAAE,CAAC;QAC5C,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,+BAA+B,CAAC,QAAQ,CAAC,CAAC,CAAC;IACpE,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,YAAY,EAAE,CAAC;QAC5C,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,+BAA+B,CAAC,QAAQ,CAAC,CAAC,CAAC;IACpE,CAAC;IAED,MAAM,SAAS,GAAiC,EAAE,CAAC;IACnD,MAAM,YAAY,GAAG,CAAC,QAA+D,EAAQ,EAAE;QAC7F,SAAS,CAAC,IAAI,CAAC;YACb,GAAG,QAAQ;YACX,KAAK,EAAE,SAAS,CAAC,MAAM,GAAG,0BAA0B,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;YACvF,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC;SAC9D,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,YAAY,CAAC;QACX,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,KAAK,CAAC,YAAY,CAAC,IAAI;QAC7B,MAAM,EAAE,KAAK,CAAC,YAAY,CAAC,MAAM;QACjC,QAAQ,EAAE,+BAA+B,CAAC,YAAY,CAAC;QACvD,QAAQ,EAAE,+BAA+B,CAAC,YAAY,CAAC;KACxD,CAAC,CAAC;IAEH,MAAM,aAAa,GAAG,IAAI,GAAG,EAAU,CAAC;IACxC,MAAM,aAAa,GAAG,CAAC,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC,IAAI,CAClD,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,uBAAuB,CAAC,CAAC,CAAC,GAAG,uBAAuB,CAAC,CAAC,CAAC,CAClE,CAAC;IACF,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE,CAAC;QAClC,YAAY,CAAC;YACX,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,aAAa,EAAE,KAAK,CAAC,aAAa;YAClC,QAAQ,EAAE,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE;YAC5C,QAAQ,EAAE,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE;SAC7C,CAAC,CAAC;QACH,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,GAAG,CAAS,CAAC,GAAG,YAAY,CAAC,IAAI,EAAE,EAAE,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACtF,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QAC/B,IAAI,CAAC,IAAI,IAAI,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,SAAS;QAC/C,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAC9C,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAC9C,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC5C,YAAY,CAAC;YACX,IAAI;YACJ,IAAI,EAAE,QAAQ,EAAE,YAAY,IAAI,SAAS;YACzC,MAAM,EAAE,QAAQ,EAAE,cAAc,IAAI,SAAS;YAC7C,QAAQ;YACR,QAAQ;SACT,CAAC,CAAC;IACL,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,+BAA+B,CAC7C,SAAuC,EACvC,MAAc;IAEd,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAC9C,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IAC3D,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,aAAa,GAAG,CAAC,IAAI,aAAa,GAAG,0BAA0B,EAAE,CAAC;QACvG,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,aAAa,CAAC,CAAC;IAC1E,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC3B,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;IACxC,CAAC;IACD,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IACxD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,UAAU,GAAG,CAAC,IAAI,UAAU,GAAG,0BAA0B,EAAE,CAAC;QAC9F,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;IACxC,CAAC;IACD,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,UAAU,CAAC,CAAC;IACrF,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;QACnB,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;IACxC,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,UAAU,EAAE,CAAC;AACtF,CAAC"}
1
+ {"version":3,"file":"quick-jump.js","sourceRoot":"","sources":["../../src/dashboard/quick-jump.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export declare function hasRuntimeEvidence(entry: any | undefined): boolean;
2
+ export declare function hasAttachableRuntimeTarget(entry: any | undefined): boolean;
3
+ export declare function isAttachableDashboardSessionEntry(entry: any | undefined): boolean;
4
+ export declare function isLiveDashboardServiceRuntimeEntry(entry: any | undefined): boolean;
@@ -0,0 +1,22 @@
1
+ export function hasRuntimeEvidence(entry) {
2
+ if (!entry)
3
+ return false;
4
+ return (typeof entry.pid === "number" ||
5
+ Boolean(entry.foregroundCommand) ||
6
+ Boolean(entry.previewLine) ||
7
+ Boolean(entry.tmuxWindowId));
8
+ }
9
+ export function hasAttachableRuntimeTarget(entry) {
10
+ return Boolean(entry?.tmuxWindowId);
11
+ }
12
+ export function isAttachableDashboardSessionEntry(entry) {
13
+ return hasAttachableRuntimeTarget(entry);
14
+ }
15
+ export function isLiveDashboardServiceRuntimeEntry(entry) {
16
+ if (!entry)
17
+ return false;
18
+ if (entry.status === "running" && entry.pendingAction !== "starting")
19
+ return true;
20
+ return hasRuntimeEvidence(entry);
21
+ }
22
+ //# sourceMappingURL=runtime-evidence.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-evidence.js","sourceRoot":"","sources":["../../src/dashboard/runtime-evidence.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,kBAAkB,CAAC,KAAsB;IACvD,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IACzB,OAAO,CACL,OAAO,KAAK,CAAC,GAAG,KAAK,QAAQ;QAC7B,OAAO,CAAC,KAAK,CAAC,iBAAiB,CAAC;QAChC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC;QAC1B,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAC5B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,KAAsB;IAC/D,OAAO,OAAO,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,iCAAiC,CAAC,KAAsB;IACtE,OAAO,0BAA0B,CAAC,KAAK,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,kCAAkC,CAAC,KAAsB;IACvE,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IACzB,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,IAAI,KAAK,CAAC,aAAa,KAAK,UAAU;QAAE,OAAO,IAAI,CAAC;IAClF,OAAO,kBAAkB,CAAC,KAAK,CAAC,CAAC;AACnC,CAAC"}
@@ -12,7 +12,7 @@ interface DashboardActionDeps {
12
12
  stopSessionToOffline(session: SessionRuntime): void;
13
13
  isGraveyardAfterStop(sessionId: string): boolean;
14
14
  sendAgentToGraveyard(sessionId: string): Promise<void>;
15
- resumeOfflineSession(session: DashboardOfflineEntryLike): void;
15
+ resumeOfflineSession(session: DashboardOfflineEntryLike): void | Promise<void>;
16
16
  refreshLocalDashboardModel(): void;
17
17
  adjustAfterRemove(hasWorktrees: boolean): void;
18
18
  renderDashboard(): void;
@@ -65,8 +65,9 @@ export async function resumeOfflineSessionWithFeedback(deps, session) {
65
65
  }
66
66
  deps.setPendingAction(session.id, "starting");
67
67
  deps.setFooterFlash(`Restoring ${label}`, 3);
68
+ deps.renderDashboard();
68
69
  try {
69
- deps.resumeOfflineSession(session);
70
+ await deps.resumeOfflineSession(session);
70
71
  const started = await waitForSessionStart(session.id, deps);
71
72
  deps.setPendingAction(session.id, null);
72
73
  deps.refreshLocalDashboardModel();
@@ -75,6 +76,7 @@ export async function resumeOfflineSessionWithFeedback(deps, session) {
75
76
  }
76
77
  catch {
77
78
  deps.setPendingAction(session.id, null);
79
+ deps.refreshLocalDashboardModel();
78
80
  deps.setFooterFlash(`Failed to restore ${label}`, 4);
79
81
  deps.renderDashboard();
80
82
  }
@@ -1 +1 @@
1
- {"version":3,"file":"session-actions.js","sourceRoot":"","sources":["../../src/dashboard/session-actions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-actions.js","sourceRoot":"","sources":["../../src/dashboard/session-actions.ts"],"names":[],"mappings":"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"}
@@ -15,6 +15,7 @@ export interface DashboardSessionRegistryOptions {
15
15
  activeIndex: number;
16
16
  offlineSessions: SessionState[];
17
17
  remoteInstances: InstanceInfo[];
18
+ hiddenWorktreePaths?: Set<string>;
18
19
  mainRepoPath?: string;
19
20
  getSessionLabel: (sessionId: string) => string | undefined;
20
21
  getSessionHeadline: (sessionId: string) => string | undefined;