Compare commits

...

5 Commits

Author SHA1 Message Date
Elephant Lumps 6639a8149e merge conflicts 2025-05-20 16:39:55 -07:00
Elephant Lumps 121484bebd changeset 2025-05-20 11:42:24 -07:00
Elephant Lumps cc2d8af38a migrate updateTerminalConnectionTimeout 2025-05-20 11:41:55 -07:00
Elephant Lumps 2c1fa30420 changeset 2025-05-20 09:57:02 -07:00
Elephant Lumps 5529f7e7fb migrate setActiveQuote 2025-05-20 09:56:34 -07:00
9 changed files with 59 additions and 23 deletions
+5
View File
@@ -0,0 +1,5 @@
---
"claude-dev": minor
---
Migrate updateTerminalConnectionTimeout to protobus
+1
View File
@@ -9,6 +9,7 @@ service StateService {
rpc toggleFavoriteModel(StringRequest) returns (Empty);
rpc resetState(EmptyRequest) returns (Empty);
rpc togglePlanActMode(TogglePlanActModeRequest) returns (Empty);
rpc updateTerminalConnectionTimeout(Int64Request) returns (Int64);
}
message State {
-15
View File
@@ -529,21 +529,6 @@ export class Controller {
break
}
case "updateTerminalConnectionTimeout": {
if (message.shellIntegrationTimeout !== undefined) {
const timeout = message.shellIntegrationTimeout
if (typeof timeout === "number" && !isNaN(timeout) && timeout > 0) {
await updateGlobalState(this.context, "shellIntegrationTimeout", timeout)
await this.postStateToWebview()
} else {
console.warn(
`Invalid shell integration timeout value received: ${timeout}. ` + `Expected a positive number.`,
)
}
}
break
}
// Add more switch case statements here as more webview message commands
// are created within the webview context (i.e. inside media/main.js)
}
+2
View File
@@ -8,6 +8,7 @@ import { resetState } from "./resetState"
import { subscribeToState } from "./subscribeToState"
import { toggleFavoriteModel } from "./toggleFavoriteModel"
import { togglePlanActMode } from "./togglePlanActMode"
import { updateTerminalConnectionTimeout } from "./updateTerminalConnectionTimeout"
// Streaming methods for this service
export const streamingMethods = ["subscribeToState"]
@@ -20,4 +21,5 @@ export function registerAllMethods(): void {
registerMethod("subscribeToState", subscribeToState, { isStreaming: true })
registerMethod("toggleFavoriteModel", toggleFavoriteModel)
registerMethod("togglePlanActMode", togglePlanActMode)
registerMethod("updateTerminalConnectionTimeout", updateTerminalConnectionTimeout)
}
@@ -0,0 +1,27 @@
import { Controller } from ".."
import { Int64, Int64Request } from "../../../shared/proto/common"
import { updateGlobalState } from "../../storage/state"
/**
* Updates the terminal connection timeout setting
* @param controller The controller instance
* @param request The request containing the timeout value in milliseconds
* @returns The updated timeout value
*/
export async function updateTerminalConnectionTimeout(controller: Controller, request: Int64Request): Promise<Int64> {
try {
const timeout = request.value
if (typeof timeout === "number" && !isNaN(timeout) && timeout > 0) {
// Update the global state directly
await updateGlobalState(controller.context, "shellIntegrationTimeout", timeout)
return { value: timeout }
} else {
console.warn(`Invalid shell integration timeout value received: ${timeout}. Expected a positive number.`)
throw new Error("Invalid timeout value. Expected a positive number.")
}
} catch (error) {
console.error(`Failed to update terminal connection timeout: ${error}`)
throw error
}
}
-1
View File
@@ -43,7 +43,6 @@ export interface WebviewMessage {
| "grpc_request_cancel"
| "toggleWindsurfRule"
| "toggleWorkflow"
| "updateTerminalConnectionTimeout"
text?: string
disabled?: boolean
+9 -1
View File
@@ -6,7 +6,7 @@
/* eslint-disable */
import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire"
import { Empty, EmptyRequest, Metadata, StringRequest } from "./common"
import { Empty, EmptyRequest, Int64, Int64Request, Metadata, StringRequest } from "./common"
export const protobufPackage = "cline"
@@ -436,6 +436,14 @@ export const StateServiceDefinition = {
responseStream: false,
options: {},
},
updateTerminalConnectionTimeout: {
name: "updateTerminalConnectionTimeout",
requestType: Int64Request,
requestStream: false,
responseType: Int64,
responseStream: false,
options: {},
},
},
} as const
+2
View File
@@ -60,6 +60,7 @@ import { subscribeToState } from "../core/controller/state/subscribeToState"
import { toggleFavoriteModel } from "../core/controller/state/toggleFavoriteModel"
import { resetState } from "../core/controller/state/resetState"
import { togglePlanActMode } from "../core/controller/state/togglePlanActMode"
import { updateTerminalConnectionTimeout } from "../core/controller/state/updateTerminalConnectionTimeout"
// Task Service
import { cancelTask } from "../core/controller/task/cancelTask"
@@ -160,6 +161,7 @@ export function addServices(
toggleFavoriteModel: wrapper(toggleFavoriteModel, controller),
resetState: wrapper(resetState, controller),
togglePlanActMode: wrapper(togglePlanActMode, controller),
updateTerminalConnectionTimeout: wrapper(updateTerminalConnectionTimeout, controller),
})
// Task Service
@@ -1,7 +1,8 @@
import React, { useState } from "react"
import { VSCodeTextField } from "@vscode/webview-ui-toolkit/react"
import { useExtensionState } from "@/context/ExtensionStateContext"
import { vscode } from "@/utils/vscode"
import { StateServiceClient } from "@/services/grpc-client"
import { Int64, Int64Request } from "@shared/proto/common"
export const TerminalSettingsSection: React.FC = () => {
const { shellIntegrationTimeout, setShellIntegrationTimeout } = useExtensionState()
@@ -26,11 +27,17 @@ export const TerminalSettingsSection: React.FC = () => {
// Update local state
setShellIntegrationTimeout(timeout)
// Send to extension
vscode.postMessage({
type: "updateTerminalConnectionTimeout",
shellIntegrationTimeout: timeout,
})
// Send to extension using gRPC
StateServiceClient.updateTerminalConnectionTimeout({
value: timeout,
} as Int64Request)
.then((response: Int64) => {
setShellIntegrationTimeout(response.value)
setInputValue((response.value / 1000).toString())
})
.catch((error) => {
console.error("Failed to update terminal connection timeout:", error)
})
}
const handleInputBlur = () => {