@@ -2,27 +2,28 @@ import { createMemo, createEffect, on, onCleanup, For, Show } from "solid-js"
22import type { JSX } from "solid-js"
33import { useSync } from "@/context/sync"
44import { checksum } from "@opencode-ai/core/util/encode"
5- import { findLast } from "@opencode-ai/core/util/array"
65import { same } from "@/utils/same"
76import { Icon } from "@opencode-ai/ui/icon"
87import { Accordion } from "@opencode-ai/ui/accordion"
98import { StickyAccordionHeader } from "@opencode-ai/ui/sticky-accordion-header"
109import { File } from "@opencode-ai/ui/file"
1110import { Markdown } from "@opencode-ai/ui/markdown"
1211import { ScrollView } from "@opencode-ai/ui/scroll-view"
13- import type { Message , Part , UserMessage } from "@opencode-ai/sdk/v2/client"
12+ import type { Message , Part } from "@opencode-ai/sdk/v2/client"
1413import { useLanguage } from "@/context/language"
1514import { useProviders } from "@/hooks/use-providers"
1615import { useSessionLayout } from "@/pages/session/session-layout"
1716import { getSessionContextMetrics } from "./session-context-metrics"
1817import { estimateSessionContextBreakdown , type SessionContextBreakdownKey } from "./session-context-breakdown"
1918import { createSessionContextFormatter } from "./session-context-format"
19+ import { getSessionSystemPrompt } from "./session-context-system"
2020
2121const BREAKDOWN_COLOR : Record < SessionContextBreakdownKey , string > = {
2222 system : "var(--syntax-info)" ,
2323 user : "var(--syntax-success)" ,
2424 assistant : "var(--syntax-property)" ,
2525 tool : "var(--syntax-warning)" ,
26+ toolDefs : "var(--syntax-keyword)" ,
2627 other : "var(--syntax-comment)" ,
2728}
2829
@@ -88,7 +89,6 @@ function RawMessage(props: {
8889}
8990
9091const emptyMessages : Message [ ] = [ ]
91- const emptyUserMessages : UserMessage [ ] = [ ]
9292
9393export function SessionContextTab ( ) {
9494 const sync = useSync ( )
@@ -108,22 +108,6 @@ export function SessionContextTab() {
108108 { equals : same } ,
109109 )
110110
111- const userMessages = createMemo (
112- ( ) => messages ( ) . filter ( ( m ) => m . role === "user" ) as UserMessage [ ] ,
113- emptyUserMessages ,
114- { equals : same } ,
115- )
116-
117- const visibleUserMessages = createMemo (
118- ( ) => {
119- const revert = info ( ) ?. revert ?. messageID
120- if ( ! revert ) return userMessages ( )
121- return userMessages ( ) . filter ( ( m ) => m . id < revert )
122- } ,
123- emptyUserMessages ,
124- { equals : same } ,
125- )
126-
127111 const usd = createMemo (
128112 ( ) =>
129113 new Intl . NumberFormat ( language . intl ( ) , {
@@ -151,14 +135,7 @@ export function SessionContextTab() {
151135 }
152136 } )
153137
154- const systemPrompt = createMemo ( ( ) => {
155- const msg = findLast ( visibleUserMessages ( ) , ( m ) => ! ! m . system )
156- const system = msg ?. system
157- if ( ! system ) return
158- const trimmed = system . trim ( )
159- if ( ! trimmed ) return
160- return trimmed
161- } )
138+ const systemPrompt = createMemo ( ( ) => getSessionSystemPrompt ( messages ( ) ) )
162139
163140 const providerLabel = createMemo ( ( ) => {
164141 const c = ctx ( )
@@ -190,6 +167,7 @@ export function SessionContextTab() {
190167
191168 const breakdownLabel = ( key : SessionContextBreakdownKey ) => {
192169 if ( key === "system" ) return language . t ( "context.breakdown.system" )
170+ if ( key === "toolDefs" ) return language . t ( "context.breakdown.toolDefs" )
193171 if ( key === "user" ) return language . t ( "context.breakdown.user" )
194172 if ( key === "assistant" ) return language . t ( "context.breakdown.assistant" )
195173 if ( key === "tool" ) return language . t ( "context.breakdown.tool" )
0 commit comments