(permissionMode: PermissionMode, exceeds200kTokens: boolean, settings: ReadonlySettings, messages: Message[], addedDirs: string[], mainLoopModel: ModelName, vimMode?: VimMode)
| 69 | return hasCustomStatusLine(settings); |
| 70 | } |
| 71 | function buildStatusLineCommandInput(permissionMode: PermissionMode, exceeds200kTokens: boolean, settings: ReadonlySettings, messages: Message[], addedDirs: string[], mainLoopModel: ModelName, vimMode?: VimMode): StatusLineCommandInput { |
| 72 | const agentType = getMainThreadAgentType(); |
| 73 | const worktreeSession = getCurrentWorktreeSession(); |
| 74 | const runtimeModel = getRuntimeMainLoopModel({ |
| 75 | permissionMode, |
| 76 | mainLoopModel, |
| 77 | exceeds200kTokens |
| 78 | }); |
| 79 | const outputStyleName = settings?.outputStyle || DEFAULT_OUTPUT_STYLE_NAME; |
| 80 | const currentUsage = getCurrentUsage(messages); |
| 81 | const contextWindowSize = getContextWindowForModel(runtimeModel, getSdkBetas()); |
| 82 | const contextPercentages = calculateContextPercentages(currentUsage, contextWindowSize); |
| 83 | const sessionId = getSessionId(); |
| 84 | const sessionName = getCurrentSessionTitle(sessionId); |
| 85 | const rawUtil = getRawUtilization(); |
| 86 | const rateLimits: StatusLineCommandInput['rate_limits'] = { |
| 87 | ...(rawUtil.five_hour && { |
| 88 | five_hour: { |
| 89 | used_percentage: rawUtil.five_hour.utilization * 100, |
| 90 | resets_at: rawUtil.five_hour.resets_at |
| 91 | } |
| 92 | }), |
| 93 | ...(rawUtil.seven_day && { |
| 94 | seven_day: { |
| 95 | used_percentage: rawUtil.seven_day.utilization * 100, |
| 96 | resets_at: rawUtil.seven_day.resets_at |
| 97 | } |
| 98 | }) |
| 99 | }; |
| 100 | return { |
| 101 | ...createBaseHookInput(), |
| 102 | ...(sessionName && { |
| 103 | session_name: sessionName |
| 104 | }), |
| 105 | model: { |
| 106 | id: runtimeModel, |
| 107 | display_name: renderModelName(runtimeModel) |
| 108 | }, |
| 109 | workspace: { |
| 110 | current_dir: getCwd(), |
| 111 | project_dir: getOriginalCwd(), |
| 112 | added_dirs: addedDirs |
| 113 | }, |
| 114 | version: MACRO.VERSION, |
| 115 | output_style: { |
| 116 | name: outputStyleName |
| 117 | }, |
| 118 | cost: { |
| 119 | total_cost_usd: getTotalCost(), |
| 120 | total_duration_ms: getTotalDuration(), |
| 121 | total_api_duration_ms: getTotalAPIDuration(), |
| 122 | total_lines_added: getTotalLinesAdded(), |
| 123 | total_lines_removed: getTotalLinesRemoved() |
| 124 | }, |
| 125 | context_window: { |
| 126 | total_input_tokens: getTotalInputTokens(), |
| 127 | total_output_tokens: getTotalOutputTokens(), |
| 128 | context_window_size: contextWindowSize, |
no test coverage detected