@@ -11,6 +11,8 @@ import { addCacheBreakpoints as addGeminiCacheBreakpoints } from "../transform/c
1111import type { SingleCompletionHandler , ApiHandlerCreateMessageMetadata } from "../index"
1212import { RouterProvider } from "./router-provider"
1313
14+ const ORIGIN_APP = "roo-code"
15+
1416const DEFAULT_HEADERS = {
1517 "X-Unbound-Metadata" : JSON . stringify ( { labels : [ { key : "app" , value : "roo-code" } ] } ) ,
1618}
@@ -20,6 +22,20 @@ interface UnboundUsage extends OpenAI.CompletionUsage {
2022 cache_read_input_tokens ?: number
2123}
2224
25+ type UnboundChatCompletionCreateParamsStreaming = OpenAI . Chat . Completions . ChatCompletionCreateParamsStreaming & {
26+ unbound_metadata : {
27+ originApp : string
28+ taskId ?: string
29+ mode ?: string
30+ }
31+ }
32+
33+ type UnboundChatCompletionCreateParamsNonStreaming = OpenAI . Chat . Completions . ChatCompletionCreateParamsNonStreaming & {
34+ unbound_metadata : {
35+ originApp : string
36+ }
37+ }
38+
2339export class UnboundHandler extends RouterProvider implements SingleCompletionHandler {
2440 constructor ( options : ApiHandlerOptions ) {
2541 super ( {
@@ -60,11 +76,16 @@ export class UnboundHandler extends RouterProvider implements SingleCompletionHa
6076 maxTokens = info . maxTokens ?? undefined
6177 }
6278
63- const requestOptions : OpenAI . Chat . Completions . ChatCompletionCreateParamsStreaming = {
79+ const requestOptions : UnboundChatCompletionCreateParamsStreaming = {
6480 model : modelId . split ( "/" ) [ 1 ] ,
6581 max_tokens : maxTokens ,
6682 messages : openAiMessages ,
6783 stream : true ,
84+ unbound_metadata : {
85+ originApp : ORIGIN_APP ,
86+ taskId : metadata ?. taskId ,
87+ mode : metadata ?. mode ,
88+ } ,
6889 }
6990
7091 if ( this . supportsTemperature ( modelId ) ) {
@@ -108,9 +129,12 @@ export class UnboundHandler extends RouterProvider implements SingleCompletionHa
108129 const { id : modelId , info } = await this . fetchModel ( )
109130
110131 try {
111- const requestOptions : OpenAI . Chat . Completions . ChatCompletionCreateParamsNonStreaming = {
132+ const requestOptions : UnboundChatCompletionCreateParamsNonStreaming = {
112133 model : modelId . split ( "/" ) [ 1 ] ,
113134 messages : [ { role : "user" , content : prompt } ] ,
135+ unbound_metadata : {
136+ originApp : ORIGIN_APP ,
137+ } ,
114138 }
115139
116140 if ( this . supportsTemperature ( modelId ) ) {
0 commit comments