Skip to content

Commit 86eceef

Browse files
Merge pull request #165 from olasunkanmi-SE/development
Development
2 parents 7725ed8 + 9a97b95 commit 86eceef

20 files changed

+117
-641
lines changed

src/extension.ts

Lines changed: 23 additions & 85 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,5 @@
11
import * as vscode from "vscode";
2-
import {
3-
APP_CONFIG,
4-
generativeAiModels,
5-
OLA_ACTIONS,
6-
USER_MESSAGE,
7-
} from "./application/constant";
2+
import { APP_CONFIG, generativeAiModels, OLA_ACTIONS, USER_MESSAGE } from "./application/constant";
83
import { Comments } from "./commands/comment";
94
import { ExplainCode } from "./commands/explain";
105
import { FixError } from "./commands/fixError";
@@ -24,27 +19,16 @@ import { AnthropicWebViewProvider } from "./providers/anthropic";
2419
import { CodeActionsProvider } from "./providers/code-actions";
2520
import { GeminiWebViewProvider } from "./providers/gemini";
2621
import { GroqWebViewProvider } from "./providers/groq";
27-
import { CodeIndexingService } from "./services/code-indexing";
2822
import { FileUploader } from "./services/file-uploader";
2923
import { initializeGenerativeAiEnvironment } from "./services/generative-ai-model-manager";
3024
import { Credentials } from "./services/github-authentication";
3125
import { getConfigValue } from "./utils/utils";
3226

33-
const {
34-
geminiKey,
35-
geminiModel,
36-
groqApiKey,
37-
groqModel,
38-
anthropicApiKey,
39-
anthropicModel,
40-
grokApiKey,
41-
grokModel,
42-
} = APP_CONFIG;
27+
const { geminiKey, geminiModel, groqApiKey, groqModel, anthropicApiKey, anthropicModel, grokApiKey, grokModel } =
28+
APP_CONFIG;
4329

4430
const connectDB = async () => {
45-
await dbManager.connect(
46-
"file:/Users/olasunkanmioyinlola/Documents/Apps/codebuddy/patterns/aii.db"
47-
);
31+
await dbManager.connect("file:/Users/olasunkanmi/Documents/Github/codebuddy/patterns/dev.db");
4832
};
4933

5034
let quickFixCodeAction: vscode.Disposable;
@@ -54,11 +38,8 @@ export async function activate(context: vscode.ExtensionContext) {
5438
try {
5539
const credentials = new Credentials();
5640
await credentials.initialize(context);
57-
const session: vscode.AuthenticationSession | undefined =
58-
await credentials.getSession();
59-
vscode.window.showInformationMessage(
60-
`Logged into GitHub as ${session?.account.label}`
61-
);
41+
const session: vscode.AuthenticationSession | undefined = await credentials.getSession();
42+
vscode.window.showInformationMessage(`Logged into GitHub as ${session?.account.label}`);
6243
Memory.getInstance();
6344
await connectDB();
6445
// const web = WebSearchService.getInstance();
@@ -95,52 +76,19 @@ export async function activate(context: vscode.ExtensionContext) {
9576
generateCodeChart,
9677
inlineChat,
9778
} = OLA_ACTIONS;
98-
const getComment = new Comments(
99-
`${USER_MESSAGE} generates the code comments...`,
100-
context
101-
);
102-
const getInLineChat = new InLineChat(
103-
`${USER_MESSAGE} generates a response...`,
104-
context
105-
);
106-
const generateOptimizeCode = new OptimizeCode(
107-
`${USER_MESSAGE} optimizes the code...`,
108-
context
109-
);
110-
const generateRefactoredCode = new RefactorCode(
111-
`${USER_MESSAGE} refactors the code...`,
112-
context
113-
);
114-
const explainCode = new ExplainCode(
115-
`${USER_MESSAGE} explains the code...`,
116-
context
117-
);
118-
const generateReview = new ReviewCode(
119-
`${USER_MESSAGE} reviews the code...`,
120-
context
121-
);
122-
const codeChartGenerator = new CodeChartGenerator(
123-
`${USER_MESSAGE} creates the code chart...`,
124-
context
125-
);
79+
const getComment = new Comments(`${USER_MESSAGE} generates the code comments...`, context);
80+
const getInLineChat = new InLineChat(`${USER_MESSAGE} generates a response...`, context);
81+
const generateOptimizeCode = new OptimizeCode(`${USER_MESSAGE} optimizes the code...`, context);
82+
const generateRefactoredCode = new RefactorCode(`${USER_MESSAGE} refactors the code...`, context);
83+
const explainCode = new ExplainCode(`${USER_MESSAGE} explains the code...`, context);
84+
const generateReview = new ReviewCode(`${USER_MESSAGE} reviews the code...`, context);
85+
const codeChartGenerator = new CodeChartGenerator(`${USER_MESSAGE} creates the code chart...`, context);
12686
const codePattern = fileUpload;
127-
const knowledgeBase = new ReadFromKnowledgeBase(
128-
`${USER_MESSAGE} generate your code pattern...`,
129-
context
130-
);
131-
const generateCommitMessage = new GenerateCommitMessage(
132-
`${USER_MESSAGE} generates a commit message...`,
133-
context
134-
);
135-
const generateInterviewQuestions = new InterviewMe(
136-
`${USER_MESSAGE} generates interview questions...`,
137-
context
138-
);
87+
const knowledgeBase = new ReadFromKnowledgeBase(`${USER_MESSAGE} generate your code pattern...`, context);
88+
const generateCommitMessage = new GenerateCommitMessage(`${USER_MESSAGE} generates a commit message...`, context);
89+
const generateInterviewQuestions = new InterviewMe(`${USER_MESSAGE} generates interview questions...`, context);
13990

140-
const generateUnitTests = new GenerateUnitTest(
141-
`${USER_MESSAGE} generates unit tests...`,
142-
context
143-
);
91+
const generateUnitTests = new GenerateUnitTest(`${USER_MESSAGE} generates unit tests...`, context);
14492

14593
const actionMap = {
14694
[comment]: async () => await getComment.execute(),
@@ -150,31 +98,23 @@ export async function activate(context: vscode.ExtensionContext) {
15098
[interviewMe]: async () => await generateInterviewQuestions.execute(),
15199
[generateUnitTest]: async () => await generateUnitTests.execute(),
152100
[fix]: (errorMessage: string) =>
153-
new FixError(
154-
`${USER_MESSAGE} finds a solution to the error...`,
155-
context,
156-
errorMessage
157-
).execute(errorMessage),
101+
new FixError(`${USER_MESSAGE} finds a solution to the error...`, context, errorMessage).execute(errorMessage),
158102
[explain]: async () => await explainCode.execute(),
159103
[pattern]: async () => await codePattern.uploadFileHandler(),
160104
[knowledge]: async () => await knowledgeBase.execute(),
161-
[commitMessage]: async () =>
162-
await generateCommitMessage.execute("commitMessage"),
105+
[commitMessage]: async () => await generateCommitMessage.execute("commitMessage"),
163106
[generateCodeChart]: async () => await codeChartGenerator.execute(),
164107
[inlineChat]: async () => await getInLineChat.execute(),
165108
};
166109

167-
const subscriptions: vscode.Disposable[] = Object.entries(actionMap).map(
168-
([action, handler]) => vscode.commands.registerCommand(action, handler)
110+
const subscriptions: vscode.Disposable[] = Object.entries(actionMap).map(([action, handler]) =>
111+
vscode.commands.registerCommand(action, handler)
169112
);
170113

171114
const selectedGenerativeAiModel = getConfigValue("generativeAi.option");
172115

173116
const quickFix = new CodeActionsProvider();
174-
quickFixCodeAction = vscode.languages.registerCodeActionsProvider(
175-
{ scheme: "file", language: "*" },
176-
quickFix
177-
);
117+
quickFixCodeAction = vscode.languages.registerCodeActionsProvider({ scheme: "file", language: "*" }, quickFix);
178118

179119
agentEventEmmitter = new EventEmitter();
180120

@@ -221,9 +161,7 @@ export async function activate(context: vscode.ExtensionContext) {
221161
}
222162
} catch (error) {
223163
Memory.clear();
224-
vscode.window.showErrorMessage(
225-
"An Error occured while setting up generative AI model"
226-
);
164+
vscode.window.showErrorMessage("An Error occured while setting up generative AI model");
227165
console.log(error);
228166
}
229167
}

src/providers/base.ts

Lines changed: 9 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,14 @@ import { Orchestrator } from "../agents/orchestrator";
33
import { IEventPayload } from "../emitter/interface";
44
import { Logger } from "../infrastructure/logger/logger";
55
import { FileUploader } from "../services/file-uploader";
6-
import { formatText, getConfigValue } from "../utils/utils";
6+
import { formatText } from "../utils/utils";
77
import { getWebviewContent } from "../webview/chat";
8-
import { getChatCss } from "../webview/chat_css";
98

109
let _view: vscode.WebviewView | undefined;
1110
export abstract class BaseWebViewProvider implements vscode.Disposable {
1211
protected readonly orchestrator: Orchestrator;
1312
public static readonly viewId = "chatView";
14-
static webView: vscode.WebviewView | undefined;
13+
public static webView: vscode.WebviewView | undefined;
1514
public currentWebView: vscode.WebviewView | undefined = _view;
1615
_context: vscode.ExtensionContext;
1716
protected readonly logger: Logger;
@@ -51,53 +50,25 @@ export abstract class BaseWebViewProvider implements vscode.Disposable {
5150
webviewView.webview.options = webviewOptions;
5251

5352
if (!this.apiKey) {
54-
vscode.window.showErrorMessage(
55-
"API key not configured. Check your settings."
56-
);
53+
vscode.window.showErrorMessage("API key not configured. Check your settings.");
5754
return;
5855
}
5956
this.setWebviewHtml(this.currentWebView);
60-
this.setupMessageHandler(
61-
this.apiKey,
62-
this.generativeAiModel,
63-
this.currentWebView
64-
);
65-
66-
setTimeout(() => {
67-
this.currentWebView?.webview.postMessage({
68-
type: "updateStyles",
69-
payload: getChatCss(),
70-
});
71-
// this.currentWebView?.webview.postMessage({
72-
// type: "modelUpdate",
73-
// payload: { model: getConfigValue("generativeAi.option") },
74-
// });
75-
}, 500);
57+
this.setupMessageHandler(this.apiKey, this.generativeAiModel, this.currentWebView);
7658
}
7759

7860
private async setWebviewHtml(view: vscode.WebviewView): Promise<void> {
7961
const codepatterns: FileUploader = new FileUploader(this._context);
80-
// const knowledgeBaseDocs: string[] = await codepatterns.getFiles();
81-
view.webview.html = getWebviewContent(
82-
this.currentWebView?.webview!,
83-
this._extensionUri
84-
);
62+
view.webview.html = getWebviewContent(this.currentWebView?.webview!, this._extensionUri);
8563
}
8664

87-
private async setupMessageHandler(
88-
apiKey: string,
89-
modelName: string,
90-
_view: vscode.WebviewView
91-
): Promise<void> {
65+
private async setupMessageHandler(apiKey: string, modelName: string, _view: vscode.WebviewView): Promise<void> {
9266
try {
9367
_view.webview.onDidReceiveMessage(async (message) => {
9468
let response: any;
9569
if (message.command === "user-input") {
9670
if (message.tags?.length > 0) {
97-
response = await this.generateResponse(
98-
message.message,
99-
message.tags
100-
);
71+
response = await this.generateResponse(message.message, message.tags);
10172
} else {
10273
response = await this.generateResponse(message.message);
10374
}
@@ -116,15 +87,9 @@ export abstract class BaseWebViewProvider implements vscode.Disposable {
11687
public handleModelResponseEvent(event: IEventPayload) {
11788
this.sendResponse(formatText(event.message), "bot");
11889
}
119-
abstract generateResponse(
120-
message?: string,
121-
metaData?: Record<string, any>
122-
): Promise<string | undefined>;
90+
abstract generateResponse(message?: string, metaData?: Record<string, any>): Promise<string | undefined>;
12391

124-
abstract sendResponse(
125-
response: string,
126-
currentChat?: string
127-
): Promise<boolean | undefined>;
92+
abstract sendResponse(response: string, currentChat?: string): Promise<boolean | undefined>;
12893

12994
public dispose(): void {
13095
this.disposables.forEach((d) => d.dispose());

0 commit comments

Comments
 (0)