Skip to content

Commit ef7e64d

Browse files
wingwogussisyphus-dev-ai
authored andcommitted
fix(openai): forward CommandCode cache usage
Ultraworked with [omo](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: sisyphus-dev-ai <sisyphus-dev-ai@users.noreply.github.com>
1 parent 37aed89 commit ef7e64d

3 files changed

Lines changed: 19 additions & 1 deletion

File tree

src/openai.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,10 +75,17 @@ export function mapUsageToOpenAI(usage: CommandCodeUsage | undefined): OpenAIUsa
7575
const promptTokens = usage?.inputTokens ?? 0;
7676
const completionTokens = usage?.outputTokens ?? 0;
7777
const totalTokens = usage?.totalTokens ?? promptTokens + completionTokens;
78+
const cacheReadTokens = usage?.cachedInputTokens ?? usage?.inputTokenDetails?.["cacheReadTokens"];
7879
return {
7980
prompt_tokens: promptTokens,
8081
completion_tokens: completionTokens,
8182
total_tokens: totalTokens,
83+
prompt_tokens_details: {
84+
cached_tokens:
85+
typeof cacheReadTokens === "number" && Number.isFinite(cacheReadTokens)
86+
? cacheReadTokens
87+
: 0,
88+
},
8289
};
8390
}
8491

src/types.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -232,6 +232,9 @@ export interface OpenAIUsage {
232232
prompt_tokens: number;
233233
completion_tokens: number;
234234
total_tokens: number;
235+
prompt_tokens_details: {
236+
cached_tokens: number;
237+
};
235238
}
236239

237240
export interface OpenAIChatCompletion {

tests/openai.test.ts

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,10 +78,18 @@ function parseSsePayloads(chunks: string[]): unknown[] {
7878

7979
describe("CommandCode to OpenAI conversion", () => {
8080
it("maps usage fields", () => {
81-
expect(mapUsageToOpenAI({ inputTokens: 3, outputTokens: 2, totalTokens: 5 })).toEqual({
81+
expect(
82+
mapUsageToOpenAI({
83+
inputTokens: 3,
84+
outputTokens: 2,
85+
totalTokens: 5,
86+
inputTokenDetails: { cacheReadTokens: 1 },
87+
}),
88+
).toEqual({
8289
prompt_tokens: 3,
8390
completion_tokens: 2,
8491
total_tokens: 5,
92+
prompt_tokens_details: { cached_tokens: 1 },
8593
});
8694
});
8795

0 commit comments

Comments
 (0)