import type { PlannerDecisionItem } from "./types"; export type PlannerHistoryState = | { kind: "populated"; decisions: PlannerDecisionItem[] } | { kind: "empty_cloud_transport" } | { kind: "direct_transport_hidden" } | { kind: "unknown_host_transport" }; /** * Decide which empty-state or populated-state message to show for a task's * planner decision history, based on whether any decisions were returned and * the assigned host's configured planner transport. * * - **populated**: decisions exist — render them. * - **direct_transport_hidden**: host uses the `direct` transport, which never * sends prompts to Cloud. Show an explicit "not reported" message instead of * an empty list. * - **empty_cloud_transport**: host IS cloud-transport but no decisions have * been persisted yet (task just started or no steps executed). * - **unknown_host_transport**: host not found or transport field not reported. */ export function computePlannerHistoryState( decisions: PlannerDecisionItem[], hostTransport: "direct" | "cloud" | null, ): PlannerHistoryState { if (decisions.length > 0) { return { kind: "populated", decisions }; } if (hostTransport === "direct") { return { kind: "direct_transport_hidden" }; } if (hostTransport === "cloud") { return { kind: "empty_cloud_transport" }; } return { kind: "unknown_host_transport" }; }