({
messagesRef,
lastAssistantMessageId
}: Pick<Props, 'messagesRef' | 'lastAssistantMessageId'>)
| 172 | } |
| 173 | |
| 174 | function BuiltInStatusLineContent({ |
| 175 | messagesRef, |
| 176 | lastAssistantMessageId |
| 177 | }: Pick<Props, 'messagesRef' | 'lastAssistantMessageId'>): React.ReactNode { |
| 178 | const settings = useSettings(); |
| 179 | const permissionMode = useAppState(s => s.toolPermissionContext.mode); |
| 180 | const effortValue = useAppState(s => s.effortValue); |
| 181 | const activeLabel = useAppState(getStatusLineActiveLabel); |
| 182 | const mainLoopModel = useMainLoopModel(); |
| 183 | const chunks = useMemo(() => { |
| 184 | const messages = messagesRef.current; |
| 185 | const exceeds200kTokens = lastAssistantMessageId ? doesMostRecentAssistantMessageExceed200k(messages) : false; |
| 186 | const worktreeSession = getCurrentWorktreeSession(); |
| 187 | const runtimeModel = getRuntimeMainLoopModel({ |
| 188 | permissionMode, |
| 189 | mainLoopModel, |
| 190 | exceeds200kTokens |
| 191 | }); |
| 192 | const modelName = renderModelName(runtimeModel); |
| 193 | const effortLevel = getDisplayedEffortLevel(runtimeModel, effortValue); |
| 194 | const currentUsage = getCurrentUsage(messages); |
| 195 | const contextWindowSize = getContextWindowForModel(runtimeModel, getSdkBetas()); |
| 196 | const contextPercentages = calculateContextPercentages(currentUsage, contextWindowSize); |
| 197 | const cwd = formatBuiltInStatusLinePath( |
| 198 | worktreeSession?.worktreePath ?? getCwd(), |
| 199 | getBuiltInStatusLinePathDisplay(settings), |
| 200 | ); |
| 201 | return buildStarshipStatusLineChunks({ |
| 202 | modelName, |
| 203 | effortLevel, |
| 204 | contextRemaining: contextPercentages.remaining, |
| 205 | cwd, |
| 206 | activeLabel, |
| 207 | worktreeName: worktreeSession?.worktreeName, |
| 208 | worktreeBranch: worktreeSession?.worktreeBranch, |
| 209 | isRemote: getIsRemoteMode(), |
| 210 | permissionMode |
| 211 | }); |
| 212 | }, [messagesRef, lastAssistantMessageId, permissionMode, mainLoopModel, effortValue, activeLabel, settings]); |
| 213 | return <Text wrap="truncate"> |
| 214 | {chunks.map((chunk, index) => <Text key={`${index}:${chunk.text}`} color={chunk.color as never} bold={chunk.bold} dimColor={chunk.dim}> |
| 215 | {chunk.text} |
| 216 | </Text>)} |
| 217 | </Text>; |
| 218 | } |
| 219 | function CommandStatusLine({ |
| 220 | messagesRef, |
| 221 | lastAssistantMessageId, |
nothing calls this directly
no test coverage detected