aimux-cli 0.1.10 → 0.1.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/builtin-metadata-watchers.js +2 -103
- package/dist/builtin-metadata-watchers.js.map +1 -1
- package/dist/config.d.ts +12 -0
- package/dist/config.js +9 -0
- package/dist/config.js.map +1 -1
- package/dist/daemon.js +45 -10
- package/dist/daemon.js.map +1 -1
- package/dist/dashboard/index.d.ts +3 -0
- package/dist/dashboard/index.js.map +1 -1
- package/dist/dashboard/quick-jump.js +11 -3
- package/dist/dashboard/quick-jump.js.map +1 -1
- package/dist/dashboard/session-registry.d.ts +1 -0
- package/dist/dashboard/session-registry.js +3 -0
- package/dist/dashboard/session-registry.js.map +1 -1
- package/dist/dashboard/sort.d.ts +10 -0
- package/dist/dashboard/sort.js +14 -0
- package/dist/dashboard/sort.js.map +1 -0
- package/dist/dashboard/state.d.ts +1 -1
- package/dist/dashboard/state.js.map +1 -1
- package/dist/dashboard/targets.js +3 -1
- package/dist/dashboard/targets.js.map +1 -1
- package/dist/default-plugins/transcript-length.d.ts +6 -0
- package/dist/default-plugins/transcript-length.js +84 -0
- package/dist/default-plugins/transcript-length.js.map +1 -0
- package/dist/hotkeys.d.ts +2 -0
- package/dist/hotkeys.js +3 -0
- package/dist/hotkeys.js.map +1 -1
- package/dist/http-client.js +1 -0
- package/dist/http-client.js.map +1 -1
- package/dist/instance-registry.d.ts +1 -0
- package/dist/instance-registry.js.map +1 -1
- package/dist/main.js +151 -16
- package/dist/main.js.map +1 -1
- package/dist/metadata-server.d.ts +10 -0
- package/dist/metadata-server.js +160 -5
- package/dist/metadata-server.js.map +1 -1
- package/dist/metadata-store.d.ts +10 -0
- package/dist/metadata-store.js +1 -1
- package/dist/metadata-store.js.map +1 -1
- package/dist/multiplexer/archives.js +2 -2
- package/dist/multiplexer/archives.js.map +1 -1
- package/dist/multiplexer/dashboard-actions-methods.d.ts +5 -0
- package/dist/multiplexer/dashboard-actions-methods.js +16 -0
- package/dist/multiplexer/dashboard-actions-methods.js.map +1 -1
- package/dist/multiplexer/dashboard-control.js +14 -7
- package/dist/multiplexer/dashboard-control.js.map +1 -1
- package/dist/multiplexer/dashboard-interaction.js +2 -5
- package/dist/multiplexer/dashboard-interaction.js.map +1 -1
- package/dist/multiplexer/dashboard-model.d.ts +2 -0
- package/dist/multiplexer/dashboard-model.js +72 -12
- package/dist/multiplexer/dashboard-model.js.map +1 -1
- package/dist/multiplexer/dashboard-state-methods.js +1 -0
- package/dist/multiplexer/dashboard-state-methods.js.map +1 -1
- package/dist/multiplexer/dashboard-view-methods.js +1 -0
- package/dist/multiplexer/dashboard-view-methods.js.map +1 -1
- package/dist/multiplexer/index.d.ts +2 -0
- package/dist/multiplexer/index.js +3 -25
- package/dist/multiplexer/index.js.map +1 -1
- package/dist/multiplexer/navigation.js +5 -0
- package/dist/multiplexer/navigation.js.map +1 -1
- package/dist/multiplexer/notifications.d.ts +5 -0
- package/dist/multiplexer/notifications.js +198 -0
- package/dist/multiplexer/notifications.js.map +1 -1
- package/dist/multiplexer/persistence-methods.d.ts +1 -0
- package/dist/multiplexer/persistence-methods.js +90 -33
- package/dist/multiplexer/persistence-methods.js.map +1 -1
- package/dist/multiplexer/runtime-lifecycle-methods.js +1 -0
- package/dist/multiplexer/runtime-lifecycle-methods.js.map +1 -1
- package/dist/multiplexer/runtime-state.js +7 -2
- package/dist/multiplexer/runtime-state.js.map +1 -1
- package/dist/multiplexer/runtime-sync.js +0 -1
- package/dist/multiplexer/runtime-sync.js.map +1 -1
- package/dist/multiplexer/services.js +3 -0
- package/dist/multiplexer/services.js.map +1 -1
- package/dist/multiplexer/session-launch.js +23 -26
- package/dist/multiplexer/session-launch.js.map +1 -1
- package/dist/multiplexer/session-runtime-core.js +6 -1
- package/dist/multiplexer/session-runtime-core.js.map +1 -1
- package/dist/multiplexer/subscreens.d.ts +4 -0
- package/dist/multiplexer/subscreens.js +16 -3
- package/dist/multiplexer/subscreens.js.map +1 -1
- package/dist/multiplexer/worktrees.js +103 -7
- package/dist/multiplexer/worktrees.js.map +1 -1
- package/dist/orchestration-dispatcher.d.ts +3 -1
- package/dist/orchestration-dispatcher.js +15 -5
- package/dist/orchestration-dispatcher.js.map +1 -1
- package/dist/paths.js +13 -2
- package/dist/paths.js.map +1 -1
- package/dist/plugin-runtime.d.ts +11 -2
- package/dist/plugin-runtime.js +111 -42
- package/dist/plugin-runtime.js.map +1 -1
- package/dist/session-bootstrap.d.ts +9 -4
- package/dist/session-bootstrap.js +232 -112
- package/dist/session-bootstrap.js.map +1 -1
- package/dist/session-semantics.js +3 -0
- package/dist/session-semantics.js.map +1 -1
- package/dist/shell-hooks.js +4 -3
- package/dist/shell-hooks.js.map +1 -1
- package/dist/statusline-model.d.ts +13 -1
- package/dist/statusline-model.js +1 -0
- package/dist/statusline-model.js.map +1 -1
- package/dist/task-workflow.js +15 -6
- package/dist/task-workflow.js.map +1 -1
- package/dist/tmux/inbox-popup.d.ts +11 -0
- package/dist/tmux/inbox-popup.js +267 -0
- package/dist/tmux/inbox-popup.js.map +1 -0
- package/dist/tmux/runtime-manager.d.ts +1 -0
- package/dist/tmux/runtime-manager.js +9 -0
- package/dist/tmux/runtime-manager.js.map +1 -1
- package/dist/tmux/session-transport.js +4 -0
- package/dist/tmux/session-transport.js.map +1 -1
- package/dist/tmux/statusline.js +27 -3
- package/dist/tmux/statusline.js.map +1 -1
- package/dist/tui/screens/dashboard-renderers.js +5 -2
- package/dist/tui/screens/dashboard-renderers.js.map +1 -1
- package/dist/tui/screens/overlay-renderers.js +3 -2
- package/dist/tui/screens/overlay-renderers.js.map +1 -1
- package/dist/tui/screens/subscreen-renderers.d.ts +2 -0
- package/dist/tui/screens/subscreen-renderers.js +75 -5
- package/dist/tui/screens/subscreen-renderers.js.map +1 -1
- package/dist/worktree.d.ts +2 -0
- package/dist/worktree.js +75 -35
- package/dist/worktree.js.map +1 -1
- package/package.json +1 -1
|
@@ -3,10 +3,12 @@ import { getDashboardCommandSpec } from "./command-spec.js";
|
|
|
3
3
|
function isUsableDashboardTarget(tmux, dashboardBuildStamp, dashboardTarget) {
|
|
4
4
|
const currentBuildStamp = tmux.getWindowOption(dashboardTarget, "@aimux-dashboard-build");
|
|
5
5
|
const paneCommand = tmux.displayMessage("#{pane_current_command}", dashboardTarget.windowId);
|
|
6
|
+
const paneTail = paneCommand === "bash" ? tmux.captureTarget(dashboardTarget, { startLine: -40 }) : "";
|
|
6
7
|
return (tmux.isWindowAlive(dashboardTarget) &&
|
|
7
8
|
currentBuildStamp === dashboardBuildStamp &&
|
|
8
9
|
paneCommand !== "cat" &&
|
|
9
|
-
paneCommand !== "tail"
|
|
10
|
+
paneCommand !== "tail" &&
|
|
11
|
+
!paneTail.includes("aimux dashboard failed to start."));
|
|
10
12
|
}
|
|
11
13
|
export function pruneDashboardArtifacts(projectRoot, dashboardBuildStamp, tmux) {
|
|
12
14
|
const hostSession = tmux.getProjectSession(projectRoot).sessionName;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"targets.js","sourceRoot":"","sources":["../../src/dashboard/targets.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAO5D,SAAS,uBAAuB,CAC9B,IAAwB,EACxB,mBAA2B,EAC3B,eAA2B;IAE3B,MAAM,iBAAiB,GAAG,IAAI,CAAC,eAAe,CAAC,eAAe,EAAE,wBAAwB,CAAC,CAAC;IAC1F,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,yBAAyB,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAC;IAC7F,OAAO,CACL,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC;QACnC,iBAAiB,KAAK,mBAAmB;QACzC,WAAW,KAAK,KAAK;QACrB,WAAW,KAAK,MAAM,
|
|
1
|
+
{"version":3,"file":"targets.js","sourceRoot":"","sources":["../../src/dashboard/targets.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { AimuxPluginAPI, AimuxPluginInstance } from "../plugin-runtime.js";
|
|
2
|
+
interface TranscriptLengthPluginOptions {
|
|
3
|
+
line: "top" | "bottom";
|
|
4
|
+
}
|
|
5
|
+
export declare function createTranscriptLengthPlugin(api: AimuxPluginAPI, options: TranscriptLengthPluginOptions): AimuxPluginInstance;
|
|
6
|
+
export {};
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { readHistory } from "../context/history.js";
|
|
4
|
+
import { getContextDir } from "../paths.js";
|
|
5
|
+
function formatBytes(bytes) {
|
|
6
|
+
if (bytes < 1024)
|
|
7
|
+
return `${bytes}b`;
|
|
8
|
+
if (bytes < 1024 * 1024)
|
|
9
|
+
return `${Math.max(1, Math.round(bytes / 102.4) / 10)}kb`;
|
|
10
|
+
return `${Math.max(1, Math.round(bytes / 104857.6) / 10)}mb`;
|
|
11
|
+
}
|
|
12
|
+
function readLastCompactionTurnTs(sessionId) {
|
|
13
|
+
const checkpointsPath = join(getContextDir(), sessionId, "summary.checkpoints.jsonl");
|
|
14
|
+
if (!existsSync(checkpointsPath))
|
|
15
|
+
return undefined;
|
|
16
|
+
try {
|
|
17
|
+
const lines = readFileSync(checkpointsPath, "utf-8")
|
|
18
|
+
.split("\n")
|
|
19
|
+
.map((line) => line.trim())
|
|
20
|
+
.filter(Boolean);
|
|
21
|
+
const last = lines.at(-1);
|
|
22
|
+
if (!last)
|
|
23
|
+
return undefined;
|
|
24
|
+
const parsed = JSON.parse(last);
|
|
25
|
+
return parsed.lastTurnTs;
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
return undefined;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
function transcriptBytesSinceCheckpoint(sessionId) {
|
|
32
|
+
const lastTurnTs = readLastCompactionTurnTs(sessionId);
|
|
33
|
+
const turns = readHistory(sessionId, lastTurnTs ? { since: lastTurnTs } : undefined).filter((turn) => !lastTurnTs || turn.ts > lastTurnTs);
|
|
34
|
+
return turns.reduce((total, turn) => total + Buffer.byteLength(`${JSON.stringify(turn)}\n`), 0);
|
|
35
|
+
}
|
|
36
|
+
function buildSegmentText(sessionId) {
|
|
37
|
+
const bytes = transcriptBytesSinceCheckpoint(sessionId);
|
|
38
|
+
return formatBytes(bytes);
|
|
39
|
+
}
|
|
40
|
+
export function createTranscriptLengthPlugin(api, options) {
|
|
41
|
+
const lastRendered = new Map();
|
|
42
|
+
let timer = null;
|
|
43
|
+
const sync = () => {
|
|
44
|
+
const sessions = api.sessions.list();
|
|
45
|
+
const liveIds = new Set(sessions.map((session) => session.id));
|
|
46
|
+
for (const sessionId of [...lastRendered.keys()]) {
|
|
47
|
+
if (liveIds.has(sessionId))
|
|
48
|
+
continue;
|
|
49
|
+
api.metadata.clearStatuslineSegment(sessionId, "transcript-length");
|
|
50
|
+
lastRendered.delete(sessionId);
|
|
51
|
+
}
|
|
52
|
+
for (const session of sessions) {
|
|
53
|
+
const text = buildSegmentText(session.id);
|
|
54
|
+
const previous = lastRendered.get(session.id);
|
|
55
|
+
if (!text) {
|
|
56
|
+
if (previous !== undefined) {
|
|
57
|
+
api.metadata.clearStatuslineSegment(session.id, "transcript-length");
|
|
58
|
+
lastRendered.delete(session.id);
|
|
59
|
+
}
|
|
60
|
+
continue;
|
|
61
|
+
}
|
|
62
|
+
if (previous === text)
|
|
63
|
+
continue;
|
|
64
|
+
api.metadata.setStatuslineSegment(session.id, options.line, {
|
|
65
|
+
id: "transcript-length",
|
|
66
|
+
text,
|
|
67
|
+
tone: "neutral",
|
|
68
|
+
});
|
|
69
|
+
lastRendered.set(session.id, text);
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
return {
|
|
73
|
+
start() {
|
|
74
|
+
sync();
|
|
75
|
+
timer = setInterval(sync, 2_000);
|
|
76
|
+
},
|
|
77
|
+
stop() {
|
|
78
|
+
if (timer)
|
|
79
|
+
clearInterval(timer);
|
|
80
|
+
timer = null;
|
|
81
|
+
},
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=transcript-length.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transcript-length.js","sourceRoot":"","sources":["../../src/default-plugins/transcript-length.ts"],"names":[],"mappings":"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"}
|
package/dist/hotkeys.d.ts
CHANGED
package/dist/hotkeys.js
CHANGED
package/dist/hotkeys.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hotkeys.js","sourceRoot":"","sources":["../src/hotkeys.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAiB,MAAM,iBAAiB,CAAC;AACrE,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"hotkeys.js","sourceRoot":"","sources":["../src/hotkeys.ts"],"names":[],"mappings":"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"}
|
package/dist/http-client.js
CHANGED
|
@@ -22,6 +22,7 @@ export async function requestJson(urlString, options = {}) {
|
|
|
22
22
|
const req = transport.request(url, {
|
|
23
23
|
method: options.method ?? (bodyString === undefined ? "GET" : "POST"),
|
|
24
24
|
headers,
|
|
25
|
+
agent: false,
|
|
25
26
|
}, (res) => {
|
|
26
27
|
const chunks = [];
|
|
27
28
|
res.on("data", (chunk) => chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk)));
|
package/dist/http-client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-client.js","sourceRoot":"","sources":["../src/http-client.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,KAAK,MAAM,YAAY,CAAC;AAO/B,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,SAAiB,EACjB,UAKI,EAAE;IAEN,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC;IAC/B,MAAM,SAAS,GAAG,GAAG,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3D,MAAM,UAAU,GACd,OAAO,CAAC,IAAI,KAAK,SAAS;QACxB,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ;YAChC,CAAC,CAAC,OAAO,CAAC,IAAI;YACd,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,MAAM,OAAO,GAA2B;QACtC,MAAM,EAAE,kBAAkB;QAC1B,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;KAC3B,CAAC;IACF,IAAI,UAAU,KAAK,SAAS,IAAI,OAAO,CAAC,cAAc,CAAC,KAAK,SAAS,EAAE,CAAC;QACtE,OAAO,CAAC,cAAc,CAAC,GAAG,kBAAkB,CAAC;IAC/C,CAAC;IACD,IAAI,UAAU,KAAK,SAAS,IAAI,OAAO,CAAC,gBAAgB,CAAC,KAAK,SAAS,EAAE,CAAC;QACxE,OAAO,CAAC,gBAAgB,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC;IACvE,CAAC;IAED,OAAO,MAAM,IAAI,OAAO,CAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAChE,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,CAC3B,GAAG,EACH;YACE,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;YACrE,OAAO;
|
|
1
|
+
{"version":3,"file":"http-client.js","sourceRoot":"","sources":["../src/http-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instance-registry.js","sourceRoot":"","sources":["../src/instance-registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"instance-registry.js","sourceRoot":"","sources":["../src/instance-registry.ts"],"names":[],"mappings":"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"}
|
package/dist/main.js
CHANGED
|
@@ -18,11 +18,13 @@ import { getProjectServiceManifest, manifestsMatch } from "./project-service-man
|
|
|
18
18
|
import { createThread, listThreadSummaries, markThreadSeen, readMessages, readThread, setThreadStatus, } from "./threads.js";
|
|
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
|
+
import { readAllTasks, readTask } from "./tasks.js";
|
|
21
22
|
import { addNotification, clearNotifications, listNotifications, markNotificationsRead, unreadNotificationCount, } from "./notifications.js";
|
|
22
23
|
import { notifyAlert } from "./notify.js";
|
|
23
24
|
import { parseClaudeHookPayload, summarizeClaudeNotification, summarizeClaudeStop } from "./claude-hooks.js";
|
|
24
25
|
import { requestJson } from "./http-client.js";
|
|
25
26
|
import { runTmuxSwitcher } from "./tmux/switcher.js";
|
|
27
|
+
import { runTmuxInboxPopup } from "./tmux/inbox-popup.js";
|
|
26
28
|
import { getDashboardCommandSpec } from "./dashboard/command-spec.js";
|
|
27
29
|
import { findLiveDashboardTarget, openDashboardTarget, pruneDashboardArtifacts, resolveDashboardTarget, } from "./dashboard/targets.js";
|
|
28
30
|
import { invalidateTmuxStatuslineArtifacts } from "./tmux/statusline-cache.js";
|
|
@@ -66,7 +68,9 @@ async function restartStaleControlPlane(projectRoot) {
|
|
|
66
68
|
pruneDashboardArtifacts(projectRoot, dashboardBuildStamp, new TmuxRuntimeManager());
|
|
67
69
|
}
|
|
68
70
|
async function fetchProjectServiceHealth(endpoint) {
|
|
69
|
-
const { status, json } = await requestJson(`http://${endpoint.host}:${endpoint.port}/health
|
|
71
|
+
const { status, json } = await requestJson(`http://${endpoint.host}:${endpoint.port}/health`, {
|
|
72
|
+
timeoutMs: 1000,
|
|
73
|
+
});
|
|
70
74
|
if (status < 200 || status >= 300 || json?.ok === false) {
|
|
71
75
|
throw new Error(json?.error || `health request failed: ${status}`);
|
|
72
76
|
}
|
|
@@ -74,7 +78,9 @@ async function fetchProjectServiceHealth(endpoint) {
|
|
|
74
78
|
}
|
|
75
79
|
async function waitForVerifiedProjectService(projectRoot, opts) {
|
|
76
80
|
const expected = getProjectServiceManifest();
|
|
77
|
-
const
|
|
81
|
+
const timeoutMs = opts?.timeoutMs ?? 8000;
|
|
82
|
+
const startedAt = Date.now();
|
|
83
|
+
const deadline = startedAt + timeoutMs;
|
|
78
84
|
let lastError = "project service did not become reachable";
|
|
79
85
|
let lastServiceInfo = null;
|
|
80
86
|
let respawnAttempted = false;
|
|
@@ -123,7 +129,9 @@ async function waitForVerifiedProjectService(projectRoot, opts) {
|
|
|
123
129
|
typeof lastServiceInfo === "object") {
|
|
124
130
|
throw new ProjectServiceVersionError(lastError, projectRoot, expected, lastServiceInfo);
|
|
125
131
|
}
|
|
126
|
-
|
|
132
|
+
const elapsedMs = Date.now() - startedAt;
|
|
133
|
+
const elapsedSeconds = (elapsedMs / 1000).toFixed(1);
|
|
134
|
+
throw new Error(`project service did not become ready after ${elapsedSeconds}s (budget ${timeoutMs}ms); last error: ${lastError}${lastServiceInfo ? `; last serviceInfo=${JSON.stringify(lastServiceInfo)}` : ""}`);
|
|
127
135
|
}
|
|
128
136
|
function rewriteLocalStatuslineArtifacts(projectRoot, tmux, dashboardSessionName) {
|
|
129
137
|
const data = loadStatusline(projectRoot);
|
|
@@ -164,10 +172,10 @@ function rewriteLocalStatuslineArtifacts(projectRoot, tmux, dashboardSessionName
|
|
|
164
172
|
}
|
|
165
173
|
tmux.refreshStatus();
|
|
166
174
|
}
|
|
167
|
-
async function postProjectServiceJson(path, body) {
|
|
175
|
+
async function postProjectServiceJson(path, body, options) {
|
|
168
176
|
let endpoint = await resolveProjectServiceEndpoint();
|
|
169
177
|
if (!endpoint) {
|
|
170
|
-
await
|
|
178
|
+
await ensureDaemonProjectReady(resolveProjectRoot(process.cwd()));
|
|
171
179
|
endpoint = await resolveProjectServiceEndpoint();
|
|
172
180
|
}
|
|
173
181
|
if (!endpoint) {
|
|
@@ -177,6 +185,7 @@ async function postProjectServiceJson(path, body) {
|
|
|
177
185
|
method: "POST",
|
|
178
186
|
headers: { "content-type": "application/json" },
|
|
179
187
|
body,
|
|
188
|
+
timeoutMs: options?.timeoutMs,
|
|
180
189
|
});
|
|
181
190
|
if (status < 200 || status >= 300 || json?.ok === false) {
|
|
182
191
|
throw new Error(json?.error || `request failed: ${status}`);
|
|
@@ -186,7 +195,7 @@ async function postProjectServiceJson(path, body) {
|
|
|
186
195
|
async function getProjectServiceJson(path) {
|
|
187
196
|
let endpoint = await resolveProjectServiceEndpoint();
|
|
188
197
|
if (!endpoint) {
|
|
189
|
-
await
|
|
198
|
+
await ensureDaemonProjectReady(resolveProjectRoot(process.cwd()));
|
|
190
199
|
endpoint = await resolveProjectServiceEndpoint();
|
|
191
200
|
}
|
|
192
201
|
if (!endpoint) {
|
|
@@ -206,6 +215,9 @@ async function postProjectServiceJsonOrLocal(path, body, fallback) {
|
|
|
206
215
|
return fallback();
|
|
207
216
|
}
|
|
208
217
|
}
|
|
218
|
+
function exitAfterOpen() {
|
|
219
|
+
process.exit(0);
|
|
220
|
+
}
|
|
209
221
|
async function postLiveProjectServiceJsonOrLocal(projectRoot, path, body, fallback) {
|
|
210
222
|
try {
|
|
211
223
|
const endpoint = await resolveProjectServiceEndpoint(projectRoot);
|
|
@@ -268,7 +280,13 @@ async function ensureDaemonProjectReady(projectRoot, opts) {
|
|
|
268
280
|
throw error;
|
|
269
281
|
}
|
|
270
282
|
await restartStaleControlPlane(projectRoot);
|
|
271
|
-
|
|
283
|
+
try {
|
|
284
|
+
await waitForVerifiedProjectService(projectRoot, { timeoutMs: 15_000 });
|
|
285
|
+
}
|
|
286
|
+
catch {
|
|
287
|
+
await ensureProjectService(projectRoot);
|
|
288
|
+
await waitForVerifiedProjectService(projectRoot, { timeoutMs: 15_000 });
|
|
289
|
+
}
|
|
272
290
|
}
|
|
273
291
|
}
|
|
274
292
|
async function ensureDaemonProjectSpawned(projectRoot) {
|
|
@@ -380,13 +398,13 @@ program
|
|
|
380
398
|
insideTmux: tmux.isInsideTmux(),
|
|
381
399
|
alreadyResolved: true,
|
|
382
400
|
});
|
|
383
|
-
|
|
401
|
+
exitAfterOpen();
|
|
384
402
|
}
|
|
385
403
|
}
|
|
386
|
-
await
|
|
404
|
+
await ensureDaemonProjectReady(projectRoot);
|
|
387
405
|
if (!tool && !opts.resume && !opts.restore) {
|
|
388
406
|
openDashboardTarget(projectRoot, tmux);
|
|
389
|
-
|
|
407
|
+
exitAfterOpen();
|
|
390
408
|
}
|
|
391
409
|
}
|
|
392
410
|
const mux = new Multiplexer();
|
|
@@ -459,16 +477,19 @@ program
|
|
|
459
477
|
try {
|
|
460
478
|
const originalCwd = process.cwd();
|
|
461
479
|
const projectRoot = resolveProjectRoot(originalCwd);
|
|
462
|
-
await
|
|
480
|
+
await ensureDaemonProjectReady(projectRoot);
|
|
463
481
|
invalidateTmuxStatuslineArtifacts(projectRoot);
|
|
464
482
|
const tmux = new TmuxRuntimeManager();
|
|
465
483
|
ensureTmuxAvailable(tmux);
|
|
466
484
|
const { dashboardSession, dashboardTarget } = resolveDashboardTarget(projectRoot, tmux, { forceReload: true });
|
|
467
|
-
|
|
485
|
+
try {
|
|
486
|
+
await postProjectServiceJson("/statusline/refresh", { force: true }, { timeoutMs: 1500 });
|
|
487
|
+
}
|
|
488
|
+
catch { }
|
|
468
489
|
rewriteLocalStatuslineArtifacts(projectRoot, tmux, dashboardSession.sessionName);
|
|
469
490
|
if (opts.open) {
|
|
470
491
|
tmux.openTarget(dashboardTarget, { insideTmux: tmux.isInsideTmux(), alreadyResolved: true });
|
|
471
|
-
|
|
492
|
+
exitAfterOpen();
|
|
472
493
|
}
|
|
473
494
|
console.log(`Reloaded dashboard for ${dashboardSession.sessionName}`);
|
|
474
495
|
}
|
|
@@ -540,7 +561,7 @@ program
|
|
|
540
561
|
await initPaths(projectRoot);
|
|
541
562
|
const result = await restartProjectRuntime(projectRoot, { open: opts.open });
|
|
542
563
|
if (opts.open)
|
|
543
|
-
|
|
564
|
+
exitAfterOpen();
|
|
544
565
|
if (opts.json) {
|
|
545
566
|
console.log(JSON.stringify({
|
|
546
567
|
ok: true,
|
|
@@ -1064,6 +1085,31 @@ worktreeCmd.action(() => {
|
|
|
1064
1085
|
printWorktrees();
|
|
1065
1086
|
});
|
|
1066
1087
|
const threadCmd = program.command("thread").description("Inspect and manage orchestration threads");
|
|
1088
|
+
program
|
|
1089
|
+
.command("threads")
|
|
1090
|
+
.description("Alias for thread list")
|
|
1091
|
+
.option("--session <sessionId>", "Filter to threads involving a session")
|
|
1092
|
+
.option("--json", "Emit JSON")
|
|
1093
|
+
.action((opts) => {
|
|
1094
|
+
const summaries = listThreadSummaries(opts.session);
|
|
1095
|
+
if (opts.json) {
|
|
1096
|
+
console.log(JSON.stringify(summaries, null, 2));
|
|
1097
|
+
return;
|
|
1098
|
+
}
|
|
1099
|
+
if (summaries.length === 0) {
|
|
1100
|
+
console.log("No threads found.");
|
|
1101
|
+
return;
|
|
1102
|
+
}
|
|
1103
|
+
for (const summary of summaries) {
|
|
1104
|
+
const unread = summary.thread.unreadBy?.length ? ` unread=${summary.thread.unreadBy.length}` : "";
|
|
1105
|
+
const waiting = summary.thread.waitingOn?.length ? ` waiting=${summary.thread.waitingOn.join(",")}` : "";
|
|
1106
|
+
console.log(`${summary.thread.id} ${summary.thread.kind} ${summary.thread.status}${unread}${waiting}`);
|
|
1107
|
+
console.log(` ${summary.thread.title}`);
|
|
1108
|
+
if (summary.latestMessage) {
|
|
1109
|
+
console.log(` latest: ${summary.latestMessage.from} [${summary.latestMessage.kind}] ${summary.latestMessage.body}`);
|
|
1110
|
+
}
|
|
1111
|
+
}
|
|
1112
|
+
});
|
|
1067
1113
|
threadCmd
|
|
1068
1114
|
.command("list")
|
|
1069
1115
|
.description("List orchestration threads")
|
|
@@ -1380,6 +1426,71 @@ handoffCmd
|
|
|
1380
1426
|
}
|
|
1381
1427
|
});
|
|
1382
1428
|
const taskCmd = program.command("task").description("Create and manage orchestrated tasks");
|
|
1429
|
+
taskCmd
|
|
1430
|
+
.command("list")
|
|
1431
|
+
.description("List orchestrated tasks")
|
|
1432
|
+
.option("--session <sessionId>", "Filter to tasks assigned to or created by a session")
|
|
1433
|
+
.option("--status <status>", "Filter by task status")
|
|
1434
|
+
.option("--json", "Emit JSON")
|
|
1435
|
+
.action((opts) => {
|
|
1436
|
+
const tasks = readAllTasks()
|
|
1437
|
+
.filter((task) => !opts.session || task.assignedTo === opts.session || task.assignedBy === opts.session)
|
|
1438
|
+
.filter((task) => !opts.status || task.status === opts.status);
|
|
1439
|
+
if (opts.json) {
|
|
1440
|
+
console.log(JSON.stringify({ tasks }, null, 2));
|
|
1441
|
+
return;
|
|
1442
|
+
}
|
|
1443
|
+
if (tasks.length === 0) {
|
|
1444
|
+
console.log("No tasks found.");
|
|
1445
|
+
return;
|
|
1446
|
+
}
|
|
1447
|
+
for (const task of tasks) {
|
|
1448
|
+
const target = task.assignedTo ?? task.assignee ?? task.tool ?? "unassigned";
|
|
1449
|
+
const thread = task.threadId ? ` thread=${task.threadId}` : "";
|
|
1450
|
+
console.log(`${task.id} ${task.type ?? "task"} ${task.status} target=${target}${thread}`);
|
|
1451
|
+
console.log(` ${task.description}`);
|
|
1452
|
+
}
|
|
1453
|
+
});
|
|
1454
|
+
taskCmd
|
|
1455
|
+
.command("show")
|
|
1456
|
+
.description("Show an orchestrated task")
|
|
1457
|
+
.argument("<taskId>")
|
|
1458
|
+
.option("--json", "Emit JSON")
|
|
1459
|
+
.action((taskId, opts) => {
|
|
1460
|
+
const task = readTask(taskId);
|
|
1461
|
+
if (!task) {
|
|
1462
|
+
console.error(`aimux: task not found: ${taskId}`);
|
|
1463
|
+
process.exit(1);
|
|
1464
|
+
}
|
|
1465
|
+
const thread = task.threadId ? readThread(task.threadId) : undefined;
|
|
1466
|
+
const messages = task.threadId ? readMessages(task.threadId) : [];
|
|
1467
|
+
if (opts.json) {
|
|
1468
|
+
console.log(JSON.stringify({ task, thread, messages }, null, 2));
|
|
1469
|
+
return;
|
|
1470
|
+
}
|
|
1471
|
+
console.log(`${task.description} (${task.type ?? "task"})`);
|
|
1472
|
+
console.log(`id: ${task.id}`);
|
|
1473
|
+
console.log(`status: ${task.status}`);
|
|
1474
|
+
console.log(`assignedBy: ${task.assignedBy}`);
|
|
1475
|
+
if (task.assignedTo)
|
|
1476
|
+
console.log(`assignedTo: ${task.assignedTo}`);
|
|
1477
|
+
if (task.assignee)
|
|
1478
|
+
console.log(`assignee: ${task.assignee}`);
|
|
1479
|
+
if (task.tool)
|
|
1480
|
+
console.log(`tool: ${task.tool}`);
|
|
1481
|
+
if (task.threadId)
|
|
1482
|
+
console.log(`thread: ${task.threadId}`);
|
|
1483
|
+
if (task.reviewStatus)
|
|
1484
|
+
console.log(`reviewStatus: ${task.reviewStatus}`);
|
|
1485
|
+
if (task.reviewFeedback)
|
|
1486
|
+
console.log(`reviewFeedback: ${task.reviewFeedback}`);
|
|
1487
|
+
if (task.result)
|
|
1488
|
+
console.log(`result: ${task.result}`);
|
|
1489
|
+
if (task.error)
|
|
1490
|
+
console.log(`error: ${task.error}`);
|
|
1491
|
+
console.log("");
|
|
1492
|
+
console.log(task.prompt);
|
|
1493
|
+
});
|
|
1383
1494
|
taskCmd
|
|
1384
1495
|
.command("assign")
|
|
1385
1496
|
.description("Create a durable task assignment")
|
|
@@ -1898,6 +2009,30 @@ program
|
|
|
1898
2009
|
});
|
|
1899
2010
|
process.exit(code);
|
|
1900
2011
|
});
|
|
2012
|
+
program
|
|
2013
|
+
.command("inbox-popup")
|
|
2014
|
+
.description("Internal tmux popup inbox")
|
|
2015
|
+
.requiredOption("--project-root <path>", "Project root")
|
|
2016
|
+
.requiredOption("--project-state-dir <path>", "Project state dir")
|
|
2017
|
+
.option("--current-client-session <name>", "Current client session")
|
|
2018
|
+
.option("--client-tty <tty>", "Client tty")
|
|
2019
|
+
.option("--current-window <name>", "Current window name")
|
|
2020
|
+
.option("--current-window-id <id>", "Current window id")
|
|
2021
|
+
.option("--current-path <path>", "Current path")
|
|
2022
|
+
.option("--pane-id <id>", "Current pane id")
|
|
2023
|
+
.action(async (opts) => {
|
|
2024
|
+
const code = await runTmuxInboxPopup({
|
|
2025
|
+
projectRoot: pathResolve(opts.projectRoot),
|
|
2026
|
+
projectStateDir: pathResolve(opts.projectStateDir),
|
|
2027
|
+
currentClientSession: opts.currentClientSession,
|
|
2028
|
+
clientTty: opts.clientTty,
|
|
2029
|
+
currentWindow: opts.currentWindow,
|
|
2030
|
+
currentWindowId: opts.currentWindowId,
|
|
2031
|
+
currentPath: opts.currentPath,
|
|
2032
|
+
paneId: opts.paneId,
|
|
2033
|
+
});
|
|
2034
|
+
process.exit(code);
|
|
2035
|
+
});
|
|
1901
2036
|
program
|
|
1902
2037
|
.command("kill <sessionId>")
|
|
1903
2038
|
.description("Send an agent to the graveyard from running or offline state")
|
|
@@ -1987,14 +2122,14 @@ repairCmd
|
|
|
1987
2122
|
.action(async (opts) => {
|
|
1988
2123
|
const projectRoot = resolveProjectRoot(opts.projectRoot);
|
|
1989
2124
|
await initPaths(projectRoot);
|
|
1990
|
-
await
|
|
2125
|
+
await ensureDaemonProjectReady(projectRoot);
|
|
1991
2126
|
const tmux = new TmuxRuntimeManager();
|
|
1992
2127
|
ensureTmuxAvailable(tmux);
|
|
1993
2128
|
const result = repairTmuxRuntime(tmux, { projectRoot });
|
|
1994
2129
|
if (opts.open) {
|
|
1995
2130
|
const { dashboardTarget } = resolveDashboardTarget(projectRoot, tmux);
|
|
1996
2131
|
tmux.openTarget(dashboardTarget, { insideTmux: tmux.isInsideTmux(), alreadyResolved: true });
|
|
1997
|
-
|
|
2132
|
+
exitAfterOpen();
|
|
1998
2133
|
}
|
|
1999
2134
|
if (opts.json) {
|
|
2000
2135
|
console.log(JSON.stringify(result, null, 2));
|