MCPcopy
hub / github.com/claude-code-best/claude-code / analyzeContextUsage

Function analyzeContextUsage

src/utils/analyzeContext.ts:940–1412  ·  view source on GitHub ↗
(
  messages: Message[],
  model: string,
  getToolPermissionContext: () => Promise<ToolPermissionContext>,
  tools: Tools,
  agentDefinitions: AgentDefinitionsResult,
  terminalWidth?: number,
  toolUseContext?: Pick<ToolUseContext, 'options'>,
  mainThreadAgentDefinition?: AgentDefinition,
  /** Original messages before microcompact, used to extract API usage */
  originalMessages?: Message[],
)

Source from the content-addressed store, hash-verified

938}
939
940export async function analyzeContextUsage(
941 messages: Message[],
942 model: string,
943 getToolPermissionContext: () => Promise<ToolPermissionContext>,
944 tools: Tools,
945 agentDefinitions: AgentDefinitionsResult,
946 terminalWidth?: number,
947 toolUseContext?: Pick<ToolUseContext, 'options'>,
948 mainThreadAgentDefinition?: AgentDefinition,
949 /** Original messages before microcompact, used to extract API usage */
950 originalMessages?: Message[],
951): Promise<ContextData> {
952 const runtimeModel = getRuntimeMainLoopModel({
953 permissionMode: (await getToolPermissionContext()).mode,
954 mainLoopModel: model,
955 })
956 // Get context window size
957 const contextWindow = getContextWindowForModel(runtimeModel, getSdkBetas())
958
959 // Build the effective system prompt using the shared utility
960 const defaultSystemPrompt = await getSystemPrompt(tools, runtimeModel)
961 const effectiveSystemPrompt = buildEffectiveSystemPrompt({
962 mainThreadAgentDefinition,
963 toolUseContext: toolUseContext ?? {
964 options: {} as ToolUseContext['options'],
965 },
966 customSystemPrompt: toolUseContext?.options.customSystemPrompt,
967 defaultSystemPrompt,
968 appendSystemPrompt: toolUseContext?.options.appendSystemPrompt,
969 })
970
971 // Critical operations that should not fail due to skills
972 const [
973 { systemPromptTokens, systemPromptSections },
974 { claudeMdTokens, memoryFileDetails },
975 {
976 builtInToolTokens,
977 deferredBuiltinDetails,
978 deferredBuiltinTokens,
979 systemToolDetails,
980 },
981 { mcpToolTokens, mcpToolDetails, deferredToolTokens },
982 { agentTokens, agentDetails },
983 { slashCommandTokens, commandInfo },
984 messageBreakdown,
985 ] = await Promise.all([
986 countSystemTokens(effectiveSystemPrompt),
987 countMemoryFileTokens(),
988 countBuiltInToolTokens(
989 tools,
990 getToolPermissionContext,
991 agentDefinitions,
992 runtimeModel,
993 messages,
994 ),
995 countMcpToolTokens(
996 tools,
997 getToolPermissionContext,

Callers 2

collectContextDataFunction · 0.85
callFunction · 0.85

Calls 15

getRuntimeMainLoopModelFunction · 0.85
getContextWindowForModelFunction · 0.85
getSdkBetasFunction · 0.85
countSystemTokensFunction · 0.85
countMemoryFileTokensFunction · 0.85
countBuiltInToolTokensFunction · 0.85
countMcpToolTokensFunction · 0.85
countCustomAgentTokensFunction · 0.85
countSlashCommandTokensFunction · 0.85
approximateMessageTokensFunction · 0.85
countSkillTokensFunction · 0.85

Tested by

no test coverage detected