import type { LineageNode, SessionGoal, SessionSummary } from "@opengeni/sdk"; import { type OpenGeniText } from "./messages/runtime.js"; export type SessionAgentsSignal = { count: number; detail: string; tone: "running" | "waiting" | "neutral"; }; /** The agents chip for a session's spawned workers, or undefined without any. */ export declare function sessionAgentsSignal(t: OpenGeniText, agents: readonly Pick[]): SessionAgentsSignal | undefined; /** One human word for a goal's state, as the web goal pill reads. */ export declare function sessionGoalStateLabel(t: OpenGeniText, goal: Pick): string; /** * Compact "waiting for" duration since `iso`, e.g. "<1m", "5m", "10h", "3d". * Unlike the rail's relative-time label it never collapses to "now" or a * calendar date: a session can wait for input for weeks and the wait should * keep reading as a duration. Empty for an unparseable timestamp. */ export declare function formatWaitingSince(iso: string, now?: Date): string; /** A sub-agent row's loud trailing word, and the status tone it reads in. */ export type SessionAgentAttention = { word: string; /** How long it has waited on you ("10h"), or empty. */ waitingFor: string; tone: "failed" | "waiting"; title?: string | undefined; }; /** * The word a manager must act on in a sub-agent list, shared by the web panel * and the phone sheet: a failed agent, one the runtime could not start, one * waiting on you (and for how long, from the server's `requiresActionSince`), * or a paused one. Null for calm rows, which show their last update instead. */ export declare function sessionAgentAttention(t: OpenGeniText, session: Pick, paused: boolean, now?: Date): SessionAgentAttention | null;