(permissionMode: PermissionMode, exceeds200kTokens: boolean, settings: ReadonlySettings, messages: Message[], addedDirs: string[], mainLoopModel: ModelName, vimMode?: VimMode)
| 34 | return settings?.statusLine !== undefined; |
| 35 | } |
| 36 | function buildStatusLineCommandInput(permissionMode: PermissionMode, exceeds200kTokens: boolean, settings: ReadonlySettings, messages: Message[], addedDirs: string[], mainLoopModel: ModelName, vimMode?: VimMode): StatusLineCommandInput { |
| 37 | const agentType = getMainThreadAgentType(); |
| 38 | const worktreeSession = getCurrentWorktreeSession(); |
| 39 | const runtimeModel = getRuntimeMainLoopModel({ |
| 40 | permissionMode, |
| 41 | mainLoopModel, |
| 42 | exceeds200kTokens |
| 43 | }); |
| 44 | const outputStyleName = settings?.outputStyle || DEFAULT_OUTPUT_STYLE_NAME; |
| 45 | const currentUsage = getCurrentUsage(messages); |
| 46 | const contextWindowSize = getContextWindowForModel(runtimeModel, getSdkBetas()); |
| 47 | const contextPercentages = calculateContextPercentages(currentUsage, contextWindowSize); |
| 48 | const sessionId = getSessionId(); |
| 49 | const sessionName = getCurrentSessionTitle(sessionId); |
| 50 | const rawUtil = getRawUtilization(); |
| 51 | const rateLimits: StatusLineCommandInput['rate_limits'] = { |
| 52 | ...(rawUtil.five_hour && { |
| 53 | five_hour: { |
| 54 | used_percentage: rawUtil.five_hour.utilization * 100, |
| 55 | resets_at: rawUtil.five_hour.resets_at |
| 56 | } |
| 57 | }), |
| 58 | ...(rawUtil.seven_day && { |
| 59 | seven_day: { |
| 60 | used_percentage: rawUtil.seven_day.utilization * 100, |
| 61 | resets_at: rawUtil.seven_day.resets_at |
| 62 | } |
| 63 | }) |
| 64 | }; |
| 65 | return { |
| 66 | ...createBaseHookInput(), |
| 67 | ...(sessionName && { |
| 68 | session_name: sessionName |
| 69 | }), |
| 70 | model: { |
| 71 | id: runtimeModel, |
| 72 | display_name: renderModelName(runtimeModel) |
| 73 | }, |
| 74 | workspace: { |
| 75 | current_dir: getCwd(), |
| 76 | project_dir: getOriginalCwd(), |
| 77 | added_dirs: addedDirs |
| 78 | }, |
| 79 | version: MACRO.VERSION, |
| 80 | output_style: { |
| 81 | name: outputStyleName |
| 82 | }, |
| 83 | cost: { |
| 84 | total_cost_usd: getTotalCost(), |
| 85 | total_duration_ms: getTotalDuration(), |
| 86 | total_api_duration_ms: getTotalAPIDuration(), |
| 87 | total_lines_added: getTotalLinesAdded(), |
| 88 | total_lines_removed: getTotalLinesRemoved() |
| 89 | }, |
| 90 | context_window: { |
| 91 | total_input_tokens: getTotalInputTokens(), |
| 92 | total_output_tokens: getTotalOutputTokens(), |
| 93 | context_window_size: contextWindowSize, |
no test coverage detected