Skip to content

feat(tui): show usage by routed model#11608

Merged
alex-alecu merged 12 commits into
mainfrom
feat/tui-routed-model-usage
Jun 27, 2026
Merged

feat(tui): show usage by routed model#11608
alex-alecu merged 12 commits into
mainfrom
feat/tui-routed-model-usage

Conversation

@lambertjosh

@lambertjosh lambertjosh commented Jun 23, 2026

Copy link
Copy Markdown
Contributor

Why

The TUI sidebar shows aggregate token usage, but it does not explain which concrete routed models consumed those tokens or incurred the cost. Delegated subagent usage is also omitted from the active session summary.

What changed

The sidebar now shows cumulative input, output, reasoning, cache read/write, cache rate, and direct cost, followed by the same metrics grouped by concrete routed model. Aggregation covers the complete top-level session tree, including subagents, and sums step costs directly to avoid double counting propagated child costs.

The aggregation is exposed through the local CLI API and implemented in Kilo-owned code to minimize upstream merge conflicts. Older steps without routed model metadata fall back to the assistant message model.

Dependency

This builds on the routed step model metadata merged in #11556. The branch is rebased directly onto main.

@lambertjosh lambertjosh requested a review from alex-alecu June 23, 2026 21:26
@lambertjosh

Copy link
Copy Markdown
Contributor Author
image

@kilo-code-bot

kilo-code-bot Bot commented Jun 23, 2026

Copy link
Copy Markdown
Contributor

Code Review Summary

Status: 1 Issue Found | Recommendation: Address before merge

Overview

Severity Count
CRITICAL 0
WARNING 1
SUGGESTION 0
Issue Details (click to expand)

WARNING

File Line Issue
packages/opencode/test/kilocode/server/httpapi-public.test.ts 169 Removing the nextBillingAt assertion drops the only regression check that the generated public OpenAPI keeps this field nullable, so CI would no longer catch the wire-contract narrowing that was just fixed in this PR.

Fix these issues in Kilo Cloud

Files Reviewed (1 files)
  • packages/opencode/test/kilocode/server/httpapi-public.test.ts - 1 issue
Previous Review Summaries (9 snapshots, latest commit 611fcb1)

Current summary above is authoritative. Previous snapshots are kept for context only.

Previous review (commit 611fcb1)

Status: No Issues Found | Recommendation: Merge

Files Reviewed (5 files)
  • packages/opencode/src/cli/cmd/generate.ts
  • packages/opencode/src/kilocode/server/httpapi/public.ts
  • packages/opencode/test/kilocode/server/httpapi-public.test.ts
  • packages/sdk/js/src/v2/gen/types.gen.ts
  • packages/sdk/openapi.json

Previous review (commit 92a756e)

Status: 2 Issues Found | Recommendation: Address before merge

Overview

Severity Count
CRITICAL 0
WARNING 1
SUGGESTION 1
Issue Details (click to expand)

WARNING

File Line Issue
packages/sdk/openapi.json 13081 nextBillingAt was regenerated as string even though the source Kilo gateway schema still allows `string

SUGGESTION

File Line Issue
packages/sdk/openapi.json 15227 The new sessionModelUsage code sample is missing the closing quote in the import path, so the published JavaScript example is not copy-pasteable.

Fix these issues in Kilo Cloud

Files Reviewed (15 files)
  • .changeset/show-routed-step-models.md
  • packages/opencode/src/cli/cmd/tui/routes/session/usage.ts
  • packages/opencode/src/kilocode/plugins/model-usage.ts
  • packages/opencode/src/kilocode/plugins/sidebar-usage.tsx
  • packages/opencode/src/kilocode/server/httpapi/groups/kilocode.ts
  • packages/opencode/src/kilocode/server/httpapi/handlers/kilocode.ts
  • packages/opencode/src/kilocode/session/model-usage.ts
  • packages/opencode/test/cli/tui/usage.test.ts
  • packages/opencode/test/kilocode/cli/cmd/tui/model-usage.test.ts
  • packages/opencode/test/kilocode/server/httpapi-exercise-scenarios.ts
  • packages/opencode/test/kilocode/server/httpapi-public.test.ts
  • packages/opencode/test/kilocode/session-model-usage.test.ts
  • packages/sdk/js/src/v2/gen/sdk.gen.ts
  • packages/sdk/js/src/v2/gen/types.gen.ts
  • packages/sdk/openapi.json - 2 issues

Previous review (commit 96a0f3d)

Status: 1 Issues Found | Recommendation: Address before merge

Overview

Severity Count
CRITICAL 0
WARNING 1
SUGGESTION 0
Issue Details (click to expand)

WARNING

File Line Issue
packages/opencode/src/kilocode/plugins/sidebar-usage.tsx 127 Using Model.name(...) directly skips the routed-model normalized-id fallback, so versioned Kilo model IDs can still render as raw snapshot slugs instead of the compact display name.

Fix these issues in Kilo Cloud

Files Reviewed (1 files)
  • packages/opencode/src/kilocode/plugins/sidebar-usage.tsx - 1 issue

Previous review (commit 6e387f5)

Status: 1 Issues Found | Recommendation: Address before merge

Overview

Severity Count
CRITICAL 0
WARNING 1
SUGGESTION 0
Issue Details (click to expand)

WARNING

File Line Issue
packages/sdk/openapi.json 15197 The generated JavaScript code sample for sessionModelUsage is missing a closing quote in the import path, so the published OpenAPI example is invalid.

Fix these issues in Kilo Cloud

Files Reviewed (15 files)
  • .changeset/show-routed-step-models.md
  • packages/opencode/src/cli/cmd/tui/routes/session/usage.ts
  • packages/opencode/src/kilocode/plugins/model-usage.ts
  • packages/opencode/src/kilocode/plugins/sidebar-usage.tsx
  • packages/opencode/src/kilocode/server/httpapi/groups/kilocode.ts
  • packages/opencode/src/kilocode/server/httpapi/handlers/kilocode.ts
  • packages/opencode/src/kilocode/session/model-usage.ts
  • packages/opencode/test/cli/tui/usage.test.ts
  • packages/opencode/test/kilocode/cli/cmd/tui/model-usage.test.ts
  • packages/opencode/test/kilocode/server/httpapi-exercise-scenarios.ts
  • packages/opencode/test/kilocode/server/httpapi-public.test.ts
  • packages/opencode/test/kilocode/session-model-usage.test.ts
  • packages/sdk/js/src/v2/gen/sdk.gen.ts
  • packages/sdk/js/src/v2/gen/types.gen.ts
  • packages/sdk/openapi.json - 1 issue

Previous review (commit 41e9082)

Status: No Issues Found | Recommendation: Merge

Files Reviewed (3 files)
  • packages/opencode/src/kilocode/plugins/model-usage.ts
  • packages/opencode/src/kilocode/plugins/sidebar-usage.tsx
  • packages/opencode/test/kilocode/cli/cmd/tui/model-usage.test.ts

Previous review (commit 78cc8da)

Status: 1 Issue Found | Recommendation: Address before merge

Overview

Severity Count
CRITICAL 0
WARNING 1
SUGGESTION 0
Issue Details (click to expand)

WARNING

File Line Issue
packages/opencode/src/kilocode/plugins/model-usage.ts 35 Compact sidebar labels now drop provider identity for non-Kilo rows, so distinct routed models can render under the same visible name.

Fix these issues in Kilo Cloud

Files Reviewed (3 files)
  • packages/opencode/src/kilocode/plugins/model-usage.ts - 1 issue
  • packages/opencode/src/kilocode/plugins/sidebar-usage.tsx
  • packages/opencode/test/kilocode/cli/cmd/tui/model-usage.test.ts

Previous review (commit b5dad58)

Status: 1 Issue Found | Recommendation: Address before merge

Overview

Severity Count
CRITICAL 0
WARNING 1
SUGGESTION 0
Issue Details (click to expand)

WARNING

File Line Issue
packages/opencode/src/kilocode/session/model-usage.ts 93 Step-level routed-model attribution still disagrees with kilo stats --models, so the CLI can report different per-model usage for the same sessions.

Fix these issues in Kilo Cloud

Files Reviewed (5 files)
  • packages/opencode/src/kilocode/plugins/model-usage.ts
  • packages/opencode/src/kilocode/plugins/sidebar-usage.tsx
  • packages/opencode/src/kilocode/session/model-usage.ts - 1 issue
  • packages/opencode/test/kilocode/cli/cmd/tui/model-usage.test.ts
  • packages/opencode/test/kilocode/session-model-usage.test.ts

Previous review (commit b24464c)

Status: 4 Issues Found | Recommendation: Address before merge

Overview

Severity Count
CRITICAL 0
WARNING 3
SUGGESTION 1
Issue Details (click to expand)

WARNING

File Line Issue
packages/opencode/src/kilocode/plugins/sidebar-usage.tsx 52 Global session events refetch usage for unrelated session activity, causing avoidable full-tree queries for the visible sidebar.
packages/opencode/src/kilocode/session/model-usage.ts 87 Step-level routed-model attribution now disagrees with kilo stats --models, so the CLI can report different per-model usage for the same sessions.
packages/opencode/src/kilocode/session/model-usage.ts 131 Looking up sessions only by ctx.project.id can return 404 for sessions that remain visible via directory-based session-family semantics after a project-id change.

SUGGESTION

File Line Issue
packages/opencode/src/kilocode/plugins/sidebar-usage.tsx 19 Reuse the routed-model display helper so long providerID/modelID values do not overflow the narrow sidebar unnecessarily.

Fix these issues in Kilo Cloud

Files Reviewed (15 files)
  • .changeset/show-routed-step-models.md
  • packages/opencode/src/cli/cmd/tui/routes/session/usage.ts
  • packages/opencode/src/kilocode/plugins/model-usage.ts
  • packages/opencode/src/kilocode/plugins/sidebar-usage.tsx - 2 issues
  • packages/opencode/src/kilocode/server/httpapi/groups/kilocode.ts
  • packages/opencode/src/kilocode/server/httpapi/handlers/kilocode.ts
  • packages/opencode/src/kilocode/session/model-usage.ts - 2 issues
  • packages/opencode/test/cli/tui/usage.test.ts
  • packages/opencode/test/kilocode/cli/cmd/tui/model-usage.test.ts
  • packages/opencode/test/kilocode/server/httpapi-exercise-scenarios.ts
  • packages/opencode/test/kilocode/server/httpapi-public.test.ts
  • packages/opencode/test/kilocode/session-model-usage.test.ts
  • packages/sdk/js/src/v2/gen/sdk.gen.ts
  • packages/sdk/js/src/v2/gen/types.gen.ts
  • packages/sdk/openapi.json

Previous review (commit a70121d)

Status: No Issues Found | Recommendation: Merge

Files Reviewed (15 files)
  • .changeset/show-routed-step-models.md
  • packages/opencode/src/cli/cmd/tui/routes/session/usage.ts
  • packages/opencode/src/kilocode/plugins/model-usage.ts
  • packages/opencode/src/kilocode/plugins/sidebar-usage.tsx
  • packages/opencode/src/kilocode/server/httpapi/groups/kilocode.ts
  • packages/opencode/src/kilocode/server/httpapi/handlers/kilocode.ts
  • packages/opencode/src/kilocode/session/model-usage.ts
  • packages/opencode/test/cli/tui/usage.test.ts
  • packages/opencode/test/kilocode/cli/cmd/tui/model-usage.test.ts
  • packages/opencode/test/kilocode/server/httpapi-exercise-scenarios.ts
  • packages/opencode/test/kilocode/server/httpapi-public.test.ts
  • packages/opencode/test/kilocode/session-model-usage.test.ts
  • packages/sdk/js/src/v2/gen/sdk.gen.ts
  • packages/sdk/js/src/v2/gen/types.gen.ts
  • packages/sdk/openapi.json

Reviewed by gpt-5.4-2026-03-05 · Input: 63K · Output: 9.1K · Cached: 261.6K

Review guidance: REVIEW.md from base branch main

Base automatically changed from feature/show-routed-step-models to main June 24, 2026 04:49
Comment thread packages/opencode/src/kilocode/plugins/sidebar-usage.tsx Outdated
Comment thread packages/opencode/src/kilocode/session/model-usage.ts Outdated
Comment thread packages/opencode/src/kilocode/session/model-usage.ts
Comment thread packages/opencode/src/kilocode/plugins/sidebar-usage.tsx Outdated
@lambertjosh lambertjosh force-pushed the feat/tui-routed-model-usage branch from c7a25c8 to b24464c Compare June 24, 2026 14:17
Comment thread packages/opencode/src/kilocode/plugins/model-usage.ts Outdated
@lambertjosh lambertjosh force-pushed the feat/tui-routed-model-usage branch from 41e9082 to 6e387f5 Compare June 26, 2026 04:48
@lambertjosh

Copy link
Copy Markdown
Contributor Author

@alex-alecu - I think this is ready for re-review

@lambertjosh lambertjosh force-pushed the feat/tui-routed-model-usage branch from 96a0f3d to 92a756e Compare June 26, 2026 17:24
Comment thread packages/sdk/openapi.json
Comment thread packages/sdk/openapi.json Outdated
@alex-alecu alex-alecu merged commit 0134fe1 into main Jun 27, 2026
31 of 40 checks passed
@alex-alecu alex-alecu deleted the feat/tui-routed-model-usage branch June 27, 2026 12:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants