@@ -25,6 +25,7 @@ export enum CONFIG_KEYS {
2525 OCO_ONE_LINE_COMMIT = 'OCO_ONE_LINE_COMMIT' ,
2626 OCO_TEST_MOCK_TYPE = 'OCO_TEST_MOCK_TYPE' ,
2727 OCO_API_URL = 'OCO_API_URL' ,
28+ OCO_API_CUSTOM_HEADERS = 'OCO_API_CUSTOM_HEADERS' ,
2829 OCO_OMIT_SCOPE = 'OCO_OMIT_SCOPE' ,
2930 OCO_GITPUSH = 'OCO_GITPUSH' // todo: deprecate
3031}
@@ -204,6 +205,22 @@ export const configValidators = {
204205 return value ;
205206 } ,
206207
208+ [ CONFIG_KEYS . OCO_API_CUSTOM_HEADERS ] ( value ) {
209+ try {
210+ // Custom headers must be a valid JSON string
211+ if ( typeof value === 'string' ) {
212+ JSON . parse ( value ) ;
213+ }
214+ return value ;
215+ } catch ( error ) {
216+ validateConfig (
217+ CONFIG_KEYS . OCO_API_CUSTOM_HEADERS ,
218+ false ,
219+ 'Must be a valid JSON string of headers'
220+ ) ;
221+ }
222+ } ,
223+
207224 [ CONFIG_KEYS . OCO_TOKENS_MAX_INPUT ] ( value : any ) {
208225 value = parseInt ( value ) ;
209226 validateConfig (
@@ -380,6 +397,7 @@ export type ConfigType = {
380397 [ CONFIG_KEYS . OCO_TOKENS_MAX_INPUT ] : number ;
381398 [ CONFIG_KEYS . OCO_TOKENS_MAX_OUTPUT ] : number ;
382399 [ CONFIG_KEYS . OCO_API_URL ] ?: string ;
400+ [ CONFIG_KEYS . OCO_API_CUSTOM_HEADERS ] ?: string ;
383401 [ CONFIG_KEYS . OCO_DESCRIPTION ] : boolean ;
384402 [ CONFIG_KEYS . OCO_EMOJI ] : boolean ;
385403 [ CONFIG_KEYS . OCO_WHY ] : boolean ;
@@ -462,6 +480,7 @@ const getEnvConfig = (envPath: string) => {
462480 OCO_MODEL : process . env . OCO_MODEL ,
463481 OCO_API_URL : process . env . OCO_API_URL ,
464482 OCO_API_KEY : process . env . OCO_API_KEY ,
483+ OCO_API_CUSTOM_HEADERS : process . env . OCO_API_CUSTOM_HEADERS ,
465484 OCO_AI_PROVIDER : process . env . OCO_AI_PROVIDER as OCO_AI_PROVIDER_ENUM ,
466485
467486 OCO_TOKENS_MAX_INPUT : parseConfigVarValue ( process . env . OCO_TOKENS_MAX_INPUT ) ,
0 commit comments