mirror of
https://github.com/RooVetGit/Roo-Code.git
synced 2026-08-28 05:27:24 +00:00
feat: sync extension bridge settings with cloud (#7535)
- Use CloudService.getUserSettings() for remoteControlEnabled instead of global state - Update CloudService.updateUserSettings when toggling remote control - Add BridgeOrchestrator.connectOrDisconnect handling in settings update handler - Remove dependency on contentProxy/globalSettings for remote control state --------- Co-authored-by: Roo Code <roomote@roocode.com> Co-authored-by: John Richmond <5629+jr@users.noreply.github.com>
This commit is contained in:
parent
b22a618ee2
commit
01458f1646
3 changed files with 59 additions and 10 deletions
|
|
@ -1892,7 +1892,7 @@ export class ClineProvider
|
|||
includeDiagnosticMessages: includeDiagnosticMessages ?? true,
|
||||
maxDiagnosticMessages: maxDiagnosticMessages ?? 50,
|
||||
includeTaskHistoryInEnhance: includeTaskHistoryInEnhance ?? true,
|
||||
remoteControlEnabled: remoteControlEnabled ?? false,
|
||||
remoteControlEnabled,
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -2080,8 +2080,18 @@ export class ClineProvider
|
|||
maxDiagnosticMessages: stateValues.maxDiagnosticMessages ?? 50,
|
||||
// Add includeTaskHistoryInEnhance setting
|
||||
includeTaskHistoryInEnhance: stateValues.includeTaskHistoryInEnhance ?? true,
|
||||
// Add remoteControlEnabled setting
|
||||
remoteControlEnabled: stateValues.remoteControlEnabled ?? false,
|
||||
// Add remoteControlEnabled setting - get from cloud settings
|
||||
remoteControlEnabled: (() => {
|
||||
try {
|
||||
const cloudSettings = CloudService.instance.getUserSettings()
|
||||
return cloudSettings?.settings?.extensionBridgeEnabled ?? false
|
||||
} catch (error) {
|
||||
console.error(
|
||||
`[getState] failed to get remote control setting from cloud: ${error instanceof Error ? error.message : String(error)}`,
|
||||
)
|
||||
return false
|
||||
}
|
||||
})(),
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -950,7 +950,13 @@ export const webviewMessageHandler = async (
|
|||
await provider.postStateToWebview()
|
||||
break
|
||||
case "remoteControlEnabled":
|
||||
await updateGlobalState("remoteControlEnabled", message.bool ?? false)
|
||||
try {
|
||||
await CloudService.instance.updateUserSettings({
|
||||
extensionBridgeEnabled: message.bool ?? false,
|
||||
})
|
||||
} catch (error) {
|
||||
provider.log(`Failed to update cloud settings for remote control: ${error}`)
|
||||
}
|
||||
await provider.remoteControlEnabled(message.bool ?? false)
|
||||
await provider.postStateToWebview()
|
||||
break
|
||||
|
|
|
|||
|
|
@ -128,7 +128,36 @@ export async function activate(context: vscode.ExtensionContext) {
|
|||
// Initialize Roo Code Cloud service.
|
||||
const postStateListener = () => ClineProvider.getVisibleInstance()?.postStateToWebview()
|
||||
authStateChangedHandler = postStateListener
|
||||
settingsUpdatedHandler = postStateListener
|
||||
|
||||
settingsUpdatedHandler = async () => {
|
||||
const userInfo = CloudService.instance.getUserInfo()
|
||||
if (userInfo && CloudService.instance.cloudAPI) {
|
||||
try {
|
||||
const config = await CloudService.instance.cloudAPI.bridgeConfig()
|
||||
|
||||
const isCloudAgent =
|
||||
typeof process.env.ROO_CODE_CLOUD_TOKEN === "string" && process.env.ROO_CODE_CLOUD_TOKEN.length > 0
|
||||
|
||||
const remoteControlEnabled = isCloudAgent
|
||||
? true
|
||||
: (CloudService.instance.getUserSettings()?.settings?.extensionBridgeEnabled ?? false)
|
||||
|
||||
cloudLogger(`[CloudService] Settings updated - remoteControlEnabled = ${remoteControlEnabled}`)
|
||||
|
||||
await BridgeOrchestrator.connectOrDisconnect(userInfo, remoteControlEnabled, {
|
||||
...config,
|
||||
provider,
|
||||
sessionId: vscode.env.sessionId,
|
||||
})
|
||||
} catch (error) {
|
||||
cloudLogger(
|
||||
`[CloudService] Failed to update BridgeOrchestrator on settings change: ${error instanceof Error ? error.message : String(error)}`,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
postStateListener()
|
||||
}
|
||||
|
||||
userInfoHandler = async ({ userInfo }: { userInfo: CloudUserInfo }) => {
|
||||
postStateListener()
|
||||
|
|
@ -146,11 +175,15 @@ export async function activate(context: vscode.ExtensionContext) {
|
|||
|
||||
cloudLogger(`[CloudService] isCloudAgent = ${isCloudAgent}, socketBridgeUrl = ${config.socketBridgeUrl}`)
|
||||
|
||||
await BridgeOrchestrator.connectOrDisconnect(
|
||||
userInfo,
|
||||
isCloudAgent ? true : contextProxy.getValue("remoteControlEnabled"),
|
||||
{ ...config, provider, sessionId: vscode.env.sessionId },
|
||||
)
|
||||
const remoteControlEnabled = isCloudAgent
|
||||
? true
|
||||
: (CloudService.instance.getUserSettings()?.settings?.extensionBridgeEnabled ?? false)
|
||||
|
||||
await BridgeOrchestrator.connectOrDisconnect(userInfo, remoteControlEnabled, {
|
||||
...config,
|
||||
provider,
|
||||
sessionId: vscode.env.sessionId,
|
||||
})
|
||||
} catch (error) {
|
||||
cloudLogger(
|
||||
`[CloudService] Failed to fetch bridgeConfig: ${error instanceof Error ? error.message : String(error)}`,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue