ソースを参照

fix(tui): calculate v2 assistant duration from user prompt

Dax Raad 3 ヶ月 前
コミット
d46b22c281

+ 7 - 1
packages/opencode/src/cli/cmd/tui/feature-plugins/system/session-v2.tsx

@@ -44,6 +44,10 @@ function View(props: { api: TuiPluginApi; sessionID: string }) {
   const messages = createMemo(() => sync.data.messages[props.sessionID] ?? [])
   const messages = createMemo(() => sync.data.messages[props.sessionID] ?? [])
   const renderedMessages = createMemo(() => messages().toReversed())
   const renderedMessages = createMemo(() => messages().toReversed())
   const lastAssistant = createMemo(() => renderedMessages().findLast((message) => message.type === "assistant"))
   const lastAssistant = createMemo(() => renderedMessages().findLast((message) => message.type === "assistant"))
+  const lastUserCreated = (index: number) =>
+    renderedMessages()
+      .slice(0, index)
+      .findLast((message) => message.type === "user")?.time.created
 
 
   createEffect(() => {
   createEffect(() => {
     void sync.session.message.sync(props.sessionID)
     void sync.session.message.sync(props.sessionID)
@@ -83,6 +87,7 @@ function View(props: { api: TuiPluginApi; sessionID: string }) {
                       last={lastAssistant()?.id === message.id}
                       last={lastAssistant()?.id === message.id}
                       syntax={syntax()}
                       syntax={syntax()}
                       subtleSyntax={subtleSyntax()}
                       subtleSyntax={subtleSyntax()}
+                      start={lastUserCreated(index())}
                     />
                     />
                   </Match>
                   </Match>
                   <Match when={message.type === "synthetic"}>
                   <Match when={message.type === "synthetic"}>
@@ -294,12 +299,13 @@ function AssistantMessage(props: {
   last: boolean
   last: boolean
   syntax: SyntaxStyle
   syntax: SyntaxStyle
   subtleSyntax: SyntaxStyle
   subtleSyntax: SyntaxStyle
+  start?: number
 }) {
 }) {
   const { theme } = useTheme()
   const { theme } = useTheme()
   const local = useLocal()
   const local = useLocal()
   const duration = createMemo(() => {
   const duration = createMemo(() => {
     if (!props.message.time.completed) return 0
     if (!props.message.time.completed) return 0
-    return props.message.time.completed - props.message.time.created
+    return props.message.time.completed - (props.start ?? props.message.time.created)
   })
   })
   const model = createMemo(() => {
   const model = createMemo(() => {
     const variant = props.message.model.variant ? `/${props.message.model.variant}` : ""
     const variant = props.message.model.variant ? `/${props.message.model.variant}` : ""