| 1 | export type RuntimeMetaSnapshot = { |
| 2 | runtime?: { epoch?: string }; |
| 3 | running: boolean; |
| 4 | turnStartedAt?: number; |
| 5 | pendingPrompt?: boolean; |
| 6 | backgroundJobs?: number; |
| 7 | cancelRequested?: boolean; |
| 8 | cancellable?: boolean; |
| 9 | turnId?: string; |
| 10 | turnStatus?: string; |
| 11 | turnEventSeq?: number; |
| 12 | turnReplayAfterSeq?: number; |
| 13 | }; |
| 14 | |
| 15 | export function foregroundRunningFromRuntimeMeta(meta: RuntimeMetaSnapshot): boolean { |
| 16 | if (typeof meta.cancellable === "boolean") return meta.cancellable; |
| 17 | if ((meta.backgroundJobs ?? 0) > 0 && !meta.pendingPrompt) return false; |
| 18 | return Boolean(meta.running); |
| 19 | } |
| 20 |