@@ -33,7 +33,9 @@ export enum CONFIG_KEYS {
3333 OCO_AZURE_ENDPOINT = 'OCO_AZURE_ENDPOINT' ,
3434 OCO_TEST_MOCK_TYPE = 'OCO_TEST_MOCK_TYPE' ,
3535 OCO_API_URL = 'OCO_API_URL' ,
36- OCO_OLLAMA_API_URL = 'OCO_OLLAMA_API_URL'
36+ OCO_OLLAMA_API_URL = 'OCO_OLLAMA_API_URL' ,
37+ OCO_FLOWISE_ENDPOINT = 'OCO_FLOWISE_ENDPOINT' ,
38+ OCO_FLOWISE_API_KEY = 'OCO_FLOWISE_API_KEY'
3739}
3840
3941export enum CONFIG_MODES {
@@ -130,7 +132,8 @@ export const configValidators = {
130132 config . OCO_ANTHROPIC_API_KEY ||
131133 config . OCO_AI_PROVIDER . startsWith ( 'ollama' ) ||
132134 config . OCO_AZURE_API_KEY ||
133- config . OCO_AI_PROVIDER == 'test' ,
135+ config . OCO_AI_PROVIDER == 'test' ||
136+ config . OCO_AI_PROVIDER == 'flowise' ,
134137 'You need to provide an OpenAI/Anthropic/Azure API key'
135138 ) ;
136139 validateConfig (
@@ -149,7 +152,8 @@ export const configValidators = {
149152 config . OCO_OPENAI_API_KEY ||
150153 config . OCO_AZURE_API_KEY ||
151154 config . OCO_AI_PROVIDER == 'ollama' ||
152- config . OCO_AI_PROVIDER == 'test' ,
155+ config . OCO_AI_PROVIDER == 'test' ||
156+ config . OCO_AI_PROVIDER == 'flowise' ,
153157 'You need to provide an OpenAI/Anthropic/Azure API key'
154158 ) ;
155159
@@ -175,13 +179,24 @@ export const configValidators = {
175179 value ||
176180 config . OCO_OPENAI_API_KEY ||
177181 config . OCO_AI_PROVIDER == 'ollama' ||
178- config . OCO_AI_PROVIDER == 'test' ,
182+ config . OCO_AI_PROVIDER == 'test' ||
183+ config . OCO_AI_PROVIDER == 'flowise' ,
179184 'You need to provide an OpenAI/Anthropic API key'
180185 ) ;
181186
182187 return value ;
183188 } ,
184189
190+ [ CONFIG_KEYS . OCO_FLOWISE_API_KEY ] ( value : any , config : any = { } ) {
191+ validateConfig (
192+ CONFIG_KEYS . OCO_FLOWISE_API_KEY ,
193+ value || config . OCO_AI_PROVIDER != 'flowise' ,
194+ 'You need to provide a flowise API key'
195+ ) ;
196+
197+ return value ;
198+ } ,
199+
185200 [ CONFIG_KEYS . OCO_DESCRIPTION ] ( value : any ) {
186201 validateConfig (
187202 CONFIG_KEYS . OCO_DESCRIPTION ,
@@ -268,7 +283,8 @@ export const configValidators = {
268283 ] . includes ( value ) ||
269284 config . OCO_AI_PROVIDER == 'ollama' ||
270285 config . OCO_AI_PROVIDER == 'azure' ||
271- config . OCO_AI_PROVIDER == 'test' ,
286+ config . OCO_AI_PROVIDER == 'test' ||
287+ config . OCO_AI_PROVIDER == 'flowise' ,
272288 `${ value } is not supported yet, use:\n\n ${ [
273289 ...MODEL_LIST . openai ,
274290 ...MODEL_LIST . anthropic ,
@@ -308,9 +324,16 @@ export const configValidators = {
308324 [ CONFIG_KEYS . OCO_AI_PROVIDER ] ( value : any ) {
309325 validateConfig (
310326 CONFIG_KEYS . OCO_AI_PROVIDER ,
311- [ '' , 'openai' , 'anthropic' , 'gemini' , 'azure' , 'test' ] . includes ( value ) ||
312- value . startsWith ( 'ollama' ) ,
313- `${ value } is not supported yet, use 'ollama', 'anthropic', 'azure', 'gemini' or 'openai' (default)`
327+ [
328+ '' ,
329+ 'openai' ,
330+ 'anthropic' ,
331+ 'gemini' ,
332+ 'azure' ,
333+ 'test' ,
334+ 'flowise'
335+ ] . includes ( value ) || value . startsWith ( 'ollama' ) ,
336+ `${ value } is not supported yet, use 'ollama', 'anthropic', 'azure', 'gemini', 'flowise' or 'openai' (default)`
314337 ) ;
315338 return value ;
316339 } ,
@@ -324,6 +347,7 @@ export const configValidators = {
324347
325348 return value ;
326349 } ,
350+
327351 [ CONFIG_KEYS . OCO_AZURE_ENDPOINT ] ( value : any ) {
328352 validateConfig (
329353 CONFIG_KEYS . OCO_AZURE_ENDPOINT ,
@@ -333,6 +357,17 @@ export const configValidators = {
333357
334358 return value ;
335359 } ,
360+
361+ [ CONFIG_KEYS . OCO_FLOWISE_ENDPOINT ] ( value : any ) {
362+ validateConfig (
363+ CONFIG_KEYS . OCO_FLOWISE_ENDPOINT ,
364+ typeof value === 'string' && value . includes ( ':' ) ,
365+ 'Value must be string and should include both I.P. and port number' // Considering the possibility of DNS lookup or feeding the I.P. explicitely, there is no pattern to verify, except a column for the port number
366+ ) ;
367+
368+ return value ;
369+ } ,
370+
336371 [ CONFIG_KEYS . OCO_TEST_MOCK_TYPE ] ( value : any ) {
337372 validateConfig (
338373 CONFIG_KEYS . OCO_TEST_MOCK_TYPE ,
@@ -361,7 +396,6 @@ export type ConfigType = {
361396
362397const defaultConfigPath = pathJoin ( homedir ( ) , '.opencommit' ) ;
363398const defaultEnvPath = pathResolve ( process . cwd ( ) , '.env' ) ;
364-
365399export const getConfig = ( {
366400 configPath = defaultConfigPath ,
367401 envPath = defaultEnvPath
@@ -396,9 +430,10 @@ export const getConfig = ({
396430 OCO_ONE_LINE_COMMIT :
397431 process . env . OCO_ONE_LINE_COMMIT === 'true' ? true : false ,
398432 OCO_AZURE_ENDPOINT : process . env . OCO_AZURE_ENDPOINT || undefined ,
399- OCO_TEST_MOCK_TYPE : process . env . OCO_TEST_MOCK_TYPE || 'commit-message'
433+ OCO_TEST_MOCK_TYPE : process . env . OCO_TEST_MOCK_TYPE || 'commit-message' ,
434+ OCO_FLOWISE_ENDPOINT : process . env . OCO_FLOWISE_ENDPOINT || ':' ,
435+ OCO_FLOWISE_API_KEY : process . env . OCO_FLOWISE_API_KEY || undefined
400436 } ;
401-
402437 const configExists = existsSync ( configPath ) ;
403438 if ( ! configExists ) return configFromEnv ;
404439
0 commit comments