diff --git a/src/vs/workbench/contrib/void/browser/react/src/util/sendLLMMessage.tsx b/src/vs/workbench/contrib/void/browser/react/src/util/sendLLMMessage.tsx index 0f50c576..d0cb2f6a 100644 --- a/src/vs/workbench/contrib/void/browser/react/src/util/sendLLMMessage.tsx +++ b/src/vs/workbench/contrib/void/browser/react/src/util/sendLLMMessage.tsx @@ -242,61 +242,61 @@ export const sendOllamaMsg: SendLLMMessageFnTypeInternal = ({ messages, options, // https://docs.greptile.com/api-reference/query // https://docs.greptile.com/quickstart#sample-response-streamed -const sendGreptileMsg: SendLLMMessageFnTypeInternal = ({ messages, onText, onFinalMessage, onError, voidConfig, _setAborter }) => { +// const sendGreptileMsg: SendLLMMessageFnTypeInternal = ({ messages, onText, onFinalMessage, onError, voidConfig, _setAborter }) => { - let fullText = '' +// let fullText = '' - fetch('https://api.greptile.com/v2/query', { - method: 'POST', - headers: { - 'Authorization': `Bearer ${voidConfig.greptile.apikey}`, - 'X-Github-Token': `${voidConfig.greptile.githubPAT}`, - 'Content-Type': `application/json`, - }, - body: JSON.stringify({ - messages, - stream: true, - repositories: [voidConfig.greptile.repoinfo], - }), - }) - // this is {message}\n{message}\n{message}...\n - .then(async response => { - const text = await response.text() - console.log('got greptile', text) - return JSON.parse(`[${text.trim().split('\n').join(',')}]`) - }) - // TODO make this actually stream, right now it just sends one message at the end - // TODO add _setAborter() when add streaming - .then(async responseArr => { +// fetch('https://api.greptile.com/v2/query', { +// method: 'POST', +// headers: { +// 'Authorization': `Bearer ${voidConfig.greptile.apikey}`, +// 'X-Github-Token': `${voidConfig.greptile.githubPAT}`, +// 'Content-Type': `application/json`, +// }, +// body: JSON.stringify({ +// messages, +// stream: true, +// repositories: [voidConfig.greptile.repoinfo], +// }), +// }) +// // this is {message}\n{message}\n{message}...\n +// .then(async response => { +// const text = await response.text() +// console.log('got greptile', text) +// return JSON.parse(`[${text.trim().split('\n').join(',')}]`) +// }) +// // TODO make this actually stream, right now it just sends one message at the end +// // TODO add _setAborter() when add streaming +// .then(async responseArr => { - for (const response of responseArr) { - const type: string = response['type'] - const message = response['message'] +// for (const response of responseArr) { +// const type: string = response['type'] +// const message = response['message'] - // when receive text - if (type === 'message') { - fullText += message - onText({ newText: message, fullText }) - } - else if (type === 'sources') { - const { filepath, linestart: _, lineend: _2 } = message as { filepath: string; linestart: number | null; lineend: number | null } - fullText += filepath - onText({ newText: filepath, fullText }) - } - // type: 'status' with an empty 'message' means last message - else if (type === 'status') { - if (!message) { - onFinalMessage({ fullText }) - } - } - } +// // when receive text +// if (type === 'message') { +// fullText += message +// onText({ newText: message, fullText }) +// } +// else if (type === 'sources') { +// const { filepath, linestart: _, lineend: _2 } = message as { filepath: string; linestart: number | null; lineend: number | null } +// fullText += filepath +// onText({ newText: filepath, fullText }) +// } +// // type: 'status' with an empty 'message' means last message +// else if (type === 'status') { +// if (!message) { +// onFinalMessage({ fullText }) +// } +// } +// } - }) - .catch(error => { - onError({ error }) - }); +// }) +// .catch(error => { +// onError({ error }) +// }); -} +// } @@ -392,9 +392,9 @@ export const sendLLMMessage = ({ case 'ollama': sendOllamaMsg({ messages, options, onText, onFinalMessage, onError, voidConfig, _setAborter, }); break; - case 'greptile': - sendGreptileMsg({ messages, options, onText, onFinalMessage, onError, voidConfig, _setAborter, }); - break; + // case 'greptile': + // sendGreptileMsg({ messages, options, onText, onFinalMessage, onError, voidConfig, _setAborter, }); + // break; default: onError({ error: `Error: whichApi was ${voidConfig.default.whichApi}, which is not recognized!` }) break; @@ -427,7 +427,7 @@ export const getFimSystem: getFimPrompt = ({ voidConfig, prefix, suffix }) => { case 'anthropic': case 'openAI': case 'gemini': - case 'greptile': + // case 'greptile': case 'openRouter': case 'openAICompatible': case 'azure': @@ -495,7 +495,7 @@ export const getFimPrompt: getFimPrompt = ({ voidConfig, prefix, suffix }) => { case 'anthropic': case 'openAI': case 'gemini': - case 'greptile': + // case 'greptile': case 'openRouter': case 'openAICompatible': case 'azure': diff --git a/src/vs/workbench/contrib/void/browser/registerConfig.ts b/src/vs/workbench/contrib/void/browser/registerConfig.ts index b1e8708a..e86b7724 100644 --- a/src/vs/workbench/contrib/void/browser/registerConfig.ts +++ b/src/vs/workbench/contrib/void/browser/registerConfig.ts @@ -10,7 +10,7 @@ import { registerSingleton, InstantiationType } from '../../../../platform/insta import { createDecorator } from '../../../../platform/instantiation/common/instantiation.js'; import { IStorageService, StorageScope, StorageTarget } from '../../../../platform/storage/common/storage.js'; -const configEnum = (description: string, defaultVal: EnumArr[number], enumArr: EnumArr) => { +const _uiConfig = (description: string, defaultVal: EnumArr[number], enumArr?: EnumArr) => { return { description, defaultVal, @@ -18,20 +18,13 @@ const configEnum = (description: string, defa } } -const configString = (description: string, defaultVal: string) => { - return { - description, - defaultVal, - enumArr: undefined, - } -} // fields you can customize (don't forget 'default' - it isn't included here!) export const nonDefaultConfigFields = [ 'anthropic', 'openAI', 'gemini', - 'greptile', + // 'greptile', 'ollama', 'openRouter', 'openAICompatible', @@ -50,13 +43,13 @@ const voidConfigInfo: Record< } > = { default: { - whichApi: configEnum( + whichApi: _uiConfig( 'API Provider.', 'anthropic', nonDefaultConfigFields, ), - maxTokens: configEnum( + maxTokens: _uiConfig( 'Max number of tokens to output.', '1024', [ @@ -70,8 +63,8 @@ const voidConfigInfo: Record< }, anthropic: { - apikey: configString('Anthropic API key.', ''), - model: configEnum( + apikey: _uiConfig('Anthropic API key.', ''), + model: _uiConfig( 'Anthropic model to use.', 'claude-3-5-sonnet-20240620', [ @@ -83,8 +76,8 @@ const voidConfigInfo: Record< ), }, openAI: { - apikey: configString('OpenAI API key.', ''), - model: configEnum( + apikey: _uiConfig('OpenAI API key.', ''), + model: _uiConfig( 'OpenAI model to use.', 'gpt-4o', [ @@ -108,43 +101,46 @@ const voidConfigInfo: Record< ] as const ), }, - greptile: { - apikey: configString('Greptile API key.', ''), - githubPAT: configString('Github PAT that Greptile uses to access your repository', ''), - remote: configEnum( - 'Repo location', - 'github', - [ - 'github', - 'gitlab' - ] as const - ), - repository: configString('Repository identifier in "owner / repository" format.', ''), - branch: configString('Name of the branch to use.', 'main'), - }, ollama: { - endpoint: configString( - 'The endpoint of your Ollama instance. Start Ollama by running `OLLAMA_ORIGINS="vscode - webview://*" ollama serve`.', + endpoint: _uiConfig( + 'The endpoint of your Ollama instance.', 'http://127.0.0.1:11434' ), - model: configEnum( + model: _uiConfig( 'Ollama model to use.', 'codestral', ['codestral', 'qwen2.5-coder', 'qwen2.5-coder:0.5b', 'qwen2.5-coder:1.5b', 'qwen2.5-coder:3b', 'qwen2.5-coder:7b', 'qwen2.5-coder:14b', 'qwen2.5-coder:32b', 'codegemma', 'codegemma:2b', 'codegemma:7b', 'codellama', 'codellama:7b', 'codellama:13b', 'codellama:34b', 'codellama:70b', 'codellama:code', 'codellama:python', 'command-r', 'command-r:35b', 'command-r-plus', 'command-r-plus:104b', 'deepseek-coder-v2', 'deepseek-coder-v2:16b', 'deepseek-coder-v2:236b', 'falcon2', 'falcon2:11b', 'firefunction-v2', 'firefunction-v2:70b', 'gemma', 'gemma:2b', 'gemma:7b', 'gemma2', 'gemma2:2b', 'gemma2:9b', 'gemma2:27b', 'llama2', 'llama2:7b', 'llama2:13b', 'llama2:70b', 'llama3', 'llama3:8b', 'llama3:70b', 'llama3-chatqa', 'llama3-chatqa:8b', 'llama3-chatqa:70b', 'llama3-gradient', 'llama3-gradient:8b', 'llama3-gradient:70b', 'llama3.1', 'llama3.1:8b', 'llama3.1:70b', 'llama3.1:405b', 'llava', 'llava:7b', 'llava:13b', 'llava:34b', 'llava-llama3', 'llava-llama3:8b', 'llava-phi3', 'llava-phi3:3.8b', 'mistral', 'mistral:7b', 'mistral-large', 'mistral-large:123b', 'mistral-nemo', 'mistral-nemo:12b', 'mixtral', 'mixtral:8x7b', 'mixtral:8x22b', 'moondream', 'moondream:1.8b', 'openhermes', 'openhermes:v2.5', 'phi3', 'phi3:3.8b', 'phi3:14b', 'phi3.5', 'phi3.5:3.8b', 'qwen', 'qwen:7b', 'qwen:14b', 'qwen:32b', 'qwen:72b', 'qwen:110b', 'qwen2', 'qwen2:0.5b', 'qwen2:1.5b', 'qwen2:7b', 'qwen2:72b', 'smollm', 'smollm:135m', 'smollm:360m', 'smollm:1.7b'] as const ), }, openRouter: { - model: configString( + model: _uiConfig( 'OpenRouter model to use.', 'openai/gpt-4o' ), - apikey: configString('OpenRouter API key.', ''), + apikey: _uiConfig('OpenRouter API key.', ''), }, openAICompatible: { - endpoint: configString('The baseUrl (exluding /chat/completions).', 'http://127.0.0.1:11434/v1'), - model: configString('The name of the model to use.', 'gpt-4o'), - apikey: configString('Your API key.', ''), + endpoint: _uiConfig('The baseUrl (exluding /chat/completions).', 'http://127.0.0.1:11434/v1'), + model: _uiConfig('The name of the model to use.', 'gpt-4o'), + apikey: _uiConfig('Your API key.', ''), }, + + // greptile: { + // apikey: _uiConfig('Greptile API key.', ''), + // githubPAT: _uiConfig('Github PAT that Greptile uses to access your repository', ''), + // remote: _uiConfig( + // 'Repo location', + // 'github', + // [ + // 'github', + // 'gitlab' + // ] as const + // ), + // repository: _uiConfig('Repository identifier in "owner / repository" format.', ''), + // branch: _uiConfig('Name of the branch to use.', 'main'), + // }, + + azure: { // 'void.azure.apiKey': { // 'type': 'string', @@ -174,8 +170,8 @@ const voidConfigInfo: Record< // }, }, gemini: { - apikey: configString('Google API key.', ''), - model: configEnum( + apikey: _uiConfig('Google API key.', ''), + model: _uiConfig( 'Gemini model to use.', 'gemini-1.5-flash', [