@cloudcli-ai/cloudcli 1.35.0 → 1.35.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (94) hide show
  1. package/README.md +12 -7
  2. package/dist/assets/index-BvX30NW5.css +32 -0
  3. package/dist/assets/{index-CtwxqzGG.js → index-D1IdCTT6.js} +269 -258
  4. package/dist/index.html +12 -4
  5. package/dist-server/server/index.js +0 -13
  6. package/dist-server/server/index.js.map +1 -1
  7. package/dist-server/server/modules/websocket/services/websocket-server.service.js +0 -5
  8. package/dist-server/server/modules/websocket/services/websocket-server.service.js.map +1 -1
  9. package/electron/desktopWindow.js +0 -15
  10. package/electron/launcher/launcher.js +1 -143
  11. package/electron/main.js +1 -117
  12. package/electron/preload.cjs +0 -3
  13. package/package.json +3 -8
  14. package/scripts/release/prepare-desktop-app.js +0 -6
  15. package/server/index.js +0 -14
  16. package/server/modules/websocket/services/websocket-server.service.ts +0 -6
  17. package/dist/assets/index-DlvtxFyt.css +0 -32
  18. package/dist-server/server/computer-use-agent.js +0 -242
  19. package/dist-server/server/computer-use-agent.js.map +0 -1
  20. package/dist-server/server/computer-use-mcp.js +0 -519
  21. package/dist-server/server/computer-use-mcp.js.map +0 -1
  22. package/dist-server/server/modules/computer-use/actions/raw-action-dispatcher.js +0 -55
  23. package/dist-server/server/modules/computer-use/actions/raw-action-dispatcher.js.map +0 -1
  24. package/dist-server/server/modules/computer-use/actions/raw-action-types.js +0 -2
  25. package/dist-server/server/modules/computer-use/actions/raw-action-types.js.map +0 -1
  26. package/dist-server/server/modules/computer-use/computer-executor.js +0 -212
  27. package/dist-server/server/modules/computer-use/computer-executor.js.map +0 -1
  28. package/dist-server/server/modules/computer-use/computer-semantics.service.js +0 -422
  29. package/dist-server/server/modules/computer-use/computer-semantics.service.js.map +0 -1
  30. package/dist-server/server/modules/computer-use/computer-use-mcp.routes.js +0 -126
  31. package/dist-server/server/modules/computer-use/computer-use-mcp.routes.js.map +0 -1
  32. package/dist-server/server/modules/computer-use/computer-use.routes.js +0 -196
  33. package/dist-server/server/modules/computer-use/computer-use.routes.js.map +0 -1
  34. package/dist-server/server/modules/computer-use/computer-use.service.js +0 -759
  35. package/dist-server/server/modules/computer-use/computer-use.service.js.map +0 -1
  36. package/dist-server/server/modules/computer-use/desktop-agent-relay.service.js +0 -126
  37. package/dist-server/server/modules/computer-use/desktop-agent-relay.service.js.map +0 -1
  38. package/dist-server/server/modules/computer-use/index.js +0 -3
  39. package/dist-server/server/modules/computer-use/index.js.map +0 -1
  40. package/dist-server/server/modules/computer-use/semantics/adapters/helper-semantic-adapter.js +0 -59
  41. package/dist-server/server/modules/computer-use/semantics/adapters/helper-semantic-adapter.js.map +0 -1
  42. package/dist-server/server/modules/computer-use/semantics/adapters/macos/macos-semantic-adapter.js +0 -5
  43. package/dist-server/server/modules/computer-use/semantics/adapters/macos/macos-semantic-adapter.js.map +0 -1
  44. package/dist-server/server/modules/computer-use/semantics/adapters/semantic-adapter.js +0 -2
  45. package/dist-server/server/modules/computer-use/semantics/adapters/semantic-adapter.js.map +0 -1
  46. package/dist-server/server/modules/computer-use/semantics/adapters/windows/windows-semantic-adapter.js +0 -5
  47. package/dist-server/server/modules/computer-use/semantics/adapters/windows/windows-semantic-adapter.js.map +0 -1
  48. package/dist-server/server/modules/computer-use/semantics/bin/darwin-arm64/CloudCLISemantics +0 -0
  49. package/dist-server/server/modules/computer-use/semantics/bin/darwin-x64/CloudCLISemantics +0 -0
  50. package/dist-server/server/modules/computer-use/semantics/bin/win32-arm64/CloudCLISemantics.exe +0 -0
  51. package/dist-server/server/modules/computer-use/semantics/bin/win32-x64/CloudCLISemantics.exe +0 -0
  52. package/dist-server/server/modules/computer-use/semantics/helpers/semantic-helper-process.js +0 -106
  53. package/dist-server/server/modules/computer-use/semantics/helpers/semantic-helper-process.js.map +0 -1
  54. package/dist-server/server/modules/computer-use/semantics/helpers/semantic-helper-resolver.js +0 -78
  55. package/dist-server/server/modules/computer-use/semantics/helpers/semantic-helper-resolver.js.map +0 -1
  56. package/dist-server/server/modules/computer-use/semantics/semantic-session-store.js +0 -68
  57. package/dist-server/server/modules/computer-use/semantics/semantic-session-store.js.map +0 -1
  58. package/dist-server/server/modules/computer-use/semantics/semantic-tool-dispatcher.js +0 -16
  59. package/dist-server/server/modules/computer-use/semantics/semantic-tool-dispatcher.js.map +0 -1
  60. package/dist-server/server/modules/computer-use/semantics/semantic-types.js +0 -2
  61. package/dist-server/server/modules/computer-use/semantics/semantic-types.js.map +0 -1
  62. package/dist-server/server/modules/websocket/services/desktop-agent-websocket.service.js +0 -39
  63. package/dist-server/server/modules/websocket/services/desktop-agent-websocket.service.js.map +0 -1
  64. package/electron/computerAgent.js +0 -290
  65. package/scripts/build-computer-semantics.mjs +0 -133
  66. package/scripts/copy-computer-semantics-bin.mjs +0 -24
  67. package/server/computer-use-agent.ts +0 -279
  68. package/server/computer-use-mcp.ts +0 -574
  69. package/server/modules/computer-use/actions/raw-action-dispatcher.ts +0 -67
  70. package/server/modules/computer-use/actions/raw-action-types.ts +0 -28
  71. package/server/modules/computer-use/computer-executor.ts +0 -242
  72. package/server/modules/computer-use/computer-semantics.service.ts +0 -460
  73. package/server/modules/computer-use/computer-use-mcp.routes.ts +0 -141
  74. package/server/modules/computer-use/computer-use.routes.ts +0 -211
  75. package/server/modules/computer-use/computer-use.service.ts +0 -920
  76. package/server/modules/computer-use/desktop-agent-relay.service.ts +0 -158
  77. package/server/modules/computer-use/index.ts +0 -2
  78. package/server/modules/computer-use/semantics/adapters/helper-semantic-adapter.ts +0 -82
  79. package/server/modules/computer-use/semantics/adapters/macos/macos-semantic-adapter.ts +0 -5
  80. package/server/modules/computer-use/semantics/adapters/semantic-adapter.ts +0 -23
  81. package/server/modules/computer-use/semantics/adapters/windows/windows-semantic-adapter.ts +0 -5
  82. package/server/modules/computer-use/semantics/bin/darwin-arm64/CloudCLISemantics +0 -0
  83. package/server/modules/computer-use/semantics/bin/darwin-x64/CloudCLISemantics +0 -0
  84. package/server/modules/computer-use/semantics/bin/win32-arm64/CloudCLISemantics.exe +0 -0
  85. package/server/modules/computer-use/semantics/bin/win32-x64/CloudCLISemantics.exe +0 -0
  86. package/server/modules/computer-use/semantics/helpers/macos/CloudCLISemantics.swift +0 -467
  87. package/server/modules/computer-use/semantics/helpers/semantic-helper-process.ts +0 -124
  88. package/server/modules/computer-use/semantics/helpers/semantic-helper-resolver.ts +0 -97
  89. package/server/modules/computer-use/semantics/helpers/windows/CloudCLISemantics.csproj +0 -11
  90. package/server/modules/computer-use/semantics/helpers/windows/Program.cs +0 -534
  91. package/server/modules/computer-use/semantics/semantic-session-store.ts +0 -87
  92. package/server/modules/computer-use/semantics/semantic-tool-dispatcher.ts +0 -17
  93. package/server/modules/computer-use/semantics/semantic-types.ts +0 -58
  94. package/server/modules/websocket/services/desktop-agent-websocket.service.ts +0 -51
package/electron/main.js CHANGED
@@ -1,10 +1,9 @@
1
- import { app, BrowserWindow, clipboard, dialog, ipcMain, session, shell, systemPreferences } from 'electron';
1
+ import { app, BrowserWindow, clipboard, dialog, ipcMain, session, shell } from 'electron';
2
2
  import { spawn } from 'node:child_process';
3
3
  import path from 'node:path';
4
4
  import { fileURLToPath } from 'node:url';
5
5
 
6
6
  import { CloudController } from './cloud.js';
7
- import { ComputerAgentController } from './computerAgent.js';
8
7
  import { DesktopWindowManager } from './desktopWindow.js';
9
8
  import { DesktopNotificationsController } from './desktopNotifications.js';
10
9
  import { LocalServerController } from './localServer.js';
@@ -30,7 +29,6 @@ let activeTarget = { kind: 'launcher', name: APP_NAME, url: null };
30
29
  let desktopWindow = null;
31
30
  let localServer = null;
32
31
  let cloud = null;
33
- let computerAgent = null;
34
32
  let desktopNotifications = null;
35
33
  let isQuitting = false;
36
34
  let isRefreshingCloud = false;
@@ -63,10 +61,6 @@ function getSettingsPath() {
63
61
  return path.join(app.getPath('userData'), 'desktop-settings.json');
64
62
  }
65
63
 
66
- function getComputerUseSettingsPath() {
67
- return path.join(app.getPath('userData'), 'computer-use-settings.json');
68
- }
69
-
70
64
  function getDesktopNotificationsSettingsPath() {
71
65
  return path.join(app.getPath('userData'), 'desktop-notifications-settings.json');
72
66
  }
@@ -78,23 +72,6 @@ function getRunningEnvironmentUrls() {
78
72
  .filter(Boolean);
79
73
  }
80
74
 
81
- async function promptComputerUseConsent(sessionId) {
82
- const { response } = await dialog.showMessageBox(desktopWindow?.getMainWindow() || undefined, {
83
- type: 'warning',
84
- buttons: ['Allow this session', 'Deny'],
85
- defaultId: 0,
86
- cancelId: 1,
87
- title: 'Computer Use request',
88
- message: 'An agent wants to control this computer',
89
- detail: [
90
- 'A cloud agent is requesting control of your mouse, keyboard, and screen for this session.',
91
- 'Approval lasts for this session only. You can stop it any time from the Computer panel.',
92
- sessionId ? `\nSession: ${sessionId}` : '',
93
- ].join('\n'),
94
- });
95
- return response === 0;
96
- }
97
-
98
75
  function getDisplayTargetName() {
99
76
  return activeTarget?.name || APP_NAME;
100
77
  }
@@ -151,66 +128,10 @@ function getDesktopState() {
151
128
  tabs: tabs.getSerializableTabs(),
152
129
  activeTabId: tabs.activeTabId,
153
130
  environments: cloud.getEnvironments().map(serializeEnvironment),
154
- computerUse: computerAgent?.getState() || { enabled: false, consentMode: 'ask', running: false, connectedCount: 0, targetCount: 0 },
155
131
  desktopNotifications: desktopNotifications?.getState() || { enabled: false, supported: false, connectedCount: 0, targetCount: 0 },
156
- computerUsePermissions: getComputerUsePermissions(),
157
- };
158
- }
159
-
160
- function getComputerUsePermissions() {
161
- if (process.platform !== 'darwin') {
162
- return {
163
- platform: process.platform,
164
- supported: false,
165
- accessibility: 'not_applicable',
166
- screenRecording: 'not_applicable',
167
- message: 'No OS permission onboarding is required from CloudCLI on this platform.',
168
- };
169
- }
170
-
171
- let accessibility;
172
- let screenRecording;
173
- try {
174
- accessibility = systemPreferences.isTrustedAccessibilityClient(false) ? 'granted' : 'not_granted';
175
- } catch {
176
- accessibility = 'unknown';
177
- }
178
- try {
179
- screenRecording = systemPreferences.getMediaAccessStatus('screen');
180
- } catch {
181
- screenRecording = 'unknown';
182
- }
183
-
184
- return {
185
- platform: 'darwin',
186
- supported: true,
187
- accessibility,
188
- screenRecording,
189
- message: accessibility === 'granted' && screenRecording === 'granted'
190
- ? 'macOS permissions are granted.'
191
- : 'macOS requires Accessibility and Screen Recording for Computer Use.',
192
132
  };
193
133
  }
194
134
 
195
- async function requestComputerUsePermission(permission) {
196
- if (process.platform !== 'darwin') {
197
- return getDesktopState();
198
- }
199
-
200
- if (permission === 'accessibility') {
201
- systemPreferences.isTrustedAccessibilityClient(true);
202
- } else if (permission === 'screen') {
203
- await shell.openExternal('x-apple.systempreferences:com.apple.preference.security?Privacy_ScreenCapture');
204
- } else if (permission === 'all') {
205
- systemPreferences.isTrustedAccessibilityClient(true);
206
- await shell.openExternal('x-apple.systempreferences:com.apple.preference.security?Privacy_ScreenCapture');
207
- } else {
208
- throw new Error(`Unknown Computer Use permission: ${permission}`);
209
- }
210
-
211
- return getDesktopState();
212
- }
213
-
214
135
  async function openExternalUrl(url) {
215
136
  if (String(url).startsWith(CALLBACK_PROTOCOL + "://")) {
216
137
  await handleDeepLink(url);
@@ -316,8 +237,6 @@ function getDiagnosticsText() {
316
237
  cloudEnvironmentCount: cloud.getEnvironments().length,
317
238
  cloudRunningEnvironmentCount: getRunningEnvironmentUrls().length,
318
239
  cloudAuthState: cloud.getAuthState(),
319
- computerUse: computerAgent?.getState() || null,
320
- computerUseSettingsPath: getComputerUseSettingsPath(),
321
240
  cloudAccountPath: getStorePath(),
322
241
  controlPlaneUrl: CLOUDCLI_CONTROL_PLANE_URL,
323
242
  }, null, 2);
@@ -332,22 +251,6 @@ async function copyDiagnostics() {
332
251
  });
333
252
  }
334
253
 
335
- async function showComputerAccess() {
336
- await desktopWindow?.showDesktopSettings();
337
- return getDesktopState();
338
- }
339
-
340
- async function updateComputerUse(settings) {
341
- const current = computerAgent?.getSettings() || { enabled: false, consentMode: 'ask' };
342
- const next = {
343
- enabled: typeof settings?.enabled === 'boolean' ? settings.enabled : current.enabled,
344
- consentMode: settings?.consentMode === 'auto' ? 'auto' : 'ask',
345
- };
346
- await computerAgent?.saveSettings(next);
347
- syncDesktopState();
348
- return getDesktopState();
349
- }
350
-
351
254
  async function refreshCloudEnvironments({ showErrors = false } = {}) {
352
255
  isRefreshingCloud = true;
353
256
  syncDesktopState();
@@ -370,7 +273,6 @@ async function refreshCloudEnvironments({ showErrors = false } = {}) {
370
273
  throw error;
371
274
  } finally {
372
275
  isRefreshingCloud = false;
373
- void computerAgent?.sync().catch((error) => console.error('[ComputerAgent] sync failed:', error?.message || error));
374
276
  void desktopNotifications?.sync().catch((error) => console.error('[DesktopNotifications] sync failed:', error?.message || error));
375
277
  syncDesktopState();
376
278
  }
@@ -852,16 +754,10 @@ function registerIpcHandlers() {
852
754
  await desktopWindow.showLauncher();
853
755
  return getDesktopState();
854
756
  });
855
- ipcMain.handle('cloudcli-desktop:show-computer-access', async () => {
856
- await showComputerAccess();
857
- return getDesktopState();
858
- });
859
- ipcMain.handle('cloudcli-desktop:update-computer-use', async (_event, settings) => updateComputerUse(settings));
860
757
  ipcMain.handle('cloudcli-desktop:update-desktop-notifications', async (_event, settings) => {
861
758
  await desktopNotifications?.saveSettings(settings);
862
759
  return getDesktopState();
863
760
  });
864
- ipcMain.handle('cloudcli-desktop:request-computer-use-permission', async (_event, permission) => requestComputerUsePermission(permission));
865
761
  ipcMain.handle('cloudcli-desktop:show-desktop-settings', async () => desktopWindow.showDesktopSettings());
866
762
  ipcMain.handle('cloudcli-desktop:show-local-settings', async () => desktopWindow.showLocalSettings());
867
763
  ipcMain.handle('cloudcli-desktop:close-settings-window', async () => {
@@ -899,7 +795,6 @@ function registerAppEvents() {
899
795
  });
900
796
 
901
797
  app.on('before-quit', () => {
902
- computerAgent?.stop();
903
798
  desktopNotifications?.stop();
904
799
  });
905
800
 
@@ -951,7 +846,6 @@ async function createDesktopWindow() {
951
846
  openCloudDashboard,
952
847
  refreshCloudEnvironments: () => refreshCloudEnvironments({ showErrors: true }),
953
848
  setActiveTarget,
954
- showComputerAccess,
955
849
  showEnvironmentPicker,
956
850
  showError,
957
851
  startEnvironment,
@@ -1017,15 +911,6 @@ async function bootstrap() {
1017
911
  callbackUrl: CALLBACK_URL,
1018
912
  onChange: syncDesktopState,
1019
913
  });
1020
- computerAgent = new ComputerAgentController({
1021
- appRoot: getAppRoot(),
1022
- settingsPath: getComputerUseSettingsPath(),
1023
- isPackaged: app.isPackaged,
1024
- getRunningEnvironmentUrls,
1025
- getApiKey: () => cloud.getAccount()?.apiKey || '',
1026
- promptConsent: promptComputerUseConsent,
1027
- onChange: syncDesktopState,
1028
- });
1029
914
  desktopNotifications = new DesktopNotificationsController({
1030
915
  settingsPath: getDesktopNotificationsSettingsPath(),
1031
916
  appVersion: app.getVersion(),
@@ -1042,7 +927,6 @@ async function bootstrap() {
1042
927
 
1043
928
  await localServer.loadDesktopSettings();
1044
929
  await cloud.loadCloudAccount();
1045
- await computerAgent.loadSettings();
1046
930
  await desktopNotifications.loadSettings();
1047
931
 
1048
932
  registerProtocolHandler();
@@ -44,10 +44,7 @@ if (window.location.protocol === 'file:') {
44
44
  refreshActiveTab: () => ipcRenderer.invoke('cloudcli-desktop:reload-active-tab'),
45
45
  showEnvironmentPicker: () => ipcRenderer.invoke('cloudcli-desktop:show-environment-picker'),
46
46
  showLauncher: () => ipcRenderer.invoke('cloudcli-desktop:show-launcher'),
47
- showComputerAccess: () => ipcRenderer.invoke('cloudcli-desktop:show-computer-access'),
48
47
  showLocalSettings: () => ipcRenderer.invoke('cloudcli-desktop:show-local-settings'),
49
- updateComputerUse: (settings) => ipcRenderer.invoke('cloudcli-desktop:update-computer-use', settings),
50
- requestComputerUsePermission: (permission) => ipcRenderer.invoke('cloudcli-desktop:request-computer-use-permission', permission),
51
48
  showDesktopSettings: () => ipcRenderer.invoke('cloudcli-desktop:show-desktop-settings'),
52
49
  closeSettingsWindow: () => ipcRenderer.invoke('cloudcli-desktop:close-settings-window'),
53
50
  showActiveEnvironmentActionsMenu: () => ipcRenderer.invoke('cloudcli-desktop:show-active-environment-actions-menu'),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cloudcli-ai/cloudcli",
3
- "version": "1.35.0",
3
+ "version": "1.35.1",
4
4
  "productName": "CloudCLI",
5
5
  "description": "A web-based UI for Claude Code CLI",
6
6
  "type": "module",
@@ -29,13 +29,10 @@
29
29
  "scripts": {
30
30
  "dev": "concurrently --kill-others \"npm run server:dev\" \"npm run client\"",
31
31
  "server": "node dist-server/server/index.js",
32
- "preserver:dev": "npm run build:semantics",
33
32
  "server:dev": "tsx --tsconfig server/tsconfig.json server/index.js",
34
- "preserver:dev-watch": "npm run build:semantics",
35
33
  "server:dev-watch": "tsx watch --tsconfig server/tsconfig.json server/index.js",
36
34
  "client": "vite",
37
35
  "desktop": "electron electron/main.js",
38
- "predesktop:dev": "npm run build:semantics",
39
36
  "desktop:dev": "cross-env ELECTRON_DEV_URL=http://127.0.0.1:5173 electron electron/main.js",
40
37
  "desktop:stage": "node scripts/release/prepare-desktop-app.js",
41
38
  "desktop:pack": "npm run build && npm run desktop:stage && electron-builder --projectDir .desktop-build/desktop-app --dir",
@@ -43,12 +40,10 @@
43
40
  "desktop:dist:win": "npm run build && npm run desktop:stage && electron-builder --projectDir .desktop-build/desktop-app --win nsis",
44
41
  "server:bundle": "npm run build && node scripts/release/build-server-bundle.js",
45
42
  "desktop:icon:mac": "node electron/scripts/generate-macos-icon.js",
46
- "build": "npm run build:semantics && npm run build:client && npm run build:server",
43
+ "build": "npm run build:client && npm run build:server",
47
44
  "build:client": "vite build",
48
- "build:semantics": "node scripts/build-computer-semantics.mjs",
49
45
  "prebuild:server": "node -e \"require('node:fs').rmSync('dist-server', { recursive: true, force: true })\"",
50
46
  "build:server": "tsc -p server/tsconfig.json && tsc-alias -p server/tsconfig.json",
51
- "postbuild:server": "node scripts/copy-computer-semantics-bin.mjs",
52
47
  "preview": "vite preview",
53
48
  "typecheck": "tsc --noEmit -p tsconfig.json && tsc --noEmit -p server/tsconfig.json",
54
49
  "lint": "eslint src/ server/",
@@ -56,7 +51,7 @@
56
51
  "start": "npm run build && npm run server",
57
52
  "release": "./release.sh",
58
53
  "prepublishOnly": "npm run build",
59
- "postinstall": "node scripts/fix-node-pty.js && npm run build:semantics",
54
+ "postinstall": "node scripts/fix-node-pty.js",
60
55
  "prepare": "husky",
61
56
  "update:platform": "./update-platform.sh"
62
57
  },
@@ -113,12 +113,6 @@ await copyRequired('electron');
113
113
  await copyRequired('dist');
114
114
  await copyRequired('public');
115
115
 
116
- // The desktop app still ships the standalone Computer Use desktop agent, but
117
- // not the full local server. Local CloudCLI is downloaded on demand.
118
- await copyRequired('dist-server/server/computer-use-agent.js');
119
- await copyIfExists('dist-server/server/computer-use-agent.js.map');
120
- await copyRequired('dist-server/server/modules/computer-use');
121
-
122
116
  const copiedRuntimeDependencies = [];
123
117
  if (await copyNodeModule('ws')) {
124
118
  copiedRuntimeDependencies.push('ws');
package/server/index.js CHANGED
@@ -66,9 +66,6 @@ import voiceRoutes from './voice-proxy.js';
66
66
  import browserUseRoutes from './modules/browser-use/browser-use.routes.js';
67
67
  import browserUseMcpRoutes from './modules/browser-use/browser-use-mcp.routes.js';
68
68
  import { browserUseService } from './modules/browser-use/browser-use.service.js';
69
- import computerUseRoutes from './modules/computer-use/computer-use.routes.js';
70
- import computerUseMcpRoutes from './modules/computer-use/computer-use-mcp.routes.js';
71
- import { computerUseService } from './modules/computer-use/computer-use.service.js';
72
69
  import { startEnabledPluginServers, stopAllPlugins, getPluginPort } from './utils/plugin-process-manager.js';
73
70
  import { initializeDatabase, projectsDb, sessionsDb } from './modules/database/index.js';
74
71
  import { configureWebPush } from './services/vapid-keys.js';
@@ -223,12 +220,6 @@ app.use('/api/browser-use-mcp', browserUseMcpRoutes);
223
220
  // Browser API Routes (protected)
224
221
  app.use('/api/browser-use', authenticateToken, browserUseRoutes);
225
222
 
226
- // Computer Use MCP bridge API (local token protected)
227
- app.use('/api/computer-use-mcp', computerUseMcpRoutes);
228
-
229
- // Computer Use API Routes (protected)
230
- app.use('/api/computer-use', authenticateToken, computerUseRoutes);
231
-
232
223
  // Unified provider MCP routes (protected)
233
224
  app.use('/api/providers', authenticateToken, providerRoutes);
234
225
 
@@ -1785,11 +1776,6 @@ async function startServer() {
1785
1776
  } catch (err) {
1786
1777
  console.error('[Browser] Error stopping sessions during shutdown:', err?.message || err);
1787
1778
  }
1788
- try {
1789
- await computerUseService.stopAllSessions();
1790
- } catch (err) {
1791
- console.error('[Computer Use] Error stopping sessions during shutdown:', err?.message || err);
1792
- }
1793
1779
  try {
1794
1780
  await stopAllPlugins();
1795
1781
  } catch (err) {
@@ -6,7 +6,6 @@ import { handleChatConnection } from '@/modules/websocket/services/chat-websocke
6
6
  import { verifyWebSocketClient } from '@/modules/websocket/services/websocket-auth.service.js';
7
7
  import { handlePluginWsProxy } from '@/modules/websocket/services/plugin-websocket-proxy.service.js';
8
8
  import { handleShellConnection } from '@/modules/websocket/services/shell-websocket.service.js';
9
- import { handleDesktopAgentConnection } from '@/modules/websocket/services/desktop-agent-websocket.service.js';
10
9
  import { handleDesktopNotificationsConnection } from '@/modules/notifications/index.js';
11
10
  import type { AuthenticatedWebSocketRequest } from '@/shared/types.js';
12
11
 
@@ -65,11 +64,6 @@ export function createWebSocketServer(
65
64
  return;
66
65
  }
67
66
 
68
- if (pathname === '/desktop-agent') {
69
- handleDesktopAgentConnection(ws, incomingRequest);
70
- return;
71
- }
72
-
73
67
  if (pathname === '/desktop-notifications') {
74
68
  handleDesktopNotificationsConnection(ws, incomingRequest);
75
69
  return;