@codingame/monaco-vscode-remote-agent-service-override 4.1.0 → 4.1.2
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/external/rollup-plugin-styles/dist/runtime/inject-css.js +3 -0
- package/override/vs/platform/dialogs/common/dialogs.js +10 -0
- package/package.json +3 -3
- package/remoteAgent.js +8 -8
- package/vscode/src/vs/platform/download/common/downloadIpc.js +18 -0
- package/vscode/src/vs/platform/log/common/logIpc.js +28 -0
- package/vscode/src/vs/platform/remote/browser/remoteAuthorityResolverService.js +110 -0
- package/vscode/src/vs/workbench/contrib/remote/browser/explorerViewItems.js +135 -0
- package/vscode/src/vs/workbench/contrib/remote/browser/media/remoteViewlet.css.js +6 -0
- package/vscode/src/vs/workbench/contrib/remote/browser/remote.contribution.js +19 -0
- package/vscode/src/vs/workbench/contrib/remote/browser/remote.js +831 -0
- package/vscode/src/vs/workbench/contrib/remote/browser/remoteConnectionHealth.js +166 -0
- package/vscode/src/vs/workbench/contrib/remote/browser/remoteIndicator.js +802 -0
- package/vscode/src/vs/workbench/contrib/remote/browser/remoteStartEntry.contribution.js +6 -0
- package/vscode/src/vs/workbench/contrib/remote/browser/remoteStartEntry.js +97 -0
- package/vscode/src/vs/workbench/contrib/remote/browser/showCandidate.js +35 -0
- package/vscode/src/vs/workbench/contrib/remote/browser/tunnelFactory.js +110 -0
- package/vscode/src/vs/workbench/contrib/remote/common/remote.contribution.js +515 -0
- package/vscode/src/vs/workbench/services/remote/browser/browserRemoteResourceHandler.js +49 -0
- package/vscode/src/vs/workbench/services/remote/browser/remoteAgentService.js +78 -0
- package/vscode/src/vs/workbench/services/remote/common/abstractRemoteAgentService.js +179 -0
- package/vscode/src/vs/workbench/services/remote/common/remoteAgentEnvironmentChannel.js +54 -0
- package/vscode/src/vs/workbench/services/remote/common/remoteExtensionsScanner.js +73 -0
- package/vscode/src/vs/workbench/services/tunnel/browser/tunnelService.js +36 -0
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { Registry } from 'vscode/vscode/vs/platform/registry/common/platform';
|
|
2
|
+
import { Extensions } from 'vscode/vscode/vs/workbench/common/contributions';
|
|
3
|
+
import { RemoteStartEntry } from './remoteStartEntry.js';
|
|
4
|
+
|
|
5
|
+
( Registry.as(Extensions.Workbench))
|
|
6
|
+
.registerWorkbenchContribution(RemoteStartEntry, 3 );
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { __decorate, __param } from '../../../../../../../external/tslib/tslib.es6.js';
|
|
2
|
+
import { localize2WithPath } from 'vscode/vscode/vs/nls';
|
|
3
|
+
import { Disposable } from 'vscode/vscode/vs/base/common/lifecycle';
|
|
4
|
+
import { ICommandService } from 'vscode/vscode/vs/platform/commands/common/commands';
|
|
5
|
+
import { IProductService } from 'vscode/vscode/vs/platform/product/common/productService';
|
|
6
|
+
import { registerAction2, Action2 } from 'vscode/vscode/vs/platform/actions/common/actions';
|
|
7
|
+
import { IExtensionManagementService } from 'vscode/vscode/vs/platform/extensionManagement/common/extensionManagement';
|
|
8
|
+
import { ITelemetryService } from 'vscode/vscode/vs/platform/telemetry/common/telemetry';
|
|
9
|
+
import { ExtensionIdentifier } from 'vscode/vscode/vs/platform/extensions/common/extensions';
|
|
10
|
+
import { IWorkbenchExtensionEnablementService } from 'vscode/vscode/vs/workbench/services/extensionManagement/common/extensionManagement';
|
|
11
|
+
import { RawContextKey, IContextKeyService } from 'vscode/vscode/vs/platform/contextkey/common/contextkey';
|
|
12
|
+
|
|
13
|
+
var RemoteStartEntry_1;
|
|
14
|
+
const showStartEntryInWeb = ( new RawContextKey('showRemoteStartEntryInWeb', false));
|
|
15
|
+
let RemoteStartEntry = class RemoteStartEntry extends Disposable {
|
|
16
|
+
static { RemoteStartEntry_1 = this; }
|
|
17
|
+
static { this.REMOTE_WEB_START_ENTRY_ACTIONS_COMMAND_ID = 'workbench.action.remote.showWebStartEntryActions'; }
|
|
18
|
+
constructor(commandService, productService, extensionManagementService, extensionEnablementService, telemetryService, contextKeyService) {
|
|
19
|
+
super();
|
|
20
|
+
this.commandService = commandService;
|
|
21
|
+
this.productService = productService;
|
|
22
|
+
this.extensionManagementService = extensionManagementService;
|
|
23
|
+
this.extensionEnablementService = extensionEnablementService;
|
|
24
|
+
this.telemetryService = telemetryService;
|
|
25
|
+
this.contextKeyService = contextKeyService;
|
|
26
|
+
const remoteExtensionTips = this.productService.remoteExtensionTips?.['tunnel'];
|
|
27
|
+
this.startCommand = remoteExtensionTips?.startEntry?.startCommand ?? '';
|
|
28
|
+
this.remoteExtensionId = remoteExtensionTips?.extensionId ?? '';
|
|
29
|
+
this._init();
|
|
30
|
+
this.registerActions();
|
|
31
|
+
this.registerListeners();
|
|
32
|
+
}
|
|
33
|
+
registerActions() {
|
|
34
|
+
const category = ( localize2WithPath(
|
|
35
|
+
'vs/workbench/contrib/remote/browser/remoteStartEntry',
|
|
36
|
+
'remote.category',
|
|
37
|
+
"Remote"
|
|
38
|
+
));
|
|
39
|
+
const startEntry = this;
|
|
40
|
+
this._register(registerAction2(class extends Action2 {
|
|
41
|
+
constructor() {
|
|
42
|
+
super({
|
|
43
|
+
id: RemoteStartEntry_1.REMOTE_WEB_START_ENTRY_ACTIONS_COMMAND_ID,
|
|
44
|
+
category,
|
|
45
|
+
title: ( localize2WithPath(
|
|
46
|
+
'vs/workbench/contrib/remote/browser/remoteStartEntry',
|
|
47
|
+
'remote.showWebStartEntryActions',
|
|
48
|
+
"Show Remote Start Entry for web"
|
|
49
|
+
)),
|
|
50
|
+
f1: false
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
async run() {
|
|
54
|
+
await startEntry.showWebRemoteStartActions();
|
|
55
|
+
}
|
|
56
|
+
}));
|
|
57
|
+
}
|
|
58
|
+
registerListeners() {
|
|
59
|
+
this._register(this.extensionEnablementService.onEnablementChanged(async (result) => {
|
|
60
|
+
for (const ext of result) {
|
|
61
|
+
if (ExtensionIdentifier.equals(this.remoteExtensionId, ext.identifier.id)) {
|
|
62
|
+
if (this.extensionEnablementService.isEnabled(ext)) {
|
|
63
|
+
showStartEntryInWeb.bindTo(this.contextKeyService).set(true);
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
showStartEntryInWeb.bindTo(this.contextKeyService).set(false);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}));
|
|
71
|
+
}
|
|
72
|
+
async _init() {
|
|
73
|
+
const installed = (await this.extensionManagementService.getInstalled()).find(value => ExtensionIdentifier.equals(value.identifier.id, this.remoteExtensionId));
|
|
74
|
+
if (installed) {
|
|
75
|
+
if (this.extensionEnablementService.isEnabled(installed)) {
|
|
76
|
+
showStartEntryInWeb.bindTo(this.contextKeyService).set(true);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
async showWebRemoteStartActions() {
|
|
81
|
+
this.commandService.executeCommand(this.startCommand);
|
|
82
|
+
this.telemetryService.publicLog2('workbenchActionExecuted', {
|
|
83
|
+
id: this.startCommand,
|
|
84
|
+
from: 'remote start entry'
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
};
|
|
88
|
+
RemoteStartEntry = RemoteStartEntry_1 = ( __decorate([
|
|
89
|
+
( __param(0, ICommandService)),
|
|
90
|
+
( __param(1, IProductService)),
|
|
91
|
+
( __param(2, IExtensionManagementService)),
|
|
92
|
+
( __param(3, IWorkbenchExtensionEnablementService)),
|
|
93
|
+
( __param(4, ITelemetryService)),
|
|
94
|
+
( __param(5, IContextKeyService))
|
|
95
|
+
], RemoteStartEntry));
|
|
96
|
+
|
|
97
|
+
export { RemoteStartEntry, showStartEntryInWeb };
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { __decorate, __param } from '../../../../../../../external/tslib/tslib.es6.js';
|
|
2
|
+
import { Disposable } from 'vscode/vscode/vs/base/common/lifecycle';
|
|
3
|
+
import { IBrowserWorkbenchEnvironmentService } from 'vscode/vscode/vs/workbench/services/environment/browser/environmentService';
|
|
4
|
+
import { IRemoteExplorerService } from 'vscode/vscode/vs/workbench/services/remote/common/remoteExplorerService';
|
|
5
|
+
|
|
6
|
+
let ShowCandidateContribution = class ShowCandidateContribution extends Disposable {
|
|
7
|
+
static { this.ID = 'workbench.contrib.showPortCandidate'; }
|
|
8
|
+
constructor(remoteExplorerService, environmentService) {
|
|
9
|
+
super();
|
|
10
|
+
const showPortCandidate = environmentService.options?.tunnelProvider?.showPortCandidate;
|
|
11
|
+
if (showPortCandidate) {
|
|
12
|
+
this._register(remoteExplorerService.setCandidateFilter(async (candidates) => {
|
|
13
|
+
const filters = await Promise.all(( candidates.map(
|
|
14
|
+
candidate => showPortCandidate(candidate.host, candidate.port, candidate.detail ?? '')
|
|
15
|
+
)));
|
|
16
|
+
const filteredCandidates = [];
|
|
17
|
+
if (filters.length !== candidates.length) {
|
|
18
|
+
return candidates;
|
|
19
|
+
}
|
|
20
|
+
for (let i = 0; i < candidates.length; i++) {
|
|
21
|
+
if (filters[i]) {
|
|
22
|
+
filteredCandidates.push(candidates[i]);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return filteredCandidates;
|
|
26
|
+
}));
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
ShowCandidateContribution = ( __decorate([
|
|
31
|
+
( __param(0, IRemoteExplorerService)),
|
|
32
|
+
( __param(1, IBrowserWorkbenchEnvironmentService))
|
|
33
|
+
], ShowCandidateContribution));
|
|
34
|
+
|
|
35
|
+
export { ShowCandidateContribution };
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { __decorate, __param } from '../../../../../../../external/tslib/tslib.es6.js';
|
|
2
|
+
import { localizeWithPath } from 'vscode/vscode/vs/nls';
|
|
3
|
+
import { TunnelPrivacyId, TunnelProtocol, ITunnelService } from 'vscode/vscode/vs/platform/tunnel/common/tunnel';
|
|
4
|
+
import { Disposable } from 'vscode/vscode/vs/base/common/lifecycle';
|
|
5
|
+
import { IBrowserWorkbenchEnvironmentService } from 'vscode/vscode/vs/workbench/services/environment/browser/environmentService';
|
|
6
|
+
import { IOpenerService } from 'vscode/vscode/vs/platform/opener/common/opener';
|
|
7
|
+
import { URI } from 'vscode/vscode/vs/base/common/uri';
|
|
8
|
+
import { IRemoteExplorerService } from 'vscode/vscode/vs/workbench/services/remote/common/remoteExplorerService';
|
|
9
|
+
import { ILogService } from 'vscode/vscode/vs/platform/log/common/log';
|
|
10
|
+
import { IContextKeyService } from 'vscode/vscode/vs/platform/contextkey/common/contextkey';
|
|
11
|
+
import { forwardedPortsViewEnabled } from 'vscode/vscode/vs/workbench/services/remote/common/tunnelModel';
|
|
12
|
+
|
|
13
|
+
let TunnelFactoryContribution = class TunnelFactoryContribution extends Disposable {
|
|
14
|
+
static { this.ID = 'workbench.contrib.tunnelFactory'; }
|
|
15
|
+
constructor(tunnelService, environmentService, openerService, remoteExplorerService, logService, contextKeyService) {
|
|
16
|
+
super();
|
|
17
|
+
this.openerService = openerService;
|
|
18
|
+
const tunnelFactory = environmentService.options?.tunnelProvider?.tunnelFactory;
|
|
19
|
+
if (tunnelFactory) {
|
|
20
|
+
contextKeyService.createKey(forwardedPortsViewEnabled.key, true);
|
|
21
|
+
let privacyOptions = environmentService.options?.tunnelProvider?.features?.privacyOptions ?? [];
|
|
22
|
+
if (environmentService.options?.tunnelProvider?.features?.public
|
|
23
|
+
&& (privacyOptions.length === 0)) {
|
|
24
|
+
privacyOptions = [
|
|
25
|
+
{
|
|
26
|
+
id: 'private',
|
|
27
|
+
label: ( localizeWithPath(
|
|
28
|
+
'vs/workbench/contrib/remote/browser/tunnelFactory',
|
|
29
|
+
'tunnelPrivacy.private',
|
|
30
|
+
"Private"
|
|
31
|
+
)),
|
|
32
|
+
themeIcon: 'lock'
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
id: 'public',
|
|
36
|
+
label: ( localizeWithPath(
|
|
37
|
+
'vs/workbench/contrib/remote/browser/tunnelFactory',
|
|
38
|
+
'tunnelPrivacy.public',
|
|
39
|
+
"Public"
|
|
40
|
+
)),
|
|
41
|
+
themeIcon: 'eye'
|
|
42
|
+
}
|
|
43
|
+
];
|
|
44
|
+
}
|
|
45
|
+
this._register(tunnelService.setTunnelProvider({
|
|
46
|
+
forwardPort: async (tunnelOptions, tunnelCreationOptions) => {
|
|
47
|
+
let tunnelPromise;
|
|
48
|
+
try {
|
|
49
|
+
tunnelPromise = tunnelFactory(tunnelOptions, tunnelCreationOptions);
|
|
50
|
+
}
|
|
51
|
+
catch (e) {
|
|
52
|
+
logService.trace('tunnelFactory: tunnel provider error');
|
|
53
|
+
}
|
|
54
|
+
if (!tunnelPromise) {
|
|
55
|
+
return undefined;
|
|
56
|
+
}
|
|
57
|
+
let tunnel;
|
|
58
|
+
try {
|
|
59
|
+
tunnel = await tunnelPromise;
|
|
60
|
+
}
|
|
61
|
+
catch (e) {
|
|
62
|
+
logService.trace('tunnelFactory: tunnel provider promise error');
|
|
63
|
+
if (e instanceof Error) {
|
|
64
|
+
return e.message;
|
|
65
|
+
}
|
|
66
|
+
return undefined;
|
|
67
|
+
}
|
|
68
|
+
const localAddress = tunnel.localAddress.startsWith('http') ? tunnel.localAddress : `http://${tunnel.localAddress}`;
|
|
69
|
+
const remoteTunnel = {
|
|
70
|
+
tunnelRemotePort: tunnel.remoteAddress.port,
|
|
71
|
+
tunnelRemoteHost: tunnel.remoteAddress.host,
|
|
72
|
+
localAddress: await this.resolveExternalUri(localAddress),
|
|
73
|
+
privacy: tunnel.privacy ?? (tunnel.public ? TunnelPrivacyId.Public : TunnelPrivacyId.Private),
|
|
74
|
+
protocol: tunnel.protocol ?? TunnelProtocol.Http,
|
|
75
|
+
dispose: async () => { await tunnel.dispose(); }
|
|
76
|
+
};
|
|
77
|
+
return remoteTunnel;
|
|
78
|
+
}
|
|
79
|
+
}));
|
|
80
|
+
const tunnelInformation = environmentService.options?.tunnelProvider?.features ?
|
|
81
|
+
{
|
|
82
|
+
features: {
|
|
83
|
+
elevation: !!environmentService.options?.tunnelProvider?.features?.elevation,
|
|
84
|
+
public: !!environmentService.options?.tunnelProvider?.features?.public,
|
|
85
|
+
privacyOptions,
|
|
86
|
+
protocol: environmentService.options?.tunnelProvider?.features?.protocol === undefined ? true : !!environmentService.options?.tunnelProvider?.features?.protocol
|
|
87
|
+
}
|
|
88
|
+
} : undefined;
|
|
89
|
+
remoteExplorerService.setTunnelInformation(tunnelInformation);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
async resolveExternalUri(uri) {
|
|
93
|
+
try {
|
|
94
|
+
return ( (await this.openerService.resolveExternalUri(( URI.parse(uri)))).resolved.toString());
|
|
95
|
+
}
|
|
96
|
+
catch {
|
|
97
|
+
return uri;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
TunnelFactoryContribution = ( __decorate([
|
|
102
|
+
( __param(0, ITunnelService)),
|
|
103
|
+
( __param(1, IBrowserWorkbenchEnvironmentService)),
|
|
104
|
+
( __param(2, IOpenerService)),
|
|
105
|
+
( __param(3, IRemoteExplorerService)),
|
|
106
|
+
( __param(4, ILogService)),
|
|
107
|
+
( __param(5, IContextKeyService))
|
|
108
|
+
], TunnelFactoryContribution));
|
|
109
|
+
|
|
110
|
+
export { TunnelFactoryContribution };
|