fix(tui): total root session family cost

This commit is contained in:
Dax Raad 2026-07-10 19:50:50 -04:00
commit 0eaa75ec0f
5 changed files with 35 additions and 7 deletions

View file

@ -290,7 +290,7 @@ export function Prompt(props: PromptProps) {
.list(session.location)
?.find((model) => model.providerID === last.model.providerID && model.id === last.model.id)
const pct = model?.limit.context ? `${Math.round((tokens / model.limit.context) * 100)}%` : undefined
const cost = session.cost
const cost = data.session.cost(props.sessionID)
return {
context: pct ? `${Locale.number(tokens)} (${pct})` : Locale.number(tokens),
cost: cost > 0 ? money.format(cost) : undefined,

View file

@ -805,6 +805,15 @@ export const { use: useData, provider: DataProvider } = createSimpleContext({
family(sessionID: string) {
return store.session.family[resolveRoot(sessionID)] ?? []
},
cost(sessionID: string) {
const session = store.session.info[sessionID]
if (!session) return 0
if (session.parentID) return session.cost
return (store.session.family[sessionID] ?? [sessionID]).reduce(
(total, id) => total + (store.session.info[id]?.cost ?? 0),
0,
)
},
status(sessionID: string) {
return store.session.status[sessionID] ?? "idle"
},

View file

@ -16,7 +16,7 @@ function View(props: { api: TuiPluginApi; session_id: string }) {
const theme = () => props.api.theme.current
const msg = createMemo(() => data.session.message.list(props.session_id))
const session = createMemo(() => data.session.get(props.session_id))
const cost = createMemo(() => session()?.cost ?? 0)
const cost = createMemo(() => data.session.cost(props.session_id))
const state = createMemo(() => {
const last = lastAssistantWithUsage(msg(), session()?.revert?.messageID)

View file

@ -33,7 +33,7 @@ export function SubagentFooter() {
.model.list(current.location)
?.find((model) => model.providerID === last.model.providerID && model.id === last.model.id)
const pct = model?.limit.context ? `${Math.round((tokens / model.limit.context) * 100)}%` : undefined
const cost = current.cost
const cost = data.session.cost(route.sessionID)
const money = new Intl.NumberFormat("en-US", {
style: "currency",