aimux-cli 0.1.13 → 0.1.14

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
@@ -0,0 +1,256 @@
1
+ import { execFile } from "node:child_process";
2
+ import { existsSync, mkdirSync, readFileSync } from "node:fs";
3
+ import { basename, join, resolve } from "node:path";
4
+ import { getProjectStateDirFor } from "../paths.js";
5
+ import { writeJsonAtomic } from "../atomic-write.js";
6
+ const POLL_INTERVAL_MS = 60_000;
7
+ const PR_CACHE_TTL_MS = 5 * 60_000;
8
+ const PR_CACHE_PENDING_TTL_MS = 20_000;
9
+ const COMMAND_TIMEOUT_MS = 5_000;
10
+ const FILE_CACHE_TTL_MS = 5_000;
11
+ function readJson(path) {
12
+ if (!existsSync(path))
13
+ return null;
14
+ try {
15
+ return JSON.parse(readFileSync(path, "utf-8"));
16
+ }
17
+ catch {
18
+ return null;
19
+ }
20
+ }
21
+ function execFileText(command, args, options = {}) {
22
+ return new Promise((resolvePromise) => {
23
+ execFile(command, args, { encoding: "utf-8", timeout: COMMAND_TIMEOUT_MS, ...options }, (error, stdout) => {
24
+ if (error) {
25
+ resolvePromise({ ok: false, stdout: "" });
26
+ return;
27
+ }
28
+ resolvePromise({ ok: true, stdout: stdout ?? "" });
29
+ });
30
+ });
31
+ }
32
+ function parseGithubRemote(remote) {
33
+ if (!remote)
34
+ return null;
35
+ const match = remote.match(/github\.com[:/]([^/]+)\/(.+?)(?:\.git)?$/);
36
+ if (!match)
37
+ return { remote };
38
+ return {
39
+ owner: match[1],
40
+ name: match[2].replace(/\.git$/, ""),
41
+ remote,
42
+ };
43
+ }
44
+ async function resolveGitContext(worktreePath) {
45
+ const cwd = resolve(worktreePath);
46
+ const [repoRootResult, branchResult, remoteResult] = await Promise.all([
47
+ execFileText("git", ["rev-parse", "--show-toplevel"], { cwd }),
48
+ execFileText("git", ["branch", "--show-current"], { cwd }),
49
+ execFileText("git", ["remote", "get-url", "origin"], { cwd }),
50
+ ]);
51
+ if (!repoRootResult.ok)
52
+ return null;
53
+ const repoRoot = repoRootResult.stdout.trim();
54
+ const branch = branchResult.ok ? branchResult.stdout.trim() || undefined : undefined;
55
+ const remote = remoteResult.ok ? remoteResult.stdout.trim() || undefined : undefined;
56
+ const repo = parseGithubRemote(remote);
57
+ return {
58
+ cwd,
59
+ worktreePath: cwd,
60
+ worktreeName: basename(cwd),
61
+ branch,
62
+ repo: repo ?? undefined,
63
+ pr: undefined,
64
+ // repoRoot is only used for cache key and not stored in metadata.
65
+ ...(repoRoot ? { __repoRoot: repoRoot } : {}),
66
+ };
67
+ }
68
+ async function resolveBranchPr(cwd, repo, branch) {
69
+ if (!repo?.owner || !repo?.name || !branch)
70
+ return null;
71
+ const result = await execFileText("gh", [
72
+ "pr",
73
+ "list",
74
+ "--repo",
75
+ `${repo.owner}/${repo.name}`,
76
+ "--state",
77
+ "open",
78
+ "--head",
79
+ branch,
80
+ "--json",
81
+ "number,title,url,headRefName,baseRefName",
82
+ "--limit",
83
+ "1",
84
+ ], { cwd });
85
+ if (!result.ok)
86
+ return null;
87
+ try {
88
+ const parsed = JSON.parse(result.stdout);
89
+ const first = Array.isArray(parsed) ? parsed[0] : null;
90
+ if (!first)
91
+ return null;
92
+ return {
93
+ number: first.number,
94
+ title: first.title,
95
+ url: first.url,
96
+ headRef: first.headRefName,
97
+ baseRef: first.baseRefName,
98
+ };
99
+ }
100
+ catch {
101
+ return null;
102
+ }
103
+ }
104
+ function stableSerialize(value) {
105
+ return JSON.stringify(value ?? null);
106
+ }
107
+ export function collectGithubPrTargets(statusline, state, metadata) {
108
+ const targets = new Map();
109
+ for (const session of statusline?.sessions ?? []) {
110
+ const existingContext = metadata?.sessions?.[session.id]?.context ?? {};
111
+ targets.set(session.id, {
112
+ id: session.id,
113
+ worktreePath: session.worktreePath ?? existingContext.worktreePath ?? existingContext.cwd,
114
+ });
115
+ }
116
+ for (const session of state?.sessions ?? []) {
117
+ if (!targets.has(session.id)) {
118
+ const existingContext = metadata?.sessions?.[session.id]?.context ?? {};
119
+ targets.set(session.id, {
120
+ id: session.id,
121
+ worktreePath: session.worktreePath ?? existingContext.worktreePath ?? existingContext.cwd,
122
+ });
123
+ }
124
+ }
125
+ for (const service of state?.services ?? []) {
126
+ if (!targets.has(service.id)) {
127
+ targets.set(service.id, {
128
+ id: service.id,
129
+ worktreePath: service.worktreePath,
130
+ });
131
+ }
132
+ }
133
+ return [...targets.values()].filter((target) => Boolean(target.worktreePath));
134
+ }
135
+ export function createGithubPrContextPlugin(api) {
136
+ const projectStateDir = getProjectStateDirFor(api.projectRoot);
137
+ const statuslinePath = join(projectStateDir, "statusline.json");
138
+ const statePath = join(projectStateDir, "state.json");
139
+ const metadataPath = join(projectStateDir, "metadata.json");
140
+ const prCachePath = join(projectStateDir, "plugin-cache", "gh-pr-context.json");
141
+ const prCache = new Map();
142
+ const contextCache = new Map();
143
+ const fileCache = new Map();
144
+ let timer = null;
145
+ let running = false;
146
+ function loadCachedJson(path) {
147
+ const now = Date.now();
148
+ const cached = fileCache.get(path);
149
+ if (cached && cached.expiresAt > now) {
150
+ return cached.value;
151
+ }
152
+ const value = readJson(path);
153
+ fileCache.set(path, { value, expiresAt: now + FILE_CACHE_TTL_MS });
154
+ return value;
155
+ }
156
+ function loadDiskPrCache() {
157
+ const raw = readJson(prCachePath);
158
+ return raw && typeof raw === "object" ? (raw.entries ?? {}) : {};
159
+ }
160
+ function saveDiskPrCache(entries) {
161
+ mkdirSync(join(projectStateDir, "plugin-cache"), { recursive: true });
162
+ writeJsonAtomic(prCachePath, {
163
+ version: 1,
164
+ updatedAt: new Date().toISOString(),
165
+ entries,
166
+ });
167
+ }
168
+ function collectTargets() {
169
+ const statusline = loadCachedJson(statuslinePath);
170
+ const state = loadCachedJson(statePath);
171
+ const metadata = loadCachedJson(metadataPath);
172
+ return collectGithubPrTargets(statusline, state, metadata);
173
+ }
174
+ async function resolveCachedPr(repoRoot, cwd, repo, branch) {
175
+ const cacheKey = `${repoRoot}::${branch ?? ""}`;
176
+ const now = Date.now();
177
+ const cached = prCache.get(cacheKey);
178
+ if (cached && cached.expiresAt > now) {
179
+ return cached.value;
180
+ }
181
+ const diskEntries = loadDiskPrCache();
182
+ const diskCached = diskEntries[cacheKey];
183
+ if (diskCached && diskCached.expiresAt > now) {
184
+ prCache.set(cacheKey, diskCached);
185
+ return diskCached.value;
186
+ }
187
+ if (diskCached?.pendingUntil && diskCached.pendingUntil > now) {
188
+ return diskCached.value ?? null;
189
+ }
190
+ diskEntries[cacheKey] = {
191
+ value: diskCached?.value ?? null,
192
+ expiresAt: diskCached?.expiresAt ?? 0,
193
+ pendingUntil: now + PR_CACHE_PENDING_TTL_MS,
194
+ };
195
+ saveDiskPrCache(diskEntries);
196
+ const value = await resolveBranchPr(cwd, repo, branch);
197
+ const next = { value, expiresAt: Date.now() + PR_CACHE_TTL_MS };
198
+ prCache.set(cacheKey, next);
199
+ saveDiskPrCache({
200
+ ...loadDiskPrCache(),
201
+ [cacheKey]: next,
202
+ });
203
+ return value;
204
+ }
205
+ async function refreshOneWithContext(target, gitContext) {
206
+ const repoRoot = gitContext.__repoRoot;
207
+ delete gitContext.__repoRoot;
208
+ gitContext.pr = (await resolveCachedPr(repoRoot, gitContext.cwd, gitContext.repo, gitContext.branch)) ?? undefined;
209
+ const serialized = stableSerialize(gitContext);
210
+ if (contextCache.get(target.id) === serialized)
211
+ return;
212
+ contextCache.set(target.id, serialized);
213
+ api.metadata.setContext(target.id, gitContext);
214
+ }
215
+ async function refreshAll() {
216
+ if (running)
217
+ return;
218
+ running = true;
219
+ try {
220
+ const targets = collectTargets();
221
+ const worktreeContexts = new Map();
222
+ for (const target of targets) {
223
+ const worktreePath = target.worktreePath;
224
+ if (!worktreePath || worktreeContexts.has(worktreePath))
225
+ continue;
226
+ worktreeContexts.set(worktreePath, await resolveGitContext(worktreePath));
227
+ }
228
+ for (const target of targets) {
229
+ if (!target.worktreePath)
230
+ continue;
231
+ const gitContext = worktreeContexts.get(target.worktreePath);
232
+ if (!gitContext)
233
+ continue;
234
+ await refreshOneWithContext(target, { ...gitContext });
235
+ }
236
+ }
237
+ finally {
238
+ running = false;
239
+ }
240
+ }
241
+ return {
242
+ async start() {
243
+ await refreshAll();
244
+ timer = setInterval(() => {
245
+ void refreshAll();
246
+ }, POLL_INTERVAL_MS);
247
+ timer.unref?.();
248
+ },
249
+ async stop() {
250
+ if (timer)
251
+ clearInterval(timer);
252
+ timer = null;
253
+ },
254
+ };
255
+ }
256
+ //# sourceMappingURL=gh-pr-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gh-pr-context.js","sourceRoot":"","sources":["../../src/default-plugins/gh-pr-context.ts"],"names":[],"mappings":"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"}
@@ -3,4 +3,5 @@ interface TranscriptLengthPluginOptions {
3
3
  line: "top" | "bottom";
4
4
  }
5
5
  export declare function createTranscriptLengthPlugin(api: AimuxPluginAPI, options: TranscriptLengthPluginOptions): AimuxPluginInstance;
6
+ export default function createConfiguredTranscriptLengthPlugin(api: AimuxPluginAPI): AimuxPluginInstance | void;
6
7
  export {};
@@ -1,6 +1,7 @@
1
1
  import { existsSync, readFileSync } from "node:fs";
2
2
  import { join } from "node:path";
3
3
  import { readHistory } from "../context/history.js";
4
+ import { loadConfig } from "../config.js";
4
5
  import { getContextDir } from "../paths.js";
5
6
  function formatBytes(bytes) {
6
7
  if (bytes < 1024)
@@ -81,4 +82,13 @@ export function createTranscriptLengthPlugin(api, options) {
81
82
  },
82
83
  };
83
84
  }
85
+ export default function createConfiguredTranscriptLengthPlugin(api) {
86
+ const config = loadConfig();
87
+ const pluginConfig = config.statusline.defaultPlugins.transcriptLength;
88
+ if (!pluginConfig.enabled)
89
+ return;
90
+ return createTranscriptLengthPlugin(api, {
91
+ line: pluginConfig.line ?? "top",
92
+ });
93
+ }
84
94
  //# sourceMappingURL=transcript-length.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"transcript-length.js","sourceRoot":"","sources":["../../src/default-plugins/transcript-length.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transcript-length.js","sourceRoot":"","sources":["../../src/default-plugins/transcript-length.ts"],"names":[],"mappings":"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"}
@@ -18,9 +18,14 @@ export interface FastControlItem {
18
18
  }
19
19
  export declare function navigationUrgencyScore(input: {
20
20
  semantic?: {
21
- attention?: string;
22
- unseenCount?: number;
23
- activity?: string;
21
+ user?: {
22
+ attention?: string;
23
+ label?: string;
24
+ };
25
+ notifications?: {
26
+ unreadCount?: number;
27
+ };
28
+ activityNewCount?: number;
24
29
  } | null;
25
30
  attention?: string;
26
31
  unseenCount?: number;
@@ -5,31 +5,23 @@ import { parseRecencyTimestamp } from "./recency.js";
5
5
  import { isDashboardWindowName, TmuxRuntimeManager, } from "./tmux/runtime-manager.js";
6
6
  import { compactSessionTitle } from "./statusline-model.js";
7
7
  import { listWorktrees } from "./worktree.js";
8
+ import { deriveSessionSemantics } from "./session-semantics.js";
8
9
  export function navigationUrgencyScore(input) {
9
10
  if (input.semantic) {
10
- const semanticAttention = input.semantic.attention;
11
+ const semanticAttention = input.semantic.user?.attention;
11
12
  if (semanticAttention === "error")
12
13
  return 5;
13
14
  if (semanticAttention === "needs_input")
14
15
  return 4;
15
16
  if (semanticAttention === "blocked")
16
17
  return 3;
17
- if ((input.semantic.unseenCount ?? 0) > 0)
18
+ if ((input.semantic.notifications?.unreadCount ?? 0) > 0)
18
19
  return 2;
19
- if (input.semantic.activity === "done")
20
+ if ((input.semantic.activityNewCount ?? 0) > 0 || input.semantic.user?.label === "done")
20
21
  return 1;
21
22
  return 0;
22
23
  }
23
- if (input.attention === "error")
24
- return 5;
25
- if (input.attention === "needs_input")
26
- return 4;
27
- if (input.attention === "blocked")
28
- return 3;
29
- if ((input.unseenCount ?? 0) > 0)
30
- return 2;
31
- if (input.activity === "done")
32
- return 1;
24
+ void input;
33
25
  return 0;
34
26
  }
35
27
  export function resolveScopedWorktreePath(projectRoot, currentPath) {
@@ -65,7 +57,14 @@ function urgencyFor(projectRoot, sessionId) {
65
57
  if (!sessionId)
66
58
  return 0;
67
59
  const derived = loadMetadataState(projectRoot).sessions[sessionId]?.derived;
68
- return navigationUrgencyScore(derived ?? {});
60
+ if (!derived)
61
+ return 0;
62
+ return deriveSessionSemantics({
63
+ status: derived.activity === "running" ? "running" : derived.activity === "waiting" ? "waiting" : "idle",
64
+ activity: derived.activity,
65
+ attention: derived.attention,
66
+ unseenCount: derived.unseenCount,
67
+ }).presentation.attentionScore;
69
68
  }
70
69
  export function listSwitchableAgentItems(context, tmux = new TmuxRuntimeManager()) {
71
70
  const tmuxSession = tmux.getProjectSession(context.projectRoot);
@@ -1 +1 @@
1
- {"version":3,"file":"fast-control.js","sourceRoot":"","sources":["../src/fast-control.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fast-control.js","sourceRoot":"","sources":["../src/fast-control.ts"],"names":[],"mappings":"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"}
package/dist/main.js CHANGED
@@ -19,7 +19,7 @@ import { createThread, listThreadSummaries, markThreadSeen, readMessages, readTh
19
19
  import { sendDirectMessage, sendThreadMessage } from "./orchestration.js";
20
20
  import { acceptHandoff, approveReview, acceptTask, assignTask, blockTask, completeHandoff, completeTask, reopenTask, requestTaskChanges, sendHandoff, } from "./orchestration-actions.js";
21
21
  import { readAllTasks, readTask } from "./tasks.js";
22
- import { addNotification, clearNotifications, listNotifications, markNotificationsRead, unreadNotificationCount, } from "./notifications.js";
22
+ import { clearNotifications, listNotifications, markNotificationsRead, upsertNotification, unreadNotificationCount, } from "./notifications.js";
23
23
  import { notifyAlert } from "./notify.js";
24
24
  import { parseClaudeHookPayload, summarizeClaudeNotification, summarizeClaudeStop } from "./claude-hooks.js";
25
25
  import { requestJson } from "./http-client.js";
@@ -29,6 +29,7 @@ import { getDashboardCommandSpec } from "./dashboard/command-spec.js";
29
29
  import { findLiveDashboardTarget, openDashboardTarget, pruneDashboardArtifacts, resolveDashboardTarget, } from "./dashboard/targets.js";
30
30
  import { invalidateTmuxStatuslineArtifacts } from "./tmux/statusline-cache.js";
31
31
  import { loadStatusline, renderTmuxStatuslineFromData } from "./tmux/statusline.js";
32
+ import { persistProjectRuntimeSnapshotsBeforeTmuxStop } from "./multiplexer/service-state-snapshot.js";
32
33
  const program = new Command();
33
34
  class ProjectServiceVersionError extends Error {
34
35
  projectRoot;
@@ -314,10 +315,28 @@ function stopProjectTmuxRuntime(tmux, projectRoot) {
314
315
  }
315
316
  return killed;
316
317
  }
318
+ async function waitForProcessExit(pid, timeoutMs = 2500) {
319
+ const deadline = Date.now() + timeoutMs;
320
+ while (Date.now() < deadline) {
321
+ try {
322
+ process.kill(pid, 0);
323
+ }
324
+ catch {
325
+ return;
326
+ }
327
+ await new Promise((resolve) => setTimeout(resolve, 100));
328
+ }
329
+ }
317
330
  async function stopProjectRuntime(projectRoot) {
331
+ const tmux = new TmuxRuntimeManager();
332
+ if (tmux.isAvailable()) {
333
+ persistProjectRuntimeSnapshotsBeforeTmuxStop(projectRoot, tmux);
334
+ }
318
335
  const projectService = await stopProjectService(projectRoot);
336
+ if (projectService?.pid) {
337
+ await waitForProcessExit(projectService.pid);
338
+ }
319
339
  removeMetadataEndpoint(projectRoot);
320
- const tmux = new TmuxRuntimeManager();
321
340
  const tmuxSessionsKilled = tmux.isAvailable() ? stopProjectTmuxRuntime(tmux, projectRoot) : [];
322
341
  return {
323
342
  projectServiceStopped: Boolean(projectService),
@@ -2213,7 +2232,7 @@ program
2213
2232
  force: true,
2214
2233
  }, () => {
2215
2234
  const kind = (opts.kind?.trim() || "notification");
2216
- const notification = addNotification({
2235
+ const notification = upsertNotification({
2217
2236
  title,
2218
2237
  subtitle: opts.subtitle?.trim() || undefined,
2219
2238
  body,
@@ -2273,44 +2292,12 @@ program
2273
2292
  case "notification":
2274
2293
  case "notify": {
2275
2294
  const summary = summarizeClaudeNotification(payload);
2276
- await postLiveProjectServiceJsonOrLocal(projectRoot, "/notify", {
2277
- title: "Claude Code",
2278
- subtitle: summary.subtitle,
2279
- message: summary.body,
2280
- sessionId,
2281
- kind: "needs_input",
2282
- }, () => ({
2283
- ok: true,
2284
- notification: addNotification({
2285
- title: "Claude Code",
2286
- subtitle: summary.subtitle,
2287
- body: summary.body,
2288
- sessionId,
2289
- kind: "needs_input",
2290
- }),
2291
- }));
2292
2295
  await emitEvent("needs_input", summary.body, "warn");
2293
2296
  break;
2294
2297
  }
2295
2298
  case "stop":
2296
2299
  case "idle": {
2297
2300
  const summary = summarizeClaudeStop(payload);
2298
- await postLiveProjectServiceJsonOrLocal(projectRoot, "/notify", {
2299
- title: "Claude Code",
2300
- subtitle: summary.subtitle,
2301
- message: summary.body,
2302
- sessionId,
2303
- kind: "task_done",
2304
- }, () => ({
2305
- ok: true,
2306
- notification: addNotification({
2307
- title: "Claude Code",
2308
- subtitle: summary.subtitle,
2309
- body: summary.body,
2310
- sessionId,
2311
- kind: "task_done",
2312
- }),
2313
- }));
2314
2301
  await emitEvent("task_done", summary.body, "success");
2315
2302
  break;
2316
2303
  }