fix(tui): total root session family cost
This commit is contained in:
parent
6b3c4f5839
commit
0eaa75ec0f
5 changed files with 35 additions and 7 deletions
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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",
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue