diff --git a/package.json b/package.json index 299dc2ba..53696842 100644 --- a/package.json +++ b/package.json @@ -8,6 +8,9 @@ "engines": { "vscode": "^1.75.0" }, + "extensionDependencies": [ + "merico.lang-bridge-vsc" + ], "repository": { "type": "git", "url": "https://github.com/devchat-ai/devchat-vscode.git" diff --git a/src/handler/sendMessage.ts b/src/handler/sendMessage.ts index 4cd1ad8d..92d0504f 100644 --- a/src/handler/sendMessage.ts +++ b/src/handler/sendMessage.ts @@ -38,6 +38,8 @@ export async function askCode(message: any, panel: vscode.WebviewPanel|vscode.We _lastMessage = [message]; _lastMessage[0]['askCode'] = true; + const port = await UiUtilWrapper.getLSPBrigePort(); + let pythonVirtualEnv: string|undefined = vscode.workspace.getConfiguration('DevChat').get('PythonVirtualEnv'); if (!pythonVirtualEnv) { try { @@ -91,7 +93,7 @@ export async function askCode(message: any, panel: vscode.WebviewPanel|vscode.We const commandRun = new CommandRun(); const command = pythonVirtualEnv.trim(); - const args = [UiUtilWrapper.extensionPath() + "/tools/askcode_index_query.py", "query", message.text, tempFile]; + const args = [UiUtilWrapper.extensionPath() + "/tools/askcode_index_query.py", "query", message.text, tempFile, port]; const result = await commandRun.spawnAsync(command, args, { env: envs, cwd: workspaceDir }, (data) => { logger.channel()?.info(data); }, (data) => { diff --git a/src/util/uiUtil.ts b/src/util/uiUtil.ts index 7bfa125b..a0833731 100644 --- a/src/util/uiUtil.ts +++ b/src/util/uiUtil.ts @@ -17,6 +17,7 @@ export interface UiUtil { // current selected text selectText(): string | undefined; showErrorMessage(message: string): void; + getLSPBrigePort(): Promise; } @@ -72,5 +73,9 @@ export class UiUtilWrapper { public static showErrorMessage(message: string): void { this._uiUtil?.showErrorMessage(message); } + + public static async getLSPBrigePort(): Promise { + return await this._uiUtil?.getLSPBrigePort(); + } } diff --git a/src/util/uiUtil_vscode.ts b/src/util/uiUtil_vscode.ts index 6d34b097..68ed0d2a 100644 --- a/src/util/uiUtil_vscode.ts +++ b/src/util/uiUtil_vscode.ts @@ -122,4 +122,9 @@ export class UiUtilVscode implements UiUtil { public showErrorMessage(message: string): void { vscode.window.showErrorMessage(message); } + + public async getLSPBrigePort(): Promise { + const port = await vscode.commands.executeCommand('LangBrige.getAddress') as number | undefined;; + return port; + } } diff --git a/tools/askcode_index_query.py b/tools/askcode_index_query.py index 8a07f356..bae7dc37 100644 --- a/tools/askcode_index_query.py +++ b/tools/askcode_index_query.py @@ -122,7 +122,7 @@ def index(repo_path: str): import json -def query(question: str, doc_context: str): +def query(question: str, doc_context: str, lsp_brige_port: int): try: client = get_client(mode=STORAGE_FILE) q = Q.reuse( @@ -135,6 +135,7 @@ def query(question: str, doc_context: str): ans, docs = chain.run(question) + print(f"LSP brige port: {lsp_brige_port}") print(f"\n# Question: \n{question}") print(f"\n# Answer: \n{ans}") print(f"\n# Relevant Documents: \n") @@ -173,13 +174,14 @@ def main(): index(repo_path) elif command == "query": - if len(sys.argv) < 4: - print("Usage: python index_and_query.py query [question] [doc_context]") + if len(sys.argv) < 5: + print("Usage: python index_and_query.py query [question] [doc_context] [port]") sys.exit(1) question = sys.argv[2] doc_context = sys.argv[3] - query(question, doc_context) + port = sys.argv[4] + query(question, doc_context, port) else: print("Invalid command. Available commands: index, query")