jumbo-cli 3.16.0 → 3.16.1
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/application/agents/AgentInvocation.d.ts +5 -0
- package/dist/application/agents/AgentInvocation.d.ts.map +1 -1
- package/dist/application/context/goals/codify/CodifierProcessManager.d.ts +1 -1
- package/dist/application/context/goals/codify/CodifierProcessManager.d.ts.map +1 -1
- package/dist/application/context/goals/codify/CodifierProcessManager.js +48 -39
- package/dist/application/context/goals/codify/CodifierProcessManager.js.map +1 -1
- package/dist/application/context/goals/refine/RefinerProcessManager.d.ts +1 -1
- package/dist/application/context/goals/refine/RefinerProcessManager.d.ts.map +1 -1
- package/dist/application/context/goals/refine/RefinerProcessManager.js +53 -37
- package/dist/application/context/goals/refine/RefinerProcessManager.js.map +1 -1
- package/dist/application/context/goals/review/ReviewerProcessManager.d.ts +1 -2
- package/dist/application/context/goals/review/ReviewerProcessManager.d.ts.map +1 -1
- package/dist/application/context/goals/review/ReviewerProcessManager.js +54 -57
- package/dist/application/context/goals/review/ReviewerProcessManager.js.map +1 -1
- package/dist/application/daemons/IProcessManager.d.ts +3 -0
- package/dist/application/daemons/IProcessManager.d.ts.map +1 -1
- package/dist/application/daemons/ProcessManagerEventEmitter.d.ts +12 -0
- package/dist/application/daemons/ProcessManagerEventEmitter.d.ts.map +1 -0
- package/dist/application/daemons/ProcessManagerEventEmitter.js +49 -0
- package/dist/application/daemons/ProcessManagerEventEmitter.js.map +1 -0
- package/dist/infrastructure/agents/AgentCliGateway.d.ts +3 -1
- package/dist/infrastructure/agents/AgentCliGateway.d.ts.map +1 -1
- package/dist/infrastructure/agents/AgentCliGateway.js +45 -10
- package/dist/infrastructure/agents/AgentCliGateway.js.map +1 -1
- package/dist/infrastructure/context/project/init/AntigravityConfigurer.d.ts +2 -0
- package/dist/infrastructure/context/project/init/AntigravityConfigurer.d.ts.map +1 -1
- package/dist/infrastructure/context/project/init/AntigravityConfigurer.js +30 -10
- package/dist/infrastructure/context/project/init/AntigravityConfigurer.js.map +1 -1
- package/dist/infrastructure/daemons/NodeWorkerDaemonProcessController.d.ts +2 -0
- package/dist/infrastructure/daemons/NodeWorkerDaemonProcessController.d.ts.map +1 -1
- package/dist/infrastructure/daemons/NodeWorkerDaemonProcessController.js +5 -1
- package/dist/infrastructure/daemons/NodeWorkerDaemonProcessController.js.map +1 -1
- package/dist/presentation/cli/commands/goals/list/GoalListOutputBuilder.js +1 -1
- package/dist/presentation/cli/commands/goals/list/GoalListOutputBuilder.js.map +1 -1
- package/dist/presentation/cli/commands/project/init/project.init.js +1 -1
- package/dist/presentation/cli/commands/project/init/project.init.js.map +1 -1
- package/dist/presentation/tui/cockpit/CockpitDaemonAgentConfigCycler.js +1 -1
- package/dist/presentation/tui/cockpit/CockpitDaemonAgentConfigCycler.js.map +1 -1
- package/dist/presentation/tui/cockpit/CockpitDaemonPanel.d.ts.map +1 -1
- package/dist/presentation/tui/cockpit/CockpitDaemonPanel.js +37 -1
- package/dist/presentation/tui/cockpit/CockpitDaemonPanel.js.map +1 -1
- package/dist/presentation/tui/cockpit/DaemonEventRowMessageFormatter.d.ts.map +1 -1
- package/dist/presentation/tui/cockpit/DaemonEventRowMessageFormatter.js +10 -0
- package/dist/presentation/tui/cockpit/DaemonEventRowMessageFormatter.js.map +1 -1
- package/dist/presentation/tui/cockpit/DaemonEventRows.d.ts.map +1 -1
- package/dist/presentation/tui/cockpit/DaemonEventRows.js +36 -2
- package/dist/presentation/tui/cockpit/DaemonEventRows.js.map +1 -1
- package/dist/presentation/tui/daemon-subprocesses/DaemonEventCategory.d.ts +2 -0
- package/dist/presentation/tui/daemon-subprocesses/DaemonEventCategory.d.ts.map +1 -1
- package/dist/presentation/tui/daemon-subprocesses/DaemonEventCategory.js +2 -0
- package/dist/presentation/tui/daemon-subprocesses/DaemonEventCategory.js.map +1 -1
- package/dist/presentation/tui/daemon-subprocesses/DaemonEventSnapshot.d.ts +3 -0
- package/dist/presentation/tui/daemon-subprocesses/DaemonEventSnapshot.d.ts.map +1 -1
- package/dist/presentation/tui/daemon-subprocesses/DaemonOutputEventParser.d.ts.map +1 -1
- package/dist/presentation/tui/daemon-subprocesses/DaemonOutputEventParser.js +2 -0
- package/dist/presentation/tui/daemon-subprocesses/DaemonOutputEventParser.js.map +1 -1
- package/dist/presentation/tui/daemon-subprocesses/ManagedSubprocess.d.ts +2 -0
- package/dist/presentation/tui/daemon-subprocesses/ManagedSubprocess.d.ts.map +1 -1
- package/dist/presentation/tui/daemon-subprocesses/SubprocessLifecycleEventRecorder.d.ts +2 -0
- package/dist/presentation/tui/daemon-subprocesses/SubprocessLifecycleEventRecorder.d.ts.map +1 -1
- package/dist/presentation/tui/daemon-subprocesses/SubprocessLifecycleEventRecorder.js +49 -1
- package/dist/presentation/tui/daemon-subprocesses/SubprocessLifecycleEventRecorder.js.map +1 -1
- package/dist/presentation/tui/daemon-subprocesses/SubprocessManager.d.ts +3 -0
- package/dist/presentation/tui/daemon-subprocesses/SubprocessManager.d.ts.map +1 -1
- package/dist/presentation/tui/daemon-subprocesses/SubprocessManager.js +61 -1
- package/dist/presentation/tui/daemon-subprocesses/SubprocessManager.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const COCKPIT_DAEMON_AGENT_OPTIONS = ["codex", "claude", "antigravity", "copilot", "
|
|
1
|
+
const COCKPIT_DAEMON_AGENT_OPTIONS = ["codex", "claude", "antigravity", "copilot", "vibe"];
|
|
2
2
|
export function getNextCockpitDaemonAgentConfig(config) {
|
|
3
3
|
const currentIndex = COCKPIT_DAEMON_AGENT_OPTIONS.indexOf(config.agentId);
|
|
4
4
|
const nextIndex = currentIndex === -1
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CockpitDaemonAgentConfigCycler.js","sourceRoot":"","sources":["../../../../src/presentation/tui/cockpit/CockpitDaemonAgentConfigCycler.ts"],"names":[],"mappings":"AAEA,MAAM,4BAA4B,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"CockpitDaemonAgentConfigCycler.js","sourceRoot":"","sources":["../../../../src/presentation/tui/cockpit/CockpitDaemonAgentConfigCycler.ts"],"names":[],"mappings":"AAEA,MAAM,4BAA4B,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,CAAU,CAAC;AAEpG,MAAM,UAAU,+BAA+B,CAAC,MAAoB;IAClE,MAAM,YAAY,GAAG,4BAA4B,CAAC,OAAO,CACvD,MAAM,CAAC,OAAsD,CAC9D,CAAC;IACF,MAAM,SAAS,GAAG,YAAY,KAAK,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;QACH,CAAC,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC,GAAG,4BAA4B,CAAC,MAAM,CAAC;IAE7D,OAAO,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,4BAA4B,CAAC,SAAS,CAAC,EAAE,CAAC;AACzE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CockpitDaemonPanel.d.ts","sourceRoot":"","sources":["../../../../src/presentation/tui/cockpit/CockpitDaemonPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,KAAK,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,8CAA8C,CAAC;AAGrG,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAEtE,wBAAgB,kBAAkB,CAAC,EACjC,eAAe,EACf,QAAQ,EACR,aAAa,EACb,QAAQ,EACR,WAAW,EACX,WAAW,EACX,QAAQ,GACT,EAAE;IACD,QAAQ,CAAC,eAAe,EAAE,gBAAgB,CAAC;IAC3C,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAC;IACtC,QAAQ,CAAC,aAAa,EAAE,YAAY,CAAC;IACrC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CACpC,GAAG,KAAK,CAAC,YAAY,
|
|
1
|
+
{"version":3,"file":"CockpitDaemonPanel.d.ts","sourceRoot":"","sources":["../../../../src/presentation/tui/cockpit/CockpitDaemonPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,KAAK,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,8CAA8C,CAAC;AAGrG,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAEtE,wBAAgB,kBAAkB,CAAC,EACjC,eAAe,EACf,QAAQ,EACR,aAAa,EACb,QAAQ,EACR,WAAW,EACX,WAAW,EACX,QAAQ,GACT,EAAE;IACD,QAAQ,CAAC,eAAe,EAAE,gBAAgB,CAAC;IAC3C,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAC;IACtC,QAAQ,CAAC,aAAa,EAAE,YAAY,CAAC;IACrC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CACpC,GAAG,KAAK,CAAC,YAAY,CA6BrB"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import { Box } from "ink";
|
|
2
|
+
import { Box, Text } from "ink";
|
|
3
3
|
import { BaseColors } from "../../shared/DesignTokens.js";
|
|
4
4
|
import { Panel } from "../ui-primitives/Panel.js";
|
|
5
5
|
import { DaemonActionLine } from "./DaemonActionLine.js";
|
|
@@ -9,6 +9,42 @@ export function CockpitDaemonPanel({ daemonConstants, snapshot, pendingConfig, s
|
|
|
9
9
|
React.createElement(Box, { alignItems: "center", flexDirection: "column" },
|
|
10
10
|
children,
|
|
11
11
|
React.createElement(DaemonActionLine, { snapshot: snapshot, selected: selected, infoVisible: infoVisible }),
|
|
12
|
+
React.createElement(DaemonActivityLine, { snapshot: snapshot }),
|
|
12
13
|
configuring && (React.createElement(DaemonConfigWizard, { snapshot: snapshot, pendingConfig: pendingConfig, selected: selected })))));
|
|
13
14
|
}
|
|
15
|
+
function DaemonActivityLine({ snapshot, }) {
|
|
16
|
+
const latestEvent = snapshot.events[snapshot.events.length - 1];
|
|
17
|
+
const event = [...snapshot.events].reverse().find((candidate) => candidate.category !== "heartbeat" && candidate.category !== "waiting" && candidate.category !== "foraging") ?? latestEvent;
|
|
18
|
+
if (event === undefined) {
|
|
19
|
+
return (React.createElement(Box, { width: "100%", justifyContent: "center" },
|
|
20
|
+
React.createElement(Text, { color: BaseColors.shade5 }, "no recent daemon activity")));
|
|
21
|
+
}
|
|
22
|
+
const parts = [
|
|
23
|
+
event.goalId === undefined ? undefined : shortGoalId(event.goalId),
|
|
24
|
+
event.attempt === undefined && event.maxRetries === undefined
|
|
25
|
+
? undefined
|
|
26
|
+
: `${event.attempt ?? "-"}/${event.maxRetries ?? "-"}`,
|
|
27
|
+
event.phase,
|
|
28
|
+
formatElapsed(latestElapsedMs(event, latestEvent)),
|
|
29
|
+
event.message,
|
|
30
|
+
].filter((part) => part !== undefined && part.trim().length > 0);
|
|
31
|
+
return (React.createElement(Box, { width: "100%", justifyContent: "center" },
|
|
32
|
+
React.createElement(Text, { color: BaseColors.shade4 }, truncateTail(parts.join(" "), 60))));
|
|
33
|
+
}
|
|
34
|
+
function latestElapsedMs(meaningfulEvent, latestEvent) {
|
|
35
|
+
if (latestEvent?.category === "heartbeat" &&
|
|
36
|
+
(latestEvent.goalId === undefined || latestEvent.goalId === meaningfulEvent.goalId)) {
|
|
37
|
+
return latestEvent.elapsedMs ?? meaningfulEvent.elapsedMs;
|
|
38
|
+
}
|
|
39
|
+
return meaningfulEvent.elapsedMs;
|
|
40
|
+
}
|
|
41
|
+
function shortGoalId(goalId) {
|
|
42
|
+
return goalId.length > 8 ? goalId.slice(0, 8) : goalId;
|
|
43
|
+
}
|
|
44
|
+
function formatElapsed(elapsedMs) {
|
|
45
|
+
return elapsedMs === undefined ? undefined : `${Math.max(0, Math.floor(elapsedMs / 1000))}s`;
|
|
46
|
+
}
|
|
47
|
+
function truncateTail(text, max) {
|
|
48
|
+
return text.length <= max ? text : text.slice(0, max - 3) + "...";
|
|
49
|
+
}
|
|
14
50
|
//# sourceMappingURL=CockpitDaemonPanel.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CockpitDaemonPanel.js","sourceRoot":"","sources":["../../../../src/presentation/tui/cockpit/CockpitDaemonPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"CockpitDaemonPanel.js","sourceRoot":"","sources":["../../../../src/presentation/tui/cockpit/CockpitDaemonPanel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DaemonEventRowMessageFormatter.d.ts","sourceRoot":"","sources":["../../../../src/presentation/tui/cockpit/DaemonEventRowMessageFormatter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,8CAA8C,CAAC;AAItD,eAAO,MAAM,8BAA8B;;CAEjC,CAAC;AAEX,iBAAS,MAAM,CACb,QAAQ,EAAE,kBAAkB,EAC5B,KAAK,EAAE,mBAAmB,GACzB,MAAM,
|
|
1
|
+
{"version":3,"file":"DaemonEventRowMessageFormatter.d.ts","sourceRoot":"","sources":["../../../../src/presentation/tui/cockpit/DaemonEventRowMessageFormatter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,8CAA8C,CAAC;AAItD,eAAO,MAAM,8BAA8B;;CAEjC,CAAC;AAEX,iBAAS,MAAM,CACb,QAAQ,EAAE,kBAAkB,EAC5B,KAAK,EAAE,mBAAmB,GACzB,MAAM,CAeR"}
|
|
@@ -9,7 +9,10 @@ function format(snapshot, event) {
|
|
|
9
9
|
: event.message.trim(),
|
|
10
10
|
event.goalId === undefined ? undefined : shortGoalId(event.goalId),
|
|
11
11
|
formatAttemptDetails(event),
|
|
12
|
+
event.phase === undefined ? undefined : `[${event.phase}]`,
|
|
13
|
+
formatElapsed(event.elapsedMs),
|
|
12
14
|
formatExitDetails(event),
|
|
15
|
+
event.errorType,
|
|
13
16
|
event.errorMessage ?? snapshot.stderr[snapshot.stderr.length - 1],
|
|
14
17
|
].filter((part) => part !== undefined && part.length > 0);
|
|
15
18
|
return truncateTail(parts.join(" "), DAEMON_EVENT_MESSAGE_WIDTH);
|
|
@@ -23,6 +26,13 @@ function formatAttemptDetails(event) {
|
|
|
23
26
|
function formatExitDetails(event) {
|
|
24
27
|
return event.exitCode === undefined ? undefined : `exit ${event.exitCode}`;
|
|
25
28
|
}
|
|
29
|
+
function formatElapsed(elapsedMs) {
|
|
30
|
+
if (elapsedMs === undefined) {
|
|
31
|
+
return undefined;
|
|
32
|
+
}
|
|
33
|
+
const seconds = Math.max(0, Math.floor(elapsedMs / 1000));
|
|
34
|
+
return `${seconds}s`;
|
|
35
|
+
}
|
|
26
36
|
function shortGoalId(goalId) {
|
|
27
37
|
if (goalId === undefined) {
|
|
28
38
|
return "-";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DaemonEventRowMessageFormatter.js","sourceRoot":"","sources":["../../../../src/presentation/tui/cockpit/DaemonEventRowMessageFormatter.ts"],"names":[],"mappings":"AAKA,MAAM,0BAA0B,GAAG,EAAE,CAAC;AAEtC,MAAM,CAAC,MAAM,8BAA8B,GAAG;IAC5C,MAAM;CACE,CAAC;AAEX,SAAS,MAAM,CACb,QAA4B,EAC5B,KAA0B;IAE1B,MAAM,KAAK,GAAG;QACZ,KAAK,CAAC,OAAO,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;YAC9D,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE;QACxB,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC;QAClE,oBAAoB,CAAC,KAAK,CAAC;QAC3B,iBAAiB,CAAC,KAAK,CAAC;QACxB,KAAK,CAAC,YAAY,IAAI,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;KAClE,CAAC,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAE1E,OAAO,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,0BAA0B,CAAC,CAAC;AACnE,CAAC;AAED,SAAS,oBAAoB,CAAC,KAA0B;IACtD,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QAClE,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,GAAG,IAAI,KAAK,CAAC,UAAU,IAAI,GAAG,EAAE,CAAC;AAC9D,CAAC;AAED,SAAS,iBAAiB,CAAC,KAA0B;IACnD,OAAO,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,QAAQ,EAAE,CAAC;AAC7E,CAAC;AAED,SAAS,WAAW,CAAC,MAA0B;IAC7C,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,GAAG,CAAC;IACb,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AACzD,CAAC;AAED,SAAS,YAAY,CAAC,IAAY,EAAE,GAAW;IAC7C,OAAO,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;AACpE,CAAC"}
|
|
1
|
+
{"version":3,"file":"DaemonEventRowMessageFormatter.js","sourceRoot":"","sources":["../../../../src/presentation/tui/cockpit/DaemonEventRowMessageFormatter.ts"],"names":[],"mappings":"AAKA,MAAM,0BAA0B,GAAG,EAAE,CAAC;AAEtC,MAAM,CAAC,MAAM,8BAA8B,GAAG;IAC5C,MAAM;CACE,CAAC;AAEX,SAAS,MAAM,CACb,QAA4B,EAC5B,KAA0B;IAE1B,MAAM,KAAK,GAAG;QACZ,KAAK,CAAC,OAAO,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;YAC9D,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE;QACxB,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC;QAClE,oBAAoB,CAAC,KAAK,CAAC;QAC3B,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,KAAK,GAAG;QAC1D,aAAa,CAAC,KAAK,CAAC,SAAS,CAAC;QAC9B,iBAAiB,CAAC,KAAK,CAAC;QACxB,KAAK,CAAC,SAAS;QACf,KAAK,CAAC,YAAY,IAAI,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;KAClE,CAAC,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAE1E,OAAO,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,0BAA0B,CAAC,CAAC;AACnE,CAAC;AAED,SAAS,oBAAoB,CAAC,KAA0B;IACtD,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QAClE,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,GAAG,IAAI,KAAK,CAAC,UAAU,IAAI,GAAG,EAAE,CAAC;AAC9D,CAAC;AAED,SAAS,iBAAiB,CAAC,KAA0B;IACnD,OAAO,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,QAAQ,EAAE,CAAC;AAC7E,CAAC;AAED,SAAS,aAAa,CAAC,SAA6B;IAClD,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC;IAC1D,OAAO,GAAG,OAAO,GAAG,CAAC;AACvB,CAAC;AAED,SAAS,WAAW,CAAC,MAA0B;IAC7C,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,GAAG,CAAC;IACb,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AACzD,CAAC;AAED,SAAS,YAAY,CAAC,IAAY,EAAE,GAAW;IAC7C,OAAO,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;AACpE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DaemonEventRows.d.ts","sourceRoot":"","sources":["../../../../src/presentation/tui/cockpit/DaemonEventRows.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8CAA8C,CAAC;AACvF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"DaemonEventRows.d.ts","sourceRoot":"","sources":["../../../../src/presentation/tui/cockpit/DaemonEventRows.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8CAA8C,CAAC;AACvF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAW1D,eAAO,MAAM,eAAe;;;CAGlB,CAAC;AAEX,iBAAS,aAAa,CACpB,SAAS,EAAE,SAAS,kBAAkB,EAAE,EACxC,YAAY,EAAE,MAAM,GACnB,SAAS,cAAc,EAAE,CAM3B;AAED,iBAAS,MAAM,CACb,WAAW,EAAE,SAAS,cAAc,EAAE,EACtC,QAAQ,EAAE,SAAS,cAAc,EAAE,GAClC,SAAS,cAAc,EAAE,CAS3B"}
|
|
@@ -1,12 +1,18 @@
|
|
|
1
1
|
import { DaemonEventRowNormalizer } from "./DaemonEventRowNormalizer.js";
|
|
2
2
|
const RENDERED_DAEMON_EVENT_LIMIT = 10;
|
|
3
|
+
const TERMINAL_ROW_CATEGORIES = new Set([
|
|
4
|
+
"completed",
|
|
5
|
+
"failed",
|
|
6
|
+
"exhausted",
|
|
7
|
+
"stopped",
|
|
8
|
+
]);
|
|
3
9
|
export const DaemonEventRows = {
|
|
4
10
|
append,
|
|
5
11
|
fromSnapshots,
|
|
6
12
|
};
|
|
7
13
|
function fromSnapshots(snapshots, observedAtMs) {
|
|
8
14
|
const rows = snapshots.flatMap((snapshot) => DaemonEventRowNormalizer.fromSnapshot(snapshot, observedAtMs));
|
|
9
|
-
return newestFirst(rows)
|
|
15
|
+
return trimRows(newestFirst(rows));
|
|
10
16
|
}
|
|
11
17
|
function append(currentRows, nextRows) {
|
|
12
18
|
const currentKeys = new Set(currentRows.map((row) => row.key));
|
|
@@ -14,9 +20,37 @@ function append(currentRows, nextRows) {
|
|
|
14
20
|
if (appendedRows.length === 0) {
|
|
15
21
|
return currentRows;
|
|
16
22
|
}
|
|
17
|
-
return newestFirst([...currentRows, ...appendedRows])
|
|
23
|
+
return trimRows(newestFirst([...currentRows, ...appendedRows]));
|
|
18
24
|
}
|
|
19
25
|
function newestFirst(rows) {
|
|
20
26
|
return [...rows].sort((left, right) => right.timestampMs - left.timestampMs);
|
|
21
27
|
}
|
|
28
|
+
function trimRows(rows) {
|
|
29
|
+
if (rows.length <= RENDERED_DAEMON_EVENT_LIMIT) {
|
|
30
|
+
return rows;
|
|
31
|
+
}
|
|
32
|
+
const selected = rows.slice(0, RENDERED_DAEMON_EVENT_LIMIT);
|
|
33
|
+
for (const terminalRow of rows.filter(isTerminalRow)) {
|
|
34
|
+
if (selected.some((row) => row.key === terminalRow.key)) {
|
|
35
|
+
continue;
|
|
36
|
+
}
|
|
37
|
+
const replaceIndex = findOldestNonTerminalIndex(selected);
|
|
38
|
+
if (replaceIndex === -1) {
|
|
39
|
+
break;
|
|
40
|
+
}
|
|
41
|
+
selected[replaceIndex] = terminalRow;
|
|
42
|
+
}
|
|
43
|
+
return newestFirst(selected);
|
|
44
|
+
}
|
|
45
|
+
function findOldestNonTerminalIndex(rows) {
|
|
46
|
+
for (let index = rows.length - 1; index >= 0; index--) {
|
|
47
|
+
if (!isTerminalRow(rows[index])) {
|
|
48
|
+
return index;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return -1;
|
|
52
|
+
}
|
|
53
|
+
function isTerminalRow(row) {
|
|
54
|
+
return TERMINAL_ROW_CATEGORIES.has(row.category);
|
|
55
|
+
}
|
|
22
56
|
//# sourceMappingURL=DaemonEventRows.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DaemonEventRows.js","sourceRoot":"","sources":["../../../../src/presentation/tui/cockpit/DaemonEventRows.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAEzE,MAAM,2BAA2B,GAAG,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"DaemonEventRows.js","sourceRoot":"","sources":["../../../../src/presentation/tui/cockpit/DaemonEventRows.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAEzE,MAAM,2BAA2B,GAAG,EAAE,CAAC;AACvC,MAAM,uBAAuB,GAAG,IAAI,GAAG,CAAC;IACtC,WAAW;IACX,QAAQ;IACR,WAAW;IACX,SAAS;CACV,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,MAAM;IACN,aAAa;CACL,CAAC;AAEX,SAAS,aAAa,CACpB,SAAwC,EACxC,YAAoB;IAEpB,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAC1C,wBAAwB,CAAC,YAAY,CAAC,QAAQ,EAAE,YAAY,CAAC,CAC9D,CAAC;IAEF,OAAO,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;AACrC,CAAC;AAED,SAAS,MAAM,CACb,WAAsC,EACtC,QAAmC;IAEnC,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/D,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IAEzE,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,OAAO,QAAQ,CAAC,WAAW,CAAC,CAAC,GAAG,WAAW,EAAE,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;AAClE,CAAC;AAED,SAAS,WAAW,CAAC,IAA+B;IAClD,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC;AAC/E,CAAC;AAED,SAAS,QAAQ,CAAC,IAA+B;IAC/C,IAAI,IAAI,CAAC,MAAM,IAAI,2BAA2B,EAAE,CAAC;QAC/C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,2BAA2B,CAAC,CAAC;IAC5D,KAAK,MAAM,WAAW,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;QACrD,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;YACxD,SAAS;QACX,CAAC;QAED,MAAM,YAAY,GAAG,0BAA0B,CAAC,QAAQ,CAAC,CAAC;QAC1D,IAAI,YAAY,KAAK,CAAC,CAAC,EAAE,CAAC;YACxB,MAAM;QACR,CAAC;QACD,QAAQ,CAAC,YAAY,CAAC,GAAG,WAAW,CAAC;IACvC,CAAC;IAED,OAAO,WAAW,CAAC,QAAQ,CAAC,CAAC;AAC/B,CAAC;AAED,SAAS,0BAA0B,CAAC,IAA+B;IACjE,KAAK,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;QACtD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YAChC,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,OAAO,CAAC,CAAC,CAAC;AACZ,CAAC;AAED,SAAS,aAAa,CAAC,GAAmB;IACxC,OAAO,uBAAuB,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AACnD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DaemonEventCategory.d.ts","sourceRoot":"","sources":["../../../../src/presentation/tui/daemon-subprocesses/DaemonEventCategory.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,mBAAmB
|
|
1
|
+
{"version":3,"file":"DaemonEventCategory.d.ts","sourceRoot":"","sources":["../../../../src/presentation/tui/daemon-subprocesses/DaemonEventCategory.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,mBAAmB;;;;;;;CAOtB,CAAC"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { DaemonEventStatus } from "./DaemonEventStatus.js";
|
|
2
2
|
export const DaemonEventCategory = {
|
|
3
3
|
MODEL_OUTPUT: "model-output",
|
|
4
|
+
STDERR: "stderr",
|
|
5
|
+
HEARTBEAT: "heartbeat",
|
|
4
6
|
STOPPING: DaemonEventStatus.STOPPING,
|
|
5
7
|
STOPPED: DaemonEventStatus.STOPPED,
|
|
6
8
|
FAILED: DaemonEventStatus.FAILED,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DaemonEventCategory.js","sourceRoot":"","sources":["../../../../src/presentation/tui/daemon-subprocesses/DaemonEventCategory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,YAAY,EAAE,cAAc;IAC5B,QAAQ,EAAE,iBAAiB,CAAC,QAAQ;IACpC,OAAO,EAAE,iBAAiB,CAAC,OAAO;IAClC,MAAM,EAAE,iBAAiB,CAAC,MAAM;CACxB,CAAC"}
|
|
1
|
+
{"version":3,"file":"DaemonEventCategory.js","sourceRoot":"","sources":["../../../../src/presentation/tui/daemon-subprocesses/DaemonEventCategory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,YAAY,EAAE,cAAc;IAC5B,MAAM,EAAE,QAAQ;IAChB,SAAS,EAAE,WAAW;IACtB,QAAQ,EAAE,iBAAiB,CAAC,QAAQ;IACpC,OAAO,EAAE,iBAAiB,CAAC,OAAO;IAClC,MAAM,EAAE,iBAAiB,CAAC,MAAM;CACxB,CAAC"}
|
|
@@ -6,10 +6,13 @@ export interface DaemonEventSnapshot {
|
|
|
6
6
|
readonly category?: string;
|
|
7
7
|
readonly message?: string;
|
|
8
8
|
readonly timestampMs?: number;
|
|
9
|
+
readonly phase?: string;
|
|
10
|
+
readonly elapsedMs?: number;
|
|
9
11
|
readonly goalId?: string;
|
|
10
12
|
readonly attempt?: number;
|
|
11
13
|
readonly maxRetries?: number;
|
|
12
14
|
readonly exitCode?: number;
|
|
15
|
+
readonly errorType?: string;
|
|
13
16
|
readonly errorMessage?: string;
|
|
14
17
|
}
|
|
15
18
|
//# sourceMappingURL=DaemonEventSnapshot.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DaemonEventSnapshot.d.ts","sourceRoot":"","sources":["../../../../src/presentation/tui/daemon-subprocesses/DaemonEventSnapshot.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EACvB,MAAM,wBAAwB,CAAC;AAEhC,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,sBAAsB,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;IACxD,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;CAChC"}
|
|
1
|
+
{"version":3,"file":"DaemonEventSnapshot.d.ts","sourceRoot":"","sources":["../../../../src/presentation/tui/daemon-subprocesses/DaemonEventSnapshot.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EACvB,MAAM,wBAAwB,CAAC;AAEhC,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,sBAAsB,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;IACxD,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;CAChC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DaemonOutputEventParser.d.ts","sourceRoot":"","sources":["../../../../src/presentation/tui/daemon-subprocesses/DaemonOutputEventParser.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAEpE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAIlD,qBAAa,uBAAuB;IAClC,eAAe,CACb,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,MAAM,GACX,mBAAmB;IAiBtB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAIrC,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS;IAIrE,UAAU,CAAC,KAAK,EAAE,mBAAmB,GAAG,mBAAmB;
|
|
1
|
+
{"version":3,"file":"DaemonOutputEventParser.d.ts","sourceRoot":"","sources":["../../../../src/presentation/tui/daemon-subprocesses/DaemonOutputEventParser.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAEpE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAIlD,qBAAa,uBAAuB;IAClC,eAAe,CACb,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,MAAM,GACX,mBAAmB;IAiBtB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAIrC,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS;IAIrE,UAAU,CAAC,KAAK,EAAE,mBAAmB,GAAG,mBAAmB;IAe3D,OAAO,CAAC,oBAAoB;IAe5B,OAAO,CAAC,aAAa;CAKtB"}
|
|
@@ -30,7 +30,9 @@ export class DaemonOutputEventParser {
|
|
|
30
30
|
source: this.boundOptionalTextField(event.source),
|
|
31
31
|
category: this.boundOptionalTextField(event.category),
|
|
32
32
|
message: this.boundOptionalTextField(event.message),
|
|
33
|
+
phase: this.boundOptionalTextField(event.phase),
|
|
33
34
|
goalId: this.boundOptionalTextField(event.goalId),
|
|
35
|
+
errorType: this.boundOptionalTextField(event.errorType),
|
|
34
36
|
errorMessage: this.boundOptionalTextField(event.errorMessage),
|
|
35
37
|
};
|
|
36
38
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DaemonOutputEventParser.js","sourceRoot":"","sources":["../../../../src/presentation/tui/daemon-subprocesses/DaemonOutputEventParser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAG3D,MAAM,2BAA2B,GAAG,IAAK,CAAC;AAE1C,MAAM,OAAO,uBAAuB;IAClC,eAAe,CACb,MAAkB,EAClB,IAAY;QAEZ,MAAM,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;QAEpD,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QACtC,CAAC;QAED,OAAO;YACL,MAAM;YACN,MAAM,EAAE,iBAAiB,CAAC,UAAU;YACpC,MAAM,EAAE,MAAM;YACd,QAAQ,EAAE,mBAAmB,CAAC,YAAY;YAC1C,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;YACjC,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE;SACxB,CAAC;IACJ,CAAC;IAED,cAAc,CAAC,KAAa;QAC1B,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;IAED,sBAAsB,CAAC,KAAyB;QAC9C,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACrE,CAAC;IAED,UAAU,CAAC,KAA0B;QACnC,OAAO;YACL,GAAG,KAAK;YACR,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC;YACxC,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC;YACxC,MAAM,EAAE,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,MAAM,CAAC;YACjD,QAAQ,EAAE,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,QAAQ,CAAC;YACrD,OAAO,EAAE,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,OAAO,CAAC;YACnD,MAAM,EAAE,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,MAAM,CAAC;YACjD,YAAY,EAAE,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,YAAY,CAAC;SAC9D,CAAC;IACJ,CAAC;IAEO,oBAAoB,CAAC,IAAY;QACvC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAwB,CAAC;YACvD,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;gBAC3E,OAAO,IAAI,CAAC;YACd,CAAC;YACD,OAAO;gBACL,GAAG,MAAM;gBACT,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,IAAI,CAAC,GAAG,EAAE;aAC9C,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAEO,aAAa,CAAC,KAAa;QACjC,OAAO,KAAK,CAAC,MAAM,GAAG,2BAA2B;YAC/C,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,2BAA2B,CAAC;YAC3C,CAAC,CAAC,KAAK,CAAC;IACZ,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"DaemonOutputEventParser.js","sourceRoot":"","sources":["../../../../src/presentation/tui/daemon-subprocesses/DaemonOutputEventParser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAG3D,MAAM,2BAA2B,GAAG,IAAK,CAAC;AAE1C,MAAM,OAAO,uBAAuB;IAClC,eAAe,CACb,MAAkB,EAClB,IAAY;QAEZ,MAAM,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;QAEpD,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QACtC,CAAC;QAED,OAAO;YACL,MAAM;YACN,MAAM,EAAE,iBAAiB,CAAC,UAAU;YACpC,MAAM,EAAE,MAAM;YACd,QAAQ,EAAE,mBAAmB,CAAC,YAAY;YAC1C,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;YACjC,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE;SACxB,CAAC;IACJ,CAAC;IAED,cAAc,CAAC,KAAa;QAC1B,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;IAED,sBAAsB,CAAC,KAAyB;QAC9C,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACrE,CAAC;IAED,UAAU,CAAC,KAA0B;QACnC,OAAO;YACL,GAAG,KAAK;YACR,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC;YACxC,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC;YACxC,MAAM,EAAE,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,MAAM,CAAC;YACjD,QAAQ,EAAE,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,QAAQ,CAAC;YACrD,OAAO,EAAE,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,OAAO,CAAC;YACnD,KAAK,EAAE,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,KAAK,CAAC;YAC/C,MAAM,EAAE,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,MAAM,CAAC;YACjD,SAAS,EAAE,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,SAAS,CAAC;YACvD,YAAY,EAAE,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,YAAY,CAAC;SAC9D,CAAC;IACJ,CAAC;IAEO,oBAAoB,CAAC,IAAY;QACvC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAwB,CAAC;YACvD,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;gBAC3E,OAAO,IAAI,CAAC;YACd,CAAC;YACD,OAAO;gBACL,GAAG,MAAM;gBACT,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,IAAI,CAAC,GAAG,EAAE;aAC9C,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAEO,aAAa,CAAC,KAAa;QACjC,OAAO,KAAK,CAAC,MAAM,GAAG,2BAA2B;YAC/C,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,2BAA2B,CAAC;YAC3C,CAAC,CAAC,KAAK,CAAC;IACZ,CAAC;CACF"}
|
|
@@ -11,11 +11,13 @@ export interface ManagedSubprocess {
|
|
|
11
11
|
readonly stdout: string[];
|
|
12
12
|
readonly stderr: string[];
|
|
13
13
|
readonly events: DaemonEventSnapshot[];
|
|
14
|
+
readonly startedAtMs: number;
|
|
14
15
|
status: SubprocessStatusValue;
|
|
15
16
|
exitCode?: number | null;
|
|
16
17
|
exitSignal?: string | null;
|
|
17
18
|
stopRequested: boolean;
|
|
18
19
|
terminationTimedOut: boolean;
|
|
19
20
|
termination?: Promise<SubprocessSnapshot>;
|
|
21
|
+
heartbeatTimer?: ReturnType<typeof setInterval>;
|
|
20
22
|
}
|
|
21
23
|
//# sourceMappingURL=ManagedSubprocess.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ManagedSubprocess.d.ts","sourceRoot":"","sources":["../../../../src/presentation/tui/daemon-subprocesses/ManagedSubprocess.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gEAAgE,CAAC;AAC1G,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAEnE,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAC;IACpC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,mBAAmB,EAAE,CAAC;IACvC,MAAM,EAAE,qBAAqB,CAAC;IAC9B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,aAAa,EAAE,OAAO,CAAC;IACvB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,WAAW,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"ManagedSubprocess.d.ts","sourceRoot":"","sources":["../../../../src/presentation/tui/daemon-subprocesses/ManagedSubprocess.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gEAAgE,CAAC;AAC1G,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAEnE,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAC;IACpC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,mBAAmB,EAAE,CAAC;IACvC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,MAAM,EAAE,qBAAqB,CAAC;IAC9B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,aAAa,EAAE,OAAO,CAAC;IACvB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,WAAW,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC1C,cAAc,CAAC,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC;CACjD"}
|
|
@@ -13,5 +13,7 @@ export declare class SubprocessLifecycleEventRecorder {
|
|
|
13
13
|
recordDaemonEvent(process: ManagedSubprocess, event: DaemonEventSnapshot): void;
|
|
14
14
|
boundErrorForLog(error: unknown): unknown;
|
|
15
15
|
private recordLifecycleEvent;
|
|
16
|
+
private findCoalescedEventIndex;
|
|
17
|
+
private findOldestRemovableEventIndex;
|
|
16
18
|
}
|
|
17
19
|
//# sourceMappingURL=SubprocessLifecycleEventRecorder.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SubprocessLifecycleEventRecorder.d.ts","sourceRoot":"","sources":["../../../../src/presentation/tui/daemon-subprocesses/SubprocessLifecycleEventRecorder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yCAAyC,CAAC;AACvE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAEhE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAIpE,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"SubprocessLifecycleEventRecorder.d.ts","sourceRoot":"","sources":["../../../../src/presentation/tui/daemon-subprocesses/SubprocessLifecycleEventRecorder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yCAAyC,CAAC;AACvE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAEhE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAIpE,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AA+BvE,qBAAa,gCAAgC;IAEzC,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,iBAAiB;gBADjB,MAAM,EAAE,OAAO,EACf,iBAAiB,0BAAgC;IAGpE,cAAc,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI;IAOhD,aAAa,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI;IAO/C,YAAY,CAAC,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI;IAQpE,mBAAmB,CACjB,OAAO,EAAE,iBAAiB,EAC1B,YAAY,SAA4C,GACvD,IAAI;IAYP,iBAAiB,CACf,OAAO,EAAE,iBAAiB,EAC1B,KAAK,EAAE,mBAAmB,GACzB,IAAI;IAcP,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;IAWzC,OAAO,CAAC,oBAAoB;IAiB5B,OAAO,CAAC,uBAAuB;IA2B/B,OAAO,CAAC,6BAA6B;CAYtC"}
|
|
@@ -4,6 +4,18 @@ import { SubprocessCopy } from "./SubprocessCopy.js";
|
|
|
4
4
|
import { SubprocessStatus } from "./SubprocessStatus.js";
|
|
5
5
|
import { DaemonOutputEventParser } from "./DaemonOutputEventParser.js";
|
|
6
6
|
const EVENT_RING_BUFFER_SIZE = 50;
|
|
7
|
+
const COALESCED_EVENT_CATEGORIES = new Set([
|
|
8
|
+
"foraging",
|
|
9
|
+
"waiting",
|
|
10
|
+
"polling",
|
|
11
|
+
"heartbeat",
|
|
12
|
+
]);
|
|
13
|
+
const RETAINED_OUTCOME_CATEGORIES = new Set([
|
|
14
|
+
"completed",
|
|
15
|
+
"failed",
|
|
16
|
+
"exhausted",
|
|
17
|
+
"stopped",
|
|
18
|
+
]);
|
|
7
19
|
const SUBPROCESS_EVENT_COPY = {
|
|
8
20
|
stopping: {
|
|
9
21
|
category: DaemonEventCategory.STOPPING,
|
|
@@ -56,9 +68,14 @@ export class SubprocessLifecycleEventRecorder {
|
|
|
56
68
|
recordDaemonEvent(process, event) {
|
|
57
69
|
const boundedEvent = this.outputEventParser.boundEvent(event);
|
|
58
70
|
this.logger.info(SubprocessCopy.eventLog, { daemon: process.name, event: boundedEvent });
|
|
71
|
+
const coalescedIndex = this.findCoalescedEventIndex(process, boundedEvent);
|
|
72
|
+
if (coalescedIndex !== -1) {
|
|
73
|
+
process.events.splice(coalescedIndex, 1);
|
|
74
|
+
}
|
|
59
75
|
process.events.push(boundedEvent);
|
|
60
76
|
while (process.events.length > EVENT_RING_BUFFER_SIZE) {
|
|
61
|
-
process.events
|
|
77
|
+
const removableIndex = this.findOldestRemovableEventIndex(process.events);
|
|
78
|
+
process.events.splice(removableIndex, 1);
|
|
62
79
|
}
|
|
63
80
|
}
|
|
64
81
|
boundErrorForLog(error) {
|
|
@@ -82,5 +99,36 @@ export class SubprocessLifecycleEventRecorder {
|
|
|
82
99
|
...event,
|
|
83
100
|
});
|
|
84
101
|
}
|
|
102
|
+
findCoalescedEventIndex(process, event) {
|
|
103
|
+
if (event.category === undefined || !COALESCED_EVENT_CATEGORIES.has(event.category)) {
|
|
104
|
+
return -1;
|
|
105
|
+
}
|
|
106
|
+
for (let index = process.events.length - 1; index >= 0; index--) {
|
|
107
|
+
const candidate = process.events[index];
|
|
108
|
+
if (candidate.category === undefined || !COALESCED_EVENT_CATEGORIES.has(candidate.category)) {
|
|
109
|
+
return -1;
|
|
110
|
+
}
|
|
111
|
+
if (candidate.source === event.source &&
|
|
112
|
+
candidate.status === event.status &&
|
|
113
|
+
candidate.category === event.category &&
|
|
114
|
+
candidate.message === event.message &&
|
|
115
|
+
candidate.goalId === event.goalId) {
|
|
116
|
+
return index;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
return -1;
|
|
120
|
+
}
|
|
121
|
+
findOldestRemovableEventIndex(events) {
|
|
122
|
+
let retainedOutcomeIndex = -1;
|
|
123
|
+
for (let index = events.length - 1; index >= 0; index--) {
|
|
124
|
+
const category = events[index].category;
|
|
125
|
+
if (category !== undefined && RETAINED_OUTCOME_CATEGORIES.has(category)) {
|
|
126
|
+
retainedOutcomeIndex = index;
|
|
127
|
+
break;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
const removableIndex = events.findIndex((_event, index) => index !== retainedOutcomeIndex);
|
|
131
|
+
return removableIndex === -1 ? 0 : removableIndex;
|
|
132
|
+
}
|
|
85
133
|
}
|
|
86
134
|
//# sourceMappingURL=SubprocessLifecycleEventRecorder.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SubprocessLifecycleEventRecorder.js","sourceRoot":"","sources":["../../../../src/presentation/tui/daemon-subprocesses/SubprocessLifecycleEventRecorder.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAEvE,MAAM,sBAAsB,GAAG,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"SubprocessLifecycleEventRecorder.js","sourceRoot":"","sources":["../../../../src/presentation/tui/daemon-subprocesses/SubprocessLifecycleEventRecorder.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAEvE,MAAM,sBAAsB,GAAG,EAAE,CAAC;AAClC,MAAM,0BAA0B,GAAG,IAAI,GAAG,CAAC;IACzC,UAAU;IACV,SAAS;IACT,SAAS;IACT,WAAW;CACZ,CAAC,CAAC;AACH,MAAM,2BAA2B,GAAG,IAAI,GAAG,CAAC;IAC1C,WAAW;IACX,QAAQ;IACR,WAAW;IACX,SAAS;CACV,CAAC,CAAC;AAEH,MAAM,qBAAqB,GAAG;IAC5B,QAAQ,EAAE;QACR,QAAQ,EAAE,mBAAmB,CAAC,QAAQ;QACtC,OAAO,EAAE,cAAc,CAAC,oBAAoB;KAC7C;IACD,OAAO,EAAE;QACP,QAAQ,EAAE,mBAAmB,CAAC,OAAO;QACrC,OAAO,EAAE,cAAc,CAAC,cAAc;KACvC;IACD,MAAM,EAAE;QACN,QAAQ,EAAE,mBAAmB,CAAC,MAAM;QACpC,OAAO,EAAE,cAAc,CAAC,aAAa;KACtC;CACO,CAAC;AAEX,MAAM,OAAO,gCAAgC;IAC3C,YACmB,MAAe,EACf,oBAAoB,IAAI,uBAAuB,EAAE;QADjD,WAAM,GAAN,MAAM,CAAS;QACf,sBAAiB,GAAjB,iBAAiB,CAAgC;IACjE,CAAC;IAEJ,cAAc,CAAC,OAA0B;QACvC,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE;YACjC,MAAM,EAAE,iBAAiB,CAAC,QAAQ;YAClC,GAAG,qBAAqB,CAAC,QAAQ;SAClC,CAAC,CAAC;IACL,CAAC;IAED,aAAa,CAAC,OAA0B;QACtC,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE;YACjC,MAAM,EAAE,iBAAiB,CAAC,OAAO;YACjC,GAAG,qBAAqB,CAAC,OAAO;SACjC,CAAC,CAAC;IACL,CAAC;IAED,YAAY,CAAC,OAA0B,EAAE,YAAoB;QAC3D,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE;YACjC,MAAM,EAAE,iBAAiB,CAAC,MAAM;YAChC,YAAY;YACZ,GAAG,qBAAqB,CAAC,MAAM;SAChC,CAAC,CAAC;IACL,CAAC;IAED,mBAAmB,CACjB,OAA0B,EAC1B,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;QAExD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,KAAK,gBAAgB,CAAC,OAAO;YACxD,CAAC,CAAC,iBAAiB,CAAC,OAAO;YAC3B,CAAC,CAAC,iBAAiB,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE;YACjC,MAAM;YACN,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,SAAS;YACvC,YAAY,EAAE,MAAM,KAAK,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS;YAC5E,GAAG,CAAC,MAAM,KAAK,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC,qBAAqB,CAAC,MAAM,CAAC;SACzG,CAAC,CAAC;IACL,CAAC;IAED,iBAAiB,CACf,OAA0B,EAC1B,KAA0B;QAE1B,MAAM,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAC9D,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;QACzF,MAAM,cAAc,GAAG,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QAC3E,IAAI,cAAc,KAAK,CAAC,CAAC,EAAE,CAAC;YAC1B,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;QAC3C,CAAC;QACD,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAClC,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,sBAAsB,EAAE,CAAC;YACtD,MAAM,cAAc,GAAG,IAAI,CAAC,6BAA6B,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC1E,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IAED,gBAAgB,CAAC,KAAc;QAC7B,IAAI,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QAChF,OAAO,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;QAC1B,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,sBAAsB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC3E,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,oBAAoB,CAC1B,OAA0B,EAC1B,KAAqE;QAErE,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC5D,IAAI,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,IAAI,SAAS,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,EAAE,CAAC;YAC5E,OAAO;QACT,CAAC;QAED,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE;YAC9B,MAAM,EAAE,OAAO,CAAC,IAAI;YACpB,MAAM,EAAE,OAAO,CAAC,IAAI;YACpB,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE;YACvB,GAAG,KAAK;SACT,CAAC,CAAC;IACL,CAAC;IAEO,uBAAuB,CAC7B,OAA0B,EAC1B,KAA0B;QAE1B,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;YACpF,OAAO,CAAC,CAAC,CAAC;QACZ,CAAC;QAED,KAAK,IAAI,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;YAChE,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACxC,IAAI,SAAS,CAAC,QAAQ,KAAK,SAAS,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC5F,OAAO,CAAC,CAAC,CAAC;YACZ,CAAC;YACD,IACE,SAAS,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;gBACjC,SAAS,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;gBACjC,SAAS,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ;gBACrC,SAAS,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO;gBACnC,SAAS,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,EACjC,CAAC;gBACD,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QAED,OAAO,CAAC,CAAC,CAAC;IACZ,CAAC;IAEO,6BAA6B,CAAC,MAAsC;QAC1E,IAAI,oBAAoB,GAAG,CAAC,CAAC,CAAC;QAC9B,KAAK,IAAI,KAAK,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;YACxD,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC;YACxC,IAAI,QAAQ,KAAK,SAAS,IAAI,2BAA2B,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACxE,oBAAoB,GAAG,KAAK,CAAC;gBAC7B,MAAM;YACR,CAAC;QACH,CAAC;QACD,MAAM,cAAc,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,oBAAoB,CAAC,CAAC;QAC3F,OAAO,cAAc,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC;IACpD,CAAC;CACF"}
|
|
@@ -23,5 +23,8 @@ export declare class SubprocessManager implements ISubprocessManager {
|
|
|
23
23
|
private resolveClosedStatus;
|
|
24
24
|
private applyTerminationResult;
|
|
25
25
|
private recordTerminationTimeout;
|
|
26
|
+
private startHeartbeat;
|
|
27
|
+
private stopHeartbeat;
|
|
28
|
+
private resolveHeartbeatElapsedMs;
|
|
26
29
|
}
|
|
27
30
|
//# sourceMappingURL=SubprocessManager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SubprocessManager.d.ts","sourceRoot":"","sources":["../../../../src/presentation/tui/daemon-subprocesses/SubprocessManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yCAAyC,CAAC;AACvE,OAAO,KAAK,EACV,8BAA8B,EAE/B,MAAM,gEAAgE,CAAC;AAIxE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAElE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"SubprocessManager.d.ts","sourceRoot":"","sources":["../../../../src/presentation/tui/daemon-subprocesses/SubprocessManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yCAAyC,CAAC;AACvE,OAAO,KAAK,EACV,8BAA8B,EAE/B,MAAM,gEAAgE,CAAC;AAIxE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAElE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAelE,qBAAa,iBAAkB,YAAW,kBAAkB;IASxD,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM;IATzB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA4C;IACtE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAkC;IACjE,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAoC;IACrE,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAiC;IACnE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAkC;IACjE,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAmC;gBAGvD,iBAAiB,EAAE,8BAA8B,EACjD,MAAM,GAAE,OAA8B;IAQnD,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,GAAE,OAAO,CAAC,YAAY,CAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IA+FxF,SAAS,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAaxD,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAInC,SAAS,CAAC,IAAI,EAAE,UAAU,GAAG,kBAAkB;IAS/C,cAAc,IAAI,SAAS,kBAAkB,EAAE;YAIjC,0BAA0B;IAmCxC,OAAO,CAAC,mBAAmB;IAe3B,OAAO,CAAC,sBAAsB;IA8B9B,OAAO,CAAC,wBAAwB;IAsBhC,OAAO,CAAC,cAAc;IAmCtB,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,yBAAyB;CAWlC"}
|
|
@@ -7,6 +7,7 @@ import { SubprocessLifecycleEventRecorder } from "./SubprocessLifecycleEventReco
|
|
|
7
7
|
import { SubprocessNoOpLogger } from "./SubprocessNoOpLogger.js";
|
|
8
8
|
import { SubprocessOutputRingBuffer } from "./SubprocessOutputRingBuffer.js";
|
|
9
9
|
import { SubprocessSnapshotMapper } from "./SubprocessSnapshotMapper.js";
|
|
10
|
+
const DAEMON_HEARTBEAT_INTERVAL_MS = 5000;
|
|
10
11
|
export class SubprocessManager {
|
|
11
12
|
constructor(processController, logger = SubprocessNoOpLogger) {
|
|
12
13
|
this.processController = processController;
|
|
@@ -37,6 +38,7 @@ export class SubprocessManager {
|
|
|
37
38
|
stdout: [],
|
|
38
39
|
stderr: [],
|
|
39
40
|
events: [],
|
|
41
|
+
startedAtMs: Date.now(),
|
|
40
42
|
status: SubprocessStatus.RUNNING,
|
|
41
43
|
stopRequested: false,
|
|
42
44
|
terminationTimedOut: false,
|
|
@@ -46,6 +48,7 @@ export class SubprocessManager {
|
|
|
46
48
|
daemon: name,
|
|
47
49
|
pid: child.pid,
|
|
48
50
|
});
|
|
51
|
+
this.startHeartbeat(managed);
|
|
49
52
|
child.stdout?.on("data", (chunk) => {
|
|
50
53
|
const text = this.outputRingBuffer.limitChunk(chunk.toString());
|
|
51
54
|
const lines = this.outputRingBuffer.appendLines(managed.stdout, text);
|
|
@@ -57,10 +60,22 @@ export class SubprocessManager {
|
|
|
57
60
|
});
|
|
58
61
|
child.stderr?.on("data", (chunk) => {
|
|
59
62
|
const text = this.outputRingBuffer.limitChunk(chunk.toString());
|
|
60
|
-
this.outputRingBuffer.appendLines(managed.stderr, text);
|
|
63
|
+
const lines = this.outputRingBuffer.appendLines(managed.stderr, text);
|
|
61
64
|
this.logger.warn(SubprocessCopy.stderrLog, { daemon: name, text });
|
|
65
|
+
for (const line of lines) {
|
|
66
|
+
this.lifecycleEventRecorder.recordDaemonEvent(managed, {
|
|
67
|
+
daemon: name,
|
|
68
|
+
status: "processing",
|
|
69
|
+
source: name,
|
|
70
|
+
category: "stderr",
|
|
71
|
+
message: line,
|
|
72
|
+
timestampMs: Date.now(),
|
|
73
|
+
errorMessage: line,
|
|
74
|
+
});
|
|
75
|
+
}
|
|
62
76
|
});
|
|
63
77
|
child.on("close", (code, signal) => {
|
|
78
|
+
this.stopHeartbeat(managed);
|
|
64
79
|
managed.exitCode = code;
|
|
65
80
|
managed.exitSignal = signal;
|
|
66
81
|
managed.status = this.resolveClosedStatus(managed, code);
|
|
@@ -74,6 +89,7 @@ export class SubprocessManager {
|
|
|
74
89
|
});
|
|
75
90
|
});
|
|
76
91
|
child.on("error", (error) => {
|
|
92
|
+
this.stopHeartbeat(managed);
|
|
77
93
|
const errorMessage = this.outputEventParser.boundTextField(error.message);
|
|
78
94
|
this.outputRingBuffer.appendLines(managed.stderr, errorMessage);
|
|
79
95
|
if (!managed.stopRequested || managed.terminationTimedOut) {
|
|
@@ -165,6 +181,7 @@ export class SubprocessManager {
|
|
|
165
181
|
return;
|
|
166
182
|
}
|
|
167
183
|
if (result.status === "no-pid") {
|
|
184
|
+
this.stopHeartbeat(managed);
|
|
168
185
|
managed.status = SubprocessStatus.STOPPED;
|
|
169
186
|
this.lifecycleEventRecorder.recordStopped(managed);
|
|
170
187
|
}
|
|
@@ -182,6 +199,7 @@ export class SubprocessManager {
|
|
|
182
199
|
});
|
|
183
200
|
}
|
|
184
201
|
recordTerminationTimeout(managed, result) {
|
|
202
|
+
this.stopHeartbeat(managed);
|
|
185
203
|
managed.terminationTimedOut = true;
|
|
186
204
|
managed.status = SubprocessStatus.FAILED;
|
|
187
205
|
const errorMessage = this.outputEventParser.boundTextField(`Timed out after ${result.timeoutMs}ms waiting for daemon process close.`);
|
|
@@ -196,5 +214,47 @@ export class SubprocessManager {
|
|
|
196
214
|
escalation: result.escalation,
|
|
197
215
|
});
|
|
198
216
|
}
|
|
217
|
+
startHeartbeat(managed) {
|
|
218
|
+
managed.heartbeatTimer = setInterval(() => {
|
|
219
|
+
if (managed.status !== SubprocessStatus.RUNNING) {
|
|
220
|
+
return;
|
|
221
|
+
}
|
|
222
|
+
const latestEvent = managed.events[managed.events.length - 1];
|
|
223
|
+
const now = Date.now();
|
|
224
|
+
if (latestEvent?.timestampMs !== undefined &&
|
|
225
|
+
now - latestEvent.timestampMs < DAEMON_HEARTBEAT_INTERVAL_MS) {
|
|
226
|
+
return;
|
|
227
|
+
}
|
|
228
|
+
this.lifecycleEventRecorder.recordDaemonEvent(managed, {
|
|
229
|
+
daemon: managed.name,
|
|
230
|
+
status: "processing",
|
|
231
|
+
source: managed.name,
|
|
232
|
+
category: "heartbeat",
|
|
233
|
+
message: "daemon still running",
|
|
234
|
+
timestampMs: now,
|
|
235
|
+
phase: latestEvent?.phase ?? "running",
|
|
236
|
+
goalId: latestEvent?.goalId,
|
|
237
|
+
attempt: latestEvent?.attempt,
|
|
238
|
+
maxRetries: latestEvent?.maxRetries,
|
|
239
|
+
elapsedMs: this.resolveHeartbeatElapsedMs(managed, latestEvent, now),
|
|
240
|
+
});
|
|
241
|
+
}, DAEMON_HEARTBEAT_INTERVAL_MS);
|
|
242
|
+
if (typeof managed.heartbeatTimer === "object" && "unref" in managed.heartbeatTimer) {
|
|
243
|
+
managed.heartbeatTimer.unref();
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
stopHeartbeat(managed) {
|
|
247
|
+
if (managed.heartbeatTimer === undefined) {
|
|
248
|
+
return;
|
|
249
|
+
}
|
|
250
|
+
clearInterval(managed.heartbeatTimer);
|
|
251
|
+
managed.heartbeatTimer = undefined;
|
|
252
|
+
}
|
|
253
|
+
resolveHeartbeatElapsedMs(managed, latestEvent, now) {
|
|
254
|
+
if (latestEvent?.elapsedMs !== undefined && latestEvent.timestampMs !== undefined) {
|
|
255
|
+
return latestEvent.elapsedMs + Math.max(0, now - latestEvent.timestampMs);
|
|
256
|
+
}
|
|
257
|
+
return Math.max(0, now - managed.startedAtMs);
|
|
258
|
+
}
|
|
199
259
|
}
|
|
200
260
|
//# sourceMappingURL=SubprocessManager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SubprocessManager.js","sourceRoot":"","sources":["../../../../src/presentation/tui/daemon-subprocesses/SubprocessManager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SubprocessManager.js","sourceRoot":"","sources":["../../../../src/presentation/tui/daemon-subprocesses/SubprocessManager.ts"],"names":[],"mappings":"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"}
|