@@ -7,7 +7,7 @@ import type { ApiHandlerOptions } from "../../shared/api"
77import { SELECTOR_SEPARATOR , stringifyVsCodeLmModelSelector } from "../../shared/vsCodeSelectorUtils"
88
99import { ApiStream } from "../transform/stream"
10- import { convertToVsCodeLmMessages } from "../transform/vscode-lm-format"
10+ import { convertToVsCodeLmMessages , extractTextCountFromMessage } from "../transform/vscode-lm-format"
1111
1212import { BaseProvider } from "./base-provider"
1313import type { SingleCompletionHandler , ApiHandlerCreateMessageMetadata } from "../index"
@@ -231,7 +231,8 @@ export class VsCodeLmHandler extends BaseProvider implements SingleCompletionHan
231231 console . debug ( "Roo Code <Language Model API>: Empty chat message content" )
232232 return 0
233233 }
234- tokenCount = await this . client . countTokens ( text , this . currentRequestCancellation . token )
234+ const countMessage = extractTextCountFromMessage ( text )
235+ tokenCount = await this . client . countTokens ( countMessage , this . currentRequestCancellation . token )
235236 } else {
236237 console . warn ( "Roo Code <Language Model API>: Invalid input type for token counting" )
237238 return 0
@@ -268,15 +269,10 @@ export class VsCodeLmHandler extends BaseProvider implements SingleCompletionHan
268269 }
269270 }
270271
271- private async calculateTotalInputTokens (
272- systemPrompt : string ,
273- vsCodeLmMessages : vscode . LanguageModelChatMessage [ ] ,
274- ) : Promise < number > {
275- const systemTokens : number = await this . internalCountTokens ( systemPrompt )
276-
272+ private async calculateTotalInputTokens ( vsCodeLmMessages : vscode . LanguageModelChatMessage [ ] ) : Promise < number > {
277273 const messageTokens : number [ ] = await Promise . all ( vsCodeLmMessages . map ( ( msg ) => this . internalCountTokens ( msg ) ) )
278274
279- return systemTokens + messageTokens . reduce ( ( sum : number , tokens : number ) : number => sum + tokens , 0 )
275+ return messageTokens . reduce ( ( sum : number , tokens : number ) : number => sum + tokens , 0 )
280276 }
281277
282278 private ensureCleanState ( ) : void {
@@ -359,7 +355,7 @@ export class VsCodeLmHandler extends BaseProvider implements SingleCompletionHan
359355 this . currentRequestCancellation = new vscode . CancellationTokenSource ( )
360356
361357 // Calculate input tokens before starting the stream
362- const totalInputTokens : number = await this . calculateTotalInputTokens ( systemPrompt , vsCodeLmMessages )
358+ const totalInputTokens : number = await this . calculateTotalInputTokens ( vsCodeLmMessages )
363359
364360 // Accumulate the text and count at the end of the stream to reduce token counting overhead.
365361 let accumulatedText : string = ""
0 commit comments