feat(acp): surface honest usage metrics and unavailable state [L2-05] - #62
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #39
User outcome
Users can inspect token, context window, and credit/cost usage across their configured Claude (
claude-code-acp) and Codex (codex-acp) backends directly within Vellum. Rather than fabricating precision or misleading users with "0 tokens" when an adapter omits telemetry, Vellum displays an honest "Unavailable" status.Acceptance criteria
Automated verification
core/usage/repo.test.ts: 6 tests verifying recordTurnUsage, listUsageRecords, getUsageSummary, retry upserts, and honest null/Unavailable representation.core/acp/stdio-client.test.ts: 19 tests verifying ACP update mapping including usage_update and done usage metadata.core/chat/manager.test.ts: 13 tests verifying that runTurn records telemetry when present and records honest unavailable records when absent.src/app/UsageView.test.tsx: 7 tests verifying rendering of honest "Unavailable" badges, real metric formatting, table logging, back navigation, and refresh handling.src/app/Sidebar.test.tsx: 8 tests verifying footer click-through.src/app/App.test.tsx: 6 tests verifying navigation to Usage view from Sidebar.npm test(304 tests across 40 files passed) andnpm run typecheck(0 errors).Live Electron verification
test/usage-live.mjsexecuted underxvfb-run -a npm run test:gate:usage:window.vellum.usageGetSummary()andwindow.vellum.usageGetList()).Visual and console evidence
Limitations and follow-ups
Independent review