/** * cost-estimator · CLIENT entry. * * Renders measured delivery telemetry: active steering hours per project, the * meter-equivalent spend, and — when a seat plan is configured — the ACTUAL * subscription cost plus the leverage between the two. * * DISPLAY INVARIANT: the meter figure is labelled "meter-equivalent" wherever it * appears, and leverage is labelled leverage, never a saving. Presenting the * theoretical meter as cash out is the single easiest way to make an estimate * indefensible under scrutiny. */ import React, { useEffect, useState } from "react"; import { usePluginConfig, usePluginSend } from "@blackbelt-technology/dashboard-plugin-runtime/context"; interface Measured { sessions: number; activeHours: number; steeringDays: number; totalCost: number; costPerSteeringHour: number; costPerSteeringDay: number; contextFactor: number; revisionFactorLowerBound: number; outputShare: number; cacheReadShare: number; assistantPerHumanTurn: number; activeMonths: number; hoursPerMonth: number; meterPerMonth: number; unmeteredHourShare: number; } interface ProjectRow { project: string; sessions: number; activeHours: number; steeringDays: number; cost: number; costPerHour: number; } interface Subscription { monthlySeatCost: number; months: number; subscriptionCost: number; meterEquivalent: number; leverage: number; effectiveCostPerHour: number; meteredCostPerHour: number; } interface TelemetryPayload { ok: boolean; empty?: boolean; error?: string; measured: Measured | null; projects: ProjectRow[]; subscription: Subscription | null; seatPlan?: string; seats?: number; } export interface CostEstimatorConfig { gapCapMinutes: number; hoursPerDay: number; seatPlan: string; seatMonthlyUsd: number; seats: number; } const num = (value: number, digits = 0) => value.toLocaleString("en-US", { minimumFractionDigits: digits, maximumFractionDigits: digits }); const cell: React.CSSProperties = { padding: "4px 10px", textAlign: "right", whiteSpace: "nowrap" }; const label: React.CSSProperties = { ...cell, textAlign: "left" }; const muted: React.CSSProperties = { fontSize: "11px", opacity: 0.65 }; /** CostView — full-screen measured-cost view. Claimed on content-view + command-route. */ export function CostView() { const [data, setData] = useState(null); const [failed, setFailed] = useState(null); useEffect(() => { let cancelled = false; fetch("/api/cost-estimator/telemetry") .then((response) => { if (!response.ok) throw new Error(`HTTP ${response.status}`); return response.json() as Promise; }) .then((payload) => { if (!cancelled) setData(payload); }) .catch((error: unknown) => { if (!cancelled) setFailed(error instanceof Error ? error.message : String(error)); }); return () => { cancelled = true; }; }, []); if (failed) return
Could not load cost telemetry: {failed}
; if (!data) return
Measuring sessions…
; if (!data.ok) return
Cost telemetry unavailable: {data.error}
; if (data.empty || !data.measured) return
No sessions measured yet.
; const m = data.measured; const sub = data.subscription; return (

Measured delivery cost

{num(m.sessions)} sessions · {num(m.activeHours, 1)} active steering hours ({num(m.steeringDays, 1)} steering-days) · {m.activeMonths} active months · breaks over the configured gap are excluded
{sub ? (

Actual cost — subscription

Cash out ({data.seats}× {data.seatPlan}, {num(sub.months, 0)} mo) ${num(sub.subscriptionCost, 2)}
Effective per steering hour ${num(sub.effectiveCostPerHour, 2)}
Meter-equivalent (theoretical, not paid) ${num(sub.meterEquivalent, 2)}
Subscription leverage {sub.leverage.toFixed(1)}×
{sub.leverage >= 1 ? "Leverage is on-demand value the flat plan captured — not a saving to pass on as a discount." : "The plan costs more than metering at this volume; pay-as-you-go would be cheaper."}
) : (

Metered basis

No seat plan configured, so costs below are billed meter figures. If capacity is actually bought on a subscription, set the plan in Settings — otherwise these numbers are theoretical.
)}

Meter-equivalent rates

Per steering hour ${num(m.costPerSteeringHour, 2)}
Per steering day ${num(m.costPerSteeringDay, 2)}
Per active month ${num(m.meterPerMonth, 2)}
Cache-read share of tokens {(m.cacheReadShare * 100).toFixed(1)}%
Assistant turns per human turn {m.assistantPerHumanTurn.toFixed(1)} : 1
{m.unmeteredHourShare > 0.01 && (
{(m.unmeteredHourShare * 100).toFixed(1)}% of hours ran on models the meter priced at $0 (routed or subscription-billed) — the rates above are understated by that much.
)}

By project

{data.projects.slice(0, 25).map((row) => ( ))}
Project Sessions Active h Steering days Meter $ $/h
{row.project} {num(row.sessions)} {num(row.activeHours, 1)} {num(row.steeringDays, 1)} {num(row.cost, 0)} {num(row.costPerHour, 2)}
Active time counts hours where a human was engaged with the session. It is not billable-hours truth, and it does not capture work done outside the agent.
); } /** CostSettings — seat plan configuration. Claimed on settings-section. */ export function CostSettings() { const config = usePluginConfig(); const send = usePluginSend(); const write = (partial: Partial) => send({ type: "plugin_config_write", id: "cost-estimator", config: { ...config, ...partial } }); return (
Session cost is recorded as a metered API price. If capacity is bought on a subscription, set the plan here so the dashboard reports real cash rather than a theoretical meter.
{config.seatPlan === "custom" && ( )}
); }