SessionInfo calculates only when messages are updated

This commit is contained in:
Shantur Rathore
2025-10-27 11:53:27 +00:00
parent 030fc4986e
commit 39e653e896
2 changed files with 121 additions and 15 deletions

View File

@@ -5,7 +5,7 @@ import ToolCall from "./tool-call"
import { sseManager } from "../lib/sse-manager"
import Kbd from "./kbd"
import { preferences } from "../stores/preferences"
import { providers } from "../stores/sessions"
import { providers, sessionInfoByInstance } from "../stores/sessions"
// Calculate session tokens and cost from messagesInfo (matches TUI logic)
function calculateSessionInfo(messagesInfo?: Map<string, any>, instanceId?: string) {
@@ -133,6 +133,32 @@ export default function MessageStream(props: MessageStreamProps) {
const connectionStatus = () => sseManager.getStatus(props.instanceId)
const sessionInfo = createMemo(() => {
return (
sessionInfoByInstance().get(props.instanceId) || {
tokens: 0,
cost: 0,
contextWindow: 0,
isSubscriptionModel: false,
}
)
})
const formattedSessionInfo = createMemo(() => {
const sessionInfo = sessionInfoByInstance().get(props.instanceId) || {
tokens: 0,
cost: 0,
contextWindow: 0,
isSubscriptionModel: false,
}
return formatSessionInfo(
sessionInfo.tokens,
sessionInfo.cost,
sessionInfo.contextWindow,
sessionInfo.isSubscriptionModel,
)
})
function scrollToBottom() {
if (containerRef) {
containerRef.scrollTop = containerRef.scrollHeight
@@ -212,20 +238,7 @@ export default function MessageStream(props: MessageStreamProps) {
<div class="message-stream-container">
<div class="connection-status">
<div class="flex items-center gap-2 text-sm font-medium text-gray-700">
<span>
{(() => {
const sessionInfo = calculateSessionInfo(props.messagesInfo, props.instanceId)
console.log("[MessageStream] sessionInfo:", sessionInfo)
const result = formatSessionInfo(
sessionInfo.tokens,
sessionInfo.cost,
sessionInfo.contextWindow,
sessionInfo.isSubscriptionModel,
)
console.log("[MessageStream] formatted result:", result)
return result
})()}
</span>
<span>{formattedSessionInfo()}</span>
</div>
<div class="flex-1" />
<div class="flex items-center gap-2 text-sm font-medium text-gray-700">