@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.
- package/README.md +12 -7
- package/dist/assets/index-BvX30NW5.css +32 -0
- package/dist/assets/{index-CtwxqzGG.js → index-D1IdCTT6.js} +269 -258
- package/dist/index.html +12 -4
- package/dist-server/server/index.js +0 -13
- package/dist-server/server/index.js.map +1 -1
- package/dist-server/server/modules/websocket/services/websocket-server.service.js +0 -5
- package/dist-server/server/modules/websocket/services/websocket-server.service.js.map +1 -1
- package/electron/desktopWindow.js +0 -15
- package/electron/launcher/launcher.js +1 -143
- package/electron/main.js +1 -117
- package/electron/preload.cjs +0 -3
- package/package.json +3 -8
- package/scripts/release/prepare-desktop-app.js +0 -6
- package/server/index.js +0 -14
- package/server/modules/websocket/services/websocket-server.service.ts +0 -6
- package/dist/assets/index-DlvtxFyt.css +0 -32
- package/dist-server/server/computer-use-agent.js +0 -242
- package/dist-server/server/computer-use-agent.js.map +0 -1
- package/dist-server/server/computer-use-mcp.js +0 -519
- package/dist-server/server/computer-use-mcp.js.map +0 -1
- package/dist-server/server/modules/computer-use/actions/raw-action-dispatcher.js +0 -55
- package/dist-server/server/modules/computer-use/actions/raw-action-dispatcher.js.map +0 -1
- package/dist-server/server/modules/computer-use/actions/raw-action-types.js +0 -2
- package/dist-server/server/modules/computer-use/actions/raw-action-types.js.map +0 -1
- package/dist-server/server/modules/computer-use/computer-executor.js +0 -212
- package/dist-server/server/modules/computer-use/computer-executor.js.map +0 -1
- package/dist-server/server/modules/computer-use/computer-semantics.service.js +0 -422
- package/dist-server/server/modules/computer-use/computer-semantics.service.js.map +0 -1
- package/dist-server/server/modules/computer-use/computer-use-mcp.routes.js +0 -126
- package/dist-server/server/modules/computer-use/computer-use-mcp.routes.js.map +0 -1
- package/dist-server/server/modules/computer-use/computer-use.routes.js +0 -196
- package/dist-server/server/modules/computer-use/computer-use.routes.js.map +0 -1
- package/dist-server/server/modules/computer-use/computer-use.service.js +0 -759
- package/dist-server/server/modules/computer-use/computer-use.service.js.map +0 -1
- package/dist-server/server/modules/computer-use/desktop-agent-relay.service.js +0 -126
- package/dist-server/server/modules/computer-use/desktop-agent-relay.service.js.map +0 -1
- package/dist-server/server/modules/computer-use/index.js +0 -3
- package/dist-server/server/modules/computer-use/index.js.map +0 -1
- package/dist-server/server/modules/computer-use/semantics/adapters/helper-semantic-adapter.js +0 -59
- package/dist-server/server/modules/computer-use/semantics/adapters/helper-semantic-adapter.js.map +0 -1
- package/dist-server/server/modules/computer-use/semantics/adapters/macos/macos-semantic-adapter.js +0 -5
- package/dist-server/server/modules/computer-use/semantics/adapters/macos/macos-semantic-adapter.js.map +0 -1
- package/dist-server/server/modules/computer-use/semantics/adapters/semantic-adapter.js +0 -2
- package/dist-server/server/modules/computer-use/semantics/adapters/semantic-adapter.js.map +0 -1
- package/dist-server/server/modules/computer-use/semantics/adapters/windows/windows-semantic-adapter.js +0 -5
- package/dist-server/server/modules/computer-use/semantics/adapters/windows/windows-semantic-adapter.js.map +0 -1
- package/dist-server/server/modules/computer-use/semantics/bin/darwin-arm64/CloudCLISemantics +0 -0
- package/dist-server/server/modules/computer-use/semantics/bin/darwin-x64/CloudCLISemantics +0 -0
- package/dist-server/server/modules/computer-use/semantics/bin/win32-arm64/CloudCLISemantics.exe +0 -0
- package/dist-server/server/modules/computer-use/semantics/bin/win32-x64/CloudCLISemantics.exe +0 -0
- package/dist-server/server/modules/computer-use/semantics/helpers/semantic-helper-process.js +0 -106
- package/dist-server/server/modules/computer-use/semantics/helpers/semantic-helper-process.js.map +0 -1
- package/dist-server/server/modules/computer-use/semantics/helpers/semantic-helper-resolver.js +0 -78
- package/dist-server/server/modules/computer-use/semantics/helpers/semantic-helper-resolver.js.map +0 -1
- package/dist-server/server/modules/computer-use/semantics/semantic-session-store.js +0 -68
- package/dist-server/server/modules/computer-use/semantics/semantic-session-store.js.map +0 -1
- package/dist-server/server/modules/computer-use/semantics/semantic-tool-dispatcher.js +0 -16
- package/dist-server/server/modules/computer-use/semantics/semantic-tool-dispatcher.js.map +0 -1
- package/dist-server/server/modules/computer-use/semantics/semantic-types.js +0 -2
- package/dist-server/server/modules/computer-use/semantics/semantic-types.js.map +0 -1
- package/dist-server/server/modules/websocket/services/desktop-agent-websocket.service.js +0 -39
- package/dist-server/server/modules/websocket/services/desktop-agent-websocket.service.js.map +0 -1
- package/electron/computerAgent.js +0 -290
- package/scripts/build-computer-semantics.mjs +0 -133
- package/scripts/copy-computer-semantics-bin.mjs +0 -24
- package/server/computer-use-agent.ts +0 -279
- package/server/computer-use-mcp.ts +0 -574
- package/server/modules/computer-use/actions/raw-action-dispatcher.ts +0 -67
- package/server/modules/computer-use/actions/raw-action-types.ts +0 -28
- package/server/modules/computer-use/computer-executor.ts +0 -242
- package/server/modules/computer-use/computer-semantics.service.ts +0 -460
- package/server/modules/computer-use/computer-use-mcp.routes.ts +0 -141
- package/server/modules/computer-use/computer-use.routes.ts +0 -211
- package/server/modules/computer-use/computer-use.service.ts +0 -920
- package/server/modules/computer-use/desktop-agent-relay.service.ts +0 -158
- package/server/modules/computer-use/index.ts +0 -2
- package/server/modules/computer-use/semantics/adapters/helper-semantic-adapter.ts +0 -82
- package/server/modules/computer-use/semantics/adapters/macos/macos-semantic-adapter.ts +0 -5
- package/server/modules/computer-use/semantics/adapters/semantic-adapter.ts +0 -23
- package/server/modules/computer-use/semantics/adapters/windows/windows-semantic-adapter.ts +0 -5
- package/server/modules/computer-use/semantics/bin/darwin-arm64/CloudCLISemantics +0 -0
- package/server/modules/computer-use/semantics/bin/darwin-x64/CloudCLISemantics +0 -0
- package/server/modules/computer-use/semantics/bin/win32-arm64/CloudCLISemantics.exe +0 -0
- package/server/modules/computer-use/semantics/bin/win32-x64/CloudCLISemantics.exe +0 -0
- package/server/modules/computer-use/semantics/helpers/macos/CloudCLISemantics.swift +0 -467
- package/server/modules/computer-use/semantics/helpers/semantic-helper-process.ts +0 -124
- package/server/modules/computer-use/semantics/helpers/semantic-helper-resolver.ts +0 -97
- package/server/modules/computer-use/semantics/helpers/windows/CloudCLISemantics.csproj +0 -11
- package/server/modules/computer-use/semantics/helpers/windows/Program.cs +0 -534
- package/server/modules/computer-use/semantics/semantic-session-store.ts +0 -87
- package/server/modules/computer-use/semantics/semantic-tool-dispatcher.ts +0 -17
- package/server/modules/computer-use/semantics/semantic-types.ts +0 -58
- 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
|
|
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();
|
package/electron/preload.cjs
CHANGED
|
@@ -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.
|
|
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:
|
|
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
|
|
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;
|