summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--extension/package.json30
-rw-r--r--extension/src/activation/activate.ts55
-rw-r--r--extension/src/continueIdeClient.ts28
-rw-r--r--extension/src/debugPanel.ts34
4 files changed, 67 insertions, 80 deletions
diff --git a/extension/package.json b/extension/package.json
index 4b86f4ea..402f37a6 100644
--- a/extension/package.json
+++ b/extension/package.json
@@ -20,7 +20,19 @@
"vscode": "^1.74.0"
},
"categories": [
- "Other"
+ "Other",
+ "Education",
+ "Machine Learning"
+ ],
+ "keywords": [
+ "openai",
+ "chatbot",
+ "chatgpt",
+ "autocomplete",
+ "llm",
+ "ai",
+ "assistant",
+ "chat"
],
"activationEvents": [
"onStartupFinished",
@@ -68,20 +80,24 @@
}
],
"menus": {
- "view/title": [
+ "view/title": []
+ },
+ "viewsContainers": {
+ "activitybar": [
{
- "command": "continue.openContinueGUI",
- "group": "navigation",
- "when": "view == continue.continueGUIView"
+ "id": "continue",
+ "title": "Continue",
+ "icon": "media/continue-gradient.png"
}
]
},
"views": {
- "explorer": [
+ "continue": [
{
"type": "webview",
"id": "continue.continueGUIView",
- "name": "Continue GUI"
+ "name": "Continue GUI",
+ "visibility": "visible"
}
]
}
diff --git a/extension/src/activation/activate.ts b/extension/src/activation/activate.ts
index 293ee26c..135a8ec7 100644
--- a/extension/src/activation/activate.ts
+++ b/extension/src/activation/activate.ts
@@ -7,7 +7,7 @@ import * as path from "path";
// import { openCapturedTerminal } from "../terminal/terminalEmulator";
import IdeProtocolClient from "../continueIdeClient";
import { getContinueServerUrl } from "../bridge";
-import { setupDebugPanel } from "../debugPanel";
+import { setupDebugPanel, ContinueGUIWebviewViewProvider } from "../debugPanel";
export let extensionContext: vscode.ExtensionContext | undefined = undefined;
@@ -31,44 +31,21 @@ export function activateExtension(
context
);
- if (showTutorial && false) {
- Promise.all([
- vscode.workspace
- .openTextDocument(
- path.join(getExtensionUri().fsPath, "examples/python/sum.py")
- )
- .then((document) =>
- vscode.window.showTextDocument(document, {
- preview: false,
- viewColumn: vscode.ViewColumn.One,
- })
- ),
-
- vscode.workspace
- .openTextDocument(
- path.join(getExtensionUri().fsPath, "examples/python/main.py")
- )
- .then((document) =>
- vscode.window
- .showTextDocument(document, {
- preview: false,
- viewColumn: vscode.ViewColumn.One,
- })
- .then((editor) => {
- editor.revealRange(
- new vscode.Range(0, 0, 0, 0),
- vscode.TextEditorRevealType.InCenter
- );
- })
- ),
- ]).then(() => {
- ideProtocolClient?.openGUI();
- });
- } else {
- ideProtocolClient.openGUI().then(() => {
- // openCapturedTerminal();
- });
- }
+ // Setup the left panel
+ (async () => {
+ const sessionId = await ideProtocolClient.getSessionId();
+ const provider = new ContinueGUIWebviewViewProvider(sessionId);
+
+ context.subscriptions.push(
+ vscode.window.registerWebviewViewProvider(
+ "continue.continueGUIView",
+ provider,
+ {
+ webviewOptions: { retainContextWhenHidden: true },
+ }
+ )
+ );
+ })();
extensionContext = context;
}
diff --git a/extension/src/continueIdeClient.ts b/extension/src/continueIdeClient.ts
index 16941c70..c879c682 100644
--- a/extension/src/continueIdeClient.ts
+++ b/extension/src/continueIdeClient.ts
@@ -17,7 +17,6 @@ import { decorationManager } from "./decorations";
class IdeProtocolClient {
private messenger: WebsocketMessenger | null = null;
- private panels: Map<string, vscode.WebviewPanel> = new Map();
private readonly context: vscode.ExtensionContext;
private _makingEdit = 0;
@@ -214,35 +213,18 @@ class IdeProtocolClient {
// ------------------------------------ //
// Initiate Request
- closeGUI(sessionId: string) {
- this.panels.get(sessionId)?.dispose();
- this.panels.delete(sessionId);
+ async openGUI(asRightWebviewPanel: boolean = false) {
+ // Open the webview panel
}
- async openGUI() {
- console.log("OPENING GUI");
+ async getSessionId(): Promise<string> {
if (this.messenger === null) {
console.log("MESSENGER IS NULL");
}
const resp = await this.messenger?.sendAndReceive("openGUI", {});
const sessionId = resp.sessionId;
- console.log("SESSION ID", sessionId);
-
- const column = getRightViewColumn();
- const panel = vscode.window.createWebviewPanel(
- "continue.debugPanelView",
- "Continue",
- column,
- {
- enableScripts: true,
- retainContextWhenHidden: true,
- }
- );
-
- // And set its HTML content
- panel.webview.html = setupDebugPanel(panel, this.context, sessionId);
-
- this.panels.set(sessionId, panel);
+ console.log("New Continue session with ID: ", sessionId);
+ return sessionId;
}
acceptRejectSuggestion(accept: boolean, key: SuggestionRanges) {
diff --git a/extension/src/debugPanel.ts b/extension/src/debugPanel.ts
index 7407faf4..bb98eb46 100644
--- a/extension/src/debugPanel.ts
+++ b/extension/src/debugPanel.ts
@@ -136,7 +136,6 @@ let streamManager = new StreamManager();
export let debugPanelWebview: vscode.Webview | undefined;
export function setupDebugPanel(
panel: vscode.WebviewPanel | vscode.WebviewView,
- context: vscode.ExtensionContext | undefined,
sessionId: string
): string {
debugPanelWebview = panel.webview;
@@ -165,6 +164,11 @@ export function setupDebugPanel(
.toString();
}
+ panel.webview.options = {
+ enableScripts: true,
+ localResourceRoots: [vscode.Uri.joinPath(extensionUri, "react-app/dist")],
+ };
+
const nonce = getNonce();
vscode.window.onDidChangeTextEditorSelection((e) => {
@@ -488,13 +492,21 @@ export function setupDebugPanel(
</html>`;
}
-// class ContinueGUIWebviewViewProvider implements vscode.WebviewViewProvider {
-// public static readonly viewType = "continue.continueGUIView";
-// resolveWebviewView(
-// webviewView: vscode.WebviewView,
-// context: vscode.WebviewViewResolveContext<unknown>,
-// token: vscode.CancellationToken
-// ): void | Thenable<void> {
-// setupDebugPanel(webviewView, context, sessionId);
-// }
-// }
+export class ContinueGUIWebviewViewProvider
+ implements vscode.WebviewViewProvider
+{
+ public static readonly viewType = "continue.continueGUIView";
+ private readonly sessionId: string;
+
+ constructor(sessionId: string) {
+ this.sessionId = sessionId;
+ }
+
+ resolveWebviewView(
+ webviewView: vscode.WebviewView,
+ _context: vscode.WebviewViewResolveContext,
+ _token: vscode.CancellationToken
+ ): void | Thenable<void> {
+ webviewView.webview.html = setupDebugPanel(webviewView, this.sessionId);
+ }
+}