@@ -33,17 +33,19 @@ import type {
|
33 | 33 | import { resolveChannelModelOverride } from "../channels/model-overrides.js"; |
34 | 34 | import { |
35 | 35 | resolveMainSessionKey, |
| 36 | +resolveFreshSessionTotalTokens, |
36 | 37 | resolveSessionFilePath, |
37 | 38 | resolveSessionFilePathOptions, |
38 | 39 | resolveSessionPluginStatusLines, |
39 | 40 | resolveSessionPluginTraceLines, |
40 | | -resolveFreshSessionTotalTokens, |
41 | 41 | type SessionEntry, |
42 | 42 | type SessionScope, |
43 | 43 | } from "../config/sessions.js"; |
| 44 | +import { resolveSessionLifecycleTimestamps } from "../config/sessions/lifecycle.js"; |
44 | 45 | import { hasSessionAutoModelFallbackProvenance } from "../config/sessions/model-override-provenance.js"; |
45 | 46 | import type { OpenClawConfig } from "../config/types.openclaw.js"; |
46 | 47 | import { readRecentSessionUsageFromTranscript } from "../gateway/session-transcript-readers.js"; |
| 48 | +import { formatDurationCompact } from "../infra/format-time/format-duration.ts"; |
47 | 49 | import { formatTimeAgo } from "../infra/format-time/format-relative.ts"; |
48 | 50 | import { resolveCommitHash } from "../infra/git-commit.js"; |
49 | 51 | import { |
@@ -898,8 +900,18 @@ export function buildStatusMessage(args: StatusArgs): string {
|
898 | 900 | }); |
899 | 901 | |
900 | 902 | const updatedAt = entry?.updatedAt; |
| 903 | +const sessionStartedAt = resolveSessionLifecycleTimestamps({ |
| 904 | + entry, |
| 905 | +agentId: args.agentId, |
| 906 | +storePath: args.sessionStorePath, |
| 907 | +}).sessionStartedAt; |
| 908 | +const sessionDuration = |
| 909 | +typeof sessionStartedAt === "number" |
| 910 | + ? formatDurationCompact(now - sessionStartedAt, { spaced: true }) |
| 911 | + : undefined; |
901 | 912 | const sessionLine = [ |
902 | 913 | `Session: ${args.sessionKey ?? "unknown"}`, |
| 914 | +sessionDuration ? `duration ${sessionDuration}` : null, |
903 | 915 | typeof updatedAt === "number" ? `updated ${formatTimeAgo(now - updatedAt)}` : "no activity", |
904 | 916 | ] |
905 | 917 | .filter(Boolean) |
|