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

Function analyzeContextUsage

src/utils/analyzeContext.ts:918–1382  ·  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

916}
917
918export async function analyzeContextUsage(
919 messages: Message[],
920 model: string,
921 getToolPermissionContext: () => Promise<ToolPermissionContext>,
922 tools: Tools,
923 agentDefinitions: AgentDefinitionsResult,
924 terminalWidth?: number,
925 toolUseContext?: Pick<ToolUseContext, 'options'>,
926 mainThreadAgentDefinition?: AgentDefinition,
927 /** Original messages before microcompact, used to extract API usage */
928 originalMessages?: Message[],
929): Promise<ContextData> {
930 const runtimeModel = getRuntimeMainLoopModel({
931 permissionMode: (await getToolPermissionContext()).mode,
932 mainLoopModel: model,
933 })
934 // Get context window size
935 const contextWindow = getContextWindowForModel(runtimeModel, getSdkBetas())
936
937 // Build the effective system prompt using the shared utility
938 const defaultSystemPrompt = await getSystemPrompt(tools, runtimeModel)
939 const effectiveSystemPrompt = buildEffectiveSystemPrompt({
940 mainThreadAgentDefinition,
941 toolUseContext: toolUseContext ?? {
942 options: {} as ToolUseContext['options'],
943 },
944 customSystemPrompt: toolUseContext?.options.customSystemPrompt,
945 defaultSystemPrompt,
946 appendSystemPrompt: toolUseContext?.options.appendSystemPrompt,
947 })
948
949 // Critical operations that should not fail due to skills
950 const [
951 { systemPromptTokens, systemPromptSections },
952 { claudeMdTokens, memoryFileDetails },
953 {
954 builtInToolTokens,
955 deferredBuiltinDetails,
956 deferredBuiltinTokens,
957 systemToolDetails,
958 },
959 { mcpToolTokens, mcpToolDetails, deferredToolTokens },
960 { agentTokens, agentDetails },
961 { slashCommandTokens, commandInfo },
962 messageBreakdown,
963 ] = await Promise.all([
964 countSystemTokens(effectiveSystemPrompt),
965 countMemoryFileTokens(),
966 countBuiltInToolTokens(
967 tools,
968 getToolPermissionContext,
969 agentDefinitions,
970 runtimeModel,
971 messages,
972 ),
973 countMcpToolTokens(
974 tools,
975 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