diff options
author | Nate Sesti <33237525+sestinj@users.noreply.github.com> | 2023-08-06 22:54:51 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-08-06 22:54:51 -0700 |
commit | 74005855304412f0401e29c83c166e99a8ab0944 (patch) | |
tree | 4e8ddb61fd52068e839ca4ccab268e013405d545 /extension/react-app/src/hooks/ContinueGUIClientProtocol.ts | |
parent | a0d3f29ee237484c66b0efe243c79d902f2da993 (diff) | |
parent | 8ada89b0f66f9e746394ee64591359537fe0c7f0 (diff) | |
download | sncontinue-74005855304412f0401e29c83c166e99a8ab0944.tar.gz sncontinue-74005855304412f0401e29c83c166e99a8ab0944.tar.bz2 sncontinue-74005855304412f0401e29c83c166e99a8ab0944.zip |
Merge pull request #351 from continuedev/history
Session History
Diffstat (limited to 'extension/react-app/src/hooks/ContinueGUIClientProtocol.ts')
-rw-r--r-- | extension/react-app/src/hooks/ContinueGUIClientProtocol.ts | 66 |
1 files changed, 49 insertions, 17 deletions
diff --git a/extension/react-app/src/hooks/ContinueGUIClientProtocol.ts b/extension/react-app/src/hooks/ContinueGUIClientProtocol.ts index b6dd43d9..c2285f6d 100644 --- a/extension/react-app/src/hooks/ContinueGUIClientProtocol.ts +++ b/extension/react-app/src/hooks/ContinueGUIClientProtocol.ts @@ -4,16 +4,21 @@ import { Messenger, WebsocketMessenger } from "./messenger"; import { VscodeMessenger } from "./vscodeMessenger"; class ContinueGUIClientProtocol extends AbstractContinueGUIClientProtocol { - messenger: Messenger; + messenger?: Messenger; // Server URL must contain the session ID param serverUrlWithSessionId: string; + useVscodeMessagePassing: boolean; - constructor( + private connectMessenger( serverUrlWithSessionId: string, useVscodeMessagePassing: boolean ) { - super(); + if (this.messenger) { + console.log("Closing session: ", this.serverUrlWithSessionId); + this.messenger.close(); + } this.serverUrlWithSessionId = serverUrlWithSessionId; + this.useVscodeMessagePassing = useVscodeMessagePassing; this.messenger = useVscodeMessagePassing ? new VscodeMessenger(serverUrlWithSessionId) : new WebsocketMessenger(serverUrlWithSessionId); @@ -24,26 +29,53 @@ class ContinueGUIClientProtocol extends AbstractContinueGUIClientProtocol { this.messenger.onError((error) => { console.log("GUI -> IDE websocket error", error); }); + + this.messenger.onMessageType("reconnect_at_session", (data: any) => { + if (data.session_id) { + this.onReconnectAtSession(data.session_id); + } + }); + } + + constructor( + serverUrlWithSessionId: string, + useVscodeMessagePassing: boolean + ) { + super(); + this.serverUrlWithSessionId = serverUrlWithSessionId; + this.useVscodeMessagePassing = useVscodeMessagePassing; + this.connectMessenger(serverUrlWithSessionId, useVscodeMessagePassing); + } + + loadSession(session_id?: string): void { + this.messenger?.send("load_session", { session_id }); + } + + onReconnectAtSession(session_id: string): void { + this.connectMessenger( + `${this.serverUrlWithSessionId.split("?")[0]}?session_id=${session_id}`, + this.useVscodeMessagePassing + ); } sendMainInput(input: string) { - this.messenger.send("main_input", { input }); + this.messenger?.send("main_input", { input }); } reverseToIndex(index: number) { - this.messenger.send("reverse_to_index", { index }); + this.messenger?.send("reverse_to_index", { index }); } sendRefinementInput(input: string, index: number) { - this.messenger.send("refinement_input", { input, index }); + this.messenger?.send("refinement_input", { input, index }); } sendStepUserInput(input: string, index: number) { - this.messenger.send("step_user_input", { input, index }); + this.messenger?.send("step_user_input", { input, index }); } onStateUpdate(callback: (state: any) => void) { - this.messenger.onMessageType("state_update", (data: any) => { + this.messenger?.onMessageType("state_update", (data: any) => { if (data.state) { callback(data.state); } @@ -53,7 +85,7 @@ class ContinueGUIClientProtocol extends AbstractContinueGUIClientProtocol { onAvailableSlashCommands( callback: (commands: { name: string; description: string }[]) => void ) { - this.messenger.onMessageType("available_slash_commands", (data: any) => { + this.messenger?.onMessageType("available_slash_commands", (data: any) => { if (data.commands) { callback(data.commands); } @@ -61,37 +93,37 @@ class ContinueGUIClientProtocol extends AbstractContinueGUIClientProtocol { } sendClear() { - this.messenger.send("clear_history", {}); + this.messenger?.send("clear_history", {}); } retryAtIndex(index: number) { - this.messenger.send("retry_at_index", { index }); + this.messenger?.send("retry_at_index", { index }); } deleteAtIndex(index: number) { - this.messenger.send("delete_at_index", { index }); + this.messenger?.send("delete_at_index", { index }); } deleteContextWithIds(ids: ContextItemId[]) { - this.messenger.send("delete_context_with_ids", { + this.messenger?.send("delete_context_with_ids", { ids: ids.map((id) => `${id.provider_title}-${id.item_id}`), }); } setEditingAtIds(ids: string[]) { - this.messenger.send("set_editing_at_ids", { ids }); + this.messenger?.send("set_editing_at_ids", { ids }); } toggleAddingHighlightedCode(): void { - this.messenger.send("toggle_adding_highlighted_code", {}); + this.messenger?.send("toggle_adding_highlighted_code", {}); } showLogsAtIndex(index: number): void { - this.messenger.send("show_logs_at_index", { index }); + this.messenger?.send("show_logs_at_index", { index }); } selectContextItem(id: string, query: string): void { - this.messenger.send("select_context_item", { id, query }); + this.messenger?.send("select_context_item", { id, query }); } } |